Merge "Reuse VideoCapture use case in CameraController" into androidx-main
diff --git a/activity/activity-compose-lint/src/main/java/androidx/activity/compose/lint/ActivityComposeIssueRegistry.kt b/activity/activity-compose-lint/src/main/java/androidx/activity/compose/lint/ActivityComposeIssueRegistry.kt
index 656270a..76b1f3e 100644
--- a/activity/activity-compose-lint/src/main/java/androidx/activity/compose/lint/ActivityComposeIssueRegistry.kt
+++ b/activity/activity-compose-lint/src/main/java/androidx/activity/compose/lint/ActivityComposeIssueRegistry.kt
@@ -27,7 +27,7 @@
  */
 class ActivityComposeIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         ActivityResultLaunchDetector.LaunchDuringComposition
diff --git a/activity/activity-ktx/api/1.7.0-beta02.txt b/activity/activity-ktx/api/1.7.0-beta02.txt
index a1c4a4d..4023c72 100644
--- a/activity/activity-ktx/api/1.7.0-beta02.txt
+++ b/activity/activity-ktx/api/1.7.0-beta02.txt
@@ -6,9 +6,6 @@
     method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<? extends VM> viewModels(androidx.activity.ComponentActivity, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
   }
 
-  public final class PipHintTrackerKt {
-  }
-
 }
 
 package androidx.activity.result {
diff --git a/activity/activity-ktx/api/current.ignore b/activity/activity-ktx/api/current.ignore
index 1b633a6..f970b04 100644
--- a/activity/activity-ktx/api/current.ignore
+++ b/activity/activity-ktx/api/current.ignore
@@ -1,6 +1,8 @@
 // Baseline format: 1.0
 RemovedClass: androidx.activity.OnBackPressedDispatcherKt:
     Removed class androidx.activity.OnBackPressedDispatcherKt
+RemovedClass: androidx.activity.PipHintTrackerKt:
+    Removed class androidx.activity.PipHintTrackerKt
 
 
 RemovedPackage: androidx.activity.contextaware:
diff --git a/activity/activity-ktx/api/current.txt b/activity/activity-ktx/api/current.txt
index a1c4a4d..4023c72 100644
--- a/activity/activity-ktx/api/current.txt
+++ b/activity/activity-ktx/api/current.txt
@@ -6,9 +6,6 @@
     method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<? extends VM> viewModels(androidx.activity.ComponentActivity, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
   }
 
-  public final class PipHintTrackerKt {
-  }
-
 }
 
 package androidx.activity.result {
diff --git a/activity/activity-ktx/api/restricted_1.7.0-beta02.txt b/activity/activity-ktx/api/restricted_1.7.0-beta02.txt
index a1c4a4d..4023c72 100644
--- a/activity/activity-ktx/api/restricted_1.7.0-beta02.txt
+++ b/activity/activity-ktx/api/restricted_1.7.0-beta02.txt
@@ -6,9 +6,6 @@
     method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<? extends VM> viewModels(androidx.activity.ComponentActivity, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
   }
 
-  public final class PipHintTrackerKt {
-  }
-
 }
 
 package androidx.activity.result {
diff --git a/activity/activity-ktx/api/restricted_current.ignore b/activity/activity-ktx/api/restricted_current.ignore
index 1b633a6..f970b04 100644
--- a/activity/activity-ktx/api/restricted_current.ignore
+++ b/activity/activity-ktx/api/restricted_current.ignore
@@ -1,6 +1,8 @@
 // Baseline format: 1.0
 RemovedClass: androidx.activity.OnBackPressedDispatcherKt:
     Removed class androidx.activity.OnBackPressedDispatcherKt
+RemovedClass: androidx.activity.PipHintTrackerKt:
+    Removed class androidx.activity.PipHintTrackerKt
 
 
 RemovedPackage: androidx.activity.contextaware:
diff --git a/activity/activity-ktx/api/restricted_current.txt b/activity/activity-ktx/api/restricted_current.txt
index a1c4a4d..4023c72 100644
--- a/activity/activity-ktx/api/restricted_current.txt
+++ b/activity/activity-ktx/api/restricted_current.txt
@@ -6,9 +6,6 @@
     method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<? extends VM> viewModels(androidx.activity.ComponentActivity, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
   }
 
-  public final class PipHintTrackerKt {
-  }
-
 }
 
 package androidx.activity.result {
diff --git a/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityIssueRegistry.kt b/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityIssueRegistry.kt
index 794624c..168ec91 100644
--- a/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityIssueRegistry.kt
+++ b/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityIssueRegistry.kt
@@ -26,7 +26,7 @@
 @Suppress("UnstableApiUsage")
 class ActivityIssueRegistry : IssueRegistry() {
     // tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         ActivityResultFragmentVersionDetector.ISSUE
diff --git a/annotation/annotation-experimental-lint/src/main/java/androidx/annotation/experimental/lint/ExperimentalIssueRegistry.kt b/annotation/annotation-experimental-lint/src/main/java/androidx/annotation/experimental/lint/ExperimentalIssueRegistry.kt
index 0f6ff59..1cf3f9a 100644
--- a/annotation/annotation-experimental-lint/src/main/java/androidx/annotation/experimental/lint/ExperimentalIssueRegistry.kt
+++ b/annotation/annotation-experimental-lint/src/main/java/androidx/annotation/experimental/lint/ExperimentalIssueRegistry.kt
@@ -23,7 +23,7 @@
 @Suppress("UnstableApiUsage")
 class ExperimentalIssueRegistry : IssueRegistry() {
     override val minApi = CURRENT_API
-    override val api = 13
+    override val api = 14
     override val issues get() = ExperimentalDetector.ISSUES + AnnotationRetentionDetector.ISSUES
     override val vendor = Vendor(
         feedbackUrl = "https://issuetracker.google.com/issues/new?component=459778",
diff --git a/appactions/interaction/interaction-service/build.gradle b/appactions/interaction/interaction-service/build.gradle
index d528b0e..7392079 100644
--- a/appactions/interaction/interaction-service/build.gradle
+++ b/appactions/interaction/interaction-service/build.gradle
@@ -20,12 +20,24 @@
     id("AndroidXPlugin")
     id("com.android.library")
     id("com.google.protobuf")
+    id("org.jetbrains.kotlin.android")
 }
 
 dependencies {
     implementation(libs.protobufLite)
     implementation("androidx.annotation:annotation:1.1.0")
+    implementation("androidx.wear.tiles:tiles:1.1.0")
     implementation(project(":appactions:interaction:interaction-proto"))
+    implementation(libs.kotlinStdlib)
+
+    testImplementation(libs.kotlinStdlib)
+    testImplementation(libs.junit)
+    testImplementation(libs.robolectric)
+    testImplementation(libs.testExtJunit)
+    testImplementation(libs.testExtTruth)
+    testImplementation(libs.testCore)
+    testImplementation(libs.testRunner)
+    testImplementation(libs.truth)
 }
 
 protobuf {
@@ -48,6 +60,17 @@
 
 android {
     namespace "androidx.appactions.interaction.service"
+    defaultConfig {
+        minSdkVersion 25
+    }
+    defaultConfig {
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+    }
+    testOptions {
+        unitTests {
+            includeAndroidResources = true
+        }
+    }
 }
 
 androidx {
diff --git a/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/RemoteViewsInternal.kt b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/RemoteViewsInternal.kt
new file mode 100644
index 0000000..20bc7a9
--- /dev/null
+++ b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/RemoteViewsInternal.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.appactions.interaction.service
+
+import android.util.SizeF
+import android.widget.RemoteViews
+import android.widget.RemoteViewsService.RemoteViewsFactory
+import androidx.annotation.RestrictTo
+import java.util.HashMap
+import java.util.HashSet
+
+/** Holder for RemoteViews UI response.  */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+internal data class RemoteViewsInternal(
+    val remoteViews: RemoteViews,
+    val size: SizeF,
+    val changedViewIds: HashSet<Int> = HashSet<Int>(),
+    val remoteViewsFactories: HashMap<Int, RemoteViewsFactory> =
+        HashMap<Int, RemoteViewsFactory>()
+) {
+    init {
+        this.changedViewIds.addAll(changedViewIds)
+        this.remoteViewsFactories.putAll(remoteViewsFactories)
+    }
+}
\ No newline at end of file
diff --git a/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/TileLayoutInternal.kt b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/TileLayoutInternal.kt
new file mode 100644
index 0000000..696f6c2
--- /dev/null
+++ b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/TileLayoutInternal.kt
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.appactions.interaction.service
+
+import androidx.annotation.RestrictTo
+import androidx.appactions.interaction.service.proto.AppActionsServiceProto
+import androidx.wear.tiles.LayoutElementBuilders
+import androidx.wear.tiles.ResourceBuilders
+import com.google.protobuf.ByteString
+
+/** Holder for TileLayout response.  */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+internal data class TileLayoutInternal(
+    val layout: LayoutElementBuilders.Layout,
+    val resources: ResourceBuilders.Resources
+) {
+
+    fun toProto(): AppActionsServiceProto.TileLayout {
+        return AppActionsServiceProto.TileLayout.newBuilder()
+            .setLayout(ByteString.copyFrom(layout.toByteArray()))
+            .setResources(ByteString.copyFrom(resources.toByteArray()))
+            .build()
+    }
+}
\ No newline at end of file
diff --git a/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiResponse.kt b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiResponse.kt
new file mode 100644
index 0000000..2ad53e5
--- /dev/null
+++ b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiResponse.kt
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.appactions.interaction.service
+
+import android.util.SizeF
+import android.widget.RemoteViews
+import android.widget.RemoteViewsService.RemoteViewsFactory
+import androidx.annotation.IdRes
+import androidx.wear.tiles.LayoutElementBuilders
+import androidx.wear.tiles.ResourceBuilders
+import java.util.HashMap
+import java.util.HashSet
+
+/**
+ * A class representing the UI response being returned to the host. A `UiResponse` cannot be
+ * built directly, it must be built from a [UiResponse] Builder.
+ */
+class UiResponse {
+    internal val remoteViewsInternal: RemoteViewsInternal?
+    internal val tileLayoutInternal: TileLayoutInternal?
+
+    internal constructor(remoteViewsInternal: RemoteViewsInternal) {
+        this.remoteViewsInternal = remoteViewsInternal
+        this.tileLayoutInternal = null
+    }
+
+    internal constructor(tileLayout: TileLayoutInternal) {
+        this.remoteViewsInternal = null
+        this.tileLayoutInternal = tileLayout
+    }
+
+    /** Builder for TileLayouts, used in Wear OS.  */
+    class TileLayoutBuilder {
+        private var layout: LayoutElementBuilders.Layout? = null
+        private var resources: ResourceBuilders.Resources? = null
+
+        /**
+         * Sets the [LayoutElementBuilders.Layout] and the associated [ResourceBuilders.Resources]
+         * to be displayed. [RemoteViews] should not be used together with
+         * [LayoutElementBuilders.Layout] in the same session.
+         *
+         * @param layout the wear-tile [LayoutElementBuilders.Layout] to be displayed.
+         * @param resources the resources associated with the layout.
+         */
+        fun setTileLayout(
+            layout: LayoutElementBuilders.Layout,
+            resources: ResourceBuilders.Resources
+        ): TileLayoutBuilder {
+            this.layout = layout
+            this.resources = resources
+            return this
+        }
+
+        /** Builds the UiResponse.  */
+        fun build(): UiResponse {
+            return UiResponse(TileLayoutInternal(layout!!, resources!!))
+        }
+    }
+
+    /** Builder for RemoteViews UI response.  */
+    class RemoteViewsUiBuilder {
+        private var remoteViews: RemoteViews? = null
+        private var size: SizeF? = null
+        private val changedViewIds: HashSet<Int> = HashSet()
+        private val remoteViewsFactories: HashMap<Int, RemoteViewsFactory> = HashMap()
+
+        /**
+         * Sets the `RemoteViews` to be displayed in the host.
+         *
+         * @param remoteViews the `RemoteViews` to be displayed
+         * @param size the size, in dp, of the RemoteViews being displayed
+         */
+        fun setRemoteViews(
+            remoteViews: RemoteViews,
+            size: SizeF?
+        ): RemoteViewsUiBuilder {
+            this.remoteViews = remoteViews
+            this.size = size
+            return this
+        }
+
+        /**
+         * Add the specified view ID to the list of changed views for RemoteViews collection update.
+         *
+         * Any errors resulting from the provided view IDs will contain
+         * "RemoteViewsCollection error: " errors with some message from the host.
+         */
+        fun addViewIdForCollectionUpdate(@IdRes viewId: Int): RemoteViewsUiBuilder {
+            changedViewIds.add(viewId)
+            return this
+        }
+
+        /**
+         * Implemented to generate the appropriate factories for collection views (e.g. ListView).
+         * Called when the host detects a collection view in the response UI. The
+         * [RemoteViewsFactory] is cached by `viewId` and will be cleared when the session exits.
+         *
+         * @param viewId the id of the collection view
+         * @param factory a RemoteViewsFactory associated with the collection view
+         */
+        fun addRemoteViewsFactory(
+            @IdRes viewId: Int,
+            factory: RemoteViewsFactory
+        ): RemoteViewsUiBuilder {
+            remoteViewsFactories.put(viewId, factory)
+            return this
+        }
+
+        /** Builds the UiResponse.  */
+        fun build(): UiResponse {
+            return UiResponse(
+                RemoteViewsInternal(
+                    remoteViews!!,
+                    size!!,
+                    changedViewIds,
+                    remoteViewsFactories
+                )
+            )
+        }
+    }
+}
\ No newline at end of file
diff --git a/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/package-info.java b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/package-info.java
new file mode 100644
index 0000000..026eda8
--- /dev/null
+++ b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/** @hide */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+package androidx.appactions.interaction.service;
+
+import androidx.annotation.RestrictTo;
diff --git a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/FakeRemoteViewsFactory.kt b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/FakeRemoteViewsFactory.kt
new file mode 100644
index 0000000..c205708
--- /dev/null
+++ b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/FakeRemoteViewsFactory.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.appactions.interaction.service
+
+import android.os.Build.VERSION
+import android.os.Build.VERSION_CODES
+import android.widget.RemoteViews
+import android.widget.RemoteViewsService.RemoteViewsFactory
+import androidx.appactions.interaction.service.test.R
+
+/** Fake implementation of a RemoteViewsFactory. */
+internal class FakeRemoteViewsFactory : RemoteViewsFactory {
+
+    private val collectionCount = 3
+    private val viewTypeCount = 1
+    private val hasStableIds = true
+    private val packageName = "androidx.appactions.interaction.service"
+
+    override fun onCreate() {
+        // do nothing
+    }
+
+    override fun onDataSetChanged() {
+        // do nothing
+    }
+
+    override fun onDestroy() {
+        // do nothing
+    }
+
+    override fun getCount(): Int {
+        return collectionCount
+    }
+
+    override fun getViewAt(i: Int): RemoteViews {
+        // here we use the position as the view Id, which is the id given to the root of the
+        // RemoteViews. This is just so that we can use getViewId in test to verify that RemoteViews
+        // received is correct.
+        return if (VERSION.SDK_INT >= VERSION_CODES.S) {
+            RemoteViews(packageName, R.layout.remote_view, i)
+        } else RemoteViews(packageName, R.layout.remote_view)
+    }
+
+    override fun getLoadingView(): RemoteViews {
+        return if (VERSION.SDK_INT >= VERSION_CODES.S) {
+            RemoteViews(packageName, R.layout.loading_view)
+        } else RemoteViews(packageName, R.layout.loading_view)
+    }
+
+    override fun getViewTypeCount(): Int {
+        return viewTypeCount
+    }
+
+    override fun getItemId(i: Int): Long {
+        return i.toLong()
+    }
+
+    override fun hasStableIds(): Boolean {
+        return hasStableIds
+    }
+}
\ No newline at end of file
diff --git a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/UiResponseTest.kt b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/UiResponseTest.kt
new file mode 100644
index 0000000..e74c4de
--- /dev/null
+++ b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/UiResponseTest.kt
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package androidx.appactions.interaction.service
+
+import android.content.Context
+import android.util.SizeF
+import android.widget.RemoteViews
+import androidx.appactions.interaction.service.test.R
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.wear.tiles.LayoutElementBuilders
+import androidx.wear.tiles.ResourceBuilders
+import com.google.common.truth.Truth.assertThat
+import org.junit.Assert.assertThrows
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class UiResponseTest {
+    private val context: Context = ApplicationProvider.getApplicationContext()
+    private val remoteViewsFactoryId = 123
+    private val changeViewId = 111
+
+    @Test
+    fun uiResponse_remoteViewsBuilder_withFactory_success() {
+        val views = RemoteViews(context.packageName, R.layout.remote_view)
+        val uiResponse: UiResponse = UiResponse.RemoteViewsUiBuilder()
+            .setRemoteViews(views, SizeF(10f, 15f))
+            .addRemoteViewsFactory(remoteViewsFactoryId, FakeRemoteViewsFactory())
+            .addViewIdForCollectionUpdate(changeViewId)
+            .build()
+
+        assertThat(uiResponse.tileLayoutInternal).isNull()
+        assertThat(uiResponse.remoteViewsInternal?.size?.width).isEqualTo(10)
+        assertThat(uiResponse.remoteViewsInternal?.size?.height).isEqualTo(15)
+        assertThat(uiResponse.remoteViewsInternal?.remoteViews?.`package`)
+            .isEqualTo(context.packageName)
+        assertThat(uiResponse.remoteViewsInternal?.remoteViewsFactories)
+            .containsKey(remoteViewsFactoryId)
+        assertThat(uiResponse.remoteViewsInternal?.changedViewIds)
+            .containsExactly(changeViewId)
+    }
+
+    @Test
+    fun uiResponse_remoteViewsBuilder_withoutFactory_success() {
+        val views = RemoteViews(context.packageName, R.layout.remote_view)
+        val uiResponse: UiResponse = UiResponse.RemoteViewsUiBuilder()
+            .setRemoteViews(views, SizeF(10f, 15f))
+            .build()
+
+        assertThat(uiResponse.tileLayoutInternal).isNull()
+        assertThat(uiResponse.remoteViewsInternal?.size?.width).isEqualTo(10)
+        assertThat(uiResponse.remoteViewsInternal?.size?.height).isEqualTo(15)
+        assertThat(uiResponse.remoteViewsInternal?.remoteViews?.`package`)
+            .isEqualTo(context.packageName)
+        assertThat(uiResponse.remoteViewsInternal?.changedViewIds).isEmpty()
+    }
+
+    @Test
+    fun uiResponse_remoteViewsBuilder_failure() {
+        assertThrows(
+            NullPointerException::class.java
+        ) { UiResponse.RemoteViewsUiBuilder().build() }
+
+        // No remote views.
+        assertThrows(
+            NullPointerException::class.java
+        ) {
+            UiResponse.RemoteViewsUiBuilder()
+                .addRemoteViewsFactory(remoteViewsFactoryId, FakeRemoteViewsFactory())
+                .addViewIdForCollectionUpdate(changeViewId).build()
+        }
+    }
+
+    @Test
+    fun uiResponse_tileLayoutBuilder_success() {
+        val layout = LayoutElementBuilders.Layout.Builder()
+            .setRoot(
+                LayoutElementBuilders.Box.Builder()
+                    .addContent(
+                        LayoutElementBuilders.Column.Builder()
+                            .addContent(
+                                LayoutElementBuilders.Text.Builder()
+                                    .setText("LA8JE92")
+                                    .build()
+                            )
+                            .build()
+                    )
+                    .build()
+            )
+            .build()
+        val resources = ResourceBuilders.Resources.Builder().setVersion("1234").build()
+        val uiResponse: UiResponse = UiResponse.TileLayoutBuilder()
+            .setTileLayout(layout, resources)
+            .build()
+
+        assertThat(uiResponse.remoteViewsInternal).isNull()
+        assertThat(uiResponse.tileLayoutInternal?.layout).isNotNull()
+        assertThat(uiResponse.tileLayoutInternal?.resources).isNotNull()
+        assertThat(uiResponse.tileLayoutInternal?.toProto()?.layout).isNotEmpty()
+        assertThat(uiResponse.tileLayoutInternal?.toProto()?.resources).isNotEmpty()
+    }
+
+    @Test
+    fun uiResponse_tileLayoutBuilder_failure() {
+        assertThrows(
+            NullPointerException::class.java
+        ) { UiResponse.TileLayoutBuilder().build() }
+    }
+}
\ No newline at end of file
diff --git a/appactions/interaction/interaction-service/src/test/res/layout/loading_view.xml b/appactions/interaction/interaction-service/src/test/res/layout/loading_view.xml
new file mode 100644
index 0000000..306ad28
--- /dev/null
+++ b/appactions/interaction/interaction-service/src/test/res/layout/loading_view.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2023 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
\ No newline at end of file
diff --git a/appactions/interaction/interaction-service/src/test/res/layout/remote_view.xml b/appactions/interaction/interaction-service/src/test/res/layout/remote_view.xml
new file mode 100644
index 0000000..4591475
--- /dev/null
+++ b/appactions/interaction/interaction-service/src/test/res/layout/remote_view.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2023 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="0dp"
+        android:layout_height="match_parent"
+        android:layout_gravity="center"
+        android:text="000"
+        android:textSize="30sp"
+        android:textStyle="bold" />
+</FrameLayout>
\ No newline at end of file
diff --git a/appcompat/appcompat-lint/src/main/kotlin/androidx/appcompat/AppCompatIssueRegistry.kt b/appcompat/appcompat-lint/src/main/kotlin/androidx/appcompat/AppCompatIssueRegistry.kt
index ffb51ab..65f052b 100644
--- a/appcompat/appcompat-lint/src/main/kotlin/androidx/appcompat/AppCompatIssueRegistry.kt
+++ b/appcompat/appcompat-lint/src/main/kotlin/androidx/appcompat/AppCompatIssueRegistry.kt
@@ -32,7 +32,7 @@
 @Suppress("UnstableApiUsage")
 class AppCompatIssueRegistry : IssueRegistry() {
     override val minApi = 10 // Only compatible with the latest lint
-    override val api = 13
+    override val api = 14
     override val issues get() = listOf(
         SetActionBarDetector.USING_CORE_ACTION_BAR,
         ColorStateListAlphaDetector.NOT_USING_ANDROID_ALPHA,
diff --git a/appsearch/appsearch/src/androidTest/java/androidx/appsearch/cts/app/AppSearchSessionCtsTestBase.java b/appsearch/appsearch/src/androidTest/java/androidx/appsearch/cts/app/AppSearchSessionCtsTestBase.java
index fb31d2e..acb2ed1 100644
--- a/appsearch/appsearch/src/androidTest/java/androidx/appsearch/cts/app/AppSearchSessionCtsTestBase.java
+++ b/appsearch/appsearch/src/androidTest/java/androidx/appsearch/cts/app/AppSearchSessionCtsTestBase.java
@@ -3718,6 +3718,72 @@
     }
 
     @Test
+    public void testQuery_verbatimSearch() throws Exception {
+        assumeTrue(mDb1.getFeatures().isFeatureSupported(Features.VERBATIM_SEARCH));
+        AppSearchSchema verbatimSchema = new AppSearchSchema.Builder("VerbatimSchema")
+                .addProperty(new StringPropertyConfig.Builder("verbatimProp")
+                        .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+                        .setIndexingType(StringPropertyConfig.INDEXING_TYPE_EXACT_TERMS)
+                        .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_VERBATIM)
+                        .build()
+                ).build();
+        mDb1.setSchemaAsync(new SetSchemaRequest.Builder()
+                .setForceOverride(true).addSchemas(verbatimSchema).build()).get();
+
+        GenericDocument email = new GenericDocument.Builder<>(
+                "namespace1", "id1", "VerbatimSchema")
+                .setPropertyString("verbatimProp", "Hello, world!")
+                .build();
+        mDb1.putAsync(new PutDocumentsRequest.Builder().addGenericDocuments(email).build()).get();
+
+        SearchResults sr = mDb1.search("\"Hello, world!\"",
+                new SearchSpec.Builder().setVerbatimSearchEnabled(true).build());
+        List<SearchResult> page = sr.getNextPageAsync().get();
+
+        // Verbatim tokenization would produce one token 'Hello, world!'.
+        assertThat(page).hasSize(1);
+        assertThat(page.get(0).getGenericDocument().getId()).isEqualTo("id1");
+    }
+
+    @Test
+    public void testQuery_verbatimSearchWithoutEnablingFeatureFails() throws Exception {
+        assumeTrue(mDb1.getFeatures().isFeatureSupported(Features.VERBATIM_SEARCH));
+        AppSearchSchema verbatimSchema = new AppSearchSchema.Builder("VerbatimSchema")
+                .addProperty(new StringPropertyConfig.Builder("verbatimProp")
+                        .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+                        .setIndexingType(StringPropertyConfig.INDEXING_TYPE_EXACT_TERMS)
+                        .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_VERBATIM)
+                        .build()
+                ).build();
+        mDb1.setSchemaAsync(new SetSchemaRequest.Builder()
+                .setForceOverride(true).addSchemas(verbatimSchema).build()).get();
+
+        GenericDocument email = new GenericDocument.Builder<>(
+                "namespace1", "id1", "VerbatimSchema")
+                .setPropertyString("verbatimProp", "Hello, world!")
+                .build();
+        mDb1.putAsync(new PutDocumentsRequest.Builder().addGenericDocuments(email).build()).get();
+
+        // TODO(b/208654892) Disable ListFilterQueryLanguage once EXPERIMENTAL_ICING_ADVANCED_QUERY
+        //  is fully supported.
+        // ListFilterQueryLanguage is enabled so that EXPERIMENTAL_ICING_ADVANCED_QUERY gets enabled
+        // in IcingLib.
+        // Disable VERBATIM_SEARCH in the SearchSpec.
+        SearchResults searchResults = mDb1.search("\"Hello, world!\"",
+                new SearchSpec.Builder()
+                        .setListFilterQueryLanguageEnabled(true)
+                        .setVerbatimSearchEnabled(false)
+                        .build());
+        Throwable throwable = assertThrows(ExecutionException.class,
+                () -> searchResults.getNextPageAsync().get()).getCause();
+        assertThat(throwable).isInstanceOf(AppSearchException.class);
+        AppSearchException exception = (AppSearchException) throwable;
+        assertThat(exception.getResultCode()).isEqualTo(RESULT_INVALID_ARGUMENT);
+        assertThat(exception).hasMessageThat().contains("Attempted use of unenabled feature");
+        assertThat(exception).hasMessageThat().contains(Features.VERBATIM_SEARCH);
+    }
+
+    @Test
     public void testQuery_propertyWeights() throws Exception {
         assumeTrue(mDb1.getFeatures().isFeatureSupported(Features.SEARCH_SPEC_PROPERTY_WEIGHTS));
 
diff --git a/benchmark/benchmark-common/api/current.ignore b/benchmark/benchmark-common/api/current.ignore
index a2a7089..3de172d 100644
--- a/benchmark/benchmark-common/api/current.ignore
+++ b/benchmark/benchmark-common/api/current.ignore
@@ -7,7 +7,15 @@
     Removed class androidx.benchmark.Api27Kt
 RemovedClass: androidx.benchmark.Api29Kt:
     Removed class androidx.benchmark.Api29Kt
+RemovedClass: androidx.benchmark.ConfigurationErrorKt:
+    Removed class androidx.benchmark.ConfigurationErrorKt
 RemovedClass: androidx.benchmark.MetricNameUtilsKt:
     Removed class androidx.benchmark.MetricNameUtilsKt
 RemovedClass: androidx.benchmark.ProfilerKt:
     Removed class androidx.benchmark.ProfilerKt
+RemovedClass: androidx.benchmark.UserspaceTracingKt:
+    Removed class androidx.benchmark.UserspaceTracingKt
+
+
+RemovedPackage: androidx.benchmark.perfetto:
+    Removed package androidx.benchmark.perfetto
diff --git a/benchmark/benchmark-common/api/current.txt b/benchmark/benchmark-common/api/current.txt
index 38c42d4..fbecc64 100644
--- a/benchmark/benchmark-common/api/current.txt
+++ b/benchmark/benchmark-common/api/current.txt
@@ -14,21 +14,5 @@
   public static final class BenchmarkState.Companion {
   }
 
-  public final class ConfigurationErrorKt {
-  }
-
-  public final class UserspaceTracingKt {
-  }
-
-}
-
-package androidx.benchmark.perfetto {
-
-  public final class PerfettoConfigKt {
-  }
-
-  public final class UiStateKt {
-  }
-
 }
 
diff --git a/benchmark/benchmark-common/api/public_plus_experimental_current.txt b/benchmark/benchmark-common/api/public_plus_experimental_current.txt
index 313b2c0..1d9e4cd 100644
--- a/benchmark/benchmark-common/api/public_plus_experimental_current.txt
+++ b/benchmark/benchmark-common/api/public_plus_experimental_current.txt
@@ -21,15 +21,9 @@
   @kotlin.RequiresOptIn @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public static @interface BenchmarkState.Companion.ExperimentalExternalReport {
   }
 
-  public final class ConfigurationErrorKt {
-  }
-
   @kotlin.RequiresOptIn @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalBenchmarkStateApi {
   }
 
-  public final class UserspaceTracingKt {
-  }
-
 }
 
 package androidx.benchmark.perfetto {
@@ -37,9 +31,6 @@
   @kotlin.RequiresOptIn @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.CLASS, kotlin.annotation.AnnotationTarget.FUNCTION}) public @interface ExperimentalPerfettoCaptureApi {
   }
 
-  public final class PerfettoConfigKt {
-  }
-
   @RequiresApi(21) @androidx.benchmark.perfetto.ExperimentalPerfettoCaptureApi public final class PerfettoTrace {
     ctor public PerfettoTrace(String path);
     method public String getPath();
@@ -58,8 +49,5 @@
     method public void record(String fileLabel, kotlin.jvm.functions.Function0<kotlin.Unit> block);
   }
 
-  public final class UiStateKt {
-  }
-
 }
 
diff --git a/benchmark/benchmark-common/api/restricted_current.ignore b/benchmark/benchmark-common/api/restricted_current.ignore
index a2a7089..3de172d 100644
--- a/benchmark/benchmark-common/api/restricted_current.ignore
+++ b/benchmark/benchmark-common/api/restricted_current.ignore
@@ -7,7 +7,15 @@
     Removed class androidx.benchmark.Api27Kt
 RemovedClass: androidx.benchmark.Api29Kt:
     Removed class androidx.benchmark.Api29Kt
+RemovedClass: androidx.benchmark.ConfigurationErrorKt:
+    Removed class androidx.benchmark.ConfigurationErrorKt
 RemovedClass: androidx.benchmark.MetricNameUtilsKt:
     Removed class androidx.benchmark.MetricNameUtilsKt
 RemovedClass: androidx.benchmark.ProfilerKt:
     Removed class androidx.benchmark.ProfilerKt
+RemovedClass: androidx.benchmark.UserspaceTracingKt:
+    Removed class androidx.benchmark.UserspaceTracingKt
+
+
+RemovedPackage: androidx.benchmark.perfetto:
+    Removed package androidx.benchmark.perfetto
diff --git a/benchmark/benchmark-common/api/restricted_current.txt b/benchmark/benchmark-common/api/restricted_current.txt
index 752b162..df789c6 100644
--- a/benchmark/benchmark-common/api/restricted_current.txt
+++ b/benchmark/benchmark-common/api/restricted_current.txt
@@ -16,21 +16,5 @@
   public static final class BenchmarkState.Companion {
   }
 
-  public final class ConfigurationErrorKt {
-  }
-
-  public final class UserspaceTracingKt {
-  }
-
-}
-
-package androidx.benchmark.perfetto {
-
-  public final class PerfettoConfigKt {
-  }
-
-  public final class UiStateKt {
-  }
-
 }
 
diff --git a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
index b0b4ad3..9b279ae 100644
--- a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
+++ b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
@@ -301,6 +301,18 @@
     }
 
     /**
+     * Direct execution of executeShellCommand which doesn't account for scripting functionality,
+     * and doesn't capture stderr.
+     *
+     * Only use this function if you do not care about failure / errors.
+     */
+    @RequiresApi(21)
+    @CheckResult
+    fun executeCommandCaptureStdoutOnly(command: String): String {
+        return ShellImpl.executeCommandUnsafe(command)
+    }
+
+    /**
      * Creates a executable shell script that can be started. Similar to [executeScriptCaptureStdoutStderr]
      * but allows deferring and caching script execution.
      *
diff --git a/benchmark/benchmark-macro/api/current.ignore b/benchmark/benchmark-macro/api/current.ignore
index d3ebf7c..12f722e 100644
--- a/benchmark/benchmark-macro/api/current.ignore
+++ b/benchmark/benchmark-macro/api/current.ignore
@@ -1,10 +1,16 @@
 // Baseline format: 1.0
 RemovedClass: androidx.benchmark.macro.Api29Kt:
     Removed class androidx.benchmark.macro.Api29Kt
+RemovedClass: androidx.benchmark.macro.BaselineProfilesKt:
+    Removed class androidx.benchmark.macro.BaselineProfilesKt
+RemovedClass: androidx.benchmark.macro.CompilationModeKt:
+    Removed class androidx.benchmark.macro.CompilationModeKt
 RemovedClass: androidx.benchmark.macro.IdeSummaryStringKt:
     Removed class androidx.benchmark.macro.IdeSummaryStringKt
 RemovedClass: androidx.benchmark.macro.IterationResultKt:
     Removed class androidx.benchmark.macro.IterationResultKt
+RemovedClass: androidx.benchmark.macro.MacrobenchmarkKt:
+    Removed class androidx.benchmark.macro.MacrobenchmarkKt
 RemovedClass: androidx.benchmark.macro.MetricKt:
     Removed class androidx.benchmark.macro.MetricKt
 RemovedClass: androidx.benchmark.macro.MetricResultExtensionsKt:
diff --git a/benchmark/benchmark-macro/api/current.txt b/benchmark/benchmark-macro/api/current.txt
index a52d9ae..79e6202 100644
--- a/benchmark/benchmark-macro/api/current.txt
+++ b/benchmark/benchmark-macro/api/current.txt
@@ -9,9 +9,6 @@
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode UseIfAvailable;
   }
 
-  public final class BaselineProfilesKt {
-  }
-
   public abstract sealed class CompilationMode {
     field public static final androidx.benchmark.macro.CompilationMode.Companion Companion;
     field public static final androidx.benchmark.macro.CompilationMode DEFAULT;
@@ -38,16 +35,10 @@
     property public final int warmupIterations;
   }
 
-  public final class CompilationModeKt {
-  }
-
   public final class FrameTimingMetric extends androidx.benchmark.macro.Metric {
     ctor public FrameTimingMetric();
   }
 
-  public final class MacrobenchmarkKt {
-  }
-
   public final class MacrobenchmarkScope {
     ctor public MacrobenchmarkScope(String packageName, boolean launchWithClearTask);
     method public void dropKernelPageCache();
diff --git a/benchmark/benchmark-macro/api/public_plus_experimental_current.txt b/benchmark/benchmark-macro/api/public_plus_experimental_current.txt
index c83f76f..23fad4a 100644
--- a/benchmark/benchmark-macro/api/public_plus_experimental_current.txt
+++ b/benchmark/benchmark-macro/api/public_plus_experimental_current.txt
@@ -13,9 +13,6 @@
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode UseIfAvailable;
   }
 
-  public final class BaselineProfilesKt {
-  }
-
   public abstract sealed class CompilationMode {
     field public static final androidx.benchmark.macro.CompilationMode.Companion Companion;
     field public static final androidx.benchmark.macro.CompilationMode DEFAULT;
@@ -46,9 +43,6 @@
     property public final int warmupIterations;
   }
 
-  public final class CompilationModeKt {
-  }
-
   @kotlin.RequiresOptIn(message="This Macrobenchmark API is experimental.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.CLASS, kotlin.annotation.AnnotationTarget.FUNCTION}) public @interface ExperimentalMacrobenchmarkApi {
   }
 
@@ -62,9 +56,6 @@
     ctor public FrameTimingMetric();
   }
 
-  public final class MacrobenchmarkKt {
-  }
-
   public final class MacrobenchmarkScope {
     ctor public MacrobenchmarkScope(String packageName, boolean launchWithClearTask);
     method public void dropKernelPageCache();
diff --git a/benchmark/benchmark-macro/api/restricted_current.ignore b/benchmark/benchmark-macro/api/restricted_current.ignore
index 17a4adc..870da85 100644
--- a/benchmark/benchmark-macro/api/restricted_current.ignore
+++ b/benchmark/benchmark-macro/api/restricted_current.ignore
@@ -7,6 +7,8 @@
     Removed class androidx.benchmark.macro.IdeSummaryStringKt
 RemovedClass: androidx.benchmark.macro.IterationResultKt:
     Removed class androidx.benchmark.macro.IterationResultKt
+RemovedClass: androidx.benchmark.macro.MacrobenchmarkKt:
+    Removed class androidx.benchmark.macro.MacrobenchmarkKt
 RemovedClass: androidx.benchmark.macro.MetricKt:
     Removed class androidx.benchmark.macro.MetricKt
 RemovedClass: androidx.benchmark.macro.MetricResultExtensionsKt:
diff --git a/benchmark/benchmark-macro/api/restricted_current.txt b/benchmark/benchmark-macro/api/restricted_current.txt
index 4de13a2..6c99860 100644
--- a/benchmark/benchmark-macro/api/restricted_current.txt
+++ b/benchmark/benchmark-macro/api/restricted_current.txt
@@ -56,9 +56,6 @@
     ctor public FrameTimingMetric();
   }
 
-  public final class MacrobenchmarkKt {
-  }
-
   public final class MacrobenchmarkScope {
     ctor public MacrobenchmarkScope(String packageName, boolean launchWithClearTask);
     method public void dropKernelPageCache();
diff --git a/benchmark/benchmark-macro/build.gradle b/benchmark/benchmark-macro/build.gradle
index 134b4df..9edcc9e 100644
--- a/benchmark/benchmark-macro/build.gradle
+++ b/benchmark/benchmark-macro/build.gradle
@@ -59,6 +59,7 @@
     api("androidx.annotation:annotation:1.1.0")
 
     implementation(project(":benchmark:benchmark-common"))
+    implementation("androidx.core:core:1.9.0")
     implementation("androidx.profileinstaller:profileinstaller:1.0.3")
     implementation("androidx.tracing:tracing-ktx:1.1.0-rc01")
     implementation(libs.testCore)
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt
index 7da4d03..5cf3d0a 100644
--- a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt
@@ -40,6 +40,15 @@
     }
 
     @Test
+    fun hasMetrics_oldDevice() {
+        assumeTrue(Build.VERSION.SDK_INT <= 29) // powerstats didn't exist
+        assertFalse(PowerRail.hasMetrics(throwOnMissingMetrics = false))
+        assertFailsWith<UnsupportedOperationException> {
+            PowerRail.hasMetrics(throwOnMissingMetrics = true)
+        }
+    }
+
+    @Test
     fun hasMetrics_false() {
         // The test is using a mocked output of `dumpsys powerstats`
         val output = """
diff --git a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/CompilationMode.kt b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/CompilationMode.kt
index d57aea9..7603faa 100644
--- a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/CompilationMode.kt
+++ b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/CompilationMode.kt
@@ -29,6 +29,7 @@
 import androidx.benchmark.macro.CompilationMode.None
 import androidx.benchmark.macro.CompilationMode.Partial
 import androidx.benchmark.userspaceTrace
+import androidx.core.os.BuildCompat
 import androidx.profileinstaller.ProfileInstallReceiver
 import org.junit.AssumptionViolatedException
 
@@ -72,6 +73,7 @@
  * to compile the target app).
  */
 sealed class CompilationMode {
+    @androidx.annotation.OptIn(markerClass = [BuildCompat.PrereleaseSdkCheck::class])
     internal fun resetAndCompile(
         packageName: String,
         allowCompilationSkipping: Boolean = true,
@@ -89,7 +91,7 @@
                     // The flag `enablePackageReset` can be set to `true` on `userdebug` builds in
                     // order to speed-up the profile reset. When set to false, reset is performed
                     // uninstalling and reinstalling the app.
-                    if (Shell.isSessionRooted()) {
+                    if (BuildCompat.isAtLeastU() || Shell.isSessionRooted()) {
                         // Package reset enabled
                         Log.d(TAG, "Re-compiling $packageName")
                         // cmd package compile --reset returns a "Success" or a "Failure" to stdout.
@@ -103,7 +105,7 @@
                             "Unable to recompile $packageName ($output)"
                         }
                     } else {
-                        // User builds. Kick off a full uninstall-reinstall
+                        // User builds pre-U. Kick off a full uninstall-reinstall
                         Log.d(TAG, "Reinstalling $packageName")
                         reinstallPackage(packageName)
                     }
diff --git a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Metric.kt b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Metric.kt
index dfd14e1..9bf649f 100644
--- a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Metric.kt
+++ b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Metric.kt
@@ -238,7 +238,10 @@
         val androidStartup = traceMetrics.android_startup
             ?: throw IllegalStateException("No android_startup metric found.")
         val appStartup =
-            androidStartup.startup.first { it.package_name == captureInfo.targetPackageName }
+            androidStartup.startup.firstOrNull { it.package_name == captureInfo.targetPackageName }
+                ?: throw IllegalStateException("Didn't find startup for pkg " +
+                    "${captureInfo.targetPackageName}, found startups for pkgs: " +
+                    "${androidStartup.startup.map {it.package_name}}")
 
         // Extract app startup
         val metricMap = mutableMapOf<String, Double>()
diff --git a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/PowerRail.kt b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/PowerRail.kt
index 69f0fb6..1013b84 100644
--- a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/PowerRail.kt
+++ b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/PowerRail.kt
@@ -43,7 +43,9 @@
      * @Throws UnsupportedOperationException if `hasException == true` and no rail metrics are found.
      */
     fun hasMetrics(throwOnMissingMetrics: Boolean = false): Boolean {
-        val output = Shell.executeScriptCaptureStdout(DUMPSYS_POWERSTATS)
+        // Note - we don't capture stderr, since if dumpsys fails due to missing
+        // service, we'll correctly fail to find channels in stdout
+        val output = Shell.executeCommandCaptureStdoutOnly(DUMPSYS_POWERSTATS)
         return hasMetrics(output, throwOnMissingMetrics)
     }
 
diff --git a/bluetooth/integration-tests/testapp/src/main/AndroidManifest.xml b/bluetooth/integration-tests/testapp/src/main/AndroidManifest.xml
index 4fd7629..0eff47f 100644
--- a/bluetooth/integration-tests/testapp/src/main/AndroidManifest.xml
+++ b/bluetooth/integration-tests/testapp/src/main/AndroidManifest.xml
@@ -18,8 +18,8 @@
         </activity>
     </application>
 
-    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 
     <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
     <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
diff --git a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/MainActivity.kt b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/MainActivity.kt
index 9f655fb..b177d15 100644
--- a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/MainActivity.kt
+++ b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/MainActivity.kt
@@ -64,6 +64,7 @@
 
         requestBluetoothPermissions.launch(
             arrayOf(
+                Manifest.permission.ACCESS_COARSE_LOCATION,
                 Manifest.permission.ACCESS_FINE_LOCATION,
                 Manifest.permission.BLUETOOTH_ADVERTISE,
                 Manifest.permission.BLUETOOTH_CONNECT,
diff --git a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/bluetoothx/BtxFragment.kt b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/bluetoothx/BtxFragment.kt
index 800098e..6a9e7ed 100644
--- a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/bluetoothx/BtxFragment.kt
+++ b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/bluetoothx/BtxFragment.kt
@@ -46,7 +46,6 @@
 import kotlinx.coroutines.channels.awaitClose
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.callbackFlow
-import kotlinx.coroutines.flow.take
 import kotlinx.coroutines.launch
 
 class BtxFragment : Fragment() {
@@ -85,7 +84,12 @@
         bluetoothLe = BluetoothLe(requireContext())
 
         binding.buttonScan.setOnClickListener {
-            startScan()
+            if (scanJob?.isActive == true) {
+                scanJob?.cancel()
+                binding.buttonScan.text = getString(R.string.scan_using_btx)
+            } else {
+                startScan()
+            }
         }
 
         binding.switchAdvertise.setOnCheckedChangeListener { _, isChecked ->
@@ -119,7 +123,7 @@
             }
 
             override fun onScanFailed(errorCode: Int) {
-                Log.d(TAG, "scan failed")
+                Log.d(TAG, "onScanFailed() called with: errorCode = $errorCode")
             }
         }
 
@@ -144,10 +148,13 @@
             .build()
 
         scanJob = scanScope.launch {
-            Toast.makeText(context, getString(R.string.scan_start_message), Toast.LENGTH_LONG)
+            Toast.makeText(context, getString(R.string.scan_start_message), Toast.LENGTH_SHORT)
                 .show()
-            scan(scanSettings).take(1).collect {
-                Log.d(TAG, "ScanResult collected")
+
+            binding.buttonScan.text = getString(R.string.stop_scanning)
+
+            scan(scanSettings).collect {
+                Log.d(TAG, "ScanResult collected: $it")
             }
         }
     }
diff --git a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/framework/FwkFragment.kt b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/framework/FwkFragment.kt
index 46e8e17..8e68b13 100644
--- a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/framework/FwkFragment.kt
+++ b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/framework/FwkFragment.kt
@@ -74,6 +74,8 @@
         }
     }
 
+    private var isScanning = false
+
     private lateinit var fwkViewModel: FwkViewModel
 
     private var _binding: FragmentFwkBinding? = null
@@ -100,7 +102,8 @@
         super.onViewCreated(view, savedInstanceState)
 
         binding.buttonScan.setOnClickListener {
-            scan()
+            if (isScanning) stopScan()
+            else startScan()
         }
 
         binding.switchAdvertise.setOnCheckedChangeListener { _, isChecked ->
@@ -119,13 +122,14 @@
     override fun onDestroyView() {
         super.onDestroyView()
         _binding = null
+        stopScan()
         bluetoothGattServer?.close()
     }
 
     // Permissions are handled by MainActivity requestBluetoothPermissions
     @SuppressLint("MissingPermission")
-    private fun scan() {
-        Log.d(TAG, "scan() called")
+    private fun startScan() {
+        Log.d(TAG, "startScan() called")
 
         val bluetoothManager =
             context?.getSystemService(Context.BLUETOOTH_SERVICE) as? BluetoothManager
@@ -140,12 +144,33 @@
 
         bleScanner?.startScan(null, scanSettings, scanCallback)
 
-        Toast.makeText(context, getString(R.string.scan_start_message), Toast.LENGTH_LONG)
+        isScanning = true
+        binding.buttonScan.text = getString(R.string.stop_scanning)
+
+        Toast.makeText(context, getString(R.string.scan_start_message), Toast.LENGTH_SHORT)
             .show()
     }
 
     // Permissions are handled by MainActivity requestBluetoothPermissions
     @SuppressLint("MissingPermission")
+    private fun stopScan() {
+        Log.d(TAG, "stopScan() called")
+
+        val bluetoothManager =
+            context?.getSystemService(Context.BLUETOOTH_SERVICE) as? BluetoothManager
+
+        val bluetoothAdapter = bluetoothManager?.adapter
+
+        val bleScanner = bluetoothAdapter?.bluetoothLeScanner
+
+        bleScanner?.stopScan(scanCallback)
+
+        isScanning = false
+        _binding?.buttonScan?.text = getString(R.string.scan_using_fwk)
+    }
+
+    // Permissions are handled by MainActivity requestBluetoothPermissions
+    @SuppressLint("MissingPermission")
     private fun startAdvertise() {
         Log.d(TAG, "startAdvertise() called")
 
diff --git a/bluetooth/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml b/bluetooth/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml
index 913a1bb..7925a2b 100644
--- a/bluetooth/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml
+++ b/bluetooth/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml
@@ -23,6 +23,7 @@
     <string name="scan_using_fwk">Scan using Framework Bluetooth APIs</string>
     <string name="scan_using_btx">Scan using BluetoothX APIs</string>
     <string name="scan_start_message">Scan started. Results are in Logcat</string>
+    <string name="stop_scanning">Stop scanning</string>
 
     <string name="advertise_using_fwk">Advertise using Framework Bluetooth APIs</string>
     <string name="advertise_using_btx">Advertise using BluetoothX APIs</string>
diff --git a/buildSrc-tests/src/test/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilderTest.kt b/buildSrc-tests/src/test/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilderTest.kt
index bc68ffa..47ae5ff 100644
--- a/buildSrc-tests/src/test/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilderTest.kt
+++ b/buildSrc-tests/src/test/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilderTest.kt
@@ -249,12 +249,6 @@
         validate(mediaBuilder.build())
     }
 
-    @Test
-    fun testValidMediaConfigXml_presubmit() {
-        mediaBuilder.isPostsubmit(false)
-        validate(mediaBuilder.build())
-    }
-
     private fun validate(xml: String) {
         val parser = SAXParserFactory.newInstance().newSAXParser()
         return parser.parse(
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/ListTaskOutputsTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/ListTaskOutputsTask.kt
index 4e9b6b1e..49a1ff3 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/ListTaskOutputsTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/ListTaskOutputsTask.kt
@@ -128,6 +128,9 @@
     "generateReleaseProtos",
     // Release APKs
     "copyReleaseApk",
+    // The following tests intentionally have the same output of golden images
+    "updateGoldenDesktopTest",
+    "updateGoldenDebugUnitTest"
 )
 
 val taskTypesKnownToDuplicateOutputs = setOf(
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/paparazzi/AndroidXPaparazziImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/paparazzi/AndroidXPaparazziImplPlugin.kt
index 89e34eb..8137fdd 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/paparazzi/AndroidXPaparazziImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/paparazzi/AndroidXPaparazziImplPlugin.kt
@@ -50,7 +50,11 @@
         val paparazziNative = project.createUnzippedPaparazziNativeDependency()
         project.afterEvaluate { it.addTestUtilsDependency() }
         project.tasks.register("updateGolden")
-        project.tasks.withType<Test>().configureEach { it.configureTestTask(paparazziNative) }
+        project.afterEvaluate {
+            // need to be inside of afterEvaluate because we read android.namespace
+            // ideally, we refactor to use a lazy API
+            project.tasks.withType<Test>().configureEach { it.configureTestTask(paparazziNative) }
+        }
         project.tasks.withType<Test>().whenTaskAdded { project.registerUpdateGoldenTask(it) }
     }
 
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilder.kt b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilder.kt
index 52cc075..f7bcd5c 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilder.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilder.kt
@@ -49,11 +49,6 @@
     fun testApkSha256(testApkSha256: String) = apply { this.testApkSha256 = testApkSha256 }
     fun testRunner(testRunner: String) = apply { this.testRunner = testRunner }
 
-    private data class InstrumentationArg(
-        val key: String,
-        val value: String
-    )
-
     fun buildJson(): String {
         val gson = GsonBuilder().setPrettyPrinting().create()
         val instrumentationArgs = if (isBenchmark && !isPostsubmit) {
@@ -77,9 +72,6 @@
             "instrumentationArgs" to instrumentationArgs,
             "additionalApkKeys" to additionalApkKeys
         )
-        if (isBenchmark && !isPostsubmit) {
-            values["instrumentationArgs"]
-        }
         return gson.toJson(values)
     }
 
@@ -138,22 +130,25 @@
 }
 
 class MediaConfigBuilder {
+    lateinit var configName: String
     lateinit var clientApkName: String
+    lateinit var clientApkSha256: String
     lateinit var clientApplicationId: String
     var isClientPrevious: Boolean = true
-    var isPostsubmit: Boolean = true
     var isServicePrevious: Boolean = true
     lateinit var minSdk: String
     var runAllTests: Boolean = true
     lateinit var serviceApkName: String
+    lateinit var serviceApkSha256: String
     lateinit var serviceApplicationId: String
     var tags: MutableList<String> = mutableListOf()
     lateinit var testRunner: String
 
+    fun configName(configName: String) = apply { this.configName = configName }
     fun clientApkName(clientApkName: String) = apply { this.clientApkName = clientApkName }
+    fun clientApkSha256(clientApkSha256: String) = apply { this.clientApkSha256 = clientApkSha256 }
     fun clientApplicationId(clientApplicationId: String) =
         apply { this.clientApplicationId = clientApplicationId }
-    fun isPostsubmit(isPostsubmit: Boolean) = apply { this.isPostsubmit = isPostsubmit }
     fun isClientPrevious(isClientPrevious: Boolean) = apply {
         this.isClientPrevious = isClientPrevious
     }
@@ -163,6 +158,9 @@
     fun minSdk(minSdk: String) = apply { this.minSdk = minSdk }
     fun runAllTests(runAllTests: Boolean) = apply { this.runAllTests = runAllTests }
     fun serviceApkName(serviceApkName: String) = apply { this.serviceApkName = serviceApkName }
+    fun serviceApkSha256(serviceApkSha256: String) = apply {
+        this.serviceApkSha256 = serviceApkSha256
+    }
     fun serviceApplicationId(serviceApplicationId: String) =
         apply { this.serviceApplicationId = serviceApplicationId }
     fun tag(tag: String) = apply { this.tags.add(tag) }
@@ -184,6 +182,41 @@
         }
     }
 
+    private fun mediaInstrumentationArgsForJson(): List<InstrumentationArg> {
+        return listOf(
+            if (isClientPrevious) {
+                InstrumentationArg(key = "client_version", value = "previous")
+            } else {
+                InstrumentationArg(key = "client_version", value = "tot")
+            },
+            if (isServicePrevious) {
+                InstrumentationArg(key = "service_version", value = "previous")
+            } else {
+                InstrumentationArg(key = "service_version", value = "tot")
+            }
+        )
+    }
+
+    fun buildJson(forClient: Boolean): String {
+        val gson = GsonBuilder().setPrettyPrinting().create()
+        val instrumentationArgs =
+            listOf(
+                InstrumentationArg("notAnnotation", "androidx.test.filters.FlakyTest")
+            ) + mediaInstrumentationArgsForJson()
+        val values = mapOf(
+            "name" to "$configName-${if (forClient) "clientTests" else "serviceTests"}",
+            "minSdkVersion" to minSdk,
+            "testSuiteTags" to tags,
+            "testApk" to if (forClient) clientApkName else serviceApkName,
+            "testApkSha256" to if (forClient) clientApkSha256 else serviceApkSha256,
+            "appApk" to if (forClient) serviceApkName else clientApkName,
+            "appApkSha256" to if (forClient) serviceApkSha256 else clientApkSha256,
+            "instrumentationArgs" to instrumentationArgs,
+            "additionalApkKeys" to listOf<String>()
+        )
+        return gson.toJson(values)
+    }
+
     fun build(): String {
         val sb = StringBuilder()
         sb.append(XML_HEADER_AND_LICENSE)
@@ -243,6 +276,11 @@
     }
 }
 
+private data class InstrumentationArg(
+    val key: String,
+    val value: String
+)
+
 /**
  * These constants are the building blocks of the xml configs, but
  * they aren't very readable as separate chunks. Look to
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt
index f805e8d..dccb090 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt
@@ -21,6 +21,7 @@
 import com.android.build.api.variant.BuiltArtifact
 import com.android.build.api.variant.BuiltArtifacts
 import com.android.build.api.variant.BuiltArtifactsLoader
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.file.DirectoryProperty
 import org.gradle.api.file.RegularFileProperty
@@ -33,7 +34,6 @@
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
 import org.gradle.work.DisableCachingByDefault
-import java.io.File
 
 /**
  * Writes three configuration files to test combinations of media client & service in
@@ -108,18 +108,6 @@
     @get:OutputFile
     abstract val clientToTServiceToT: RegularFileProperty
 
-    /**
-     * output file where we write the sha256 of each APK we refer in tests.
-     */
-    @get:OutputFile
-    abstract val shaReportOutput: RegularFileProperty
-
-    /**
-     * output file where we write the sha256 of each APK we refer in constained tests.
-     */
-    @get:OutputFile
-    abstract val constrainedShaReportOutput: RegularFileProperty
-
     @get:OutputFile
     abstract val constrainedClientPreviousServiceToT: RegularFileProperty
 
@@ -129,6 +117,24 @@
     @get:OutputFile
     abstract val constrainedClientToTServiceToT: RegularFileProperty
 
+    @get:OutputFile
+    abstract val jsonClientPreviousServiceToTClientTests: RegularFileProperty
+
+    @get:OutputFile
+    abstract val jsonClientPreviousServiceToTServiceTests: RegularFileProperty
+
+    @get:OutputFile
+    abstract val jsonClientToTServicePreviousClientTests: RegularFileProperty
+
+    @get:OutputFile
+    abstract val jsonClientToTServicePreviousServiceTests: RegularFileProperty
+
+    @get:OutputFile
+    abstract val jsonClientToTServiceToTClientTests: RegularFileProperty
+
+    @get:OutputFile
+    abstract val jsonClientToTServiceToTServiceTests: RegularFileProperty
+
     @TaskAction
     fun generateAndroidTestZip() {
         val clientToTApk = resolveApk(clientToTFolder, clientToTLoader)
@@ -137,37 +143,75 @@
         val servicePreviousApk = resolveApk(
             servicePreviousFolder, servicePreviousLoader
         )
-        val testApkSha256Report = TestApkSha256Report()
         writeConfigFileContent(
-            testApkSha256Report, clientToTApk, serviceToTApk, clientToTPath.get(),
-            serviceToTPath.get(), clientToTServiceToT, false, false
+            clientApk = clientToTApk,
+            serviceApk = serviceToTApk,
+            clientPath = clientToTPath.get(),
+            servicePath = serviceToTPath.get(),
+            xmlOutputFile = clientToTServiceToT,
+            jsonClientOutputFile = jsonClientToTServiceToTClientTests,
+            jsonServiceOutputFile = jsonClientToTServiceToTServiceTests,
+            isClientPrevious = false,
+            isServicePrevious = false
         )
         writeConfigFileContent(
-            testApkSha256Report, clientToTApk, servicePreviousApk, clientToTPath.get(),
-            servicePreviousPath.get(), clientToTServicePrevious, false, true
+            clientApk = clientToTApk,
+            serviceApk = servicePreviousApk,
+            clientPath = clientToTPath.get(),
+            servicePath = servicePreviousPath.get(),
+            xmlOutputFile = clientToTServicePrevious,
+            jsonClientOutputFile = jsonClientToTServicePreviousClientTests,
+            jsonServiceOutputFile = jsonClientToTServicePreviousServiceTests,
+            isClientPrevious = false,
+            isServicePrevious = true
         )
         writeConfigFileContent(
-            testApkSha256Report, clientPreviousApk, serviceToTApk, clientPreviousPath.get(),
-            serviceToTPath.get(), clientPreviousServiceToT, true, false
+            clientApk = clientPreviousApk,
+            serviceApk = serviceToTApk,
+            clientPath = clientPreviousPath.get(),
+            servicePath = serviceToTPath.get(),
+            xmlOutputFile = clientPreviousServiceToT,
+            jsonClientOutputFile = jsonClientPreviousServiceToTClientTests,
+            jsonServiceOutputFile = jsonClientPreviousServiceToTServiceTests,
+            isClientPrevious = true,
+            isServicePrevious = false
         )
         // write constrained configs as well
         writeConfigFileContent(
-            testApkSha256Report, clientToTApk, serviceToTApk, clientToTPath.get(),
-            serviceToTPath.get(), constrainedClientToTServiceToT, false, false, true
+            clientApk = clientToTApk,
+            serviceApk = serviceToTApk,
+            clientPath = clientToTPath.get(),
+            servicePath = serviceToTPath.get(),
+            xmlOutputFile = constrainedClientToTServiceToT,
+            jsonClientOutputFile = jsonClientToTServiceToTClientTests,
+            jsonServiceOutputFile = jsonClientToTServiceToTServiceTests,
+            isClientPrevious = false,
+            isServicePrevious = false,
+            isConstrained = true
         )
         writeConfigFileContent(
-            testApkSha256Report, clientToTApk, servicePreviousApk, clientToTPath.get(),
-            servicePreviousPath.get(), constrainedClientToTServicePrevious, false, true, true
+            clientApk = clientToTApk,
+            serviceApk = servicePreviousApk,
+            clientPath = clientToTPath.get(),
+            servicePath = servicePreviousPath.get(),
+            xmlOutputFile = constrainedClientToTServicePrevious,
+            jsonClientOutputFile = jsonClientToTServicePreviousClientTests,
+            jsonServiceOutputFile = jsonClientToTServicePreviousServiceTests,
+            isClientPrevious = false,
+            isServicePrevious = true,
+            isConstrained = true
         )
         writeConfigFileContent(
-            testApkSha256Report, clientPreviousApk, serviceToTApk, clientPreviousPath.get(),
-            serviceToTPath.get(), constrainedClientPreviousServiceToT, true, false, true
-        )
-        testApkSha256Report.writeToFile(
-            shaReportOutput.get().asFile
-        )
-        testApkSha256Report.writeToFile(
-            constrainedShaReportOutput.get().asFile
+            clientApk = clientPreviousApk,
+            serviceApk = serviceToTApk,
+            clientPath = clientPreviousPath.get(),
+            servicePath = serviceToTPath.get(),
+            xmlOutputFile = constrainedClientPreviousServiceToT,
+            jsonClientOutputFile = jsonClientPreviousServiceToTClientTests,
+            jsonServiceOutputFile = jsonClientPreviousServiceToTServiceTests,
+            isClientPrevious = true,
+            isServicePrevious = false,
+            isConstrained = true
         )
     }
 
@@ -185,32 +229,28 @@
     }
 
     private fun writeConfigFileContent(
-        testApkSha256Report: TestApkSha256Report,
         clientApk: BuiltArtifacts,
         serviceApk: BuiltArtifacts,
         clientPath: String,
         servicePath: String,
-        outputFile: RegularFileProperty,
+        xmlOutputFile: RegularFileProperty,
+        jsonClientOutputFile: RegularFileProperty,
+        jsonServiceOutputFile: RegularFileProperty,
         isClientPrevious: Boolean,
         isServicePrevious: Boolean,
         isConstrained: Boolean = false
     ) {
         val configBuilder = MediaConfigBuilder()
+        configBuilder.configName(xmlOutputFile.asFile.get().name)
         val clientBuiltArtifact = clientApk.elements.single()
         val serviceBuiltArtifact = serviceApk.elements.single()
         val clientApkName = clientBuiltArtifact.resolveName(clientPath)
         val serviceApkName = serviceBuiltArtifact.resolveName(servicePath)
-        testApkSha256Report.addFile(
-            name = clientApkName,
-            builtArtifact = clientBuiltArtifact
-        )
-        testApkSha256Report.addFile(
-            name = serviceApkName,
-            builtArtifact = serviceBuiltArtifact
-        )
         configBuilder.clientApkName(clientApkName)
+            .clientApkSha256(sha256(File(clientBuiltArtifact.outputFile)))
             .clientApplicationId(clientApk.applicationId)
             .serviceApkName(serviceApkName)
+            .serviceApkSha256(sha256(File(serviceBuiltArtifact.outputFile)))
             .serviceApplicationId(serviceApk.applicationId)
             .minSdk(minSdk.get().toString())
             .testRunner(testRunner.get())
@@ -218,8 +258,6 @@
             .isServicePrevious(isServicePrevious)
             .tag("androidx_unit_tests")
             .tag("media_compat")
-        val isPresubmit = presubmit.get()
-        configBuilder.isPostsubmit(!isPresubmit)
         when (affectedModuleDetectorSubset.get()) {
             ProjectSubset.DEPENDENT_PROJECTS -> {
                 if (isConstrained) {
@@ -229,7 +267,7 @@
                 }
             }
             ProjectSubset.NONE -> {
-                if (isPresubmit) {
+                if (presubmit.get()) {
                     configBuilder.runAllTests(false)
                 } else {
                     configBuilder.runAllTests(true)
@@ -240,14 +278,14 @@
             }
         }
 
-        val resolvedOutputFile: File = outputFile.asFile.get()
-        if (!resolvedOutputFile.exists()) {
-            if (!resolvedOutputFile.createNewFile()) {
-                throw RuntimeException(
-                    "Failed to create test configuration file: $resolvedOutputFile"
-                )
-            }
+        createOrFail(xmlOutputFile).writeText(configBuilder.build())
+        if (!isConstrained) {
+            createOrFail(jsonClientOutputFile).writeText(
+                configBuilder.buildJson(forClient = true)
+            )
+            createOrFail(jsonServiceOutputFile).writeText(
+                configBuilder.buildJson(forClient = false)
+            )
         }
-        resolvedOutputFile.writeText(configBuilder.build())
     }
 }
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateTestConfigurationTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateTestConfigurationTask.kt
index ee7c132..b9861d0 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateTestConfigurationTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateTestConfigurationTask.kt
@@ -146,10 +146,6 @@
             val appApkBuiltArtifact = appApk.elements.single()
             var appName = appApkBuiltArtifact.outputFile.substringAfterLast("/")
                 .renameApkForTesting(appProjectPath.get(), hasBenchmarkPlugin = false)
-            // TODO(b/178776319): Clean up this hardcoded hack
-            if (appProjectPath.get().contains("macrobenchmark-target")) {
-                appName = appName.replace("debug-androidTest", "release")
-            }
             configBuilder.appApkName(appName)
                 .appApkSha256(sha256(File(appApkBuiltArtifact.outputFile)))
             testApkSha256Report.addFile(appName, appApkBuiltArtifact)
@@ -228,7 +224,7 @@
     }
 }
 
-private fun createOrFail(fileProperty: RegularFileProperty): File {
+internal fun createOrFail(fileProperty: RegularFileProperty): File {
     val resolvedFile: File = fileProperty.asFile.get()
     if (!resolvedFile.exists()) {
         if (!resolvedFile.createNewFile()) {
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt
index b890f55..37e6689 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt
@@ -38,13 +38,13 @@
 import com.android.build.api.variant.HasAndroidTest
 import com.android.build.gradle.BaseExtension
 import com.android.build.gradle.tasks.PackageAndroidArtifact
+import java.io.File
 import org.gradle.api.Project
 import org.gradle.api.UnknownTaskException
 import org.gradle.api.file.DuplicatesStrategy
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.api.tasks.bundling.Zip
 import org.gradle.kotlin.dsl.getByType
-import java.io.File
 
 /**
  * Creates and configures the test config generation task for a project. Configuration includes
@@ -236,7 +236,6 @@
 ) {
     val mediaPrefix = getMediaConfigTaskPrefix(isMedia2)
     val mediaTask = getOrCreateMediaTestConfigTask(this, isMedia2)
-    val sha256ReportFileName = "$mediaPrefix$SHA_256_FILE_SUFFIX"
     mediaTask.configure {
         it as GenerateMediaTestConfigurationTask
         if (this.name.contains("client")) {
@@ -296,16 +295,40 @@
                 "${mediaPrefix}ClientToTServiceToT$variantName.xml"
             )
         )
-        it.shaReportOutput.fileValue(
+        it.jsonClientPreviousServiceToTClientTests.fileValue(
             File(
                 this.getTestConfigDirectory(),
-                sha256ReportFileName
+                "${mediaPrefix}ClientPreviousServiceToTClientTests$variantName.json"
             )
         )
-        it.constrainedShaReportOutput.fileValue(
+        it.jsonClientPreviousServiceToTServiceTests.fileValue(
             File(
-                this.getConstrainedTestConfigDirectory(),
-                sha256ReportFileName
+                this.getTestConfigDirectory(),
+                "${mediaPrefix}ClientPreviousServiceToTServiceTests$variantName.json"
+            )
+        )
+        it.jsonClientToTServicePreviousClientTests.fileValue(
+            File(
+                this.getTestConfigDirectory(),
+                "${mediaPrefix}ClientToTServicePreviousClientTests$variantName.json"
+            )
+        )
+        it.jsonClientToTServicePreviousServiceTests.fileValue(
+            File(
+                this.getTestConfigDirectory(),
+                "${mediaPrefix}ClientToTServicePreviousServiceTests$variantName.json"
+            )
+        )
+        it.jsonClientToTServiceToTClientTests.fileValue(
+            File(
+                this.getTestConfigDirectory(),
+                "${mediaPrefix}ClientToTServiceToTClientTests$variantName.json"
+            )
+        )
+        it.jsonClientToTServiceToTServiceTests.fileValue(
+            File(
+                this.getTestConfigDirectory(),
+                "${mediaPrefix}ClientToTServiceToTServiceTests$variantName.json"
             )
         )
         it.minSdk.set(minSdk)
@@ -317,7 +340,7 @@
 
 private fun Project.getOrCreateMacrobenchmarkConfigTask(variantName: String):
     TaskProvider<GenerateTestConfigurationTask> {
-        val parentProject = this.parent!!
+    val parentProject = this.parent!!
     return try {
         parentProject.tasks.withType(GenerateTestConfigurationTask::class.java)
             .named("${AndroidXImplPlugin.GENERATE_TEST_CONFIGURATION_TASK}$variantName")
@@ -336,6 +359,20 @@
     testRunner: String
 ) {
     val configTask = getOrCreateMacrobenchmarkConfigTask(variantName)
+    if (path == ":benchmark:integration-tests:macrobenchmark-target" && variantName == "release") {
+        // Really ugly workaround for b/178776319 where we hardcode that
+        // :benchmark:integration-tests:macrobenchmark-target needs to be installed
+        // for :benchmark:benchmark-macro tests to work.
+        project(":benchmark:benchmark-macro").tasks.withType(
+            GenerateTestConfigurationTask::class.java
+        ).named(
+            "${AndroidXImplPlugin.GENERATE_TEST_CONFIGURATION_TASK}$variantName"
+        ).configure { task ->
+            task.appFolder.set(artifacts.get(SingleArtifact.APK))
+            task.appLoader.set(artifacts.getBuiltArtifactsLoader())
+            task.appProjectPath.set(path)
+        }
+    }
     if (path.endsWith("macrobenchmark")) {
         configTask.configure { task ->
             val androidXExtension = extensions.getByType<AndroidXExtension>()
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/config/CameraAppConfig.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/config/CameraAppConfig.kt
index 66e6799..2f41d39 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/config/CameraAppConfig.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/config/CameraAppConfig.kt
@@ -25,7 +25,6 @@
 import androidx.camera.camera2.pipe.integration.impl.CameraInteropStateCallbackRepository
 import androidx.camera.core.impl.CameraFactory
 import androidx.camera.core.impl.CameraThreadConfig
-import androidx.camera.core.impl.utils.executor.CameraXExecutors
 import dagger.Component
 import dagger.Module
 import dagger.Provides
@@ -41,26 +40,16 @@
         @Provides
         fun provideCameraPipe(
             context: Context,
-            cameraThreadConfig: CameraThreadConfig,
-            cameraInteropStateCallbackRepository: CameraInteropStateCallbackRepository,
-        ): CameraPipe {
-            val executor = cameraThreadConfig.cameraExecutor
-            val sequentialExecutor = CameraXExecutors.newSequentialExecutor(executor)
-            return CameraPipe(
-                CameraPipe.Config(
-                    appContext = context.applicationContext,
-                    cameraInteropConfig = CameraPipe.CameraInteropConfig(
-                        cameraInteropStateCallbackRepository.deviceStateCallback,
-                        cameraInteropStateCallbackRepository.sessionStateCallback
-                    ),
-                    threadConfig = CameraPipe.ThreadConfig(
-                        defaultLightweightExecutor = sequentialExecutor,
-                        defaultBackgroundExecutor = executor,
-                        defaultCameraExecutor = sequentialExecutor,
-                    )
+            cameraInteropStateCallbackRepository: CameraInteropStateCallbackRepository
+        ): CameraPipe = CameraPipe(
+            CameraPipe.Config(
+                appContext = context.applicationContext,
+                cameraInteropConfig = CameraPipe.CameraInteropConfig(
+                    cameraInteropStateCallbackRepository.deviceStateCallback,
+                    cameraInteropStateCallbackRepository.sessionStateCallback
                 )
             )
-        }
+        )
 
         @Provides
         fun provideCameraDevices(cameraPipe: CameraPipe): CameraDevices {
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplCameraReopenTest.kt b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplCameraReopenTest.kt
index d98a0a7..bde605f 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplCameraReopenTest.kt
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplCameraReopenTest.kt
@@ -619,6 +619,11 @@
         return forwardCameraManagerCompatImpl.cameraIdList
     }
 
+    @Throws(CameraAccessExceptionCompat::class)
+    override fun getConcurrentCameraIds(): MutableSet<MutableSet<String>> {
+        return forwardCameraManagerCompatImpl.concurrentCameraIds
+    }
+
     override fun registerAvailabilityCallback(
         executor: Executor,
         callback: AvailabilityCallback
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplStateTest.kt b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplStateTest.kt
index 419da9e..d0c8fd7 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplStateTest.kt
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplStateTest.kt
@@ -440,6 +440,10 @@
             return forwardCameraManager.cameraIdList
         }
 
+        override fun getConcurrentCameraIds(): MutableSet<MutableSet<String>> {
+            return forwardCameraManager.concurrentCameraIds
+        }
+
         override fun registerAvailabilityCallback(
             executor: Executor,
             callback: CameraManager.AvailabilityCallback
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompat.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompat.java
index 67a8646..6c5d17b 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompat.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompat.java
@@ -33,6 +33,7 @@
 import androidx.camera.core.impl.utils.MainThreadAsyncHandler;
 
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Executor;
 
 /**
@@ -99,6 +100,24 @@
     }
 
     /**
+     * Return set of set of camera ids, each set includes one combination of the camera ids that
+     * could operate concurrently.
+     *
+     * <p>This API is added in API Level 30, any lower API version will return empty set instead.
+     *
+     * <p>The behavior of this method matches that of {@link CameraManager#getConcurrentCameraIds()}
+     * except that {@link CameraAccessExceptionCompat} is thrown in place of
+     * {@link CameraAccessException} for convenience.
+     *
+     * @return Set of set of camera ids.
+     * @throws CameraAccessExceptionCompat
+     */
+    @NonNull
+    public Set<Set<String>> getConcurrentCameraIds() throws CameraAccessExceptionCompat {
+        return mImpl.getConcurrentCameraIds();
+    }
+
+    /**
      * Register a callback to be notified about camera device availability.
      *
      * <p>The behavior of this method matches that of {@link
@@ -236,6 +255,12 @@
         @NonNull
         String[] getCameraIdList() throws CameraAccessExceptionCompat;
 
+        /**
+         * Return the set of concurrent camera id set which could operate concurrently.
+         */
+        @NonNull
+        Set<Set<String>> getConcurrentCameraIds() throws CameraAccessExceptionCompat;
+
         void registerAvailabilityCallback(
                 @NonNull /* @CallbackExecutor */ Executor executor,
                 @NonNull CameraManager.AvailabilityCallback callback);
@@ -267,7 +292,9 @@
         @NonNull
         static CameraManagerCompatImpl from(@NonNull Context context,
                 @NonNull Handler compatHandler) {
-            if (Build.VERSION.SDK_INT >= 29) {
+            if (Build.VERSION.SDK_INT >= 30) {
+                return new CameraManagerCompatApi30Impl(context);
+            } else if (Build.VERSION.SDK_INT >= 29) {
                 return new CameraManagerCompatApi29Impl(context);
             } else if (Build.VERSION.SDK_INT >= 28) {
                 // Can use Executor directly on API 28+
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatApi30Impl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatApi30Impl.java
new file mode 100644
index 0000000..f268c1d
--- /dev/null
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatApi30Impl.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.camera2.internal.compat;
+
+import android.content.Context;
+import android.hardware.camera2.CameraAccessException;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+
+import java.util.Set;
+
+@RequiresApi(30)
+class CameraManagerCompatApi30Impl extends CameraManagerCompatApi29Impl {
+
+    CameraManagerCompatApi30Impl(@NonNull Context context) {
+        super(context);
+    }
+
+    @NonNull
+    @Override
+    public Set<Set<String>> getConcurrentCameraIds() throws CameraAccessExceptionCompat {
+        try {
+            return mCameraManager.getConcurrentCameraIds();
+        } catch (CameraAccessException e) {
+            throw CameraAccessExceptionCompat.toCameraAccessExceptionCompat(e);
+        }
+    }
+}
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatBaseImpl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatBaseImpl.java
index c85a016..9a62f4b 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatBaseImpl.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatBaseImpl.java
@@ -30,8 +30,10 @@
 import androidx.annotation.RequiresPermission;
 import androidx.core.util.Preconditions;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Executor;
 
 @RequiresApi(21)
@@ -61,6 +63,12 @@
         }
     }
 
+    @NonNull
+    @Override
+    public Set<Set<String>> getConcurrentCameraIds() throws CameraAccessExceptionCompat {
+        return Collections.emptySet();
+    }
+
     @Override
     public void registerAvailabilityCallback(@NonNull Executor executor,
             @NonNull CameraManager.AvailabilityCallback callback) {
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java
index fc150d4..e901fb7 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java
@@ -57,6 +57,8 @@
 import androidx.lifecycle.MutableLiveData;
 import androidx.test.core.app.ApplicationProvider;
 
+import com.google.common.collect.ImmutableSet;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -73,6 +75,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Executor;
 
 @RunWith(RobolectricTestRunner.class)
@@ -817,6 +820,12 @@
             return mCameraIdCharacteristics.keySet().toArray(new String[0]);
         }
 
+        @NonNull
+        @Override
+        public Set<Set<String>> getConcurrentCameraIds() throws CameraAccessExceptionCompat {
+            return ImmutableSet.of(mCameraIdCharacteristics.keySet());
+        }
+
         @Override
         public void registerAvailabilityCallback(@NonNull Executor executor,
                 @NonNull CameraManager.AvailabilityCallback callback) {
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/CameraManagerCompatTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/CameraManagerCompatTest.java
index a09d6d3..ff18ed7 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/CameraManagerCompatTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/CameraManagerCompatTest.java
@@ -49,7 +49,9 @@
 import org.robolectric.shadows.ShadowLog;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.Executor;
 
 @RunWith(RobolectricTestRunner.class)
@@ -223,6 +225,32 @@
         manager.getCameraCharacteristicsCompat(CAMERA_ID);
     }
 
+    @Test
+    @Config(minSdk = 30)
+    public void getConcurrentCameraIds_api30_returnsCameraIdSets() {
+        CameraManagerCompat manager = CameraManagerCompat.from(mContext);
+
+        try {
+            manager.getConcurrentCameraIds();
+        } catch (CameraAccessExceptionCompat e) {
+        }
+
+        verify(mInteractionCallback, times(1)).getConcurrentCameraIds();
+    }
+
+    @Test
+    @Config(maxSdk = 29)
+    public void getConcurrentCameraIds_api29_returnsCameraIdSets() {
+        CameraManagerCompat manager = CameraManagerCompat.from(mContext);
+
+        try {
+            manager.getConcurrentCameraIds();
+        } catch (CameraAccessExceptionCompat e) {
+        }
+
+        verify(mInteractionCallback, times(0)).getConcurrentCameraIds();
+    }
+
     /**
      * A Shadow of {@link CameraManager} which forwards invocations to callbacks to record
      * interactions.
@@ -234,6 +262,8 @@
     public static final class ShadowInteractionCameraManager {
 
         private static final String[] EMPTY_ID_LIST = new String[]{};
+
+        private static final Set<Set<String>> EMPTY_CONCURRENT_ID_SET = new HashSet<>();
         private final List<Callback> mCallbacks = new ArrayList<>();
         private final CameraCharacteristics mCameraCharacteristics =
                 mock(CameraCharacteristics.class);
@@ -254,6 +284,17 @@
 
         @NonNull
         @Implementation
+        protected Set<Set<String>> getConcurrentCameraIds() throws CameraAccessException {
+            if (Build.VERSION.SDK_INT >= 30) {
+                for (Callback cb : mCallbacks) {
+                    Set<Set<String>> ids = cb.getConcurrentCameraIds();
+                }
+            }
+            return EMPTY_CONCURRENT_ID_SET;
+        }
+
+        @NonNull
+        @Implementation
         protected CameraCharacteristics getCameraCharacteristics(@NonNull String cameraId) {
             for (Callback cb : mCallbacks) {
                 cb.getCameraCharacteristics(cameraId);
@@ -312,6 +353,9 @@
             String[] getCameraIdList();
 
             @NonNull
+            Set<Set<String>> getConcurrentCameraIds();
+
+            @NonNull
             CameraCharacteristics getCameraCharacteristics(@NonNull String cameraId);
 
             void openCamera(@NonNull String cameraId,
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/concurrent/ConcurrentCamera.java b/camera/camera-core/src/main/java/androidx/camera/core/concurrent/ConcurrentCamera.java
new file mode 100644
index 0000000..864d033
--- /dev/null
+++ b/camera/camera-core/src/main/java/androidx/camera/core/concurrent/ConcurrentCamera.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.core.concurrent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RestrictTo;
+import androidx.camera.core.Camera;
+
+import java.util.List;
+
+/**
+ * Concurrent camera instance.
+ */
+@RequiresApi(21)
+@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+public class ConcurrentCamera {
+
+    @NonNull
+    private List<Camera> mCameras;
+
+    ConcurrentCamera(@NonNull List<Camera> cameras) {
+        mCameras = cameras;
+    }
+
+    /**
+     * Gets the list of cameras.
+     */
+    @NonNull
+    public List<Camera> getCameras() {
+        return mCameras;
+    }
+
+    /**
+     * Builder for concurrent camera instance.
+     */
+    public static class Builder {
+
+        @NonNull
+        private List<Camera> mCameras;
+
+        public Builder() {}
+
+        /**
+         * Sets the list of cameras.
+         *
+         * @param cameras cameras
+         * @return {@link Builder}
+         */
+        @NonNull
+        public Builder setCameras(@NonNull List<Camera> cameras) {
+            mCameras = cameras;
+            return this;
+        }
+
+        /**
+         * Builds the {@link ConcurrentCamera}.
+         * @return {@link ConcurrentCamera}.
+         */
+        @NonNull
+        public ConcurrentCamera builder() {
+            return new ConcurrentCamera(mCameras);
+        }
+    }
+}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/concurrent/ConcurrentCameraConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/concurrent/ConcurrentCameraConfig.java
new file mode 100644
index 0000000..bf8f007
--- /dev/null
+++ b/camera/camera-core/src/main/java/androidx/camera/core/concurrent/ConcurrentCameraConfig.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.core.concurrent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RestrictTo;
+
+import java.util.List;
+
+/**
+ * Concurrent Camera Configuration.
+ */
+@RequiresApi(21)
+@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+public final class ConcurrentCameraConfig {
+    @NonNull
+    private List<SingleCameraConfig> mSingleCameraConfigs;
+
+    ConcurrentCameraConfig(@NonNull List<SingleCameraConfig> singleCameraConfigs) {
+        mSingleCameraConfigs = singleCameraConfigs;
+    }
+
+    /**
+     * Returns single camera configs.
+     * @return list of single camera configs.
+     */
+    @NonNull
+    public List<SingleCameraConfig> getSingleCameraConfigs() {
+        return mSingleCameraConfigs;
+    }
+
+    /**
+     * Builder for concurrent camera config.
+     */
+    public static class Builder {
+
+        @NonNull
+        private List<SingleCameraConfig> mSingleCameraConfigs;
+
+        public Builder() {}
+
+        /**
+         * Sets the list of single camera configs.
+         * @param singleCameraConfigs list of single camera configs.
+         * @return {@link Builder}.
+         */
+        @NonNull
+        public Builder setCameraConfigs(@NonNull List<SingleCameraConfig> singleCameraConfigs) {
+            mSingleCameraConfigs = singleCameraConfigs;
+            return this;
+        }
+
+        /**
+         * Builds the {@link ConcurrentCameraConfig}.
+         * @return {@link ConcurrentCameraConfig}.
+         */
+        @NonNull
+        public ConcurrentCameraConfig build() {
+            return new ConcurrentCameraConfig(mSingleCameraConfigs);
+        }
+
+    }
+}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/concurrent/SingleCameraConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/concurrent/SingleCameraConfig.java
new file mode 100644
index 0000000..c46e856
--- /dev/null
+++ b/camera/camera-core/src/main/java/androidx/camera/core/concurrent/SingleCameraConfig.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.core.concurrent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RestrictTo;
+import androidx.camera.core.CameraSelector;
+import androidx.camera.core.UseCaseGroup;
+import androidx.lifecycle.LifecycleOwner;
+
+/**
+ * Single Camera Configuration.
+ */
+@RequiresApi(21)
+@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+public final class SingleCameraConfig {
+
+    @NonNull
+    private CameraSelector mCameraSelector;
+    @NonNull
+    private LifecycleOwner mLifecycleOwner;
+    @NonNull
+    private UseCaseGroup mUseCaseGroup;
+
+    SingleCameraConfig(
+            @NonNull CameraSelector cameraSelector,
+            @NonNull LifecycleOwner lifecycleOwner,
+            @NonNull UseCaseGroup useCaseGroup) {
+        this.mCameraSelector = cameraSelector;
+        this.mLifecycleOwner = lifecycleOwner;
+        this.mUseCaseGroup = useCaseGroup;
+    }
+
+    @NonNull
+    public CameraSelector getCameraSelector() {
+        return mCameraSelector;
+    }
+
+    @NonNull
+    public LifecycleOwner getLifecycleOwner() {
+        return mLifecycleOwner;
+    }
+
+    @NonNull
+    public UseCaseGroup getUseCaseGroup() {
+        return mUseCaseGroup;
+    }
+
+    /**
+     * Build for single camera config.
+     */
+    public static class Builder {
+        @NonNull
+        private CameraSelector mCameraSelector;
+        @NonNull
+        private LifecycleOwner mLifecycleOwner;
+        @NonNull
+        private UseCaseGroup mUseCaseGroup;
+
+        public Builder() {}
+
+        /**
+         * Sets {@link CameraSelector}.
+         * @param cameraSelector
+         * @return {@link Builder}.
+         */
+        @NonNull
+        public Builder setCameraSelector(@NonNull CameraSelector cameraSelector) {
+            mCameraSelector = cameraSelector;
+            return this;
+        }
+
+        /**
+         * Sets {@link LifecycleOwner}.
+         * @param lifecycleOwner
+         * @return {@link Builder}.
+         */
+        @NonNull
+        public Builder setLifecycleOwner(@NonNull LifecycleOwner lifecycleOwner) {
+            mLifecycleOwner = lifecycleOwner;
+            return this;
+        }
+
+        /**
+         * Sets {@link UseCaseGroup}.
+         * @param useCaseGroup
+         * @return {@link Builder}.
+         */
+        @NonNull
+        public Builder setUseCaseGroup(@NonNull UseCaseGroup useCaseGroup) {
+            mUseCaseGroup = useCaseGroup;
+            return this;
+        }
+
+        /**
+         * Builds the {@link SingleCameraConfig}.
+         * @return {@link SingleCameraConfig}.
+         */
+        @NonNull
+        public SingleCameraConfig build() {
+            return new SingleCameraConfig(mCameraSelector, mLifecycleOwner, mUseCaseGroup);
+        }
+    }
+}
diff --git a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/compat/workaround/OnEnableDisableSessionDurationCheckTest.kt b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/compat/workaround/OnEnableDisableSessionDurationCheckTest.kt
index dd416ee..515d672 100644
--- a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/compat/workaround/OnEnableDisableSessionDurationCheckTest.kt
+++ b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/compat/workaround/OnEnableDisableSessionDurationCheckTest.kt
@@ -31,7 +31,7 @@
 @SdkSuppress(minSdkVersion = 21)
 class OnEnableDisableSessionDurationCheckTest {
     companion object {
-        const val TOLERANCE = 15L
+        const val TOLERANCE = 60L
     }
 
     @Test
@@ -39,7 +39,7 @@
         // Arrange
         val check = OnEnableDisableSessionDurationCheck(/* enabledMinimumDuration */true)
 
-        val duration = 40L
+        val duration = 80L
         // Act
         val startTime = SystemClock.elapsedRealtime()
         check.onEnableSessionInvoked()
diff --git a/camera/camera-lifecycle/src/androidTest/java/androidx/camera/lifecycle/ProcessCameraProviderTest.kt b/camera/camera-lifecycle/src/androidTest/java/androidx/camera/lifecycle/ProcessCameraProviderTest.kt
index 38dd3a9..8cb0c37 100644
--- a/camera/camera-lifecycle/src/androidTest/java/androidx/camera/lifecycle/ProcessCameraProviderTest.kt
+++ b/camera/camera-lifecycle/src/androidTest/java/androidx/camera/lifecycle/ProcessCameraProviderTest.kt
@@ -26,6 +26,8 @@
 import androidx.camera.core.CameraXConfig
 import androidx.camera.core.Preview
 import androidx.camera.core.UseCaseGroup
+import androidx.camera.core.concurrent.ConcurrentCameraConfig
+import androidx.camera.core.concurrent.SingleCameraConfig
 import androidx.camera.core.impl.CameraFactory
 import androidx.camera.core.impl.utils.executor.CameraXExecutors.mainThreadExecutor
 import androidx.camera.core.processing.SurfaceProcessorWithExecutor
@@ -628,6 +630,114 @@
         // Should not throw exception
         ProcessCameraProvider.configureInstance(FakeAppConfig.create())
     }
+
+    @Test
+    fun bindConcurrentCamera_isBound() {
+        ProcessCameraProvider.configureInstance(FakeAppConfig.create())
+
+        runBlocking(MainScope().coroutineContext) {
+            provider = ProcessCameraProvider.getInstance(context).await()
+            val useCase0 = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+            val useCase1 = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+
+            val singleCameraConfig0 = SingleCameraConfig.Builder()
+                .setCameraSelector(CameraSelector.DEFAULT_BACK_CAMERA)
+                .setUseCaseGroup(UseCaseGroup.Builder()
+                    .addUseCase(useCase0)
+                    .build())
+                .setLifecycleOwner(lifecycleOwner0)
+                .build()
+            val singleCameraConfig1 = SingleCameraConfig.Builder()
+                .setCameraSelector(CameraSelector.DEFAULT_FRONT_CAMERA)
+                .setUseCaseGroup(UseCaseGroup.Builder()
+                    .addUseCase(useCase1)
+                    .build())
+                .setLifecycleOwner(lifecycleOwner1)
+                .build()
+
+            val concurrentCameraConfig = ConcurrentCameraConfig.Builder()
+                .setCameraConfigs(listOf(singleCameraConfig0, singleCameraConfig1))
+                .build()
+
+            val concurrentCamera = provider.bindToLifecycle(concurrentCameraConfig)
+
+            assertThat(concurrentCamera).isNotNull()
+            assertThat(concurrentCamera.cameras.size).isEqualTo(2)
+            assertThat(provider.isBound(useCase0)).isTrue()
+            assertThat(provider.isBound(useCase1)).isTrue()
+        }
+    }
+
+    @Test
+    fun bindConcurrentCamera_lessThanTwoSingleCameraConfigs() {
+        ProcessCameraProvider.configureInstance(FakeAppConfig.create())
+
+        runBlocking(MainScope().coroutineContext) {
+            provider = ProcessCameraProvider.getInstance(context).await()
+            val useCase0 = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+
+            val singleCameraConfig0 = SingleCameraConfig.Builder()
+                .setCameraSelector(CameraSelector.DEFAULT_BACK_CAMERA)
+                .setUseCaseGroup(UseCaseGroup.Builder()
+                    .addUseCase(useCase0)
+                    .build())
+                .setLifecycleOwner(lifecycleOwner0)
+                .build()
+
+            val concurrentCameraConfig = ConcurrentCameraConfig.Builder()
+                .setCameraConfigs(listOf(singleCameraConfig0))
+                .build()
+
+            assertThrows<IllegalArgumentException> {
+                provider.bindToLifecycle(concurrentCameraConfig)
+            }
+        }
+    }
+
+    @Test
+    fun bindConcurrentCamera_moreThanTwoSingleCameraConfigs() {
+        ProcessCameraProvider.configureInstance(FakeAppConfig.create())
+
+        runBlocking(MainScope().coroutineContext) {
+            provider = ProcessCameraProvider.getInstance(context).await()
+            val useCase0 = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+            val useCase1 = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+
+            val singleCameraConfig0 = SingleCameraConfig.Builder()
+                .setCameraSelector(CameraSelector.DEFAULT_BACK_CAMERA)
+                .setUseCaseGroup(UseCaseGroup.Builder()
+                    .addUseCase(useCase0)
+                    .build())
+                .setLifecycleOwner(lifecycleOwner0)
+                .build()
+
+            val singleCameraConfig1 = SingleCameraConfig.Builder()
+                .setCameraSelector(CameraSelector.DEFAULT_FRONT_CAMERA)
+                .setUseCaseGroup(UseCaseGroup.Builder()
+                    .addUseCase(useCase1)
+                    .build())
+                .setLifecycleOwner(lifecycleOwner1)
+                .build()
+
+            val singleCameraConfig2 = SingleCameraConfig.Builder()
+                .setCameraSelector(CameraSelector.DEFAULT_FRONT_CAMERA)
+                .setUseCaseGroup(UseCaseGroup.Builder()
+                    .addUseCase(useCase0)
+                    .build())
+                .setLifecycleOwner(lifecycleOwner1)
+                .build()
+
+            val concurrentCameraConfig = ConcurrentCameraConfig.Builder()
+                .setCameraConfigs(listOf(singleCameraConfig0,
+                    singleCameraConfig1,
+                    singleCameraConfig2))
+                .build()
+
+            assertThrows<UnsupportedOperationException> {
+                provider.bindToLifecycle(concurrentCameraConfig)
+            }
+        }
+    }
 }
 
 private class TestAppContextWrapper(base: Context, val app: Application? = null) :
diff --git a/camera/camera-lifecycle/src/main/java/androidx/camera/lifecycle/ProcessCameraProvider.java b/camera/camera-lifecycle/src/main/java/androidx/camera/lifecycle/ProcessCameraProvider.java
index ec82c85..7290be0 100644
--- a/camera/camera-lifecycle/src/main/java/androidx/camera/lifecycle/ProcessCameraProvider.java
+++ b/camera/camera-lifecycle/src/main/java/androidx/camera/lifecycle/ProcessCameraProvider.java
@@ -46,6 +46,9 @@
 import androidx.camera.core.UseCase;
 import androidx.camera.core.UseCaseGroup;
 import androidx.camera.core.ViewPort;
+import androidx.camera.core.concurrent.ConcurrentCamera;
+import androidx.camera.core.concurrent.ConcurrentCameraConfig;
+import androidx.camera.core.concurrent.SingleCameraConfig;
 import androidx.camera.core.impl.CameraConfig;
 import androidx.camera.core.impl.CameraInternal;
 import androidx.camera.core.impl.ExtendedCameraConfigProviderStore;
@@ -390,6 +393,51 @@
     }
 
     /**
+     * Binds a {@link ConcurrentCameraConfig} to {@link LifecycleOwner}.
+     *
+     * <p>The concurrent camera is only supporting two cameras currently. If the input
+     * {@link ConcurrentCameraConfig} has less or more than two {@link SingleCameraConfig},
+     * {@link IllegalArgumentException} will be thrown.
+     *
+     * @param concurrentCameraConfig input configuration for concurrent camera.
+     * @return output concurrent camera instance.
+     *
+     * @hide
+     */
+    @RestrictTo(Scope.LIBRARY_GROUP)
+    @SuppressWarnings({"lambdaLast"})
+    @MainThread
+    @NonNull
+    public ConcurrentCamera bindToLifecycle(
+            @NonNull ConcurrentCameraConfig concurrentCameraConfig) {
+        // TODO(b/268347532): enable concurrent mode in camera coordinator
+        if (concurrentCameraConfig.getSingleCameraConfigs().size() < 2) {
+            throw new IllegalArgumentException("Concurrent camera needs two camera configs");
+        }
+
+        if (concurrentCameraConfig.getSingleCameraConfigs().size() > 2) {
+            throw new UnsupportedOperationException("Concurrent camera is only supporting two  "
+                    + "cameras at maximum.");
+        }
+
+        List<Camera> cameras = new ArrayList<>();
+        for (SingleCameraConfig config : concurrentCameraConfig.getSingleCameraConfigs()) {
+            Camera camera = bindToLifecycle(
+                    config.getLifecycleOwner(),
+                    config.getCameraSelector(),
+                    config.getUseCaseGroup().getViewPort(),
+                    config.getUseCaseGroup().getEffects(),
+                    config.getUseCaseGroup().getUseCases().toArray(new UseCase[0]));
+
+            cameras.add(camera);
+        }
+
+        return new ConcurrentCamera.Builder()
+                .setCameras(cameras)
+                .builder();
+    }
+
+    /**
      * Binds {@link ViewPort} and a collection of {@link UseCase} to a {@link LifecycleOwner}.
      *
      * <p>The state of the lifecycle will determine when the cameras are open, started, stopped
diff --git a/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/CameraXActivity.java b/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/CameraXActivity.java
index 14e3df0..84311e9 100644
--- a/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/CameraXActivity.java
+++ b/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/CameraXActivity.java
@@ -37,6 +37,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.content.res.Configuration;
 import android.database.Cursor;
 import android.hardware.camera2.CameraCharacteristics;
 import android.hardware.display.DisplayManager;
@@ -50,6 +51,7 @@
 import android.os.StrictMode;
 import android.os.SystemClock;
 import android.provider.MediaStore;
+import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.Range;
 import android.util.Rational;
@@ -59,6 +61,7 @@
 import android.view.MotionEvent;
 import android.view.ScaleGestureDetector;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.ViewStub;
 import android.widget.Button;
 import android.widget.CompoundButton;
@@ -83,6 +86,7 @@
 import androidx.camera.camera2.internal.compat.quirk.ImageCaptureFlashNotFireQuirk;
 import androidx.camera.camera2.interop.Camera2CameraInfo;
 import androidx.camera.camera2.interop.ExperimentalCamera2Interop;
+import androidx.camera.core.AspectRatio;
 import androidx.camera.core.Camera;
 import androidx.camera.core.CameraControl;
 import androidx.camera.core.CameraFilter;
@@ -104,6 +108,7 @@
 import androidx.camera.core.ViewPort;
 import androidx.camera.core.impl.CameraInfoInternal;
 import androidx.camera.core.impl.Quirks;
+import androidx.camera.core.impl.utils.AspectRatioUtil;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
 import androidx.camera.lifecycle.ProcessCameraProvider;
 import androidx.camera.video.FileOutputOptions;
@@ -192,6 +197,15 @@
     public static final String INTENT_EXTRA_CAMERA_IMPLEMENTATION = "camera_implementation";
     public static final String INTENT_EXTRA_CAMERA_IMPLEMENTATION_NO_HISTORY =
             "camera_implementation_no_history";
+
+    // Launch the activity with the specified target aspect ratio.
+    public static final String INTENT_EXTRA_TARGET_ASPECT_RATIO = "target_aspect_ratio";
+
+    // Launch the activity with the specified scale type. The default value is FILL_CENTER.
+    public static final String INTENT_EXTRA_SCALE_TYPE = "scale_type";
+    public static final int INTENT_EXTRA_FILL_CENTER = 1;
+    public static final int INTENT_EXTRA_FIT_CENTER = 4;
+
     // Launch the activity with the specified camera id.
     @VisibleForTesting
     public static final String INTENT_EXTRA_CAMERA_ID = "camera_id";
@@ -229,6 +243,10 @@
     private static final String DESCRIPTION_FLASH_MODE_NOT_SUPPORTED = "FLASH_MODE_NOT_SUPPORTED";
     private static final Quality QUALITY_AUTO = null;
 
+    // The target aspect ratio of Preview and ImageCapture. It can be adjusted by setting
+    // INTENT_EXTRA_TARGET_ASPECT_RATIO for the e2e testing.
+    private int mTargetAspectRatio = AspectRatio.RATIO_DEFAULT;
+
     private Recording mActiveRecording;
     /** The camera to use */
     CameraSelector mCurrentCameraSelector = BACK_SELECTOR;
@@ -987,6 +1005,34 @@
         }
     }
 
+    private void updatePreviewRatioAndScaleTypeByIntent(ViewStub viewFinderStub) {
+        Bundle bundle = this.getIntent().getExtras();
+        if (bundle != null) {
+            mTargetAspectRatio = bundle.getInt(INTENT_EXTRA_TARGET_ASPECT_RATIO,
+                    AspectRatio.RATIO_4_3);
+            int scaleType = bundle.getInt(INTENT_EXTRA_SCALE_TYPE, INTENT_EXTRA_FILL_CENTER);
+            if (scaleType == INTENT_EXTRA_FIT_CENTER) {
+                // Scale the view according to the target aspect ratio, display size and device
+                // orientation, so preview can be entirely contained within the view.
+                DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
+                Rational ratio = (mTargetAspectRatio == AspectRatio.RATIO_16_9)
+                        ? AspectRatioUtil.ASPECT_RATIO_16_9 : AspectRatioUtil.ASPECT_RATIO_4_3;
+                int orientation = getResources().getConfiguration().orientation;
+                ViewGroup.LayoutParams lp = viewFinderStub.getLayoutParams();
+                if (orientation == Configuration.ORIENTATION_PORTRAIT) {
+                    lp.width = displayMetrics.widthPixels;
+                    lp.height = (int) (displayMetrics.widthPixels / ratio.getDenominator()
+                            * ratio.getNumerator());
+                } else {
+                    lp.height = displayMetrics.heightPixels;
+                    lp.width = (int) (displayMetrics.heightPixels / ratio.getDenominator()
+                            * ratio.getNumerator());
+                }
+                viewFinderStub.setLayoutParams(lp);
+            }
+        }
+    }
+
     @OptIn(markerClass = androidx.camera.core.ExperimentalZeroShutterLag.class)
     private void updateButtonsUi() {
         mRecordUi.setEnabled(mVideoToggle.isChecked());
@@ -1098,6 +1144,8 @@
         mImageCaptureExecutorService = Executors.newSingleThreadExecutor();
         OpenGLRenderer previewRenderer = mPreviewRenderer = new OpenGLRenderer();
         ViewStub viewFinderStub = findViewById(R.id.viewFinderStub);
+        updatePreviewRatioAndScaleTypeByIntent(viewFinderStub);
+
         mViewFinder = OpenGLActivity.chooseViewFinder(getIntent().getExtras(), viewFinderStub,
                 previewRenderer);
         mViewFinder.addOnLayoutChangeListener(
@@ -1407,6 +1455,7 @@
         if (mPreviewToggle.isChecked()) {
             Preview preview = new Preview.Builder()
                     .setTargetName("Preview")
+                    .setTargetAspectRatio(mTargetAspectRatio)
                     .build();
             resetViewIdlingResource();
             // Use the listener of the future to make sure the Preview setup the new surface.
@@ -1423,6 +1472,7 @@
         if (mPhotoToggle.isChecked()) {
             ImageCapture imageCapture = new ImageCapture.Builder()
                     .setCaptureMode(getCaptureMode())
+                    .setTargetAspectRatio(mTargetAspectRatio)
                     .setTargetName("ImageCapture")
                     .build();
             useCases.add(imageCapture);
diff --git a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/ComposeUiFragment.kt b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/ComposeUiFragment.kt
index 0330c7d..6052d44 100644
--- a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/ComposeUiFragment.kt
+++ b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/ComposeUiFragment.kt
@@ -48,13 +48,24 @@
 
 class ComposeUiFragment : Fragment() {
 
+    var currentScaleType = PreviewView.ScaleType.FILL_CENTER
+
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
         savedInstanceState: Bundle?
     ): View {
         val cameraProvider = ProcessCameraProvider.getInstance(requireContext()).get()
+        val bundle: Bundle? = requireActivity().intent.extras
+        if (bundle != null) {
+            val scaleTypeId = bundle.getInt(
+                MainActivity.INTENT_EXTRA_SCALE_TYPE,
+                MainActivity.DEFAULT_SCALE_TYPE_ID
+            )
+            currentScaleType = PreviewView.ScaleType.values()[scaleTypeId]
+        }
         val previewView = PreviewView(requireContext())
+        previewView.scaleType = currentScaleType
 
         return ComposeView(requireContext()).apply {
             setContent {
@@ -72,7 +83,6 @@
             ViewGroup.LayoutParams.MATCH_PARENT,
             ViewGroup.LayoutParams.MATCH_PARENT
         )
-        previewView.scaleType = PreviewView.ScaleType.FILL_CENTER
 
         AndroidView(
             factory = {
diff --git a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/MainActivity.java b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/MainActivity.java
index eb5dc31..970b5d8 100644
--- a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/MainActivity.java
+++ b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/MainActivity.java
@@ -77,6 +77,11 @@
     public static final String INTENT_EXTRA_E2E_TEST_CASE = "e2e_test_case";
     public static final String PREVIEW_TEST_CASE = "preview_test_case";
 
+    // Launch the activity with the specified scale type.
+    public static final String INTENT_EXTRA_SCALE_TYPE = "scale_type";
+    // The default scale type is FILL_CENTER.
+    public static final int DEFAULT_SCALE_TYPE_ID = 1;
+
     /** Intent extra representing type of camera implementation. */
     public static final String INTENT_EXTRA_CAMERA_IMPLEMENTATION = "camera_implementation";
 
diff --git a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/PreviewViewFragment.java b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/PreviewViewFragment.java
index 1432160..d918398 100644
--- a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/PreviewViewFragment.java
+++ b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/PreviewViewFragment.java
@@ -18,8 +18,10 @@
 
 import static androidx.camera.integration.view.MainActivity.CAMERA_DIRECTION_BACK;
 import static androidx.camera.integration.view.MainActivity.CAMERA_DIRECTION_FRONT;
+import static androidx.camera.integration.view.MainActivity.DEFAULT_SCALE_TYPE_ID;
 import static androidx.camera.integration.view.MainActivity.INTENT_EXTRA_CAMERA_DIRECTION;
 import static androidx.camera.integration.view.MainActivity.INTENT_EXTRA_E2E_TEST_CASE;
+import static androidx.camera.integration.view.MainActivity.INTENT_EXTRA_SCALE_TYPE;
 import static androidx.camera.integration.view.MainActivity.PREVIEW_TEST_CASE;
 import static androidx.camera.view.PreviewView.StreamState.IDLE;
 import static androidx.camera.view.PreviewView.StreamState.STREAMING;
@@ -85,6 +87,7 @@
     @SuppressWarnings("WeakerAccess")
     int mCurrentLensFacing = CameraSelector.LENS_FACING_BACK;
     private BlurBitmap mBlurBitmap;
+    private PreviewView.ScaleType mCurrentScaleType = PreviewView.ScaleType.FILL_CENTER;
 
     // Synthetic access
     @SuppressWarnings("WeakerAccess")
@@ -117,8 +120,11 @@
                     controller.setVisibility(View.GONE);
                 }
             }
+            int scaleTypeId = bundle.getInt(INTENT_EXTRA_SCALE_TYPE, DEFAULT_SCALE_TYPE_ID);
+            mCurrentScaleType = PreviewView.ScaleType.values()[scaleTypeId];
         }
         mPreviewView = view.findViewById(R.id.preview_view);
+        mPreviewView.setScaleType(mCurrentScaleType);
         mPreviewView.setImplementationMode(PreviewView.ImplementationMode.COMPATIBLE);
         mPreviewView.addOnLayoutChangeListener(
                 (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom)
@@ -307,18 +313,16 @@
         final Spinner scaleTypeSpinner = rootView.findViewById(R.id.scale_type);
         scaleTypeSpinner.setAdapter(adapter);
 
-        // Default value
-        final PreviewView.ScaleType currentScaleType = mPreviewView.getScaleType();
         final String currentScaleTypeLiteral =
-                PreviewViewScaleTypePresenter.getLiteralForScaleType(currentScaleType);
+                PreviewViewScaleTypePresenter.getLiteralForScaleType(mCurrentScaleType);
         final int defaultSelection = adapter.getPosition(currentScaleTypeLiteral);
         scaleTypeSpinner.setSelection(defaultSelection, false);
 
         scaleTypeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
             @Override
             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                final PreviewView.ScaleType scaleType = PreviewView.ScaleType.values()[position];
-                mPreviewView.setScaleType(scaleType);
+                mCurrentScaleType = PreviewView.ScaleType.values()[position];
+                mPreviewView.setScaleType(mCurrentScaleType);
 
                 // Update the preview snapshot ImageView to have a scaleType matching that of the
                 // PreviewView.
diff --git a/car/app/app/api/public_plus_experimental_current.txt b/car/app/app/api/public_plus_experimental_current.txt
index f8545715..f88928a 100644
--- a/car/app/app/api/public_plus_experimental_current.txt
+++ b/car/app/app/api/public_plus_experimental_current.txt
@@ -1146,6 +1146,7 @@
 
   @androidx.car.app.annotations.CarProtocol public final class GridTemplate implements androidx.car.app.model.Template {
     method public androidx.car.app.model.ActionStrip? getActionStrip();
+    method @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.RequiresCarApi(6) public java.util.List<androidx.car.app.model.Action!> getActions();
     method public androidx.car.app.model.Action? getHeaderAction();
     method public androidx.car.app.model.ItemList? getSingleList();
     method public androidx.car.app.model.CarText? getTitle();
@@ -1154,6 +1155,7 @@
 
   public static final class GridTemplate.Builder {
     ctor public GridTemplate.Builder();
+    method @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.RequiresCarApi(6) public androidx.car.app.model.GridTemplate.Builder addAction(androidx.car.app.model.Action);
     method public androidx.car.app.model.GridTemplate build();
     method public androidx.car.app.model.GridTemplate.Builder setActionStrip(androidx.car.app.model.ActionStrip);
     method public androidx.car.app.model.GridTemplate.Builder setHeaderAction(androidx.car.app.model.Action);
diff --git a/car/app/app/build.gradle b/car/app/app/build.gradle
index 74dff68..5807cb4 100644
--- a/car/app/app/build.gradle
+++ b/car/app/app/build.gradle
@@ -16,7 +16,6 @@
 
 import androidx.build.LibraryType
 import androidx.build.Release
-import androidx.build.checkapi.LibraryApiTaskConfig
 import androidx.build.metalava.MetalavaRunnerKt
 import androidx.build.uptodatedness.EnableCachingKt
 import androidx.build.Version
@@ -30,8 +29,6 @@
 import java.util.concurrent.TimeUnit
 import javax.inject.Inject
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 buildscript {
     dependencies {
         // This dependency means that tasks in this project might become out-of-date whenever
@@ -317,12 +314,14 @@
     @Input
     String carApiLevel = project.latestCarAppApiLevel
 
-    @OutputFile
-    File apiLevelFile
+    @OutputDirectory
+    final DirectoryProperty outputDir = project.objects.directoryProperty()
 
     @TaskAction
     def exec() {
-        PrintWriter writer = new PrintWriter(apiLevelFile)
+        def outputFile = new File(outputDir.get().asFile, "car-app-api.level")
+        outputFile.parentFile.mkdirs()
+        PrintWriter writer = new PrintWriter(outputFile)
         writer.println(carApiLevel)
         writer.close()
     }
@@ -380,9 +379,6 @@
     }
 }
 
-def RESOURCE_DIRECTORY = "generatedResources"
-def API_LEVEL_FILE_PATH = "$RESOURCE_DIRECTORY/car-app-api.level"
-
 LibraryExtension library = project.extensions.getByType(LibraryExtension.class)
 
 def getLibraryExtension() {
@@ -413,24 +409,15 @@
     return sourceCollection
 }
 
+def writeCarApiLevelFileTask = tasks.register("writeCarApiLevelFile", ApiLevelFileWriterTask) { task ->
+    task.outputDir.set(new File(project.buildDir, "generatedResources"))
+}
+
+AndroidSourceDirectorySet resources = library.sourceSets.getByName("main").resources
+resources.srcDir(writeCarApiLevelFileTask.map {it.outputDir })
+
 // afterEvaluate required to read extension properties
 afterEvaluate {
-    task writeCarApiLevelFile(type: ApiLevelFileWriterTask) {
-        File artifactName = new File(buildDir, API_LEVEL_FILE_PATH)
-        apiLevelFile = artifactName
-    }
-
-    AndroidSourceDirectorySet resources = library.sourceSets.getByName("main").resources
-    Set<File> resFiles = new HashSet<>()
-    resFiles.add(resources.srcDirs)
-    resFiles.add(new File(buildDir, RESOURCE_DIRECTORY))
-    resources.srcDirs(resFiles)
-    Set<String> includes = resources.includes
-    if (!includes.isEmpty()) {
-        includes.add("*.level")
-        resources.setIncludes(includes)
-    }
-
     FileCollection sourceCollection = getSourceCollection()
     FileCollection dependencyClasspath = getLibraryVariant().getCompileClasspath(null)
     FileCollection metalavaClasspath = MetalavaRunnerKt.getMetalavaClasspath(project)
diff --git a/car/app/app/src/main/java/androidx/car/app/model/GridTemplate.java b/car/app/app/src/main/java/androidx/car/app/model/GridTemplate.java
index 8cf1272..e065ab9 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/GridTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/GridTemplate.java
@@ -24,10 +24,16 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.car.app.annotations.CarProtocol;
-import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.ExperimentalCarApi;
 import androidx.car.app.annotations.KeepFields;
+import androidx.car.app.annotations.RequiresCarApi;
+import androidx.car.app.model.constraints.ActionsConstraints;
+import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.utils.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.Collections;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -58,6 +64,8 @@
     @Nullable
     private final ActionStrip mActionStrip;
 
+    private final List<Action> mActions;
+
     /**
      * Returns the title of the template or {@code null} if not set.
      *
@@ -109,6 +117,18 @@
         return mSingleList;
     }
 
+    /**
+     * Returns the list of additional actions.
+     *
+     * @see GridTemplate.Builder#addAction(Action)
+     */
+    @ExperimentalCarApi
+    @NonNull
+    @RequiresCarApi(6)
+    public List<Action> getActions() {
+        return mActions;
+    }
+
     @NonNull
     @Override
     public String toString() {
@@ -134,7 +154,8 @@
                 && Objects.equals(mTitle, otherTemplate.mTitle)
                 && Objects.equals(mHeaderAction, otherTemplate.mHeaderAction)
                 && Objects.equals(mSingleList, otherTemplate.mSingleList)
-                && Objects.equals(mActionStrip, otherTemplate.mActionStrip);
+                && Objects.equals(mActionStrip, otherTemplate.mActionStrip)
+                && Objects.equals(mActions, otherTemplate.mActions);
     }
 
     GridTemplate(Builder builder) {
@@ -143,6 +164,7 @@
         mHeaderAction = builder.mHeaderAction;
         mSingleList = builder.mSingleList;
         mActionStrip = builder.mActionStrip;
+        mActions = CollectionUtils.unmodifiableCopy(builder.mActions);
     }
 
     /** Constructs an empty instance, used by serialization code. */
@@ -152,6 +174,7 @@
         mHeaderAction = null;
         mSingleList = null;
         mActionStrip = null;
+        mActions = Collections.emptyList();
     }
 
     /** A builder of {@link GridTemplate}. */
@@ -165,6 +188,7 @@
         Action mHeaderAction;
         @Nullable
         ActionStrip mActionStrip;
+        final List<Action> mActions = new ArrayList<>();
 
         /**
          * Sets whether the template is in a loading state.
@@ -253,6 +277,26 @@
         }
 
         /**
+         * Adds a template scoped action outside of the grid items. This action will be displayed
+         * as a floating action button.
+         *
+         * @throws IllegalArgumentException if {@code action} contains unsupported Action types,
+         *                                  exceeds the maximum number of allowed actions or does
+         *                                  not contain a valid {@link CarIcon} and background
+         *                                  {@link CarColor}.
+         */
+        @ExperimentalCarApi
+        @NonNull
+        @RequiresCarApi(6)
+        public Builder addAction(@NonNull Action action) {
+            List<Action> mActionsCopy = new ArrayList<>(mActions);
+            mActionsCopy.add(requireNonNull(action));
+            ActionsConstraints.ACTIONS_CONSTRAINTS_FAB.validateOrThrow(mActionsCopy);
+            mActions.add(action);
+            return this;
+        }
+
+        /**
          * Constructs the template defined by this builder.
          *
          * <h4>Requirements</h4>
diff --git a/car/app/app/src/test/java/androidx/car/app/model/GridTemplateTest.java b/car/app/app/src/test/java/androidx/car/app/model/GridTemplateTest.java
index 095e5b8..50acc34 100644
--- a/car/app/app/src/test/java/androidx/car/app/model/GridTemplateTest.java
+++ b/car/app/app/src/test/java/androidx/car/app/model/GridTemplateTest.java
@@ -23,6 +23,7 @@
 import static org.junit.Assert.assertThrows;
 
 import androidx.car.app.TestUtils;
+import androidx.test.core.app.ApplicationProvider;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -121,6 +122,102 @@
     }
 
     @Test
+    public void createInstance_addAction() {
+        CarIcon icon = TestUtils.getTestCarIcon(ApplicationProvider.getApplicationContext(),
+                "ic_test_1");
+        Action customAction = TestUtils.createAction(icon, CarColor.BLUE);
+        GridTemplate template =
+                new GridTemplate.Builder()
+                        .setSingleList(TestUtils.getGridItemList(2))
+                        .setHeaderAction(Action.BACK)
+                        .addAction(customAction)
+                        .build();
+        assertThat(template.getActions()).containsExactly(customAction);
+    }
+
+    @Test
+    public void createInstance_addAction_appIconInvalid_throws() {
+        assertThrows(
+                IllegalArgumentException.class,
+                () -> new GridTemplate.Builder()
+                        .setSingleList(TestUtils.getGridItemList(2))
+                        .addAction(Action.APP_ICON).build());
+    }
+
+    @Test
+    public void createInstance_addAction_backInvalid_throws() {
+        assertThrows(
+                IllegalArgumentException.class,
+                () -> new GridTemplate.Builder()
+                        .setSingleList(TestUtils.getGridItemList(2))
+                        .addAction(Action.BACK).build());
+    }
+
+    @Test
+    public void createInstance_addAction_panInvalid_throws() {
+        assertThrows(
+                IllegalArgumentException.class,
+                () -> new GridTemplate.Builder()
+                        .setSingleList(TestUtils.getGridItemList(2))
+                        .addAction(Action.PAN).build());
+    }
+
+    @Test
+    public void createInstance_addAction_manyActions_throws() {
+        CarIcon icon = TestUtils.getTestCarIcon(ApplicationProvider.getApplicationContext(),
+                "ic_test_1");
+        Action customAction = TestUtils.createAction(icon, CarColor.BLUE);
+
+        assertThrows(
+                IllegalArgumentException.class,
+                () -> new GridTemplate.Builder()
+                        .setSingleList(TestUtils.getGridItemList(2))
+                        .addAction(customAction)
+                        .addAction(customAction)
+                        .build());
+    }
+
+    @Test
+    public void createInstance_addAction_invalidActionNullBackgroundColor_throws() {
+        CarIcon icon = TestUtils.getTestCarIcon(ApplicationProvider.getApplicationContext(),
+                "ic_test_1");
+        Action customAction = TestUtils.createAction(icon, null);
+
+        assertThrows(
+                IllegalArgumentException.class,
+                () -> new GridTemplate.Builder()
+                        .setSingleList(TestUtils.getGridItemList(2))
+                        .addAction(customAction)
+                        .build());
+    }
+
+    @Test
+    public void createInstance_addAction_invalidActionDefaultBackgroundColor_throws() {
+        CarIcon icon = TestUtils.getTestCarIcon(ApplicationProvider.getApplicationContext(),
+                "ic_test_1");
+        Action customAction = TestUtils.createAction(icon, CarColor.DEFAULT);
+
+        assertThrows(
+                IllegalArgumentException.class,
+                () -> new GridTemplate.Builder()
+                        .setSingleList(TestUtils.getGridItemList(2))
+                        .addAction(customAction)
+                        .build());
+    }
+
+    @Test
+    public void createInstance_addAction_invalidActionNullIcon_throws() {
+        Action customAction = TestUtils.createAction("title", null);
+
+        assertThrows(
+                IllegalArgumentException.class,
+                () -> new GridTemplate.Builder()
+                        .setSingleList(TestUtils.getGridItemList(2))
+                        .addAction(customAction)
+                        .build());
+    }
+
+    @Test
     public void equals() {
         ItemList itemList = new ItemList.Builder().build();
         String title = "title";
@@ -213,4 +310,23 @@
                                                 Action.APP_ICON).build())
                                 .build());
     }
+
+    @Test
+    public void notEquals_differentAction() {
+        ItemList itemList = new ItemList.Builder().build();
+        CarIcon icon1 = TestUtils.getTestCarIcon(ApplicationProvider.getApplicationContext(),
+                "ic_test_1");
+        CarIcon icon2 = TestUtils.getTestCarIcon(ApplicationProvider.getApplicationContext(),
+                "ic_test_2");
+
+        GridTemplate template =
+                new GridTemplate.Builder()
+                        .setSingleList(itemList)
+                        .addAction(TestUtils.createAction(icon1, CarColor.BLUE))
+                        .build();
+
+        assertThat(template)
+                .isNotEqualTo(new GridTemplate.Builder().setSingleList(itemList).addAction(
+                        TestUtils.createAction(icon2, CarColor.RED)).build());
+    }
 }
diff --git a/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/AnimationCoreIssueRegistry.kt b/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/AnimationCoreIssueRegistry.kt
index 02be66d..7dce8cf 100644
--- a/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/AnimationCoreIssueRegistry.kt
+++ b/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/AnimationCoreIssueRegistry.kt
@@ -25,7 +25,7 @@
  */
 class AnimationCoreIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         TransitionDetector.UnusedTransitionTargetStateParameter,
diff --git a/compose/animation/animation-graphics/api/1.4.0-beta01.txt b/compose/animation/animation-graphics/api/1.4.0-beta01.txt
index 22d9fe9..e6f50d0 100644
--- a/compose/animation/animation-graphics/api/1.4.0-beta01.txt
+++ b/compose/animation/animation-graphics/api/1.4.0-beta01.txt
@@ -1,11 +1 @@
 // Signature format: 4.0
-package androidx.compose.animation.graphics.res {
-
-  public final class AnimatedVectorPainterResources_androidKt {
-  }
-
-  public final class AnimatedVectorResources_androidKt {
-  }
-
-}
-
diff --git a/compose/animation/animation-graphics/api/current.ignore b/compose/animation/animation-graphics/api/current.ignore
index aa10076..0ab1064 100644
--- a/compose/animation/animation-graphics/api/current.ignore
+++ b/compose/animation/animation-graphics/api/current.ignore
@@ -1,8 +1,6 @@
 // Baseline format: 1.0
-RemovedClass: androidx.compose.animation.graphics.res.AnimatorResources_androidKt:
-    Removed class androidx.compose.animation.graphics.res.AnimatorResources_androidKt
-
-
+RemovedPackage: androidx.compose.animation.graphics.res:
+    Removed package androidx.compose.animation.graphics.res
 RemovedPackage: androidx.compose.animation.graphics.vector:
     Removed package androidx.compose.animation.graphics.vector
 RemovedPackage: androidx.compose.animation.graphics.vector.compat:
diff --git a/compose/animation/animation-graphics/api/current.txt b/compose/animation/animation-graphics/api/current.txt
index 22d9fe9..e6f50d0 100644
--- a/compose/animation/animation-graphics/api/current.txt
+++ b/compose/animation/animation-graphics/api/current.txt
@@ -1,11 +1 @@
 // Signature format: 4.0
-package androidx.compose.animation.graphics.res {
-
-  public final class AnimatedVectorPainterResources_androidKt {
-  }
-
-  public final class AnimatedVectorResources_androidKt {
-  }
-
-}
-
diff --git a/compose/animation/animation-graphics/api/restricted_1.4.0-beta01.txt b/compose/animation/animation-graphics/api/restricted_1.4.0-beta01.txt
index 22d9fe9..e6f50d0 100644
--- a/compose/animation/animation-graphics/api/restricted_1.4.0-beta01.txt
+++ b/compose/animation/animation-graphics/api/restricted_1.4.0-beta01.txt
@@ -1,11 +1 @@
 // Signature format: 4.0
-package androidx.compose.animation.graphics.res {
-
-  public final class AnimatedVectorPainterResources_androidKt {
-  }
-
-  public final class AnimatedVectorResources_androidKt {
-  }
-
-}
-
diff --git a/compose/animation/animation-graphics/api/restricted_current.ignore b/compose/animation/animation-graphics/api/restricted_current.ignore
index aa10076..0ab1064 100644
--- a/compose/animation/animation-graphics/api/restricted_current.ignore
+++ b/compose/animation/animation-graphics/api/restricted_current.ignore
@@ -1,8 +1,6 @@
 // Baseline format: 1.0
-RemovedClass: androidx.compose.animation.graphics.res.AnimatorResources_androidKt:
-    Removed class androidx.compose.animation.graphics.res.AnimatorResources_androidKt
-
-
+RemovedPackage: androidx.compose.animation.graphics.res:
+    Removed package androidx.compose.animation.graphics.res
 RemovedPackage: androidx.compose.animation.graphics.vector:
     Removed package androidx.compose.animation.graphics.vector
 RemovedPackage: androidx.compose.animation.graphics.vector.compat:
diff --git a/compose/animation/animation-graphics/api/restricted_current.txt b/compose/animation/animation-graphics/api/restricted_current.txt
index 22d9fe9..e6f50d0 100644
--- a/compose/animation/animation-graphics/api/restricted_current.txt
+++ b/compose/animation/animation-graphics/api/restricted_current.txt
@@ -1,11 +1 @@
 // Signature format: 4.0
-package androidx.compose.animation.graphics.res {
-
-  public final class AnimatedVectorPainterResources_androidKt {
-  }
-
-  public final class AnimatedVectorResources_androidKt {
-  }
-
-}
-
diff --git a/compose/animation/animation-lint/src/main/java/androidx/compose/animation/lint/AnimationIssueRegistry.kt b/compose/animation/animation-lint/src/main/java/androidx/compose/animation/lint/AnimationIssueRegistry.kt
index 3884e78..6cff075 100644
--- a/compose/animation/animation-lint/src/main/java/androidx/compose/animation/lint/AnimationIssueRegistry.kt
+++ b/compose/animation/animation-lint/src/main/java/androidx/compose/animation/lint/AnimationIssueRegistry.kt
@@ -27,7 +27,7 @@
  */
 class AnimationIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         CrossfadeDetector.UnusedCrossfadeTargetStateParameter
diff --git a/compose/animation/animation/api/1.4.0-beta01.txt b/compose/animation/animation/api/1.4.0-beta01.txt
index 6b3a0d0..9b1560f 100644
--- a/compose/animation/animation/api/1.4.0-beta01.txt
+++ b/compose/animation/animation/api/1.4.0-beta01.txt
@@ -5,9 +5,6 @@
     method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
   }
 
-  public final class AnimatedContentKt {
-  }
-
   public final class AnimatedVisibilityKt {
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
diff --git a/compose/animation/animation/api/current.ignore b/compose/animation/animation/api/current.ignore
index 2b0509b..84b4c0e 100644
--- a/compose/animation/animation/api/current.ignore
+++ b/compose/animation/animation/api/current.ignore
@@ -3,6 +3,8 @@
     Method androidx.compose.animation.TransitionKt.animateColor has changed return type from androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> to androidx.compose.runtime.State<? extends androidx.compose.ui.graphics.Color>
 
 
+RemovedClass: androidx.compose.animation.AnimatedContentKt:
+    Removed class androidx.compose.animation.AnimatedContentKt
 RemovedClass: androidx.compose.animation.FlingCalculatorKt:
     Removed class androidx.compose.animation.FlingCalculatorKt
 
diff --git a/compose/animation/animation/api/current.txt b/compose/animation/animation/api/current.txt
index 6b3a0d0..9b1560f 100644
--- a/compose/animation/animation/api/current.txt
+++ b/compose/animation/animation/api/current.txt
@@ -5,9 +5,6 @@
     method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
   }
 
-  public final class AnimatedContentKt {
-  }
-
   public final class AnimatedVisibilityKt {
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
diff --git a/compose/animation/animation/api/restricted_1.4.0-beta01.txt b/compose/animation/animation/api/restricted_1.4.0-beta01.txt
index 6b3a0d0..9b1560f 100644
--- a/compose/animation/animation/api/restricted_1.4.0-beta01.txt
+++ b/compose/animation/animation/api/restricted_1.4.0-beta01.txt
@@ -5,9 +5,6 @@
     method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
   }
 
-  public final class AnimatedContentKt {
-  }
-
   public final class AnimatedVisibilityKt {
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
diff --git a/compose/animation/animation/api/restricted_current.ignore b/compose/animation/animation/api/restricted_current.ignore
index 2b0509b..84b4c0e 100644
--- a/compose/animation/animation/api/restricted_current.ignore
+++ b/compose/animation/animation/api/restricted_current.ignore
@@ -3,6 +3,8 @@
     Method androidx.compose.animation.TransitionKt.animateColor has changed return type from androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> to androidx.compose.runtime.State<? extends androidx.compose.ui.graphics.Color>
 
 
+RemovedClass: androidx.compose.animation.AnimatedContentKt:
+    Removed class androidx.compose.animation.AnimatedContentKt
 RemovedClass: androidx.compose.animation.FlingCalculatorKt:
     Removed class androidx.compose.animation.FlingCalculatorKt
 
diff --git a/compose/animation/animation/api/restricted_current.txt b/compose/animation/animation/api/restricted_current.txt
index 6b3a0d0..9b1560f 100644
--- a/compose/animation/animation/api/restricted_current.txt
+++ b/compose/animation/animation/api/restricted_current.txt
@@ -5,9 +5,6 @@
     method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
   }
 
-  public final class AnimatedContentKt {
-  }
-
   public final class AnimatedVisibilityKt {
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
diff --git a/compose/foundation/foundation-layout/api/1.4.0-beta01.txt b/compose/foundation/foundation-layout/api/1.4.0-beta01.txt
index f9ca366..95dd32f 100644
--- a/compose/foundation/foundation-layout/api/1.4.0-beta01.txt
+++ b/compose/foundation/foundation-layout/api/1.4.0-beta01.txt
@@ -111,9 +111,6 @@
     method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
-  public final class FlowLayoutKt {
-  }
-
   public final class IntrinsicKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier height(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier requiredHeight(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
@@ -219,9 +216,6 @@
   public static final class WindowInsets.Companion {
   }
 
-  public final class WindowInsetsConnection_androidKt {
-  }
-
   public final class WindowInsetsKt {
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional int left, optional int top, optional int right, optional int bottom);
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional float left, optional float top, optional float right, optional float bottom);
diff --git a/compose/foundation/foundation-layout/api/current.ignore b/compose/foundation/foundation-layout/api/current.ignore
index 5539ed4..2e1b921 100644
--- a/compose/foundation/foundation-layout/api/current.ignore
+++ b/compose/foundation/foundation-layout/api/current.ignore
@@ -1,6 +1,8 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.foundation.layout.RowColumnImplKt:
     Removed class androidx.compose.foundation.layout.RowColumnImplKt
+RemovedClass: androidx.compose.foundation.layout.WindowInsetsConnection_androidKt:
+    Removed class androidx.compose.foundation.layout.WindowInsetsConnection_androidKt
 
 
 RemovedPackage: androidx.compose.foundation.layout.internal:
diff --git a/compose/foundation/foundation-layout/api/current.txt b/compose/foundation/foundation-layout/api/current.txt
index f9ca366..95dd32f 100644
--- a/compose/foundation/foundation-layout/api/current.txt
+++ b/compose/foundation/foundation-layout/api/current.txt
@@ -111,9 +111,6 @@
     method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
-  public final class FlowLayoutKt {
-  }
-
   public final class IntrinsicKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier height(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier requiredHeight(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
@@ -219,9 +216,6 @@
   public static final class WindowInsets.Companion {
   }
 
-  public final class WindowInsetsConnection_androidKt {
-  }
-
   public final class WindowInsetsKt {
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional int left, optional int top, optional int right, optional int bottom);
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional float left, optional float top, optional float right, optional float bottom);
diff --git a/compose/foundation/foundation-layout/api/restricted_1.4.0-beta01.txt b/compose/foundation/foundation-layout/api/restricted_1.4.0-beta01.txt
index bdbef98..3202872 100644
--- a/compose/foundation/foundation-layout/api/restricted_1.4.0-beta01.txt
+++ b/compose/foundation/foundation-layout/api/restricted_1.4.0-beta01.txt
@@ -114,9 +114,6 @@
     method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
-  public final class FlowLayoutKt {
-  }
-
   public final class IntrinsicKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier height(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier requiredHeight(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
@@ -224,9 +221,6 @@
   public static final class WindowInsets.Companion {
   }
 
-  public final class WindowInsetsConnection_androidKt {
-  }
-
   public final class WindowInsetsKt {
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional int left, optional int top, optional int right, optional int bottom);
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional float left, optional float top, optional float right, optional float bottom);
diff --git a/compose/foundation/foundation-layout/api/restricted_current.ignore b/compose/foundation/foundation-layout/api/restricted_current.ignore
index 5539ed4..2e1b921 100644
--- a/compose/foundation/foundation-layout/api/restricted_current.ignore
+++ b/compose/foundation/foundation-layout/api/restricted_current.ignore
@@ -1,6 +1,8 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.foundation.layout.RowColumnImplKt:
     Removed class androidx.compose.foundation.layout.RowColumnImplKt
+RemovedClass: androidx.compose.foundation.layout.WindowInsetsConnection_androidKt:
+    Removed class androidx.compose.foundation.layout.WindowInsetsConnection_androidKt
 
 
 RemovedPackage: androidx.compose.foundation.layout.internal:
diff --git a/compose/foundation/foundation-layout/api/restricted_current.txt b/compose/foundation/foundation-layout/api/restricted_current.txt
index bdbef98..3202872 100644
--- a/compose/foundation/foundation-layout/api/restricted_current.txt
+++ b/compose/foundation/foundation-layout/api/restricted_current.txt
@@ -114,9 +114,6 @@
     method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
-  public final class FlowLayoutKt {
-  }
-
   public final class IntrinsicKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier height(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier requiredHeight(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
@@ -224,9 +221,6 @@
   public static final class WindowInsets.Companion {
   }
 
-  public final class WindowInsetsConnection_androidKt {
-  }
-
   public final class WindowInsetsKt {
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional int left, optional int top, optional int right, optional int bottom);
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional float left, optional float top, optional float right, optional float bottom);
diff --git a/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationIssueRegistry.kt b/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationIssueRegistry.kt
index ef9e339..9d622a1 100644
--- a/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationIssueRegistry.kt
+++ b/compose/foundation/foundation-lint/src/main/java/androidx/compose/foundation/lint/FoundationIssueRegistry.kt
@@ -27,7 +27,7 @@
  */
 class FoundationIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         LazyLayoutStateReadInCompositionDetector.FrequentlyChangedStateReadInComposition,
diff --git a/compose/foundation/foundation/api/1.4.0-beta01.txt b/compose/foundation/foundation/api/1.4.0-beta01.txt
index 4ea5f3c..b8a93c56 100644
--- a/compose/foundation/foundation/api/1.4.0-beta01.txt
+++ b/compose/foundation/foundation/api/1.4.0-beta01.txt
@@ -6,9 +6,6 @@
     method public static androidx.compose.ui.Modifier background(androidx.compose.ui.Modifier, androidx.compose.ui.graphics.Brush brush, optional androidx.compose.ui.graphics.Shape shape, optional float alpha);
   }
 
-  public final class BasicMarqueeKt {
-  }
-
   public final class BorderKt {
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, androidx.compose.foundation.BorderStroke border, optional androidx.compose.ui.graphics.Shape shape);
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, float width, long color, optional androidx.compose.ui.graphics.Shape shape);
@@ -58,9 +55,6 @@
     method public static androidx.compose.ui.Modifier focusable(androidx.compose.ui.Modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
   }
 
-  public final class FocusedBoundsKt {
-  }
-
   public final class HoverableKt {
     method public static androidx.compose.ui.Modifier hoverable(androidx.compose.ui.Modifier, androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional boolean enabled);
   }
@@ -86,9 +80,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.foundation.Indication> LocalIndication;
   }
 
-  public final class MagnifierKt {
-  }
-
   public enum MutatePriority {
     method public static androidx.compose.foundation.MutatePriority valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.compose.foundation.MutatePriority[] values();
@@ -103,12 +94,6 @@
     method public suspend <T, R> Object? mutateWith(T? receiver, optional androidx.compose.foundation.MutatePriority priority, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
   }
 
-  public final class OverscrollConfigurationKt {
-  }
-
-  public final class OverscrollKt {
-  }
-
   public final class ProgressSemanticsKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier, float value, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier);
@@ -291,16 +276,6 @@
 
 }
 
-package androidx.compose.foundation.gestures.snapping {
-
-  public final class LazyListSnapLayoutInfoProviderKt {
-  }
-
-  public final class SnapFlingBehaviorKt {
-  }
-
-}
-
 package androidx.compose.foundation.interaction {
 
   public interface DragInteraction extends androidx.compose.foundation.interaction.Interaction {
@@ -632,55 +607,6 @@
 
 }
 
-package androidx.compose.foundation.lazy.layout {
-
-  public final class LazyLayoutItemProviderKt {
-  }
-
-  public final class LazyLayoutKt {
-  }
-
-  public final class LazyLayoutPinnableItemKt {
-  }
-
-  public final class LazyNearestItemsRangeKt {
-  }
-
-  public final class Lazy_androidKt {
-  }
-
-}
-
-package androidx.compose.foundation.lazy.staggeredgrid {
-
-  public final class LazyStaggeredGridDslKt {
-  }
-
-  public final class LazyStaggeredGridStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.pager {
-
-  public final class PagerKt {
-  }
-
-  public final class PagerStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.relocation {
-
-  public final class BringIntoViewRequesterKt {
-  }
-
-  public final class BringIntoViewResponderKt {
-  }
-
-}
-
 package androidx.compose.foundation.selection {
 
   public final class SelectableGroupKt {
diff --git a/compose/foundation/foundation/api/current.ignore b/compose/foundation/foundation/api/current.ignore
index 414998d..529b30a 100644
--- a/compose/foundation/foundation/api/current.ignore
+++ b/compose/foundation/foundation/api/current.ignore
@@ -11,6 +11,14 @@
     Removed class androidx.compose.foundation.Clickable_androidKt
 RemovedClass: androidx.compose.foundation.DarkTheme_androidKt:
     Removed class androidx.compose.foundation.DarkTheme_androidKt
+RemovedClass: androidx.compose.foundation.FocusedBoundsKt:
+    Removed class androidx.compose.foundation.FocusedBoundsKt
+RemovedClass: androidx.compose.foundation.MagnifierKt:
+    Removed class androidx.compose.foundation.MagnifierKt
+RemovedClass: androidx.compose.foundation.OverscrollConfigurationKt:
+    Removed class androidx.compose.foundation.OverscrollConfigurationKt
+RemovedClass: androidx.compose.foundation.OverscrollKt:
+    Removed class androidx.compose.foundation.OverscrollKt
 RemovedClass: androidx.compose.foundation.TempListUtilsKt:
     Removed class androidx.compose.foundation.TempListUtilsKt
 RemovedClass: androidx.compose.foundation.gestures.AndroidScrollable_androidKt:
@@ -41,36 +49,6 @@
     Removed class androidx.compose.foundation.lazy.grid.LazyGridMeasureKt
 RemovedClass: androidx.compose.foundation.lazy.grid.LazySemanticsKt:
     Removed class androidx.compose.foundation.lazy.grid.LazySemanticsKt
-RemovedClass: androidx.compose.foundation.lazy.layout.IntervalListKt:
-    Removed class androidx.compose.foundation.lazy.layout.IntervalListKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyAnimateScrollKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyAnimateScrollKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyLayoutPrefetcher_androidKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyLayoutPrefetcher_androidKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyLayoutSemanticsKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyLayoutSemanticsKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazySaveableStateHolderKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazySaveableStateHolderKt
-RemovedClass: androidx.compose.foundation.lazy.layout.PinnableParentKt:
-    Removed class androidx.compose.foundation.lazy.layout.PinnableParentKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridCellsKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridCellsKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridItemProviderKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridItemProviderKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasurePolicyKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasurePolicyKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureResultKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureResultKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridSemanticsKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridSemanticsKt
-RemovedClass: androidx.compose.foundation.relocation.BringIntoViewKt:
-    Removed class androidx.compose.foundation.relocation.BringIntoViewKt
-RemovedClass: androidx.compose.foundation.relocation.BringIntoViewResponder_androidKt:
-    Removed class androidx.compose.foundation.relocation.BringIntoViewResponder_androidKt
 RemovedClass: androidx.compose.foundation.text.AndroidCursorHandle_androidKt:
     Removed class androidx.compose.foundation.text.AndroidCursorHandle_androidKt
 RemovedClass: androidx.compose.foundation.text.ContextMenu_androidKt:
@@ -163,5 +141,13 @@
     Removed method androidx.compose.foundation.gestures.TapGestureDetectorKt.waitForUpOrCancellation(androidx.compose.ui.input.pointer.AwaitPointerEventScope,kotlin.coroutines.Continuation<? super androidx.compose.ui.input.pointer.PointerInputChange>)
 
 
+RemovedPackage: androidx.compose.foundation.gestures.snapping:
+    Removed package androidx.compose.foundation.gestures.snapping
 RemovedPackage: androidx.compose.foundation.internal:
     Removed package androidx.compose.foundation.internal
+RemovedPackage: androidx.compose.foundation.lazy.layout:
+    Removed package androidx.compose.foundation.lazy.layout
+RemovedPackage: androidx.compose.foundation.lazy.staggeredgrid:
+    Removed package androidx.compose.foundation.lazy.staggeredgrid
+RemovedPackage: androidx.compose.foundation.relocation:
+    Removed package androidx.compose.foundation.relocation
diff --git a/compose/foundation/foundation/api/current.txt b/compose/foundation/foundation/api/current.txt
index 4ea5f3c..b8a93c56 100644
--- a/compose/foundation/foundation/api/current.txt
+++ b/compose/foundation/foundation/api/current.txt
@@ -6,9 +6,6 @@
     method public static androidx.compose.ui.Modifier background(androidx.compose.ui.Modifier, androidx.compose.ui.graphics.Brush brush, optional androidx.compose.ui.graphics.Shape shape, optional float alpha);
   }
 
-  public final class BasicMarqueeKt {
-  }
-
   public final class BorderKt {
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, androidx.compose.foundation.BorderStroke border, optional androidx.compose.ui.graphics.Shape shape);
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, float width, long color, optional androidx.compose.ui.graphics.Shape shape);
@@ -58,9 +55,6 @@
     method public static androidx.compose.ui.Modifier focusable(androidx.compose.ui.Modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
   }
 
-  public final class FocusedBoundsKt {
-  }
-
   public final class HoverableKt {
     method public static androidx.compose.ui.Modifier hoverable(androidx.compose.ui.Modifier, androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional boolean enabled);
   }
@@ -86,9 +80,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.foundation.Indication> LocalIndication;
   }
 
-  public final class MagnifierKt {
-  }
-
   public enum MutatePriority {
     method public static androidx.compose.foundation.MutatePriority valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.compose.foundation.MutatePriority[] values();
@@ -103,12 +94,6 @@
     method public suspend <T, R> Object? mutateWith(T? receiver, optional androidx.compose.foundation.MutatePriority priority, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
   }
 
-  public final class OverscrollConfigurationKt {
-  }
-
-  public final class OverscrollKt {
-  }
-
   public final class ProgressSemanticsKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier, float value, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier);
@@ -291,16 +276,6 @@
 
 }
 
-package androidx.compose.foundation.gestures.snapping {
-
-  public final class LazyListSnapLayoutInfoProviderKt {
-  }
-
-  public final class SnapFlingBehaviorKt {
-  }
-
-}
-
 package androidx.compose.foundation.interaction {
 
   public interface DragInteraction extends androidx.compose.foundation.interaction.Interaction {
@@ -632,55 +607,6 @@
 
 }
 
-package androidx.compose.foundation.lazy.layout {
-
-  public final class LazyLayoutItemProviderKt {
-  }
-
-  public final class LazyLayoutKt {
-  }
-
-  public final class LazyLayoutPinnableItemKt {
-  }
-
-  public final class LazyNearestItemsRangeKt {
-  }
-
-  public final class Lazy_androidKt {
-  }
-
-}
-
-package androidx.compose.foundation.lazy.staggeredgrid {
-
-  public final class LazyStaggeredGridDslKt {
-  }
-
-  public final class LazyStaggeredGridStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.pager {
-
-  public final class PagerKt {
-  }
-
-  public final class PagerStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.relocation {
-
-  public final class BringIntoViewRequesterKt {
-  }
-
-  public final class BringIntoViewResponderKt {
-  }
-
-}
-
 package androidx.compose.foundation.selection {
 
   public final class SelectableGroupKt {
diff --git a/compose/foundation/foundation/api/public_plus_experimental_1.4.0-beta01.txt b/compose/foundation/foundation/api/public_plus_experimental_1.4.0-beta01.txt
index 9c5def2..9918bcc 100644
--- a/compose/foundation/foundation/api/public_plus_experimental_1.4.0-beta01.txt
+++ b/compose/foundation/foundation/api/public_plus_experimental_1.4.0-beta01.txt
@@ -787,7 +787,7 @@
   }
 
   public final class LazyLayoutPinnableItemKt {
-    method @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Composable public static void LazyLayoutPinnableItem(int index, androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList pinnedItemList, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Composable public static void LazyLayoutPinnableItem(Object? key, int index, androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList pinnedItemList, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
   @androidx.compose.foundation.ExperimentalFoundationApi public final class LazyLayoutPinnedItemList implements kotlin.jvm.internal.markers.KMappedMarker java.util.List<androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList.PinnedItem> {
@@ -796,7 +796,9 @@
 
   @androidx.compose.foundation.ExperimentalFoundationApi public static sealed interface LazyLayoutPinnedItemList.PinnedItem {
     method public int getIndex();
+    method public Object? getKey();
     property public abstract int index;
+    property public abstract Object? key;
   }
 
   @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Stable public final class LazyLayoutPrefetchState {
diff --git a/compose/foundation/foundation/api/public_plus_experimental_current.txt b/compose/foundation/foundation/api/public_plus_experimental_current.txt
index 9c5def2..9918bcc 100644
--- a/compose/foundation/foundation/api/public_plus_experimental_current.txt
+++ b/compose/foundation/foundation/api/public_plus_experimental_current.txt
@@ -787,7 +787,7 @@
   }
 
   public final class LazyLayoutPinnableItemKt {
-    method @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Composable public static void LazyLayoutPinnableItem(int index, androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList pinnedItemList, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Composable public static void LazyLayoutPinnableItem(Object? key, int index, androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList pinnedItemList, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
   @androidx.compose.foundation.ExperimentalFoundationApi public final class LazyLayoutPinnedItemList implements kotlin.jvm.internal.markers.KMappedMarker java.util.List<androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList.PinnedItem> {
@@ -796,7 +796,9 @@
 
   @androidx.compose.foundation.ExperimentalFoundationApi public static sealed interface LazyLayoutPinnedItemList.PinnedItem {
     method public int getIndex();
+    method public Object? getKey();
     property public abstract int index;
+    property public abstract Object? key;
   }
 
   @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Stable public final class LazyLayoutPrefetchState {
diff --git a/compose/foundation/foundation/api/restricted_1.4.0-beta01.txt b/compose/foundation/foundation/api/restricted_1.4.0-beta01.txt
index 4ea5f3c..b8a93c56 100644
--- a/compose/foundation/foundation/api/restricted_1.4.0-beta01.txt
+++ b/compose/foundation/foundation/api/restricted_1.4.0-beta01.txt
@@ -6,9 +6,6 @@
     method public static androidx.compose.ui.Modifier background(androidx.compose.ui.Modifier, androidx.compose.ui.graphics.Brush brush, optional androidx.compose.ui.graphics.Shape shape, optional float alpha);
   }
 
-  public final class BasicMarqueeKt {
-  }
-
   public final class BorderKt {
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, androidx.compose.foundation.BorderStroke border, optional androidx.compose.ui.graphics.Shape shape);
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, float width, long color, optional androidx.compose.ui.graphics.Shape shape);
@@ -58,9 +55,6 @@
     method public static androidx.compose.ui.Modifier focusable(androidx.compose.ui.Modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
   }
 
-  public final class FocusedBoundsKt {
-  }
-
   public final class HoverableKt {
     method public static androidx.compose.ui.Modifier hoverable(androidx.compose.ui.Modifier, androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional boolean enabled);
   }
@@ -86,9 +80,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.foundation.Indication> LocalIndication;
   }
 
-  public final class MagnifierKt {
-  }
-
   public enum MutatePriority {
     method public static androidx.compose.foundation.MutatePriority valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.compose.foundation.MutatePriority[] values();
@@ -103,12 +94,6 @@
     method public suspend <T, R> Object? mutateWith(T? receiver, optional androidx.compose.foundation.MutatePriority priority, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
   }
 
-  public final class OverscrollConfigurationKt {
-  }
-
-  public final class OverscrollKt {
-  }
-
   public final class ProgressSemanticsKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier, float value, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier);
@@ -291,16 +276,6 @@
 
 }
 
-package androidx.compose.foundation.gestures.snapping {
-
-  public final class LazyListSnapLayoutInfoProviderKt {
-  }
-
-  public final class SnapFlingBehaviorKt {
-  }
-
-}
-
 package androidx.compose.foundation.interaction {
 
   public interface DragInteraction extends androidx.compose.foundation.interaction.Interaction {
@@ -632,55 +607,6 @@
 
 }
 
-package androidx.compose.foundation.lazy.layout {
-
-  public final class LazyLayoutItemProviderKt {
-  }
-
-  public final class LazyLayoutKt {
-  }
-
-  public final class LazyLayoutPinnableItemKt {
-  }
-
-  public final class LazyNearestItemsRangeKt {
-  }
-
-  public final class Lazy_androidKt {
-  }
-
-}
-
-package androidx.compose.foundation.lazy.staggeredgrid {
-
-  public final class LazyStaggeredGridDslKt {
-  }
-
-  public final class LazyStaggeredGridStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.pager {
-
-  public final class PagerKt {
-  }
-
-  public final class PagerStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.relocation {
-
-  public final class BringIntoViewRequesterKt {
-  }
-
-  public final class BringIntoViewResponderKt {
-  }
-
-}
-
 package androidx.compose.foundation.selection {
 
   public final class SelectableGroupKt {
diff --git a/compose/foundation/foundation/api/restricted_current.ignore b/compose/foundation/foundation/api/restricted_current.ignore
index 414998d..529b30a 100644
--- a/compose/foundation/foundation/api/restricted_current.ignore
+++ b/compose/foundation/foundation/api/restricted_current.ignore
@@ -11,6 +11,14 @@
     Removed class androidx.compose.foundation.Clickable_androidKt
 RemovedClass: androidx.compose.foundation.DarkTheme_androidKt:
     Removed class androidx.compose.foundation.DarkTheme_androidKt
+RemovedClass: androidx.compose.foundation.FocusedBoundsKt:
+    Removed class androidx.compose.foundation.FocusedBoundsKt
+RemovedClass: androidx.compose.foundation.MagnifierKt:
+    Removed class androidx.compose.foundation.MagnifierKt
+RemovedClass: androidx.compose.foundation.OverscrollConfigurationKt:
+    Removed class androidx.compose.foundation.OverscrollConfigurationKt
+RemovedClass: androidx.compose.foundation.OverscrollKt:
+    Removed class androidx.compose.foundation.OverscrollKt
 RemovedClass: androidx.compose.foundation.TempListUtilsKt:
     Removed class androidx.compose.foundation.TempListUtilsKt
 RemovedClass: androidx.compose.foundation.gestures.AndroidScrollable_androidKt:
@@ -41,36 +49,6 @@
     Removed class androidx.compose.foundation.lazy.grid.LazyGridMeasureKt
 RemovedClass: androidx.compose.foundation.lazy.grid.LazySemanticsKt:
     Removed class androidx.compose.foundation.lazy.grid.LazySemanticsKt
-RemovedClass: androidx.compose.foundation.lazy.layout.IntervalListKt:
-    Removed class androidx.compose.foundation.lazy.layout.IntervalListKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyAnimateScrollKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyAnimateScrollKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyLayoutPrefetcher_androidKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyLayoutPrefetcher_androidKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyLayoutSemanticsKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyLayoutSemanticsKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazySaveableStateHolderKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazySaveableStateHolderKt
-RemovedClass: androidx.compose.foundation.lazy.layout.PinnableParentKt:
-    Removed class androidx.compose.foundation.lazy.layout.PinnableParentKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridCellsKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridCellsKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridItemProviderKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridItemProviderKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasurePolicyKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasurePolicyKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureResultKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureResultKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridSemanticsKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridSemanticsKt
-RemovedClass: androidx.compose.foundation.relocation.BringIntoViewKt:
-    Removed class androidx.compose.foundation.relocation.BringIntoViewKt
-RemovedClass: androidx.compose.foundation.relocation.BringIntoViewResponder_androidKt:
-    Removed class androidx.compose.foundation.relocation.BringIntoViewResponder_androidKt
 RemovedClass: androidx.compose.foundation.text.AndroidCursorHandle_androidKt:
     Removed class androidx.compose.foundation.text.AndroidCursorHandle_androidKt
 RemovedClass: androidx.compose.foundation.text.ContextMenu_androidKt:
@@ -163,5 +141,13 @@
     Removed method androidx.compose.foundation.gestures.TapGestureDetectorKt.waitForUpOrCancellation(androidx.compose.ui.input.pointer.AwaitPointerEventScope,kotlin.coroutines.Continuation<? super androidx.compose.ui.input.pointer.PointerInputChange>)
 
 
+RemovedPackage: androidx.compose.foundation.gestures.snapping:
+    Removed package androidx.compose.foundation.gestures.snapping
 RemovedPackage: androidx.compose.foundation.internal:
     Removed package androidx.compose.foundation.internal
+RemovedPackage: androidx.compose.foundation.lazy.layout:
+    Removed package androidx.compose.foundation.lazy.layout
+RemovedPackage: androidx.compose.foundation.lazy.staggeredgrid:
+    Removed package androidx.compose.foundation.lazy.staggeredgrid
+RemovedPackage: androidx.compose.foundation.relocation:
+    Removed package androidx.compose.foundation.relocation
diff --git a/compose/foundation/foundation/api/restricted_current.txt b/compose/foundation/foundation/api/restricted_current.txt
index 4ea5f3c..b8a93c56 100644
--- a/compose/foundation/foundation/api/restricted_current.txt
+++ b/compose/foundation/foundation/api/restricted_current.txt
@@ -6,9 +6,6 @@
     method public static androidx.compose.ui.Modifier background(androidx.compose.ui.Modifier, androidx.compose.ui.graphics.Brush brush, optional androidx.compose.ui.graphics.Shape shape, optional float alpha);
   }
 
-  public final class BasicMarqueeKt {
-  }
-
   public final class BorderKt {
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, androidx.compose.foundation.BorderStroke border, optional androidx.compose.ui.graphics.Shape shape);
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, float width, long color, optional androidx.compose.ui.graphics.Shape shape);
@@ -58,9 +55,6 @@
     method public static androidx.compose.ui.Modifier focusable(androidx.compose.ui.Modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
   }
 
-  public final class FocusedBoundsKt {
-  }
-
   public final class HoverableKt {
     method public static androidx.compose.ui.Modifier hoverable(androidx.compose.ui.Modifier, androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional boolean enabled);
   }
@@ -86,9 +80,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.foundation.Indication> LocalIndication;
   }
 
-  public final class MagnifierKt {
-  }
-
   public enum MutatePriority {
     method public static androidx.compose.foundation.MutatePriority valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.compose.foundation.MutatePriority[] values();
@@ -103,12 +94,6 @@
     method public suspend <T, R> Object? mutateWith(T? receiver, optional androidx.compose.foundation.MutatePriority priority, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
   }
 
-  public final class OverscrollConfigurationKt {
-  }
-
-  public final class OverscrollKt {
-  }
-
   public final class ProgressSemanticsKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier, float value, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier);
@@ -291,16 +276,6 @@
 
 }
 
-package androidx.compose.foundation.gestures.snapping {
-
-  public final class LazyListSnapLayoutInfoProviderKt {
-  }
-
-  public final class SnapFlingBehaviorKt {
-  }
-
-}
-
 package androidx.compose.foundation.interaction {
 
   public interface DragInteraction extends androidx.compose.foundation.interaction.Interaction {
@@ -632,55 +607,6 @@
 
 }
 
-package androidx.compose.foundation.lazy.layout {
-
-  public final class LazyLayoutItemProviderKt {
-  }
-
-  public final class LazyLayoutKt {
-  }
-
-  public final class LazyLayoutPinnableItemKt {
-  }
-
-  public final class LazyNearestItemsRangeKt {
-  }
-
-  public final class Lazy_androidKt {
-  }
-
-}
-
-package androidx.compose.foundation.lazy.staggeredgrid {
-
-  public final class LazyStaggeredGridDslKt {
-  }
-
-  public final class LazyStaggeredGridStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.pager {
-
-  public final class PagerKt {
-  }
-
-  public final class PagerStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.relocation {
-
-  public final class BringIntoViewRequesterKt {
-  }
-
-  public final class BringIntoViewResponderKt {
-  }
-
-}
-
 package androidx.compose.foundation.selection {
 
   public final class SelectableGroupKt {
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPinnableContainerTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPinnableContainerTest.kt
index 5647474..a2ce246 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPinnableContainerTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPinnableContainerTest.kt
@@ -39,7 +39,6 @@
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
-import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 
@@ -268,7 +267,6 @@
             .assertIsNotPlaced()
     }
 
-    @Ignore // b/268053147
     @Test
     fun pinnedItemIsStillPinnedWhenReorderedAndNotVisibleAnymore() {
         val state = LazyGridState()
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt
index 3c9694c..087d8db 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt
@@ -86,6 +86,7 @@
         }
 
         waitForPrefetch(4)
+        waitForPrefetch(5)
 
         rule.onNodeWithTag("4")
             .assertExists()
@@ -106,6 +107,7 @@
         }
 
         waitForPrefetch(2)
+        waitForPrefetch(3)
 
         rule.onNodeWithTag("2")
             .assertExists()
@@ -126,6 +128,7 @@
         }
 
         waitForPrefetch(6)
+        waitForPrefetch(7)
 
         rule.onNodeWithTag("6")
             .assertExists()
@@ -142,6 +145,7 @@
         }
 
         waitForPrefetch(0)
+        waitForPrefetch(1)
 
         rule.onNodeWithTag("0")
             .assertExists()
@@ -222,6 +226,7 @@
         }
 
         waitForPrefetch(6)
+        waitForPrefetch(7)
 
         rule.onNodeWithTag("6")
             .assertExists()
@@ -240,6 +245,7 @@
         }
 
         waitForPrefetch(0)
+        waitForPrefetch(1)
 
         rule.onNodeWithTag("0")
             .assertExists()
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt
index ed50322..a743ac3c 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt
@@ -41,7 +41,6 @@
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
-import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 
@@ -254,7 +253,6 @@
             .assertIsNotPlaced()
     }
 
-    @Ignore // b/268113792
     @Test
     fun pinnedItemIsStillPinnedWhenReorderedAndNotVisibleAnymore() {
         val state = LazyListState()
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridPinnableContainerTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridPinnableContainerTest.kt
index 85b8635..5796438 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridPinnableContainerTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridPinnableContainerTest.kt
@@ -40,7 +40,6 @@
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
-import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 
@@ -270,7 +269,6 @@
             .assertIsNotPlaced()
     }
 
-    @Ignore // b/267698382
     @Test
     fun pinnedItemIsStillPinnedWhenReorderedAndNotVisibleAnymore() {
         val state = LazyStaggeredGridState()
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt
index 00a4e5a..dbdf686 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt
@@ -298,7 +298,8 @@
 
         measureLazyList(
             itemsCount = itemsCount,
-            itemProvider = measuredItemProvider,
+            itemProvider = itemProvider,
+            measuredItemProvider = measuredItemProvider,
             mainAxisAvailableSize = mainAxisAvailableSize,
             beforeContentPadding = beforeContentPadding,
             afterContentPadding = afterContentPadding,
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProvider.kt
index 0691a11..80c00e6 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProvider.kt
@@ -80,8 +80,13 @@
         intervals = intervals,
         nearestItemsRange = nearestItemsRange,
         itemContent = { interval, index ->
-            LazyLayoutPinnableItem(index, state.pinnedItems) {
-                interval.value.item.invoke(itemScope, index - interval.startIndex)
+            val localIndex = index - interval.startIndex
+            LazyLayoutPinnableItem(
+                key = interval.value.key?.invoke(localIndex),
+                index = index,
+                pinnedItemList = state.pinnedItems
+            ) {
+                interval.value.item.invoke(itemScope, localIndex)
             }
         }
     )
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasure.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasure.kt
index d580e73..e25851f 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasure.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasure.kt
@@ -21,6 +21,7 @@
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList
+import androidx.compose.foundation.lazy.layout.findIndexByKey
 import androidx.compose.ui.layout.MeasureResult
 import androidx.compose.ui.layout.Placeable
 import androidx.compose.ui.unit.Constraints
@@ -41,7 +42,8 @@
 @OptIn(ExperimentalFoundationApi::class)
 internal fun measureLazyList(
     itemsCount: Int,
-    itemProvider: LazyMeasuredItemProvider,
+    itemProvider: LazyListItemProvider,
+    measuredItemProvider: LazyMeasuredItemProvider,
     mainAxisAvailableSize: Int,
     beforeContentPadding: Int,
     afterContentPadding: Int,
@@ -124,7 +126,7 @@
         // firstItemScrollOffset
         while (currentFirstItemScrollOffset < 0 && currentFirstItemIndex > DataIndex(0)) {
             val previous = DataIndex(currentFirstItemIndex.value - 1)
-            val measuredItem = itemProvider.getAndMeasure(previous)
+            val measuredItem = measuredItemProvider.getAndMeasure(previous)
             visibleItems.add(0, measuredItem)
             maxCrossAxis = maxOf(maxCrossAxis, measuredItem.crossAxisSize)
             currentFirstItemScrollOffset += measuredItem.sizeWithSpacings
@@ -159,7 +161,7 @@
                 currentMainAxisOffset <= 0 || // filling beforeContentPadding area
                 visibleItems.isEmpty())
         ) {
-            val measuredItem = itemProvider.getAndMeasure(index)
+            val measuredItem = measuredItemProvider.getAndMeasure(index)
             currentMainAxisOffset += measuredItem.sizeWithSpacings
 
             if (currentMainAxisOffset <= minOffset && index.value != itemsCount - 1) {
@@ -184,7 +186,7 @@
                 currentFirstItemIndex > DataIndex(0)
             ) {
                 val previousIndex = DataIndex(currentFirstItemIndex.value - 1)
-                val measuredItem = itemProvider.getAndMeasure(previousIndex)
+                val measuredItem = measuredItemProvider.getAndMeasure(previousIndex)
                 visibleItems.add(0, measuredItem)
                 maxCrossAxis = maxOf(maxCrossAxis, measuredItem.crossAxisSize)
                 currentFirstItemScrollOffset += measuredItem.sizeWithSpacings
@@ -235,6 +237,7 @@
         val extraItemsBefore = createItemsBeforeList(
             beyondBoundsInfo = beyondBoundsInfo,
             currentFirstItemIndex = currentFirstItemIndex,
+            measuredItemProvider = measuredItemProvider,
             itemProvider = itemProvider,
             itemsCount = itemsCount,
             beyondBoundsItemCount = beyondBoundsItemCount,
@@ -250,6 +253,7 @@
         val extraItemsAfter = createItemsAfterList(
             beyondBoundsInfo = beyondBoundsInfo,
             visibleItems = visibleItems,
+            measuredItemProvider = measuredItemProvider,
             itemProvider = itemProvider,
             itemsCount = itemsCount,
             beyondBoundsItemCount = beyondBoundsItemCount,
@@ -291,13 +295,13 @@
             layoutWidth = layoutWidth,
             layoutHeight = layoutHeight,
             positionedItems = positionedItems,
-            itemProvider = itemProvider
+            itemProvider = measuredItemProvider
         )
 
         val headerItem = if (headerIndexes.isNotEmpty()) {
             findOrComposeLazyListHeader(
                 composedVisibleItems = positionedItems,
-                itemProvider = itemProvider,
+                itemProvider = measuredItemProvider,
                 headerIndexes = headerIndexes,
                 beforeContentPadding = beforeContentPadding,
                 layoutWidth = layoutWidth,
@@ -340,7 +344,8 @@
 private fun createItemsAfterList(
     beyondBoundsInfo: LazyListBeyondBoundsInfo,
     visibleItems: MutableList<LazyMeasuredItem>,
-    itemProvider: LazyMeasuredItemProvider,
+    measuredItemProvider: LazyMeasuredItemProvider,
+    itemProvider: LazyListItemProvider,
     itemsCount: Int,
     beyondBoundsItemCount: Int,
     pinnedItems: LazyLayoutPinnedItemList
@@ -354,7 +359,7 @@
     fun addItem(index: Int) {
         if (list == null) list = mutableListOf()
         requireNotNull(list).add(
-            itemProvider.getAndMeasure(DataIndex(index))
+            measuredItemProvider.getAndMeasure(DataIndex(index))
         )
     }
 
@@ -369,8 +374,9 @@
     }
 
     pinnedItems.fastForEach { item ->
-        if (item.index > end && item.index < itemsCount) {
-            addItem(item.index)
+        val index = itemProvider.findIndexByKey(item.key, item.index)
+        if (index > end && index < itemsCount) {
+            addItem(index)
         }
     }
 
@@ -381,7 +387,8 @@
 private fun createItemsBeforeList(
     beyondBoundsInfo: LazyListBeyondBoundsInfo,
     currentFirstItemIndex: DataIndex,
-    itemProvider: LazyMeasuredItemProvider,
+    measuredItemProvider: LazyMeasuredItemProvider,
+    itemProvider: LazyListItemProvider,
     itemsCount: Int,
     beyondBoundsItemCount: Int,
     pinnedItems: LazyLayoutPinnedItemList
@@ -395,7 +402,7 @@
     fun addItem(index: Int) {
         if (list == null) list = mutableListOf()
         requireNotNull(list).add(
-            itemProvider.getAndMeasure(DataIndex(index))
+            measuredItemProvider.getAndMeasure(DataIndex(index))
         )
     }
 
@@ -410,8 +417,9 @@
     }
 
     pinnedItems.fastForEach { item ->
-        if (item.index < start) {
-            addItem(item.index)
+        val index = itemProvider.findIndexByKey(item.key, item.index)
+        if (index < start) {
+            addItem(index)
         }
     }
 
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGrid.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGrid.kt
index 7ecc15a..b6787df 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGrid.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGrid.kt
@@ -328,6 +328,7 @@
         }
         measureLazyGrid(
             itemsCount = itemsCount,
+            itemProvider = itemProvider,
             measuredLineProvider = measuredLineProvider,
             measuredItemProvider = measuredItemProvider,
             mainAxisAvailableSize = mainAxisAvailableSize,
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProvider.kt
index 4f148e7..4948efa 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProvider.kt
@@ -88,8 +88,13 @@
     intervals = intervals,
     nearestItemsRange = nearestItemsRange,
     itemContent = { interval, index ->
-        LazyLayoutPinnableItem(index, state.pinnedItems) {
-            interval.value.item.invoke(LazyGridItemScopeImpl, index - interval.startIndex)
+        val localIndex = index - interval.startIndex
+        LazyLayoutPinnableItem(
+            key = interval.value.key?.invoke(localIndex),
+            index = index,
+            pinnedItemList = state.pinnedItems
+        ) {
+            interval.value.item.invoke(LazyGridItemScopeImpl, localIndex)
         }
     }
 ) {
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasure.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasure.kt
index c08c7d0..b36fc51 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasure.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasure.kt
@@ -21,6 +21,7 @@
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList
+import androidx.compose.foundation.lazy.layout.findIndexByKey
 import androidx.compose.ui.layout.MeasureResult
 import androidx.compose.ui.layout.Placeable
 import androidx.compose.ui.unit.Constraints
@@ -42,6 +43,7 @@
 @OptIn(ExperimentalFoundationApi::class)
 internal fun measureLazyGrid(
     itemsCount: Int,
+    itemProvider: LazyGridItemProvider,
     measuredLineProvider: LazyMeasuredLineProvider,
     measuredItemProvider: LazyMeasuredItemProvider,
     mainAxisAvailableSize: Int,
@@ -211,6 +213,7 @@
         val extraItemsBefore = calculateExtraItems(
             pinnedItems,
             measuredItemProvider,
+            itemProvider,
             itemConstraints = { measuredLineProvider.itemConstraints(it) },
             filter = { it in 0 until firstItemIndex }
         )
@@ -218,6 +221,7 @@
         val extraItemsAfter = calculateExtraItems(
             pinnedItems,
             measuredItemProvider,
+            itemProvider,
             itemConstraints = { measuredLineProvider.itemConstraints(it) },
             filter = { it in (lastItemIndex + 1) until itemsCount }
         )
@@ -303,17 +307,22 @@
 @ExperimentalFoundationApi
 private inline fun calculateExtraItems(
     pinnedItems: LazyLayoutPinnedItemList,
-    itemProvider: LazyMeasuredItemProvider,
+    measuredItemProvider: LazyMeasuredItemProvider,
+    itemProvider: LazyGridItemProvider,
     itemConstraints: (ItemIndex) -> Constraints,
     filter: (Int) -> Boolean
 ): List<LazyGridMeasuredItem> {
     var items: MutableList<LazyGridMeasuredItem>? = null
 
     pinnedItems.fastForEach { item ->
-        if (filter(item.index)) {
-            val itemIndex = ItemIndex(item.index)
+        val index = itemProvider.findIndexByKey(item.key, item.index)
+        if (filter(index)) {
+            val itemIndex = ItemIndex(index)
             val constraints = itemConstraints(itemIndex)
-            val measuredItem = itemProvider.getAndMeasure(itemIndex, constraints = constraints)
+            val measuredItem = measuredItemProvider.getAndMeasure(
+                itemIndex,
+                constraints = constraints
+            )
             if (items == null) {
                 items = mutableListOf()
             }
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem.kt
index 37bd32f..768c234 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem.kt
@@ -33,18 +33,20 @@
  * Wrapper supporting [PinnableContainer] in lazy layout items. Each pinned item
  * is considered important to keep alive even if it would be discarded otherwise.
  *
- * @param index current index of the item inside the lazy layout
- * @param pinnedItemList container to keep currently pinned items
+ * @param key key of the item inside the lazy layout
+ * @param index index of the item inside the lazy layout
+ * @param pinnedItemList container of currently pinned items
  * @param content inner content of this item
  */
 @ExperimentalFoundationApi
 @Composable
 fun LazyLayoutPinnableItem(
+    key: Any?,
     index: Int,
     pinnedItemList: LazyLayoutPinnedItemList,
     content: @Composable () -> Unit
 ) {
-    val pinnableItem = remember(pinnedItemList) { LazyLayoutPinnableItem(pinnedItemList) }
+    val pinnableItem = remember(key, pinnedItemList) { LazyLayoutPinnableItem(key, pinnedItemList) }
     pinnableItem.index = index
     pinnableItem.parentPinnableContainer = LocalPinnableContainer.current
     DisposableEffect(pinnableItem) { onDispose { pinnableItem.onDisposed() } }
@@ -79,7 +81,12 @@
     @ExperimentalFoundationApi
     sealed interface PinnedItem {
         /**
-         * Index of the pinned item.
+         * Key of the pinned item.
+         */
+        val key: Any?
+
+        /**
+         * Last known index of the pinned item.
          * Note: it is possible for index to change during lifetime of the object.
          */
         val index: Int
@@ -88,6 +95,7 @@
 
 @OptIn(ExperimentalFoundationApi::class)
 private class LazyLayoutPinnableItem(
+    override val key: Any?,
     private val pinnedItemList: LazyLayoutPinnedItemList,
 ) : PinnableContainer, PinnableContainer.PinnedHandle, LazyLayoutPinnedItemList.PinnedItem {
     /**
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridItemProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridItemProvider.kt
index 87cf120..f32dda3 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridItemProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridItemProvider.kt
@@ -50,11 +50,13 @@
                 scope.intervals,
                 nearestItemsRangeState.value,
                 itemContent = { interval, index ->
-                    LazyLayoutPinnableItem(index, state.pinnedItems) {
-                        interval.value.item.invoke(
-                            LazyStaggeredGridItemScopeImpl,
-                            index - interval.startIndex
-                        )
+                    val localIndex = index - interval.startIndex
+                    LazyLayoutPinnableItem(
+                        key = interval.value.key?.invoke(localIndex),
+                        index = index,
+                        pinnedItemList = state.pinnedItems
+                    ) {
+                        interval.value.item.invoke(LazyStaggeredGridItemScopeImpl, localIndex)
                     }
                 }
             ), LazyStaggeredGridItemProvider {
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridMeasure.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridMeasure.kt
index 1c38c19..3e8e43a 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridMeasure.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridMeasure.kt
@@ -21,6 +21,7 @@
 import androidx.compose.foundation.fastMaxOfOrNull
 import androidx.compose.foundation.lazy.layout.LazyLayoutItemProvider
 import androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScope
+import androidx.compose.foundation.lazy.layout.findIndexByKey
 import androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridLaneInfo.Companion.FullSpan
 import androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridLaneInfo.Companion.Unset
 import androidx.compose.runtime.snapshots.Snapshot
@@ -792,12 +793,14 @@
 
     val pinnedItems = state.pinnedItems
     pinnedItems.fastForEach { item ->
-        if (filter(item.index)) {
-            val spanRange = itemProvider.getSpanRange(item.index, 0)
+        val index = itemProvider.findIndexByKey(item.key, item.index)
+
+        if (filter(index)) {
+            val spanRange = itemProvider.getSpanRange(index, 0)
             if (result == null) {
                 result = mutableListOf()
             }
-            val measuredItem = measuredItemProvider.getAndMeasure(item.index, spanRange)
+            val measuredItem = measuredItemProvider.getAndMeasure(index, spanRange)
             result?.add(position(measuredItem))
         }
     }
diff --git a/compose/lint/internal-lint-checks/src/main/java/androidx/compose/lint/ComposeIssueRegistry.kt b/compose/lint/internal-lint-checks/src/main/java/androidx/compose/lint/ComposeIssueRegistry.kt
index 6dd41f2..29098a8 100644
--- a/compose/lint/internal-lint-checks/src/main/java/androidx/compose/lint/ComposeIssueRegistry.kt
+++ b/compose/lint/internal-lint-checks/src/main/java/androidx/compose/lint/ComposeIssueRegistry.kt
@@ -25,7 +25,7 @@
 
 class ComposeIssueRegistry : IssueRegistry() {
     override val minApi = CURRENT_API
-    override val api = 13
+    override val api = 14
     override val issues get(): List<Issue> {
         return listOf(
             ListIteratorDetector.ISSUE,
diff --git a/compose/material/material-lint/src/main/java/androidx/compose/material/lint/MaterialIssueRegistry.kt b/compose/material/material-lint/src/main/java/androidx/compose/material/lint/MaterialIssueRegistry.kt
index 75ce926..f7b3b43 100644
--- a/compose/material/material-lint/src/main/java/androidx/compose/material/lint/MaterialIssueRegistry.kt
+++ b/compose/material/material-lint/src/main/java/androidx/compose/material/lint/MaterialIssueRegistry.kt
@@ -25,7 +25,7 @@
  */
 class MaterialIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         ColorsDetector.ConflictingOnColor,
diff --git a/compose/material/material/api/1.4.0-beta01.txt b/compose/material/material/api/1.4.0-beta01.txt
index 477a180..a8f3f39 100644
--- a/compose/material/material/api/1.4.0-beta01.txt
+++ b/compose/material/material/api/1.4.0-beta01.txt
@@ -41,9 +41,6 @@
     field public static final androidx.compose.material.BackdropScaffoldDefaults INSTANCE;
   }
 
-  public final class BackdropScaffoldKt {
-  }
-
   public final class BadgeKt {
     method @androidx.compose.runtime.Composable public static void Badge(optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? content);
     method @androidx.compose.runtime.Composable public static void BadgedBox(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> badge, optional androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
@@ -68,9 +65,6 @@
     field public static final androidx.compose.material.BottomSheetScaffoldDefaults INSTANCE;
   }
 
-  public final class BottomSheetScaffoldKt {
-  }
-
   @androidx.compose.runtime.Stable public interface ButtonColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
@@ -132,9 +126,6 @@
     method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material.CheckboxColors colors);
   }
 
-  public final class ChipKt {
-  }
-
   @androidx.compose.runtime.Stable public final class Colors {
     ctor public Colors(long primary, long primaryVariant, long secondary, long secondaryVariant, long background, long surface, long error, long onPrimary, long onSecondary, long onBackground, long onSurface, long onError, boolean isLight);
     method public androidx.compose.material.Colors copy(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onError, optional boolean isLight);
@@ -265,9 +256,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.material.ElevationOverlay> LocalElevationOverlay;
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material.FabPosition.Companion Companion;
   }
@@ -309,9 +297,6 @@
     method public static androidx.compose.ui.Modifier minimumInteractiveComponentSize(androidx.compose.ui.Modifier);
   }
 
-  public final class ListItemKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Colors getColors();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Shapes getShapes();
@@ -340,9 +325,6 @@
     field public static final androidx.compose.material.ModalBottomSheetDefaults INSTANCE;
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationRailDefaults {
     method public float getElevation();
     property public final float Elevation;
@@ -503,9 +485,6 @@
     method @androidx.compose.runtime.Composable public static void Surface(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long color, optional long contentColor, optional androidx.compose.foundation.BorderStroke? border, optional float elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   public final class SwipeableDefaults {
     method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
     method public float getVelocityThreshold();
@@ -517,9 +496,6 @@
     field public static final float StiffResistanceFactor = 20.0f;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
@@ -650,19 +626,3 @@
 
 }
 
-package androidx.compose.material.pullrefresh {
-
-  public final class PullRefreshIndicatorKt {
-  }
-
-  public final class PullRefreshIndicatorTransformKt {
-  }
-
-  public final class PullRefreshKt {
-  }
-
-  public final class PullRefreshStateKt {
-  }
-
-}
-
diff --git a/compose/material/material/api/current.ignore b/compose/material/material/api/current.ignore
index 11096af..d24bb34 100644
--- a/compose/material/material/api/current.ignore
+++ b/compose/material/material/api/current.ignore
@@ -1,20 +1,36 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.material.AlertDialogKt:
     Removed class androidx.compose.material.AlertDialogKt
+RemovedClass: androidx.compose.material.BackdropScaffoldKt:
+    Removed class androidx.compose.material.BackdropScaffoldKt
+RemovedClass: androidx.compose.material.BottomSheetScaffoldKt:
+    Removed class androidx.compose.material.BottomSheetScaffoldKt
+RemovedClass: androidx.compose.material.ChipKt:
+    Removed class androidx.compose.material.ChipKt
 RemovedClass: androidx.compose.material.DragGestureDetectorCopyKt:
     Removed class androidx.compose.material.DragGestureDetectorCopyKt
 RemovedClass: androidx.compose.material.ElevationKt:
     Removed class androidx.compose.material.ElevationKt
+RemovedClass: androidx.compose.material.ExposedDropdownMenuKt:
+    Removed class androidx.compose.material.ExposedDropdownMenuKt
+RemovedClass: androidx.compose.material.ListItemKt:
+    Removed class androidx.compose.material.ListItemKt
 RemovedClass: androidx.compose.material.MaterialTextSelectionColorsKt:
     Removed class androidx.compose.material.MaterialTextSelectionColorsKt
 RemovedClass: androidx.compose.material.MaterialTheme_androidKt:
     Removed class androidx.compose.material.MaterialTheme_androidKt
 RemovedClass: androidx.compose.material.MenuKt:
     Removed class androidx.compose.material.MenuKt
+RemovedClass: androidx.compose.material.ModalBottomSheetKt:
+    Removed class androidx.compose.material.ModalBottomSheetKt
 RemovedClass: androidx.compose.material.ShapesKt:
     Removed class androidx.compose.material.ShapesKt
 RemovedClass: androidx.compose.material.Strings_androidKt:
     Removed class androidx.compose.material.Strings_androidKt
+RemovedClass: androidx.compose.material.SwipeToDismissKt:
+    Removed class androidx.compose.material.SwipeToDismissKt
+RemovedClass: androidx.compose.material.SwipeableKt:
+    Removed class androidx.compose.material.SwipeableKt
 RemovedClass: androidx.compose.material.SwipeableV2Kt:
     Removed class androidx.compose.material.SwipeableV2Kt
 RemovedClass: androidx.compose.material.TextFieldDefaultsKt:
@@ -29,3 +45,5 @@
 
 RemovedPackage: androidx.compose.material.internal:
     Removed package androidx.compose.material.internal
+RemovedPackage: androidx.compose.material.pullrefresh:
+    Removed package androidx.compose.material.pullrefresh
diff --git a/compose/material/material/api/current.txt b/compose/material/material/api/current.txt
index 477a180..a8f3f39 100644
--- a/compose/material/material/api/current.txt
+++ b/compose/material/material/api/current.txt
@@ -41,9 +41,6 @@
     field public static final androidx.compose.material.BackdropScaffoldDefaults INSTANCE;
   }
 
-  public final class BackdropScaffoldKt {
-  }
-
   public final class BadgeKt {
     method @androidx.compose.runtime.Composable public static void Badge(optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? content);
     method @androidx.compose.runtime.Composable public static void BadgedBox(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> badge, optional androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
@@ -68,9 +65,6 @@
     field public static final androidx.compose.material.BottomSheetScaffoldDefaults INSTANCE;
   }
 
-  public final class BottomSheetScaffoldKt {
-  }
-
   @androidx.compose.runtime.Stable public interface ButtonColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
@@ -132,9 +126,6 @@
     method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material.CheckboxColors colors);
   }
 
-  public final class ChipKt {
-  }
-
   @androidx.compose.runtime.Stable public final class Colors {
     ctor public Colors(long primary, long primaryVariant, long secondary, long secondaryVariant, long background, long surface, long error, long onPrimary, long onSecondary, long onBackground, long onSurface, long onError, boolean isLight);
     method public androidx.compose.material.Colors copy(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onError, optional boolean isLight);
@@ -265,9 +256,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.material.ElevationOverlay> LocalElevationOverlay;
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material.FabPosition.Companion Companion;
   }
@@ -309,9 +297,6 @@
     method public static androidx.compose.ui.Modifier minimumInteractiveComponentSize(androidx.compose.ui.Modifier);
   }
 
-  public final class ListItemKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Colors getColors();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Shapes getShapes();
@@ -340,9 +325,6 @@
     field public static final androidx.compose.material.ModalBottomSheetDefaults INSTANCE;
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationRailDefaults {
     method public float getElevation();
     property public final float Elevation;
@@ -503,9 +485,6 @@
     method @androidx.compose.runtime.Composable public static void Surface(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long color, optional long contentColor, optional androidx.compose.foundation.BorderStroke? border, optional float elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   public final class SwipeableDefaults {
     method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
     method public float getVelocityThreshold();
@@ -517,9 +496,6 @@
     field public static final float StiffResistanceFactor = 20.0f;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
@@ -650,19 +626,3 @@
 
 }
 
-package androidx.compose.material.pullrefresh {
-
-  public final class PullRefreshIndicatorKt {
-  }
-
-  public final class PullRefreshIndicatorTransformKt {
-  }
-
-  public final class PullRefreshKt {
-  }
-
-  public final class PullRefreshStateKt {
-  }
-
-}
-
diff --git a/compose/material/material/api/restricted_1.4.0-beta01.txt b/compose/material/material/api/restricted_1.4.0-beta01.txt
index 477a180..a8f3f39 100644
--- a/compose/material/material/api/restricted_1.4.0-beta01.txt
+++ b/compose/material/material/api/restricted_1.4.0-beta01.txt
@@ -41,9 +41,6 @@
     field public static final androidx.compose.material.BackdropScaffoldDefaults INSTANCE;
   }
 
-  public final class BackdropScaffoldKt {
-  }
-
   public final class BadgeKt {
     method @androidx.compose.runtime.Composable public static void Badge(optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? content);
     method @androidx.compose.runtime.Composable public static void BadgedBox(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> badge, optional androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
@@ -68,9 +65,6 @@
     field public static final androidx.compose.material.BottomSheetScaffoldDefaults INSTANCE;
   }
 
-  public final class BottomSheetScaffoldKt {
-  }
-
   @androidx.compose.runtime.Stable public interface ButtonColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
@@ -132,9 +126,6 @@
     method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material.CheckboxColors colors);
   }
 
-  public final class ChipKt {
-  }
-
   @androidx.compose.runtime.Stable public final class Colors {
     ctor public Colors(long primary, long primaryVariant, long secondary, long secondaryVariant, long background, long surface, long error, long onPrimary, long onSecondary, long onBackground, long onSurface, long onError, boolean isLight);
     method public androidx.compose.material.Colors copy(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onError, optional boolean isLight);
@@ -265,9 +256,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.material.ElevationOverlay> LocalElevationOverlay;
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material.FabPosition.Companion Companion;
   }
@@ -309,9 +297,6 @@
     method public static androidx.compose.ui.Modifier minimumInteractiveComponentSize(androidx.compose.ui.Modifier);
   }
 
-  public final class ListItemKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Colors getColors();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Shapes getShapes();
@@ -340,9 +325,6 @@
     field public static final androidx.compose.material.ModalBottomSheetDefaults INSTANCE;
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationRailDefaults {
     method public float getElevation();
     property public final float Elevation;
@@ -503,9 +485,6 @@
     method @androidx.compose.runtime.Composable public static void Surface(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long color, optional long contentColor, optional androidx.compose.foundation.BorderStroke? border, optional float elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   public final class SwipeableDefaults {
     method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
     method public float getVelocityThreshold();
@@ -517,9 +496,6 @@
     field public static final float StiffResistanceFactor = 20.0f;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
@@ -650,19 +626,3 @@
 
 }
 
-package androidx.compose.material.pullrefresh {
-
-  public final class PullRefreshIndicatorKt {
-  }
-
-  public final class PullRefreshIndicatorTransformKt {
-  }
-
-  public final class PullRefreshKt {
-  }
-
-  public final class PullRefreshStateKt {
-  }
-
-}
-
diff --git a/compose/material/material/api/restricted_current.ignore b/compose/material/material/api/restricted_current.ignore
index 11096af..d24bb34 100644
--- a/compose/material/material/api/restricted_current.ignore
+++ b/compose/material/material/api/restricted_current.ignore
@@ -1,20 +1,36 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.material.AlertDialogKt:
     Removed class androidx.compose.material.AlertDialogKt
+RemovedClass: androidx.compose.material.BackdropScaffoldKt:
+    Removed class androidx.compose.material.BackdropScaffoldKt
+RemovedClass: androidx.compose.material.BottomSheetScaffoldKt:
+    Removed class androidx.compose.material.BottomSheetScaffoldKt
+RemovedClass: androidx.compose.material.ChipKt:
+    Removed class androidx.compose.material.ChipKt
 RemovedClass: androidx.compose.material.DragGestureDetectorCopyKt:
     Removed class androidx.compose.material.DragGestureDetectorCopyKt
 RemovedClass: androidx.compose.material.ElevationKt:
     Removed class androidx.compose.material.ElevationKt
+RemovedClass: androidx.compose.material.ExposedDropdownMenuKt:
+    Removed class androidx.compose.material.ExposedDropdownMenuKt
+RemovedClass: androidx.compose.material.ListItemKt:
+    Removed class androidx.compose.material.ListItemKt
 RemovedClass: androidx.compose.material.MaterialTextSelectionColorsKt:
     Removed class androidx.compose.material.MaterialTextSelectionColorsKt
 RemovedClass: androidx.compose.material.MaterialTheme_androidKt:
     Removed class androidx.compose.material.MaterialTheme_androidKt
 RemovedClass: androidx.compose.material.MenuKt:
     Removed class androidx.compose.material.MenuKt
+RemovedClass: androidx.compose.material.ModalBottomSheetKt:
+    Removed class androidx.compose.material.ModalBottomSheetKt
 RemovedClass: androidx.compose.material.ShapesKt:
     Removed class androidx.compose.material.ShapesKt
 RemovedClass: androidx.compose.material.Strings_androidKt:
     Removed class androidx.compose.material.Strings_androidKt
+RemovedClass: androidx.compose.material.SwipeToDismissKt:
+    Removed class androidx.compose.material.SwipeToDismissKt
+RemovedClass: androidx.compose.material.SwipeableKt:
+    Removed class androidx.compose.material.SwipeableKt
 RemovedClass: androidx.compose.material.SwipeableV2Kt:
     Removed class androidx.compose.material.SwipeableV2Kt
 RemovedClass: androidx.compose.material.TextFieldDefaultsKt:
@@ -29,3 +45,5 @@
 
 RemovedPackage: androidx.compose.material.internal:
     Removed package androidx.compose.material.internal
+RemovedPackage: androidx.compose.material.pullrefresh:
+    Removed package androidx.compose.material.pullrefresh
diff --git a/compose/material/material/api/restricted_current.txt b/compose/material/material/api/restricted_current.txt
index 477a180..a8f3f39 100644
--- a/compose/material/material/api/restricted_current.txt
+++ b/compose/material/material/api/restricted_current.txt
@@ -41,9 +41,6 @@
     field public static final androidx.compose.material.BackdropScaffoldDefaults INSTANCE;
   }
 
-  public final class BackdropScaffoldKt {
-  }
-
   public final class BadgeKt {
     method @androidx.compose.runtime.Composable public static void Badge(optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? content);
     method @androidx.compose.runtime.Composable public static void BadgedBox(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> badge, optional androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
@@ -68,9 +65,6 @@
     field public static final androidx.compose.material.BottomSheetScaffoldDefaults INSTANCE;
   }
 
-  public final class BottomSheetScaffoldKt {
-  }
-
   @androidx.compose.runtime.Stable public interface ButtonColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
@@ -132,9 +126,6 @@
     method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material.CheckboxColors colors);
   }
 
-  public final class ChipKt {
-  }
-
   @androidx.compose.runtime.Stable public final class Colors {
     ctor public Colors(long primary, long primaryVariant, long secondary, long secondaryVariant, long background, long surface, long error, long onPrimary, long onSecondary, long onBackground, long onSurface, long onError, boolean isLight);
     method public androidx.compose.material.Colors copy(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onError, optional boolean isLight);
@@ -265,9 +256,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.material.ElevationOverlay> LocalElevationOverlay;
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material.FabPosition.Companion Companion;
   }
@@ -309,9 +297,6 @@
     method public static androidx.compose.ui.Modifier minimumInteractiveComponentSize(androidx.compose.ui.Modifier);
   }
 
-  public final class ListItemKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Colors getColors();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Shapes getShapes();
@@ -340,9 +325,6 @@
     field public static final androidx.compose.material.ModalBottomSheetDefaults INSTANCE;
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationRailDefaults {
     method public float getElevation();
     property public final float Elevation;
@@ -503,9 +485,6 @@
     method @androidx.compose.runtime.Composable public static void Surface(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long color, optional long contentColor, optional androidx.compose.foundation.BorderStroke? border, optional float elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   public final class SwipeableDefaults {
     method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
     method public float getVelocityThreshold();
@@ -517,9 +496,6 @@
     field public static final float StiffResistanceFactor = 20.0f;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
@@ -650,19 +626,3 @@
 
 }
 
-package androidx.compose.material.pullrefresh {
-
-  public final class PullRefreshIndicatorKt {
-  }
-
-  public final class PullRefreshIndicatorTransformKt {
-  }
-
-  public final class PullRefreshKt {
-  }
-
-  public final class PullRefreshStateKt {
-  }
-
-}
-
diff --git a/compose/material3/material3-lint/src/main/java/androidx/compose/material3/lint/Material3IssueRegistry.kt b/compose/material3/material3-lint/src/main/java/androidx/compose/material3/lint/Material3IssueRegistry.kt
index 8529446..6887bda 100644
--- a/compose/material3/material3-lint/src/main/java/androidx/compose/material3/lint/Material3IssueRegistry.kt
+++ b/compose/material3/material3-lint/src/main/java/androidx/compose/material3/lint/Material3IssueRegistry.kt
@@ -25,7 +25,7 @@
  */
 class Material3IssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         ScaffoldPaddingDetector.UnusedMaterial3ScaffoldPaddingParameter
diff --git a/compose/material3/material3-window-size-class/api/current.ignore b/compose/material3/material3-window-size-class/api/current.ignore
index 470ece8..bb4a3ed 100644
--- a/compose/material3/material3-window-size-class/api/current.ignore
+++ b/compose/material3/material3-window-size-class/api/current.ignore
@@ -1,3 +1,5 @@
 // Baseline format: 1.0
+RemovedClass: androidx.compose.material3.windowsizeclass.AndroidWindowSizeClass_androidKt:
+    Removed class androidx.compose.material3.windowsizeclass.AndroidWindowSizeClass_androidKt
 RemovedClass: androidx.compose.material3.windowsizeclass.TestOnly_jvmKt:
     Removed class androidx.compose.material3.windowsizeclass.TestOnly_jvmKt
diff --git a/compose/material3/material3-window-size-class/api/current.txt b/compose/material3/material3-window-size-class/api/current.txt
index 10051db..cc66d9f 100644
--- a/compose/material3/material3-window-size-class/api/current.txt
+++ b/compose/material3/material3-window-size-class/api/current.txt
@@ -1,9 +1,6 @@
 // Signature format: 4.0
 package androidx.compose.material3.windowsizeclass {
 
-  public final class AndroidWindowSizeClass_androidKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class WindowHeightSizeClass implements java.lang.Comparable<androidx.compose.material3.windowsizeclass.WindowHeightSizeClass> {
     method public operator int compareTo(int other);
     field public static final androidx.compose.material3.windowsizeclass.WindowHeightSizeClass.Companion Companion;
diff --git a/compose/material3/material3-window-size-class/api/restricted_current.ignore b/compose/material3/material3-window-size-class/api/restricted_current.ignore
index 470ece8..bb4a3ed 100644
--- a/compose/material3/material3-window-size-class/api/restricted_current.ignore
+++ b/compose/material3/material3-window-size-class/api/restricted_current.ignore
@@ -1,3 +1,5 @@
 // Baseline format: 1.0
+RemovedClass: androidx.compose.material3.windowsizeclass.AndroidWindowSizeClass_androidKt:
+    Removed class androidx.compose.material3.windowsizeclass.AndroidWindowSizeClass_androidKt
 RemovedClass: androidx.compose.material3.windowsizeclass.TestOnly_jvmKt:
     Removed class androidx.compose.material3.windowsizeclass.TestOnly_jvmKt
diff --git a/compose/material3/material3-window-size-class/api/restricted_current.txt b/compose/material3/material3-window-size-class/api/restricted_current.txt
index 10051db..cc66d9f 100644
--- a/compose/material3/material3-window-size-class/api/restricted_current.txt
+++ b/compose/material3/material3-window-size-class/api/restricted_current.txt
@@ -1,9 +1,6 @@
 // Signature format: 4.0
 package androidx.compose.material3.windowsizeclass {
 
-  public final class AndroidWindowSizeClass_androidKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class WindowHeightSizeClass implements java.lang.Comparable<androidx.compose.material3.windowsizeclass.WindowHeightSizeClass> {
     method public operator int compareTo(int other);
     field public static final androidx.compose.material3.windowsizeclass.WindowHeightSizeClass.Companion Companion;
diff --git a/compose/material3/material3/api/current.ignore b/compose/material3/material3/api/current.ignore
index b29404c..f188367 100644
--- a/compose/material3/material3/api/current.ignore
+++ b/compose/material3/material3/api/current.ignore
@@ -1,14 +1,20 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.material3.AlertDialogKt:
     Removed class androidx.compose.material3.AlertDialogKt
+RemovedClass: androidx.compose.material3.BadgeKt:
+    Removed class androidx.compose.material3.BadgeKt
 RemovedClass: androidx.compose.material3.DragGestureDetectorCopyKt:
     Removed class androidx.compose.material3.DragGestureDetectorCopyKt
 RemovedClass: androidx.compose.material3.ElevationKt:
     Removed class androidx.compose.material3.ElevationKt
+RemovedClass: androidx.compose.material3.ExposedDropdownMenuKt:
+    Removed class androidx.compose.material3.ExposedDropdownMenuKt
 RemovedClass: androidx.compose.material3.IncludeFontPaddingHelper_androidKt:
     Removed class androidx.compose.material3.IncludeFontPaddingHelper_androidKt
 RemovedClass: androidx.compose.material3.MenuKt:
     Removed class androidx.compose.material3.MenuKt
+RemovedClass: androidx.compose.material3.OutlinedTextFieldKt:
+    Removed class androidx.compose.material3.OutlinedTextFieldKt
 RemovedClass: androidx.compose.material3.ShapesKt:
     Removed class androidx.compose.material3.ShapesKt
 RemovedClass: androidx.compose.material3.Strings_androidKt:
@@ -21,6 +27,8 @@
     Removed class androidx.compose.material3.TextFieldDefaultsKt
 RemovedClass: androidx.compose.material3.TextFieldImplKt:
     Removed class androidx.compose.material3.TextFieldImplKt
+RemovedClass: androidx.compose.material3.TextFieldKt:
+    Removed class androidx.compose.material3.TextFieldKt
 RemovedClass: androidx.compose.material3.TonalPaletteKt:
     Removed class androidx.compose.material3.TonalPaletteKt
 RemovedClass: androidx.compose.material3.TouchTargetKt:
diff --git a/compose/material3/material3/api/current.txt b/compose/material3/material3/api/current.txt
index 393c4e4..0c53c8d 100644
--- a/compose/material3/material3/api/current.txt
+++ b/compose/material3/material3/api/current.txt
@@ -46,9 +46,6 @@
     field public static final androidx.compose.material3.AssistChipDefaults INSTANCE;
   }
 
-  public final class BadgeKt {
-  }
-
   public final class BottomAppBarDefaults {
     method @androidx.compose.runtime.Composable public long getBottomAppBarFabColor();
     method @androidx.compose.runtime.Composable public long getContainerColor();
@@ -251,15 +248,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalContentColor;
   }
 
-  public final class DatePickerDialog_androidKt {
-  }
-
-  public final class DatePickerKt {
-  }
-
-  public final class DateRangePickerKt {
-  }
-
   public final class DividerDefaults {
     method @androidx.compose.runtime.Composable public long getColor();
     method public float getThickness();
@@ -329,9 +317,6 @@
     method @RequiresApi(android.os.Build.VERSION_CODES.S) public static androidx.compose.material3.ColorScheme dynamicLightColorScheme(android.content.Context context);
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material3.FabPosition.Companion Companion;
   }
@@ -462,9 +447,6 @@
   @androidx.compose.runtime.Immutable public final class MenuItemColors {
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationBarDefaults {
     method @androidx.compose.runtime.Composable public long getContainerColor();
     method public float getElevation();
@@ -536,9 +518,6 @@
     method @androidx.compose.runtime.Composable public static void NavigationRailItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.material3.NavigationRailItemColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
-  public final class OutlinedTextFieldKt {
-  }
-
   public final class ProgressIndicatorDefaults {
     method @androidx.compose.runtime.Composable public long getCircularColor();
     method public int getCircularDeterminateStrokeCap();
@@ -610,9 +589,6 @@
     field public static final androidx.compose.material3.SearchBarDefaults INSTANCE;
   }
 
-  public final class SearchBarKt {
-  }
-
   public final class ShapeDefaults {
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraLarge();
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraSmall();
@@ -642,9 +618,6 @@
     property public final androidx.compose.foundation.shape.CornerBasedShape small;
   }
 
-  public final class SheetDefaultsKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class SliderColors {
   }
 
@@ -756,9 +729,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.unit.Dp> LocalAbsoluteTonalElevation;
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class SwitchColors {
   }
 
@@ -806,9 +776,6 @@
   @androidx.compose.runtime.Immutable public final class TextFieldColors {
   }
 
-  public final class TextFieldKt {
-  }
-
   public final class TextKt {
     method @androidx.compose.runtime.Composable public static void ProvideTextStyle(androidx.compose.ui.text.TextStyle value, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional int minLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
@@ -819,9 +786,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.text.TextStyle> LocalTextStyle;
   }
 
-  public final class TimePickerKt {
-  }
-
   @androidx.compose.runtime.Stable public final class TimePickerState {
     ctor public TimePickerState(int initialHour, int initialMinute, boolean is24Hour);
     method public int getHour();
@@ -838,9 +802,6 @@
     method public androidx.compose.runtime.saveable.Saver<androidx.compose.material3.TimePickerState,?> Saver();
   }
 
-  public final class TooltipKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class Typography {
     ctor public Typography(optional androidx.compose.ui.text.TextStyle displayLarge, optional androidx.compose.ui.text.TextStyle displayMedium, optional androidx.compose.ui.text.TextStyle displaySmall, optional androidx.compose.ui.text.TextStyle headlineLarge, optional androidx.compose.ui.text.TextStyle headlineMedium, optional androidx.compose.ui.text.TextStyle headlineSmall, optional androidx.compose.ui.text.TextStyle titleLarge, optional androidx.compose.ui.text.TextStyle titleMedium, optional androidx.compose.ui.text.TextStyle titleSmall, optional androidx.compose.ui.text.TextStyle bodyLarge, optional androidx.compose.ui.text.TextStyle bodyMedium, optional androidx.compose.ui.text.TextStyle bodySmall, optional androidx.compose.ui.text.TextStyle labelLarge, optional androidx.compose.ui.text.TextStyle labelMedium, optional androidx.compose.ui.text.TextStyle labelSmall);
     method public androidx.compose.material3.Typography copy(optional androidx.compose.ui.text.TextStyle displayLarge, optional androidx.compose.ui.text.TextStyle displayMedium, optional androidx.compose.ui.text.TextStyle displaySmall, optional androidx.compose.ui.text.TextStyle headlineLarge, optional androidx.compose.ui.text.TextStyle headlineMedium, optional androidx.compose.ui.text.TextStyle headlineSmall, optional androidx.compose.ui.text.TextStyle titleLarge, optional androidx.compose.ui.text.TextStyle titleMedium, optional androidx.compose.ui.text.TextStyle titleSmall, optional androidx.compose.ui.text.TextStyle bodyLarge, optional androidx.compose.ui.text.TextStyle bodyMedium, optional androidx.compose.ui.text.TextStyle bodySmall, optional androidx.compose.ui.text.TextStyle labelLarge, optional androidx.compose.ui.text.TextStyle labelMedium, optional androidx.compose.ui.text.TextStyle labelSmall);
diff --git a/compose/material3/material3/api/restricted_current.ignore b/compose/material3/material3/api/restricted_current.ignore
index b29404c..f188367 100644
--- a/compose/material3/material3/api/restricted_current.ignore
+++ b/compose/material3/material3/api/restricted_current.ignore
@@ -1,14 +1,20 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.material3.AlertDialogKt:
     Removed class androidx.compose.material3.AlertDialogKt
+RemovedClass: androidx.compose.material3.BadgeKt:
+    Removed class androidx.compose.material3.BadgeKt
 RemovedClass: androidx.compose.material3.DragGestureDetectorCopyKt:
     Removed class androidx.compose.material3.DragGestureDetectorCopyKt
 RemovedClass: androidx.compose.material3.ElevationKt:
     Removed class androidx.compose.material3.ElevationKt
+RemovedClass: androidx.compose.material3.ExposedDropdownMenuKt:
+    Removed class androidx.compose.material3.ExposedDropdownMenuKt
 RemovedClass: androidx.compose.material3.IncludeFontPaddingHelper_androidKt:
     Removed class androidx.compose.material3.IncludeFontPaddingHelper_androidKt
 RemovedClass: androidx.compose.material3.MenuKt:
     Removed class androidx.compose.material3.MenuKt
+RemovedClass: androidx.compose.material3.OutlinedTextFieldKt:
+    Removed class androidx.compose.material3.OutlinedTextFieldKt
 RemovedClass: androidx.compose.material3.ShapesKt:
     Removed class androidx.compose.material3.ShapesKt
 RemovedClass: androidx.compose.material3.Strings_androidKt:
@@ -21,6 +27,8 @@
     Removed class androidx.compose.material3.TextFieldDefaultsKt
 RemovedClass: androidx.compose.material3.TextFieldImplKt:
     Removed class androidx.compose.material3.TextFieldImplKt
+RemovedClass: androidx.compose.material3.TextFieldKt:
+    Removed class androidx.compose.material3.TextFieldKt
 RemovedClass: androidx.compose.material3.TonalPaletteKt:
     Removed class androidx.compose.material3.TonalPaletteKt
 RemovedClass: androidx.compose.material3.TouchTargetKt:
diff --git a/compose/material3/material3/api/restricted_current.txt b/compose/material3/material3/api/restricted_current.txt
index 393c4e4..0c53c8d 100644
--- a/compose/material3/material3/api/restricted_current.txt
+++ b/compose/material3/material3/api/restricted_current.txt
@@ -46,9 +46,6 @@
     field public static final androidx.compose.material3.AssistChipDefaults INSTANCE;
   }
 
-  public final class BadgeKt {
-  }
-
   public final class BottomAppBarDefaults {
     method @androidx.compose.runtime.Composable public long getBottomAppBarFabColor();
     method @androidx.compose.runtime.Composable public long getContainerColor();
@@ -251,15 +248,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalContentColor;
   }
 
-  public final class DatePickerDialog_androidKt {
-  }
-
-  public final class DatePickerKt {
-  }
-
-  public final class DateRangePickerKt {
-  }
-
   public final class DividerDefaults {
     method @androidx.compose.runtime.Composable public long getColor();
     method public float getThickness();
@@ -329,9 +317,6 @@
     method @RequiresApi(android.os.Build.VERSION_CODES.S) public static androidx.compose.material3.ColorScheme dynamicLightColorScheme(android.content.Context context);
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material3.FabPosition.Companion Companion;
   }
@@ -462,9 +447,6 @@
   @androidx.compose.runtime.Immutable public final class MenuItemColors {
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationBarDefaults {
     method @androidx.compose.runtime.Composable public long getContainerColor();
     method public float getElevation();
@@ -536,9 +518,6 @@
     method @androidx.compose.runtime.Composable public static void NavigationRailItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.material3.NavigationRailItemColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
-  public final class OutlinedTextFieldKt {
-  }
-
   public final class ProgressIndicatorDefaults {
     method @androidx.compose.runtime.Composable public long getCircularColor();
     method public int getCircularDeterminateStrokeCap();
@@ -610,9 +589,6 @@
     field public static final androidx.compose.material3.SearchBarDefaults INSTANCE;
   }
 
-  public final class SearchBarKt {
-  }
-
   public final class ShapeDefaults {
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraLarge();
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraSmall();
@@ -642,9 +618,6 @@
     property public final androidx.compose.foundation.shape.CornerBasedShape small;
   }
 
-  public final class SheetDefaultsKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class SliderColors {
   }
 
@@ -756,9 +729,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.unit.Dp> LocalAbsoluteTonalElevation;
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class SwitchColors {
   }
 
@@ -806,9 +776,6 @@
   @androidx.compose.runtime.Immutable public final class TextFieldColors {
   }
 
-  public final class TextFieldKt {
-  }
-
   public final class TextKt {
     method @androidx.compose.runtime.Composable public static void ProvideTextStyle(androidx.compose.ui.text.TextStyle value, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional int minLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
@@ -819,9 +786,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.text.TextStyle> LocalTextStyle;
   }
 
-  public final class TimePickerKt {
-  }
-
   @androidx.compose.runtime.Stable public final class TimePickerState {
     ctor public TimePickerState(int initialHour, int initialMinute, boolean is24Hour);
     method public int getHour();
@@ -838,9 +802,6 @@
     method public androidx.compose.runtime.saveable.Saver<androidx.compose.material3.TimePickerState,?> Saver();
   }
 
-  public final class TooltipKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class Typography {
     ctor public Typography(optional androidx.compose.ui.text.TextStyle displayLarge, optional androidx.compose.ui.text.TextStyle displayMedium, optional androidx.compose.ui.text.TextStyle displaySmall, optional androidx.compose.ui.text.TextStyle headlineLarge, optional androidx.compose.ui.text.TextStyle headlineMedium, optional androidx.compose.ui.text.TextStyle headlineSmall, optional androidx.compose.ui.text.TextStyle titleLarge, optional androidx.compose.ui.text.TextStyle titleMedium, optional androidx.compose.ui.text.TextStyle titleSmall, optional androidx.compose.ui.text.TextStyle bodyLarge, optional androidx.compose.ui.text.TextStyle bodyMedium, optional androidx.compose.ui.text.TextStyle bodySmall, optional androidx.compose.ui.text.TextStyle labelLarge, optional androidx.compose.ui.text.TextStyle labelMedium, optional androidx.compose.ui.text.TextStyle labelSmall);
     method public androidx.compose.material3.Typography copy(optional androidx.compose.ui.text.TextStyle displayLarge, optional androidx.compose.ui.text.TextStyle displayMedium, optional androidx.compose.ui.text.TextStyle displaySmall, optional androidx.compose.ui.text.TextStyle headlineLarge, optional androidx.compose.ui.text.TextStyle headlineMedium, optional androidx.compose.ui.text.TextStyle headlineSmall, optional androidx.compose.ui.text.TextStyle titleLarge, optional androidx.compose.ui.text.TextStyle titleMedium, optional androidx.compose.ui.text.TextStyle titleSmall, optional androidx.compose.ui.text.TextStyle bodyLarge, optional androidx.compose.ui.text.TextStyle bodyMedium, optional androidx.compose.ui.text.TextStyle bodySmall, optional androidx.compose.ui.text.TextStyle labelLarge, optional androidx.compose.ui.text.TextStyle labelMedium, optional androidx.compose.ui.text.TextStyle labelSmall);
diff --git a/compose/material3/material3/build.gradle b/compose/material3/material3/build.gradle
index 4b043b1..8ba8b89 100644
--- a/compose/material3/material3/build.gradle
+++ b/compose/material3/material3/build.gradle
@@ -16,13 +16,13 @@
 
 import androidx.build.AndroidXComposePlugin
 import androidx.build.LibraryType
-import androidx.build.Publish
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
     id("AndroidXComposePlugin")
+    id("AndroidXPaparazziPlugin")
 }
 
 AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/CardTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/CardTest.kt
index 0cf7b76..d2869ed 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/CardTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/CardTest.kt
@@ -32,7 +32,10 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.semantics.SemanticsProperties
 import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.test.SemanticsMatcher
+import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertHasClickAction
 import androidx.compose.ui.test.assertIsEnabled
 import androidx.compose.ui.test.assertIsNotEnabled
@@ -103,6 +106,7 @@
         rule
             .onNodeWithTag("card")
             .assertHasClickAction()
+            .assert(SemanticsMatcher.keyNotDefined(SemanticsProperties.Role))
             .assertIsEnabled()
             // since we merge descendants we should have text on the same node
             .assertTextEquals("0")
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/FloatingActionButtonTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/FloatingActionButtonTest.kt
index 282a573..46c3e79 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/FloatingActionButtonTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/FloatingActionButtonTest.kt
@@ -38,6 +38,10 @@
 import androidx.compose.ui.layout.boundsInRoot
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.semantics.SemanticsProperties
+import androidx.compose.ui.test.SemanticsMatcher
+import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertHeightIsEqualTo
 import androidx.compose.ui.test.assertIsDisplayed
 import androidx.compose.ui.test.assertIsEnabled
@@ -81,6 +85,7 @@
 
         rule.onNodeWithTag("myButton")
             .assertIsEnabled()
+            .assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Button))
     }
 
     @Test
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/IconButtonTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/IconButtonTest.kt
index bbd38c9..22ceff9 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/IconButtonTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/IconButtonTest.kt
@@ -373,6 +373,32 @@
     }
 
     @Test
+    fun filledTonalIconButton_defaultSemantics() {
+        rule.setMaterialContent(lightColorScheme()) {
+            FilledTonalIconButton(onClick = { /* doSomething() */ }) {
+                Icon(Icons.Filled.Favorite, contentDescription = "Localized description")
+            }
+        }
+        rule.onNode(hasClickAction()).apply {
+            assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Button))
+            assertIsEnabled()
+        }
+    }
+
+    @Test
+    fun filledTonalIconButton_disabledSemantics() {
+        rule.setMaterialContent(lightColorScheme()) {
+            FilledTonalIconButton(onClick = {}, enabled = false) {
+                Icon(Icons.Filled.Favorite, contentDescription = "Localized description")
+            }
+        }
+        rule.onNode(hasClickAction()).apply {
+            assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Button))
+            assertIsNotEnabled()
+        }
+    }
+
+    @Test
     fun filledIconToggleButton_size() {
         rule
             .setMaterialContentForSizeAssertions {
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SurfaceTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SurfaceTest.kt
index cbb0705..72d4b3d 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SurfaceTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SurfaceTest.kt
@@ -296,7 +296,7 @@
         }
         rule.onNodeWithTag("surface")
             .assertHasClickAction()
-            .assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Button))
+            .assert(SemanticsMatcher.keyNotDefined(SemanticsProperties.Role))
             .assertIsEnabled()
             // since we merge descendants we should have text on the same node
             .assertTextEquals("0")
@@ -500,7 +500,7 @@
         }
         rule.onNodeWithTag("surface")
             .assertHasClickAction()
-            .assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Tab))
+            .assert(SemanticsMatcher.keyNotDefined(SemanticsProperties.Role))
             .assertIsEnabled()
             // since we merge descendants we should have text on the same node
             .assertTextEquals("false")
@@ -604,7 +604,7 @@
         }
         rule.onNodeWithTag("surface")
             .assertHasClickAction()
-            .assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Switch))
+            .assert(SemanticsMatcher.keyNotDefined(SemanticsProperties.Role))
             .assertIsEnabled()
             // since we merge descendants we should have text on the same node
             .assertTextEquals("false")
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
index 8a71e68..5fac45e 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
@@ -50,6 +50,9 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.semantics.role
+import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 
@@ -118,7 +121,7 @@
     val tonalElevation = elevation?.tonalElevation(enabled, interactionSource)?.value ?: 0.dp
     Surface(
         onClick = onClick,
-        modifier = modifier,
+        modifier = modifier.semantics { role = Role.Button },
         enabled = enabled,
         shape = shape,
         color = containerColor,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt
index 6ad4b7a..30dc766 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt
@@ -1319,7 +1319,7 @@
 ) {
     Surface(
         onClick = onClick,
-        modifier = modifier,
+        modifier = modifier.semantics { role = Role.Button },
         enabled = enabled,
         shape = shape,
         color = colors.containerColor(enabled).value,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DatePicker.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DatePicker.kt
index 7ffd9a4..a900775 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DatePicker.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DatePicker.kt
@@ -1478,8 +1478,11 @@
     Surface(
         selected = selected,
         onClick = onClick,
+        // Semantic role is intentionally not set here and left to be set by the caller
+        // In the `Month` function above, the implementation checks whether the day is today and
+        // sets the content description differently.
         modifier = modifier
-            .minimumInteractiveComponentSize()
+        .minimumInteractiveComponentSize()
             .requiredSize(
                 DatePickerModalTokens.DateStateLayerWidth,
                 DatePickerModalTokens.DateStateLayerHeight
@@ -1559,10 +1562,7 @@
                         .requiredSize(
                             width = DatePickerModalTokens.SelectionYearContainerWidth,
                             height = DatePickerModalTokens.SelectionYearContainerHeight
-                        )
-                        .semantics {
-                            role = Role.Button
-                        },
+                        ),
                     selected = selectedYear == displayedYear,
                     currentYear = selectedYear == currentYear,
                     onClick = { onYearSelected(selectedYear) },
@@ -1608,14 +1608,14 @@
     Surface(
         selected = selected,
         onClick = onClick,
-        modifier = modifier,
+        modifier = modifier.semantics { role = Role.Button },
         shape = DatePickerModalTokens.SelectionYearStateLayerShape.toShape(),
         color = colors.yearContainerColor(selected = selected).value,
         contentColor = colors.yearContentColor(
             currentYear = currentYear,
             selected = selected
         ).value,
-        border = border
+        border = border,
     ) {
         Box(modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) {
             content()
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt
index 75933e7d..42d3063 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt
@@ -56,7 +56,10 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.semantics.Role
 import androidx.compose.ui.semantics.clearAndSetSemantics
+import androidx.compose.ui.semantics.role
+import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 
@@ -103,7 +106,7 @@
 ) {
     Surface(
         onClick = onClick,
-        modifier = modifier,
+        modifier = modifier.semantics { role = Role.Button },
         shape = shape,
         color = containerColor,
         contentColor = contentColor,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
index 356e4bb..5913a81 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
@@ -205,7 +205,7 @@
     content: @Composable () -> Unit
 ) = Surface(
     onClick = onClick,
-    modifier = modifier,
+    modifier = modifier.semantics { role = Role.Button },
     enabled = enabled,
     shape = shape,
     color = colors.containerColor(enabled).value,
@@ -266,7 +266,7 @@
     content: @Composable () -> Unit
 ) = Surface(
     onClick = onClick,
-    modifier = modifier,
+    modifier = modifier.semantics { role = Role.Button },
     enabled = enabled,
     shape = shape,
     color = colors.containerColor(enabled).value,
@@ -454,7 +454,7 @@
     content: @Composable () -> Unit
 ) = Surface(
     onClick = onClick,
-    modifier = modifier,
+    modifier = modifier.semantics { role = Role.Button },
     enabled = enabled,
     shape = shape,
     color = colors.containerColor(enabled).value,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt
index f10ff73..d7ef087 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt
@@ -61,10 +61,12 @@
 import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.LocalLayoutDirection
+import androidx.compose.ui.semantics.Role
 import androidx.compose.ui.semantics.contentDescription
 import androidx.compose.ui.semantics.dismiss
 import androidx.compose.ui.semantics.onClick
 import androidx.compose.ui.semantics.paneTitle
+import androidx.compose.ui.semantics.role
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.IntOffset
@@ -661,7 +663,7 @@
     Surface(
         selected = selected,
         onClick = onClick,
-        modifier = modifier
+        modifier = modifier.semantics { role = Role.Tab }
             .height(NavigationDrawerTokens.ActiveIndicatorHeight)
             .fillMaxWidth(),
         shape = shape,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Surface.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Surface.kt
index deec6fa..a6624b5 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Surface.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Surface.kt
@@ -169,9 +169,8 @@
  * a `Modifier.semantics { onClick(label = "YOUR_LABEL", action = null) }` to the Surface.
  *
  * 6) Semantics for clicks. Just like with [Modifier.clickable], clickable version of Surface will
- * produce semantics to indicate that it is clicked. Also, by default, accessibility services will
- * describe the element as [Role.Button]. You may change this by passing a desired [Role] with a
- * [Modifier.semantics].
+ * produce semantics to indicate that it is clicked. No semantic role is set by default, you
+ * may specify one by passing a desired [Role] with a [Modifier.semantics].
  *
  * To manually retrieve the content color inside a surface, use [LocalContentColor].
  *
@@ -235,7 +234,6 @@
                     interactionSource = interactionSource,
                     indication = rememberRipple(),
                     enabled = enabled,
-                    role = Role.Button,
                     onClick = onClick
                 ),
             propagateMinConstraints = true
@@ -279,9 +277,8 @@
  * that doesn't require [onClick] param.
  *
  * 6) Semantics for selection. Just like with [Modifier.selectable], selectable version of Surface
- * will produce semantics to indicate that it is selected. Also, by default, accessibility services
- * will describe the element as [Role.Tab]. You may change this by passing a desired [Role] with a
- * [Modifier.semantics].
+ * will produce semantics to indicate that it is selected. No semantic role is set by default, you
+ * may specify one by passing a desired [Role] with a [Modifier.semantics].
  *
  * To manually retrieve the content color inside a surface, use [LocalContentColor].
  *
@@ -348,7 +345,6 @@
                     interactionSource = interactionSource,
                     indication = rememberRipple(),
                     enabled = enabled,
-                    role = Role.Tab,
                     onClick = onClick
                 ),
             propagateMinConstraints = true
@@ -392,9 +388,8 @@
  * handling, consider using a Surface function that doesn't require [onCheckedChange] param.
  *
  * 6) Semantics for toggle. Just like with [Modifier.toggleable], toggleable version of Surface
- * will produce semantics to indicate that it is checked.  Also, by default, accessibility services
- * will describe the element as [Role.Switch]. You may change this by passing a desired [Role] with
- * a [Modifier.semantics].
+ * will produce semantics to indicate that it is checked.  No semantic role is set by default, you
+ * may specify one by passing a desired [Role] with a [Modifier.semantics].
  *
  * To manually retrieve the content color inside a surface, use [LocalContentColor].
  *
@@ -461,7 +456,6 @@
                     interactionSource = interactionSource,
                     indication = rememberRipple(),
                     enabled = enabled,
-                    role = Role.Switch,
                     onValueChange = onCheckedChange
                 ),
             propagateMinConstraints = true
diff --git a/compose/material3/material3/src/test/kotlin/androidx/compose/material3/ButtonPaparazziTest.kt b/compose/material3/material3/src/test/kotlin/androidx/compose/material3/ButtonPaparazziTest.kt
new file mode 100644
index 0000000..e4737d5
--- /dev/null
+++ b/compose/material3/material3/src/test/kotlin/androidx/compose/material3/ButtonPaparazziTest.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.material3
+
+import androidx.testutils.paparazzi.androidxPaparazzi
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@RunWith(JUnit4::class)
+class ButtonPaparazziTest {
+    @get:Rule
+    val paparazzi = androidxPaparazzi()
+
+    @Test
+    fun default_button_light_theme() {
+        paparazzi.snapshot {
+            MaterialTheme(lightColorScheme()) {
+                Surface {
+                    Button(onClick = { }) {
+                        Text("Button")
+                    }
+                }
+            }
+        }
+    }
+
+    @Test
+    fun default_button_dark_theme() {
+        paparazzi.snapshot {
+            MaterialTheme(darkColorScheme()) {
+                Surface {
+                    Button(onClick = { }) {
+                        Text("Button")
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/RuntimeIssueRegistry.kt b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/RuntimeIssueRegistry.kt
index bd97ea2..edc16ae 100644
--- a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/RuntimeIssueRegistry.kt
+++ b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/RuntimeIssueRegistry.kt
@@ -27,7 +27,7 @@
  */
 class RuntimeIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         ComposableCoroutineCreationDetector.CoroutineCreationDuringComposition,
diff --git a/compose/runtime/runtime-saveable-lint/src/main/java/androidx/compose/runtime/saveable/lint/RuntimeSaveableIssueRegistry.kt b/compose/runtime/runtime-saveable-lint/src/main/java/androidx/compose/runtime/saveable/lint/RuntimeSaveableIssueRegistry.kt
index ce3e102..60bbfa0 100644
--- a/compose/runtime/runtime-saveable-lint/src/main/java/androidx/compose/runtime/saveable/lint/RuntimeSaveableIssueRegistry.kt
+++ b/compose/runtime/runtime-saveable-lint/src/main/java/androidx/compose/runtime/saveable/lint/RuntimeSaveableIssueRegistry.kt
@@ -27,7 +27,7 @@
  */
 class RuntimeSaveableIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         RememberSaveableDetector.RememberSaveableSaverParameter
diff --git a/compose/runtime/runtime/api/1.4.0-beta01.txt b/compose/runtime/runtime/api/1.4.0-beta01.txt
index db6a889..1cb90ed 100644
--- a/compose/runtime/runtime/api/1.4.0-beta01.txt
+++ b/compose/runtime/runtime/api/1.4.0-beta01.txt
@@ -799,9 +799,6 @@
     field public static final androidx.compose.runtime.snapshots.SnapshotApplyResult.Success INSTANCE;
   }
 
-  public final class SnapshotContextElementKt {
-  }
-
   public final class SnapshotKt {
     method public static <T extends androidx.compose.runtime.snapshots.StateRecord> T readable(T, androidx.compose.runtime.snapshots.StateObject state);
     method public static <T extends androidx.compose.runtime.snapshots.StateRecord> T readable(T, androidx.compose.runtime.snapshots.StateObject state, androidx.compose.runtime.snapshots.Snapshot snapshot);
diff --git a/compose/runtime/runtime/api/current.ignore b/compose/runtime/runtime/api/current.ignore
index af94053..22c8270 100644
--- a/compose/runtime/runtime/api/current.ignore
+++ b/compose/runtime/runtime/api/current.ignore
@@ -27,6 +27,8 @@
     Removed class androidx.compose.runtime.internal.ThreadMapKt
 RemovedClass: androidx.compose.runtime.snapshots.ListUtilsKt:
     Removed class androidx.compose.runtime.snapshots.ListUtilsKt
+RemovedClass: androidx.compose.runtime.snapshots.SnapshotContextElementKt:
+    Removed class androidx.compose.runtime.snapshots.SnapshotContextElementKt
 RemovedClass: androidx.compose.runtime.snapshots.SnapshotDoubleIndexHeapKt:
     Removed class androidx.compose.runtime.snapshots.SnapshotDoubleIndexHeapKt
 RemovedClass: androidx.compose.runtime.snapshots.SnapshotIdSetKt:
diff --git a/compose/runtime/runtime/api/current.txt b/compose/runtime/runtime/api/current.txt
index db6a889..1cb90ed 100644
--- a/compose/runtime/runtime/api/current.txt
+++ b/compose/runtime/runtime/api/current.txt
@@ -799,9 +799,6 @@
     field public static final androidx.compose.runtime.snapshots.SnapshotApplyResult.Success INSTANCE;
   }
 
-  public final class SnapshotContextElementKt {
-  }
-
   public final class SnapshotKt {
     method public static <T extends androidx.compose.runtime.snapshots.StateRecord> T readable(T, androidx.compose.runtime.snapshots.StateObject state);
     method public static <T extends androidx.compose.runtime.snapshots.StateRecord> T readable(T, androidx.compose.runtime.snapshots.StateObject state, androidx.compose.runtime.snapshots.Snapshot snapshot);
diff --git a/compose/runtime/runtime/api/restricted_1.4.0-beta01.txt b/compose/runtime/runtime/api/restricted_1.4.0-beta01.txt
index 5a79fb1..5006380 100644
--- a/compose/runtime/runtime/api/restricted_1.4.0-beta01.txt
+++ b/compose/runtime/runtime/api/restricted_1.4.0-beta01.txt
@@ -842,9 +842,6 @@
     field public static final androidx.compose.runtime.snapshots.SnapshotApplyResult.Success INSTANCE;
   }
 
-  public final class SnapshotContextElementKt {
-  }
-
   public final class SnapshotKt {
     method @kotlin.PublishedApi internal static <T extends androidx.compose.runtime.snapshots.StateRecord> T current(T r, androidx.compose.runtime.snapshots.Snapshot snapshot);
     method @kotlin.PublishedApi internal static <T extends androidx.compose.runtime.snapshots.StateRecord> T current(T r);
diff --git a/compose/runtime/runtime/api/restricted_current.ignore b/compose/runtime/runtime/api/restricted_current.ignore
index f2b8f6b..7c5ea36 100644
--- a/compose/runtime/runtime/api/restricted_current.ignore
+++ b/compose/runtime/runtime/api/restricted_current.ignore
@@ -21,6 +21,8 @@
     Removed class androidx.compose.runtime.internal.ThreadMapKt
 RemovedClass: androidx.compose.runtime.snapshots.ListUtilsKt:
     Removed class androidx.compose.runtime.snapshots.ListUtilsKt
+RemovedClass: androidx.compose.runtime.snapshots.SnapshotContextElementKt:
+    Removed class androidx.compose.runtime.snapshots.SnapshotContextElementKt
 RemovedClass: androidx.compose.runtime.snapshots.SnapshotDoubleIndexHeapKt:
     Removed class androidx.compose.runtime.snapshots.SnapshotDoubleIndexHeapKt
 RemovedClass: androidx.compose.runtime.snapshots.SnapshotIdSetKt:
diff --git a/compose/runtime/runtime/api/restricted_current.txt b/compose/runtime/runtime/api/restricted_current.txt
index 5a79fb1..5006380 100644
--- a/compose/runtime/runtime/api/restricted_current.txt
+++ b/compose/runtime/runtime/api/restricted_current.txt
@@ -842,9 +842,6 @@
     field public static final androidx.compose.runtime.snapshots.SnapshotApplyResult.Success INSTANCE;
   }
 
-  public final class SnapshotContextElementKt {
-  }
-
   public final class SnapshotKt {
     method @kotlin.PublishedApi internal static <T extends androidx.compose.runtime.snapshots.StateRecord> T current(T r, androidx.compose.runtime.snapshots.Snapshot snapshot);
     method @kotlin.PublishedApi internal static <T extends androidx.compose.runtime.snapshots.StateRecord> T current(T r);
diff --git a/compose/ui/ui-graphics-lint/src/main/java/androidx/compose/ui/graphics/lint/UiGraphicsIssueRegistry.kt b/compose/ui/ui-graphics-lint/src/main/java/androidx/compose/ui/graphics/lint/UiGraphicsIssueRegistry.kt
index bff18de..065492c4 100644
--- a/compose/ui/ui-graphics-lint/src/main/java/androidx/compose/ui/graphics/lint/UiGraphicsIssueRegistry.kt
+++ b/compose/ui/ui-graphics-lint/src/main/java/androidx/compose/ui/graphics/lint/UiGraphicsIssueRegistry.kt
@@ -25,7 +25,7 @@
  */
 class UiGraphicsIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         ColorDetector.MissingColorAlphaChannel,
diff --git a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/UiIssueRegistry.kt b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/UiIssueRegistry.kt
index 3c33786..109f8b0 100644
--- a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/UiIssueRegistry.kt
+++ b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/UiIssueRegistry.kt
@@ -27,7 +27,7 @@
  */
 class UiIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         ComposedModifierDetector.UnnecessaryComposedModifier,
diff --git a/compose/ui/ui-test-junit4/api/1.4.0-beta01.txt b/compose/ui/ui-test-junit4/api/1.4.0-beta01.txt
index 1da7d1c..94a0fe4 100644
--- a/compose/ui/ui-test-junit4/api/1.4.0-beta01.txt
+++ b/compose/ui/ui-test-junit4/api/1.4.0-beta01.txt
@@ -1,14 +1,4 @@
 // Signature format: 4.0
-package androidx.compose.ui.test {
-
-  public final class ComposeUiTestKt {
-  }
-
-  public final class ComposeUiTest_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.test.junit4 {
 
   public final class AndroidComposeTestRule<R extends org.junit.rules.TestRule, A extends androidx.activity.ComponentActivity> implements androidx.compose.ui.test.junit4.ComposeContentTestRule {
diff --git a/compose/ui/ui-test-junit4/api/current.ignore b/compose/ui/ui-test-junit4/api/current.ignore
index c08823f..06d8a27 100644
--- a/compose/ui/ui-test-junit4/api/current.ignore
+++ b/compose/ui/ui-test-junit4/api/current.ignore
@@ -7,3 +7,7 @@
     Removed class androidx.compose.ui.test.junit4.ComposeRootRegistry_androidKt
 RemovedClass: androidx.compose.ui.test.junit4.EspressoLink_androidKt:
     Removed class androidx.compose.ui.test.junit4.EspressoLink_androidKt
+
+
+RemovedPackage: androidx.compose.ui.test:
+    Removed package androidx.compose.ui.test
diff --git a/compose/ui/ui-test-junit4/api/current.txt b/compose/ui/ui-test-junit4/api/current.txt
index 1da7d1c..94a0fe4 100644
--- a/compose/ui/ui-test-junit4/api/current.txt
+++ b/compose/ui/ui-test-junit4/api/current.txt
@@ -1,14 +1,4 @@
 // Signature format: 4.0
-package androidx.compose.ui.test {
-
-  public final class ComposeUiTestKt {
-  }
-
-  public final class ComposeUiTest_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.test.junit4 {
 
   public final class AndroidComposeTestRule<R extends org.junit.rules.TestRule, A extends androidx.activity.ComponentActivity> implements androidx.compose.ui.test.junit4.ComposeContentTestRule {
diff --git a/compose/ui/ui-test-junit4/api/restricted_1.4.0-beta01.txt b/compose/ui/ui-test-junit4/api/restricted_1.4.0-beta01.txt
index 1da7d1c..94a0fe4 100644
--- a/compose/ui/ui-test-junit4/api/restricted_1.4.0-beta01.txt
+++ b/compose/ui/ui-test-junit4/api/restricted_1.4.0-beta01.txt
@@ -1,14 +1,4 @@
 // Signature format: 4.0
-package androidx.compose.ui.test {
-
-  public final class ComposeUiTestKt {
-  }
-
-  public final class ComposeUiTest_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.test.junit4 {
 
   public final class AndroidComposeTestRule<R extends org.junit.rules.TestRule, A extends androidx.activity.ComponentActivity> implements androidx.compose.ui.test.junit4.ComposeContentTestRule {
diff --git a/compose/ui/ui-test-junit4/api/restricted_current.ignore b/compose/ui/ui-test-junit4/api/restricted_current.ignore
index c08823f..06d8a27 100644
--- a/compose/ui/ui-test-junit4/api/restricted_current.ignore
+++ b/compose/ui/ui-test-junit4/api/restricted_current.ignore
@@ -7,3 +7,7 @@
     Removed class androidx.compose.ui.test.junit4.ComposeRootRegistry_androidKt
 RemovedClass: androidx.compose.ui.test.junit4.EspressoLink_androidKt:
     Removed class androidx.compose.ui.test.junit4.EspressoLink_androidKt
+
+
+RemovedPackage: androidx.compose.ui.test:
+    Removed package androidx.compose.ui.test
diff --git a/compose/ui/ui-test-junit4/api/restricted_current.txt b/compose/ui/ui-test-junit4/api/restricted_current.txt
index 1da7d1c..94a0fe4 100644
--- a/compose/ui/ui-test-junit4/api/restricted_current.txt
+++ b/compose/ui/ui-test-junit4/api/restricted_current.txt
@@ -1,14 +1,4 @@
 // Signature format: 4.0
-package androidx.compose.ui.test {
-
-  public final class ComposeUiTestKt {
-  }
-
-  public final class ComposeUiTest_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.test.junit4 {
 
   public final class AndroidComposeTestRule<R extends org.junit.rules.TestRule, A extends androidx.activity.ComponentActivity> implements androidx.compose.ui.test.junit4.ComposeContentTestRule {
diff --git a/compose/ui/ui-test-manifest-lint/src/main/java/androidx/compose/ui/test/manifest/lint/TestManifestIssueRegistry.kt b/compose/ui/ui-test-manifest-lint/src/main/java/androidx/compose/ui/test/manifest/lint/TestManifestIssueRegistry.kt
index 5879da0b..a0b10da 100644
--- a/compose/ui/ui-test-manifest-lint/src/main/java/androidx/compose/ui/test/manifest/lint/TestManifestIssueRegistry.kt
+++ b/compose/ui/ui-test-manifest-lint/src/main/java/androidx/compose/ui/test/manifest/lint/TestManifestIssueRegistry.kt
@@ -21,7 +21,7 @@
 import com.android.tools.lint.detector.api.CURRENT_API
 
 class TestManifestIssueRegistry : IssueRegistry() {
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(GradleDebugConfigurationDetector.ISSUE)
     override val vendor = Vendor(
diff --git a/compose/ui/ui-test/api/1.4.0-beta01.txt b/compose/ui/ui-test/api/1.4.0-beta01.txt
index ccf02da..ae53863 100644
--- a/compose/ui/ui-test/api/1.4.0-beta01.txt
+++ b/compose/ui/ui-test/api/1.4.0-beta01.txt
@@ -216,9 +216,6 @@
     property public default int width;
   }
 
-  public final class KeyInjectionScopeKt {
-  }
-
   public final class KeyInputHelpersKt {
     method public static boolean performKeyPress(androidx.compose.ui.test.SemanticsNodeInteraction, android.view.KeyEvent keyEvent);
   }
@@ -234,9 +231,6 @@
     property public abstract long currentTime;
   }
 
-  public final class MouseInjectionScopeKt {
-  }
-
   public sealed interface MultiModalInjectionScope extends androidx.compose.ui.test.InjectionScope {
     method public void touch(kotlin.jvm.functions.Function1<? super androidx.compose.ui.test.TouchInjectionScope,kotlin.Unit> block);
   }
@@ -318,12 +312,6 @@
   public final class TestContext {
   }
 
-  public final class TestMonotonicFrameClock_jvmKt {
-  }
-
-  public final class TestOwnerKt {
-  }
-
   public final class TextActionsKt {
     method public static void performImeAction(androidx.compose.ui.test.SemanticsNodeInteraction);
     method public static void performTextClearance(androidx.compose.ui.test.SemanticsNodeInteraction);
diff --git a/compose/ui/ui-test/api/current.ignore b/compose/ui/ui-test/api/current.ignore
index a99da50..eb44141 100644
--- a/compose/ui/ui-test/api/current.ignore
+++ b/compose/ui/ui-test/api/current.ignore
@@ -11,8 +11,16 @@
     Removed class androidx.compose.ui.test.ErrorMessagesKt
 RemovedClass: androidx.compose.ui.test.Expect_jvmKt:
     Removed class androidx.compose.ui.test.Expect_jvmKt
+RemovedClass: androidx.compose.ui.test.KeyInjectionScopeKt:
+    Removed class androidx.compose.ui.test.KeyInjectionScopeKt
+RemovedClass: androidx.compose.ui.test.MouseInjectionScopeKt:
+    Removed class androidx.compose.ui.test.MouseInjectionScopeKt
 RemovedClass: androidx.compose.ui.test.SemanticsSelectorKt:
     Removed class androidx.compose.ui.test.SemanticsSelectorKt
+RemovedClass: androidx.compose.ui.test.TestMonotonicFrameClock_jvmKt:
+    Removed class androidx.compose.ui.test.TestMonotonicFrameClock_jvmKt
+RemovedClass: androidx.compose.ui.test.TestOwnerKt:
+    Removed class androidx.compose.ui.test.TestOwnerKt
 RemovedClass: androidx.compose.ui.test.UtilsKt:
     Removed class androidx.compose.ui.test.UtilsKt
 
diff --git a/compose/ui/ui-test/api/current.txt b/compose/ui/ui-test/api/current.txt
index ccf02da..ae53863 100644
--- a/compose/ui/ui-test/api/current.txt
+++ b/compose/ui/ui-test/api/current.txt
@@ -216,9 +216,6 @@
     property public default int width;
   }
 
-  public final class KeyInjectionScopeKt {
-  }
-
   public final class KeyInputHelpersKt {
     method public static boolean performKeyPress(androidx.compose.ui.test.SemanticsNodeInteraction, android.view.KeyEvent keyEvent);
   }
@@ -234,9 +231,6 @@
     property public abstract long currentTime;
   }
 
-  public final class MouseInjectionScopeKt {
-  }
-
   public sealed interface MultiModalInjectionScope extends androidx.compose.ui.test.InjectionScope {
     method public void touch(kotlin.jvm.functions.Function1<? super androidx.compose.ui.test.TouchInjectionScope,kotlin.Unit> block);
   }
@@ -318,12 +312,6 @@
   public final class TestContext {
   }
 
-  public final class TestMonotonicFrameClock_jvmKt {
-  }
-
-  public final class TestOwnerKt {
-  }
-
   public final class TextActionsKt {
     method public static void performImeAction(androidx.compose.ui.test.SemanticsNodeInteraction);
     method public static void performTextClearance(androidx.compose.ui.test.SemanticsNodeInteraction);
diff --git a/compose/ui/ui-test/api/restricted_1.4.0-beta01.txt b/compose/ui/ui-test/api/restricted_1.4.0-beta01.txt
index 24df72e..8264e10 100644
--- a/compose/ui/ui-test/api/restricted_1.4.0-beta01.txt
+++ b/compose/ui/ui-test/api/restricted_1.4.0-beta01.txt
@@ -217,9 +217,6 @@
     property public default int width;
   }
 
-  public final class KeyInjectionScopeKt {
-  }
-
   public final class KeyInputHelpersKt {
     method public static boolean performKeyPress(androidx.compose.ui.test.SemanticsNodeInteraction, android.view.KeyEvent keyEvent);
   }
@@ -235,9 +232,6 @@
     property public abstract long currentTime;
   }
 
-  public final class MouseInjectionScopeKt {
-  }
-
   public sealed interface MultiModalInjectionScope extends androidx.compose.ui.test.InjectionScope {
     method public void touch(kotlin.jvm.functions.Function1<? super androidx.compose.ui.test.TouchInjectionScope,kotlin.Unit> block);
   }
@@ -319,12 +313,6 @@
   public final class TestContext {
   }
 
-  public final class TestMonotonicFrameClock_jvmKt {
-  }
-
-  public final class TestOwnerKt {
-  }
-
   public final class TextActionsKt {
     method public static void performImeAction(androidx.compose.ui.test.SemanticsNodeInteraction);
     method public static void performTextClearance(androidx.compose.ui.test.SemanticsNodeInteraction);
diff --git a/compose/ui/ui-test/api/restricted_current.ignore b/compose/ui/ui-test/api/restricted_current.ignore
index a99da50..eb44141 100644
--- a/compose/ui/ui-test/api/restricted_current.ignore
+++ b/compose/ui/ui-test/api/restricted_current.ignore
@@ -11,8 +11,16 @@
     Removed class androidx.compose.ui.test.ErrorMessagesKt
 RemovedClass: androidx.compose.ui.test.Expect_jvmKt:
     Removed class androidx.compose.ui.test.Expect_jvmKt
+RemovedClass: androidx.compose.ui.test.KeyInjectionScopeKt:
+    Removed class androidx.compose.ui.test.KeyInjectionScopeKt
+RemovedClass: androidx.compose.ui.test.MouseInjectionScopeKt:
+    Removed class androidx.compose.ui.test.MouseInjectionScopeKt
 RemovedClass: androidx.compose.ui.test.SemanticsSelectorKt:
     Removed class androidx.compose.ui.test.SemanticsSelectorKt
+RemovedClass: androidx.compose.ui.test.TestMonotonicFrameClock_jvmKt:
+    Removed class androidx.compose.ui.test.TestMonotonicFrameClock_jvmKt
+RemovedClass: androidx.compose.ui.test.TestOwnerKt:
+    Removed class androidx.compose.ui.test.TestOwnerKt
 RemovedClass: androidx.compose.ui.test.UtilsKt:
     Removed class androidx.compose.ui.test.UtilsKt
 
diff --git a/compose/ui/ui-test/api/restricted_current.txt b/compose/ui/ui-test/api/restricted_current.txt
index 24df72e..8264e10 100644
--- a/compose/ui/ui-test/api/restricted_current.txt
+++ b/compose/ui/ui-test/api/restricted_current.txt
@@ -217,9 +217,6 @@
     property public default int width;
   }
 
-  public final class KeyInjectionScopeKt {
-  }
-
   public final class KeyInputHelpersKt {
     method public static boolean performKeyPress(androidx.compose.ui.test.SemanticsNodeInteraction, android.view.KeyEvent keyEvent);
   }
@@ -235,9 +232,6 @@
     property public abstract long currentTime;
   }
 
-  public final class MouseInjectionScopeKt {
-  }
-
   public sealed interface MultiModalInjectionScope extends androidx.compose.ui.test.InjectionScope {
     method public void touch(kotlin.jvm.functions.Function1<? super androidx.compose.ui.test.TouchInjectionScope,kotlin.Unit> block);
   }
@@ -319,12 +313,6 @@
   public final class TestContext {
   }
 
-  public final class TestMonotonicFrameClock_jvmKt {
-  }
-
-  public final class TestOwnerKt {
-  }
-
   public final class TextActionsKt {
     method public static void performImeAction(androidx.compose.ui.test.SemanticsNodeInteraction);
     method public static void performTextClearance(androidx.compose.ui.test.SemanticsNodeInteraction);
diff --git a/compose/ui/ui-text/api/1.4.0-beta01.txt b/compose/ui/ui-text/api/1.4.0-beta01.txt
index 1c59a83..1d00051 100644
--- a/compose/ui/ui-text/api/1.4.0-beta01.txt
+++ b/compose/ui/ui-text/api/1.4.0-beta01.txt
@@ -449,9 +449,6 @@
     field public static final androidx.compose.ui.text.TextPainter INSTANCE;
   }
 
-  public final class TextPainterKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class TextRange {
     method public operator boolean contains(long other);
     method public operator boolean contains(int offset);
@@ -568,13 +565,6 @@
 
 }
 
-package androidx.compose.ui.text.android {
-
-  public final class LayoutCompatKt {
-  }
-
-}
-
 package androidx.compose.ui.text.font {
 
   public abstract class AndroidFont implements androidx.compose.ui.text.font.Font {
@@ -1163,13 +1153,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
@@ -1177,9 +1160,6 @@
     method public static android.text.style.TtsSpan toSpan(androidx.compose.ui.text.VerbatimTtsAnnotation);
   }
 
-  public final class UrlAnnotationExtensions_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.text.style {
diff --git a/compose/ui/ui-text/api/current.ignore b/compose/ui/ui-text/api/current.ignore
index 1ecda6d..8b45dbb 100644
--- a/compose/ui/ui-text/api/current.ignore
+++ b/compose/ui/ui-text/api/current.ignore
@@ -21,20 +21,8 @@
     Removed class androidx.compose.ui.text.TempListUtilsKt
 RemovedClass: androidx.compose.ui.text.TextMeasurerKt:
     Removed class androidx.compose.ui.text.TextMeasurerKt
-RemovedClass: androidx.compose.ui.text.android.LayoutHelperKt:
-    Removed class androidx.compose.ui.text.android.LayoutHelperKt
-RemovedClass: androidx.compose.ui.text.android.LayoutIntrinsicsKt:
-    Removed class androidx.compose.ui.text.android.LayoutIntrinsicsKt
-RemovedClass: androidx.compose.ui.text.android.PaintExtensionsKt:
-    Removed class androidx.compose.ui.text.android.PaintExtensionsKt
-RemovedClass: androidx.compose.ui.text.android.SpannedExtensionsKt:
-    Removed class androidx.compose.ui.text.android.SpannedExtensionsKt
-RemovedClass: androidx.compose.ui.text.android.StaticLayoutFactoryKt:
-    Removed class androidx.compose.ui.text.android.StaticLayoutFactoryKt
-RemovedClass: androidx.compose.ui.text.android.TempListUtilsKt:
-    Removed class androidx.compose.ui.text.android.TempListUtilsKt
-RemovedClass: androidx.compose.ui.text.android.TextLayoutKt:
-    Removed class androidx.compose.ui.text.android.TextLayoutKt
+RemovedClass: androidx.compose.ui.text.TextPainterKt:
+    Removed class androidx.compose.ui.text.TextPainterKt
 RemovedClass: androidx.compose.ui.text.font.AndroidFontLoader_androidKt:
     Removed class androidx.compose.ui.text.font.AndroidFontLoader_androidKt
 RemovedClass: androidx.compose.ui.text.font.AndroidFontResolveInterceptor_androidKt:
@@ -61,20 +49,6 @@
     Removed class androidx.compose.ui.text.intl.AndroidPlatformLocale_androidKt
 RemovedClass: androidx.compose.ui.text.intl.PlatformLocaleKt:
     Removed class androidx.compose.ui.text.intl.PlatformLocaleKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidMultiParagraphDrawKt:
-    Removed class androidx.compose.ui.text.platform.AndroidMultiParagraphDrawKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraphHelper_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraphHelper_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraph_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraph_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidStringDelegate_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidStringDelegate_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidTextPaint_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidTextPaint_androidKt
-RemovedClass: androidx.compose.ui.text.platform.Synchronization_jvmKt:
-    Removed class androidx.compose.ui.text.platform.Synchronization_jvmKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.LocaleExtensions_androidKt:
     Removed class androidx.compose.ui.text.platform.extensions.LocaleExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.PlaceholderExtensions_androidKt:
@@ -83,13 +57,19 @@
     Removed class androidx.compose.ui.text.platform.extensions.SpannableExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt:
     Removed class androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt
+RemovedClass: androidx.compose.ui.text.platform.extensions.UrlAnnotationExtensions_androidKt:
+    Removed class androidx.compose.ui.text.platform.extensions.UrlAnnotationExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.style.TextDrawStyleKt:
     Removed class androidx.compose.ui.text.style.TextDrawStyleKt
 
 
+RemovedPackage: androidx.compose.ui.text.android:
+    Removed package androidx.compose.ui.text.android
 RemovedPackage: androidx.compose.ui.text.android.style:
     Removed package androidx.compose.ui.text.android.style
 RemovedPackage: androidx.compose.ui.text.caches:
     Removed package androidx.compose.ui.text.caches
 RemovedPackage: androidx.compose.ui.text.internal:
     Removed package androidx.compose.ui.text.internal
+RemovedPackage: androidx.compose.ui.text.platform:
+    Removed package androidx.compose.ui.text.platform
diff --git a/compose/ui/ui-text/api/current.txt b/compose/ui/ui-text/api/current.txt
index 1c59a83..1d00051 100644
--- a/compose/ui/ui-text/api/current.txt
+++ b/compose/ui/ui-text/api/current.txt
@@ -449,9 +449,6 @@
     field public static final androidx.compose.ui.text.TextPainter INSTANCE;
   }
 
-  public final class TextPainterKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class TextRange {
     method public operator boolean contains(long other);
     method public operator boolean contains(int offset);
@@ -568,13 +565,6 @@
 
 }
 
-package androidx.compose.ui.text.android {
-
-  public final class LayoutCompatKt {
-  }
-
-}
-
 package androidx.compose.ui.text.font {
 
   public abstract class AndroidFont implements androidx.compose.ui.text.font.Font {
@@ -1163,13 +1153,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
@@ -1177,9 +1160,6 @@
     method public static android.text.style.TtsSpan toSpan(androidx.compose.ui.text.VerbatimTtsAnnotation);
   }
 
-  public final class UrlAnnotationExtensions_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.text.style {
diff --git a/compose/ui/ui-text/api/public_plus_experimental_1.4.0-beta01.txt b/compose/ui/ui-text/api/public_plus_experimental_1.4.0-beta01.txt
index 27b653a..9e33150 100644
--- a/compose/ui/ui-text/api/public_plus_experimental_1.4.0-beta01.txt
+++ b/compose/ui/ui-text/api/public_plus_experimental_1.4.0-beta01.txt
@@ -1230,13 +1230,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
diff --git a/compose/ui/ui-text/api/public_plus_experimental_current.txt b/compose/ui/ui-text/api/public_plus_experimental_current.txt
index 27b653a..9e33150 100644
--- a/compose/ui/ui-text/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui-text/api/public_plus_experimental_current.txt
@@ -1230,13 +1230,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
diff --git a/compose/ui/ui-text/api/restricted_1.4.0-beta01.txt b/compose/ui/ui-text/api/restricted_1.4.0-beta01.txt
index 1c59a83..1d00051 100644
--- a/compose/ui/ui-text/api/restricted_1.4.0-beta01.txt
+++ b/compose/ui/ui-text/api/restricted_1.4.0-beta01.txt
@@ -449,9 +449,6 @@
     field public static final androidx.compose.ui.text.TextPainter INSTANCE;
   }
 
-  public final class TextPainterKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class TextRange {
     method public operator boolean contains(long other);
     method public operator boolean contains(int offset);
@@ -568,13 +565,6 @@
 
 }
 
-package androidx.compose.ui.text.android {
-
-  public final class LayoutCompatKt {
-  }
-
-}
-
 package androidx.compose.ui.text.font {
 
   public abstract class AndroidFont implements androidx.compose.ui.text.font.Font {
@@ -1163,13 +1153,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
@@ -1177,9 +1160,6 @@
     method public static android.text.style.TtsSpan toSpan(androidx.compose.ui.text.VerbatimTtsAnnotation);
   }
 
-  public final class UrlAnnotationExtensions_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.text.style {
diff --git a/compose/ui/ui-text/api/restricted_current.ignore b/compose/ui/ui-text/api/restricted_current.ignore
index 1ecda6d..8b45dbb 100644
--- a/compose/ui/ui-text/api/restricted_current.ignore
+++ b/compose/ui/ui-text/api/restricted_current.ignore
@@ -21,20 +21,8 @@
     Removed class androidx.compose.ui.text.TempListUtilsKt
 RemovedClass: androidx.compose.ui.text.TextMeasurerKt:
     Removed class androidx.compose.ui.text.TextMeasurerKt
-RemovedClass: androidx.compose.ui.text.android.LayoutHelperKt:
-    Removed class androidx.compose.ui.text.android.LayoutHelperKt
-RemovedClass: androidx.compose.ui.text.android.LayoutIntrinsicsKt:
-    Removed class androidx.compose.ui.text.android.LayoutIntrinsicsKt
-RemovedClass: androidx.compose.ui.text.android.PaintExtensionsKt:
-    Removed class androidx.compose.ui.text.android.PaintExtensionsKt
-RemovedClass: androidx.compose.ui.text.android.SpannedExtensionsKt:
-    Removed class androidx.compose.ui.text.android.SpannedExtensionsKt
-RemovedClass: androidx.compose.ui.text.android.StaticLayoutFactoryKt:
-    Removed class androidx.compose.ui.text.android.StaticLayoutFactoryKt
-RemovedClass: androidx.compose.ui.text.android.TempListUtilsKt:
-    Removed class androidx.compose.ui.text.android.TempListUtilsKt
-RemovedClass: androidx.compose.ui.text.android.TextLayoutKt:
-    Removed class androidx.compose.ui.text.android.TextLayoutKt
+RemovedClass: androidx.compose.ui.text.TextPainterKt:
+    Removed class androidx.compose.ui.text.TextPainterKt
 RemovedClass: androidx.compose.ui.text.font.AndroidFontLoader_androidKt:
     Removed class androidx.compose.ui.text.font.AndroidFontLoader_androidKt
 RemovedClass: androidx.compose.ui.text.font.AndroidFontResolveInterceptor_androidKt:
@@ -61,20 +49,6 @@
     Removed class androidx.compose.ui.text.intl.AndroidPlatformLocale_androidKt
 RemovedClass: androidx.compose.ui.text.intl.PlatformLocaleKt:
     Removed class androidx.compose.ui.text.intl.PlatformLocaleKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidMultiParagraphDrawKt:
-    Removed class androidx.compose.ui.text.platform.AndroidMultiParagraphDrawKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraphHelper_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraphHelper_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraph_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraph_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidStringDelegate_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidStringDelegate_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidTextPaint_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidTextPaint_androidKt
-RemovedClass: androidx.compose.ui.text.platform.Synchronization_jvmKt:
-    Removed class androidx.compose.ui.text.platform.Synchronization_jvmKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.LocaleExtensions_androidKt:
     Removed class androidx.compose.ui.text.platform.extensions.LocaleExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.PlaceholderExtensions_androidKt:
@@ -83,13 +57,19 @@
     Removed class androidx.compose.ui.text.platform.extensions.SpannableExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt:
     Removed class androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt
+RemovedClass: androidx.compose.ui.text.platform.extensions.UrlAnnotationExtensions_androidKt:
+    Removed class androidx.compose.ui.text.platform.extensions.UrlAnnotationExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.style.TextDrawStyleKt:
     Removed class androidx.compose.ui.text.style.TextDrawStyleKt
 
 
+RemovedPackage: androidx.compose.ui.text.android:
+    Removed package androidx.compose.ui.text.android
 RemovedPackage: androidx.compose.ui.text.android.style:
     Removed package androidx.compose.ui.text.android.style
 RemovedPackage: androidx.compose.ui.text.caches:
     Removed package androidx.compose.ui.text.caches
 RemovedPackage: androidx.compose.ui.text.internal:
     Removed package androidx.compose.ui.text.internal
+RemovedPackage: androidx.compose.ui.text.platform:
+    Removed package androidx.compose.ui.text.platform
diff --git a/compose/ui/ui-text/api/restricted_current.txt b/compose/ui/ui-text/api/restricted_current.txt
index 1c59a83..1d00051 100644
--- a/compose/ui/ui-text/api/restricted_current.txt
+++ b/compose/ui/ui-text/api/restricted_current.txt
@@ -449,9 +449,6 @@
     field public static final androidx.compose.ui.text.TextPainter INSTANCE;
   }
 
-  public final class TextPainterKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class TextRange {
     method public operator boolean contains(long other);
     method public operator boolean contains(int offset);
@@ -568,13 +565,6 @@
 
 }
 
-package androidx.compose.ui.text.android {
-
-  public final class LayoutCompatKt {
-  }
-
-}
-
 package androidx.compose.ui.text.font {
 
   public abstract class AndroidFont implements androidx.compose.ui.text.font.Font {
@@ -1163,13 +1153,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
@@ -1177,9 +1160,6 @@
     method public static android.text.style.TtsSpan toSpan(androidx.compose.ui.text.VerbatimTtsAnnotation);
   }
 
-  public final class UrlAnnotationExtensions_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.text.style {
diff --git a/compose/ui/ui-tooling-data/api/1.4.0-beta01.txt b/compose/ui/ui-tooling-data/api/1.4.0-beta01.txt
index ab1e1a2..e6f50d0 100644
--- a/compose/ui/ui-tooling-data/api/1.4.0-beta01.txt
+++ b/compose/ui/ui-tooling-data/api/1.4.0-beta01.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.compose.ui.tooling.data {
-
-  public final class SlotTreeKt {
-  }
-
-}
-
diff --git a/compose/ui/ui-tooling-data/api/current.ignore b/compose/ui/ui-tooling-data/api/current.ignore
new file mode 100644
index 0000000..4f21a78
--- /dev/null
+++ b/compose/ui/ui-tooling-data/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedPackage: androidx.compose.ui.tooling.data:
+    Removed package androidx.compose.ui.tooling.data
diff --git a/compose/ui/ui-tooling-data/api/current.txt b/compose/ui/ui-tooling-data/api/current.txt
index ab1e1a2..e6f50d0 100644
--- a/compose/ui/ui-tooling-data/api/current.txt
+++ b/compose/ui/ui-tooling-data/api/current.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.compose.ui.tooling.data {
-
-  public final class SlotTreeKt {
-  }
-
-}
-
diff --git a/compose/ui/ui-tooling-data/api/restricted_1.4.0-beta01.txt b/compose/ui/ui-tooling-data/api/restricted_1.4.0-beta01.txt
index ab1e1a2..e6f50d0 100644
--- a/compose/ui/ui-tooling-data/api/restricted_1.4.0-beta01.txt
+++ b/compose/ui/ui-tooling-data/api/restricted_1.4.0-beta01.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.compose.ui.tooling.data {
-
-  public final class SlotTreeKt {
-  }
-
-}
-
diff --git a/compose/ui/ui-tooling-data/api/restricted_current.ignore b/compose/ui/ui-tooling-data/api/restricted_current.ignore
new file mode 100644
index 0000000..4f21a78
--- /dev/null
+++ b/compose/ui/ui-tooling-data/api/restricted_current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedPackage: androidx.compose.ui.tooling.data:
+    Removed package androidx.compose.ui.tooling.data
diff --git a/compose/ui/ui-tooling-data/api/restricted_current.txt b/compose/ui/ui-tooling-data/api/restricted_current.txt
index ab1e1a2..e6f50d0 100644
--- a/compose/ui/ui-tooling-data/api/restricted_current.txt
+++ b/compose/ui/ui-tooling-data/api/restricted_current.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.compose.ui.tooling.data {
-
-  public final class SlotTreeKt {
-  }
-
-}
-
diff --git a/compose/ui/ui/api/1.4.0-beta01.txt b/compose/ui/ui/api/1.4.0-beta01.txt
index 28acb26..d27c2ed 100644
--- a/compose/ui/ui/api/1.4.0-beta01.txt
+++ b/compose/ui/ui/api/1.4.0-beta01.txt
@@ -385,9 +385,6 @@
     method public static androidx.compose.ui.Modifier focusRequester(androidx.compose.ui.Modifier, androidx.compose.ui.focus.FocusRequester focusRequester);
   }
 
-  public final class FocusRequesterModifierNodeKt {
-  }
-
   public interface FocusState {
     method public boolean getHasFocus();
     method public boolean isCaptured();
@@ -1663,9 +1660,6 @@
     property public abstract androidx.compose.ui.platform.ViewConfiguration viewConfiguration;
   }
 
-  public final class PointerInteropFilter_androidKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PointerKeyboardModifiers {
     ctor public PointerKeyboardModifiers(int packedValue);
   }
@@ -1927,9 +1921,6 @@
     method public static androidx.compose.ui.Modifier layout(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function3<? super androidx.compose.ui.layout.MeasureScope,? super androidx.compose.ui.layout.Measurable,? super androidx.compose.ui.unit.Constraints,? extends androidx.compose.ui.layout.MeasureResult> measure);
   }
 
-  public final class LookaheadLayoutKt {
-  }
-
   public interface Measurable extends androidx.compose.ui.layout.IntrinsicMeasurable {
     method public androidx.compose.ui.layout.Placeable measure(long constraints);
   }
@@ -2062,12 +2053,6 @@
     property protected abstract int parentWidth;
   }
 
-  public final class RelocationModifierKt {
-  }
-
-  public final class RelocationRequesterModifierKt {
-  }
-
   public interface Remeasurement {
     method public void forceRemeasure();
   }
@@ -2162,16 +2147,10 @@
     method public void onModifierLocalsUpdated(androidx.compose.ui.modifier.ModifierLocalReadScope scope);
   }
 
-  public final class ModifierLocalConsumerKt {
-  }
-
   public final class ModifierLocalKt {
     method public static <T> androidx.compose.ui.modifier.ProvidableModifierLocal<T> modifierLocalOf(kotlin.jvm.functions.Function0<? extends T> defaultFactory);
   }
 
-  public final class ModifierLocalNodeKt {
-  }
-
   @androidx.compose.runtime.Stable @kotlin.jvm.JvmDefaultWithCompatibility public interface ModifierLocalProvider<T> extends androidx.compose.ui.Modifier.Element {
     method public androidx.compose.ui.modifier.ProvidableModifierLocal<T> getKey();
     method public T! getValue();
@@ -2179,9 +2158,6 @@
     property public abstract T! value;
   }
 
-  public final class ModifierLocalProviderKt {
-  }
-
   public interface ModifierLocalReadScope {
     method public <T> T! getCurrent(androidx.compose.ui.modifier.ModifierLocal<T>);
   }
@@ -2194,24 +2170,6 @@
 
 package androidx.compose.ui.node {
 
-  public final class DelegatableNodeKt {
-  }
-
-  public final class DrawModifierNodeKt {
-  }
-
-  public final class LayoutModifierNodeKt {
-  }
-
-  public final class ModifierNodeElementKt {
-  }
-
-  public final class ObserverNodeKt {
-  }
-
-  public final class ParentDataModifierNodeKt {
-  }
-
   public final class Ref<T> {
     ctor public Ref();
     method public T? getValue();
@@ -2229,12 +2187,6 @@
     property public abstract androidx.compose.ui.text.input.TextInputService textInputService;
   }
 
-  public final class SemanticsModifierNodeKt {
-  }
-
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
@@ -2937,9 +2889,6 @@
     method public static void setVerticalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
   }
 
-  public final class SemanticsProperties_androidKt {
-  }
-
   public final class SemanticsPropertyKey<T> {
     ctor public SemanticsPropertyKey(String name, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends T> mergePolicy);
     method public String getName();
@@ -2971,13 +2920,6 @@
 
 }
 
-package androidx.compose.ui.text {
-
-  public final class TextMeasurerHelperKt {
-  }
-
-}
-
 package androidx.compose.ui.viewinterop {
 
   public final class AndroidView_androidKt {
diff --git a/compose/ui/ui/api/current.ignore b/compose/ui/ui/api/current.ignore
index bf19fb4..c3a979a 100644
--- a/compose/ui/ui/api/current.ignore
+++ b/compose/ui/ui/api/current.ignore
@@ -27,22 +27,42 @@
     Removed class androidx.compose.ui.input.pointer.PointerInputEventProcessorKt
 RemovedClass: androidx.compose.ui.input.pointer.PointerInputTestUtilKt:
     Removed class androidx.compose.ui.input.pointer.PointerInputTestUtilKt
+RemovedClass: androidx.compose.ui.input.pointer.PointerInteropFilter_androidKt:
+    Removed class androidx.compose.ui.input.pointer.PointerInteropFilter_androidKt
 RemovedClass: androidx.compose.ui.input.pointer.PointerInteropUtils_androidKt:
     Removed class androidx.compose.ui.input.pointer.PointerInteropUtils_androidKt
 RemovedClass: androidx.compose.ui.layout.ContentScaleKt:
     Removed class androidx.compose.ui.layout.ContentScaleKt
 RemovedClass: androidx.compose.ui.layout.LookaheadLayoutCoordinatesKt:
     Removed class androidx.compose.ui.layout.LookaheadLayoutCoordinatesKt
+RemovedClass: androidx.compose.ui.layout.LookaheadLayoutKt:
+    Removed class androidx.compose.ui.layout.LookaheadLayoutKt
 RemovedClass: androidx.compose.ui.layout.MultiContentMeasurePolicyKt:
     Removed class androidx.compose.ui.layout.MultiContentMeasurePolicyKt
 RemovedClass: androidx.compose.ui.layout.PlaceableKt:
     Removed class androidx.compose.ui.layout.PlaceableKt
+RemovedClass: androidx.compose.ui.layout.RelocationModifierKt:
+    Removed class androidx.compose.ui.layout.RelocationModifierKt
+RemovedClass: androidx.compose.ui.layout.RelocationRequesterModifierKt:
+    Removed class androidx.compose.ui.layout.RelocationRequesterModifierKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalConsumerKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalConsumerKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalNodeKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalNodeKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalProviderKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalProviderKt
 RemovedClass: androidx.compose.ui.node.BackwardsCompatNodeKt:
     Removed class androidx.compose.ui.node.BackwardsCompatNodeKt
+RemovedClass: androidx.compose.ui.node.DelegatableNodeKt:
+    Removed class androidx.compose.ui.node.DelegatableNodeKt
+RemovedClass: androidx.compose.ui.node.DrawModifierNodeKt:
+    Removed class androidx.compose.ui.node.DrawModifierNodeKt
 RemovedClass: androidx.compose.ui.node.HitTestResultKt:
     Removed class androidx.compose.ui.node.HitTestResultKt
 RemovedClass: androidx.compose.ui.node.LayoutModifierNodeCoordinatorKt:
     Removed class androidx.compose.ui.node.LayoutModifierNodeCoordinatorKt
+RemovedClass: androidx.compose.ui.node.LayoutModifierNodeKt:
+    Removed class androidx.compose.ui.node.LayoutModifierNodeKt
 RemovedClass: androidx.compose.ui.node.LayoutNodeDrawScopeKt:
     Removed class androidx.compose.ui.node.LayoutNodeDrawScopeKt
 RemovedClass: androidx.compose.ui.node.LayoutNodeKt:
@@ -51,6 +71,8 @@
     Removed class androidx.compose.ui.node.LayoutNodeLayoutDelegateKt
 RemovedClass: androidx.compose.ui.node.MeasureScopeWithLayoutNodeKt:
     Removed class androidx.compose.ui.node.MeasureScopeWithLayoutNodeKt
+RemovedClass: androidx.compose.ui.node.ModifierNodeElementKt:
+    Removed class androidx.compose.ui.node.ModifierNodeElementKt
 RemovedClass: androidx.compose.ui.node.MyersDiffKt:
     Removed class androidx.compose.ui.node.MyersDiffKt
 RemovedClass: androidx.compose.ui.node.NodeChainKt:
@@ -61,6 +83,10 @@
     Removed class androidx.compose.ui.node.NodeKindKt
 RemovedClass: androidx.compose.ui.node.PointerInputModifierNodeKt:
     Removed class androidx.compose.ui.node.PointerInputModifierNodeKt
+RemovedClass: androidx.compose.ui.node.SemanticsModifierNodeKt:
+    Removed class androidx.compose.ui.node.SemanticsModifierNodeKt
+RemovedClass: androidx.compose.ui.node.ViewInterop_androidKt:
+    Removed class androidx.compose.ui.node.ViewInterop_androidKt
 RemovedClass: androidx.compose.ui.platform.AndroidClipboardManager_androidKt:
     Removed class androidx.compose.ui.platform.AndroidClipboardManager_androidKt
 RemovedClass: androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt:
@@ -89,6 +115,8 @@
     Removed class androidx.compose.ui.res.Resources_androidKt
 RemovedClass: androidx.compose.ui.semantics.SemanticsNodeKt:
     Removed class androidx.compose.ui.semantics.SemanticsNodeKt
+RemovedClass: androidx.compose.ui.semantics.SemanticsProperties_androidKt:
+    Removed class androidx.compose.ui.semantics.SemanticsProperties_androidKt
 RemovedClass: androidx.compose.ui.semantics.SemanticsSortKt:
     Removed class androidx.compose.ui.semantics.SemanticsSortKt
 RemovedClass: androidx.compose.ui.viewinterop.AndroidViewHolder_androidKt:
@@ -105,5 +133,7 @@
     Removed package androidx.compose.ui.internal
 RemovedPackage: androidx.compose.ui.platform.accessibility:
     Removed package androidx.compose.ui.platform.accessibility
+RemovedPackage: androidx.compose.ui.text:
+    Removed package androidx.compose.ui.text
 RemovedPackage: androidx.compose.ui.text.input:
     Removed package androidx.compose.ui.text.input
diff --git a/compose/ui/ui/api/current.txt b/compose/ui/ui/api/current.txt
index 28acb26..d27c2ed 100644
--- a/compose/ui/ui/api/current.txt
+++ b/compose/ui/ui/api/current.txt
@@ -385,9 +385,6 @@
     method public static androidx.compose.ui.Modifier focusRequester(androidx.compose.ui.Modifier, androidx.compose.ui.focus.FocusRequester focusRequester);
   }
 
-  public final class FocusRequesterModifierNodeKt {
-  }
-
   public interface FocusState {
     method public boolean getHasFocus();
     method public boolean isCaptured();
@@ -1663,9 +1660,6 @@
     property public abstract androidx.compose.ui.platform.ViewConfiguration viewConfiguration;
   }
 
-  public final class PointerInteropFilter_androidKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PointerKeyboardModifiers {
     ctor public PointerKeyboardModifiers(int packedValue);
   }
@@ -1927,9 +1921,6 @@
     method public static androidx.compose.ui.Modifier layout(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function3<? super androidx.compose.ui.layout.MeasureScope,? super androidx.compose.ui.layout.Measurable,? super androidx.compose.ui.unit.Constraints,? extends androidx.compose.ui.layout.MeasureResult> measure);
   }
 
-  public final class LookaheadLayoutKt {
-  }
-
   public interface Measurable extends androidx.compose.ui.layout.IntrinsicMeasurable {
     method public androidx.compose.ui.layout.Placeable measure(long constraints);
   }
@@ -2062,12 +2053,6 @@
     property protected abstract int parentWidth;
   }
 
-  public final class RelocationModifierKt {
-  }
-
-  public final class RelocationRequesterModifierKt {
-  }
-
   public interface Remeasurement {
     method public void forceRemeasure();
   }
@@ -2162,16 +2147,10 @@
     method public void onModifierLocalsUpdated(androidx.compose.ui.modifier.ModifierLocalReadScope scope);
   }
 
-  public final class ModifierLocalConsumerKt {
-  }
-
   public final class ModifierLocalKt {
     method public static <T> androidx.compose.ui.modifier.ProvidableModifierLocal<T> modifierLocalOf(kotlin.jvm.functions.Function0<? extends T> defaultFactory);
   }
 
-  public final class ModifierLocalNodeKt {
-  }
-
   @androidx.compose.runtime.Stable @kotlin.jvm.JvmDefaultWithCompatibility public interface ModifierLocalProvider<T> extends androidx.compose.ui.Modifier.Element {
     method public androidx.compose.ui.modifier.ProvidableModifierLocal<T> getKey();
     method public T! getValue();
@@ -2179,9 +2158,6 @@
     property public abstract T! value;
   }
 
-  public final class ModifierLocalProviderKt {
-  }
-
   public interface ModifierLocalReadScope {
     method public <T> T! getCurrent(androidx.compose.ui.modifier.ModifierLocal<T>);
   }
@@ -2194,24 +2170,6 @@
 
 package androidx.compose.ui.node {
 
-  public final class DelegatableNodeKt {
-  }
-
-  public final class DrawModifierNodeKt {
-  }
-
-  public final class LayoutModifierNodeKt {
-  }
-
-  public final class ModifierNodeElementKt {
-  }
-
-  public final class ObserverNodeKt {
-  }
-
-  public final class ParentDataModifierNodeKt {
-  }
-
   public final class Ref<T> {
     ctor public Ref();
     method public T? getValue();
@@ -2229,12 +2187,6 @@
     property public abstract androidx.compose.ui.text.input.TextInputService textInputService;
   }
 
-  public final class SemanticsModifierNodeKt {
-  }
-
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
@@ -2937,9 +2889,6 @@
     method public static void setVerticalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
   }
 
-  public final class SemanticsProperties_androidKt {
-  }
-
   public final class SemanticsPropertyKey<T> {
     ctor public SemanticsPropertyKey(String name, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends T> mergePolicy);
     method public String getName();
@@ -2971,13 +2920,6 @@
 
 }
 
-package androidx.compose.ui.text {
-
-  public final class TextMeasurerHelperKt {
-  }
-
-}
-
 package androidx.compose.ui.viewinterop {
 
   public final class AndroidView_androidKt {
diff --git a/compose/ui/ui/api/public_plus_experimental_1.4.0-beta01.txt b/compose/ui/ui/api/public_plus_experimental_1.4.0-beta01.txt
index a619ca2..37b8dc1 100644
--- a/compose/ui/ui/api/public_plus_experimental_1.4.0-beta01.txt
+++ b/compose/ui/ui/api/public_plus_experimental_1.4.0-beta01.txt
@@ -2540,9 +2540,6 @@
     method @androidx.compose.ui.ExperimentalComposeUiApi public static void invalidateSemantics(androidx.compose.ui.node.SemanticsModifierNode);
   }
 
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
diff --git a/compose/ui/ui/api/public_plus_experimental_current.txt b/compose/ui/ui/api/public_plus_experimental_current.txt
index a619ca2..37b8dc1 100644
--- a/compose/ui/ui/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui/api/public_plus_experimental_current.txt
@@ -2540,9 +2540,6 @@
     method @androidx.compose.ui.ExperimentalComposeUiApi public static void invalidateSemantics(androidx.compose.ui.node.SemanticsModifierNode);
   }
 
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
diff --git a/compose/ui/ui/api/restricted_1.4.0-beta01.txt b/compose/ui/ui/api/restricted_1.4.0-beta01.txt
index 3c4f4e5..2973b2b 100644
--- a/compose/ui/ui/api/restricted_1.4.0-beta01.txt
+++ b/compose/ui/ui/api/restricted_1.4.0-beta01.txt
@@ -385,9 +385,6 @@
     method public static androidx.compose.ui.Modifier focusRequester(androidx.compose.ui.Modifier, androidx.compose.ui.focus.FocusRequester focusRequester);
   }
 
-  public final class FocusRequesterModifierNodeKt {
-  }
-
   public interface FocusState {
     method public boolean getHasFocus();
     method public boolean isCaptured();
@@ -1663,9 +1660,6 @@
     property public abstract androidx.compose.ui.platform.ViewConfiguration viewConfiguration;
   }
 
-  public final class PointerInteropFilter_androidKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PointerKeyboardModifiers {
     ctor public PointerKeyboardModifiers(int packedValue);
   }
@@ -1929,9 +1923,6 @@
     method public static androidx.compose.ui.Modifier layout(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function3<? super androidx.compose.ui.layout.MeasureScope,? super androidx.compose.ui.layout.Measurable,? super androidx.compose.ui.unit.Constraints,? extends androidx.compose.ui.layout.MeasureResult> measure);
   }
 
-  public final class LookaheadLayoutKt {
-  }
-
   public interface Measurable extends androidx.compose.ui.layout.IntrinsicMeasurable {
     method public androidx.compose.ui.layout.Placeable measure(long constraints);
   }
@@ -2068,12 +2059,6 @@
     property protected abstract int parentWidth;
   }
 
-  public final class RelocationModifierKt {
-  }
-
-  public final class RelocationRequesterModifierKt {
-  }
-
   public interface Remeasurement {
     method public void forceRemeasure();
   }
@@ -2168,16 +2153,10 @@
     method public void onModifierLocalsUpdated(androidx.compose.ui.modifier.ModifierLocalReadScope scope);
   }
 
-  public final class ModifierLocalConsumerKt {
-  }
-
   public final class ModifierLocalKt {
     method public static <T> androidx.compose.ui.modifier.ProvidableModifierLocal<T> modifierLocalOf(kotlin.jvm.functions.Function0<? extends T> defaultFactory);
   }
 
-  public final class ModifierLocalNodeKt {
-  }
-
   @androidx.compose.runtime.Stable @kotlin.jvm.JvmDefaultWithCompatibility public interface ModifierLocalProvider<T> extends androidx.compose.ui.Modifier.Element {
     method public androidx.compose.ui.modifier.ProvidableModifierLocal<T> getKey();
     method public T! getValue();
@@ -2185,9 +2164,6 @@
     property public abstract T! value;
   }
 
-  public final class ModifierLocalProviderKt {
-  }
-
   public interface ModifierLocalReadScope {
     method public <T> T! getCurrent(androidx.compose.ui.modifier.ModifierLocal<T>);
   }
@@ -2236,24 +2212,6 @@
     property public final kotlin.jvm.functions.Function0<androidx.compose.ui.node.ComposeUiNode> VirtualConstructor;
   }
 
-  public final class DelegatableNodeKt {
-  }
-
-  public final class DrawModifierNodeKt {
-  }
-
-  public final class LayoutModifierNodeKt {
-  }
-
-  public final class ModifierNodeElementKt {
-  }
-
-  public final class ObserverNodeKt {
-  }
-
-  public final class ParentDataModifierNodeKt {
-  }
-
   public final class Ref<T> {
     ctor public Ref();
     method public T? getValue();
@@ -2271,12 +2229,6 @@
     property public abstract androidx.compose.ui.text.input.TextInputService textInputService;
   }
 
-  public final class SemanticsModifierNodeKt {
-  }
-
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
@@ -2980,9 +2932,6 @@
     method public static void setVerticalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
   }
 
-  public final class SemanticsProperties_androidKt {
-  }
-
   public final class SemanticsPropertyKey<T> {
     ctor public SemanticsPropertyKey(String name, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends T> mergePolicy);
     method public String getName();
@@ -3014,13 +2963,6 @@
 
 }
 
-package androidx.compose.ui.text {
-
-  public final class TextMeasurerHelperKt {
-  }
-
-}
-
 package androidx.compose.ui.viewinterop {
 
   public final class AndroidView_androidKt {
diff --git a/compose/ui/ui/api/restricted_current.ignore b/compose/ui/ui/api/restricted_current.ignore
index 1754535..4ab8136 100644
--- a/compose/ui/ui/api/restricted_current.ignore
+++ b/compose/ui/ui/api/restricted_current.ignore
@@ -27,20 +27,40 @@
     Removed class androidx.compose.ui.input.pointer.PointerInputEventProcessorKt
 RemovedClass: androidx.compose.ui.input.pointer.PointerInputTestUtilKt:
     Removed class androidx.compose.ui.input.pointer.PointerInputTestUtilKt
+RemovedClass: androidx.compose.ui.input.pointer.PointerInteropFilter_androidKt:
+    Removed class androidx.compose.ui.input.pointer.PointerInteropFilter_androidKt
 RemovedClass: androidx.compose.ui.input.pointer.PointerInteropUtils_androidKt:
     Removed class androidx.compose.ui.input.pointer.PointerInteropUtils_androidKt
 RemovedClass: androidx.compose.ui.layout.ContentScaleKt:
     Removed class androidx.compose.ui.layout.ContentScaleKt
 RemovedClass: androidx.compose.ui.layout.LookaheadLayoutCoordinatesKt:
     Removed class androidx.compose.ui.layout.LookaheadLayoutCoordinatesKt
+RemovedClass: androidx.compose.ui.layout.LookaheadLayoutKt:
+    Removed class androidx.compose.ui.layout.LookaheadLayoutKt
 RemovedClass: androidx.compose.ui.layout.PlaceableKt:
     Removed class androidx.compose.ui.layout.PlaceableKt
+RemovedClass: androidx.compose.ui.layout.RelocationModifierKt:
+    Removed class androidx.compose.ui.layout.RelocationModifierKt
+RemovedClass: androidx.compose.ui.layout.RelocationRequesterModifierKt:
+    Removed class androidx.compose.ui.layout.RelocationRequesterModifierKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalConsumerKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalConsumerKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalNodeKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalNodeKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalProviderKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalProviderKt
 RemovedClass: androidx.compose.ui.node.BackwardsCompatNodeKt:
     Removed class androidx.compose.ui.node.BackwardsCompatNodeKt
+RemovedClass: androidx.compose.ui.node.DelegatableNodeKt:
+    Removed class androidx.compose.ui.node.DelegatableNodeKt
+RemovedClass: androidx.compose.ui.node.DrawModifierNodeKt:
+    Removed class androidx.compose.ui.node.DrawModifierNodeKt
 RemovedClass: androidx.compose.ui.node.HitTestResultKt:
     Removed class androidx.compose.ui.node.HitTestResultKt
 RemovedClass: androidx.compose.ui.node.LayoutModifierNodeCoordinatorKt:
     Removed class androidx.compose.ui.node.LayoutModifierNodeCoordinatorKt
+RemovedClass: androidx.compose.ui.node.LayoutModifierNodeKt:
+    Removed class androidx.compose.ui.node.LayoutModifierNodeKt
 RemovedClass: androidx.compose.ui.node.LayoutNodeDrawScopeKt:
     Removed class androidx.compose.ui.node.LayoutNodeDrawScopeKt
 RemovedClass: androidx.compose.ui.node.LayoutNodeKt:
@@ -49,6 +69,8 @@
     Removed class androidx.compose.ui.node.LayoutNodeLayoutDelegateKt
 RemovedClass: androidx.compose.ui.node.MeasureScopeWithLayoutNodeKt:
     Removed class androidx.compose.ui.node.MeasureScopeWithLayoutNodeKt
+RemovedClass: androidx.compose.ui.node.ModifierNodeElementKt:
+    Removed class androidx.compose.ui.node.ModifierNodeElementKt
 RemovedClass: androidx.compose.ui.node.MyersDiffKt:
     Removed class androidx.compose.ui.node.MyersDiffKt
 RemovedClass: androidx.compose.ui.node.NodeChainKt:
@@ -59,6 +81,10 @@
     Removed class androidx.compose.ui.node.NodeKindKt
 RemovedClass: androidx.compose.ui.node.PointerInputModifierNodeKt:
     Removed class androidx.compose.ui.node.PointerInputModifierNodeKt
+RemovedClass: androidx.compose.ui.node.SemanticsModifierNodeKt:
+    Removed class androidx.compose.ui.node.SemanticsModifierNodeKt
+RemovedClass: androidx.compose.ui.node.ViewInterop_androidKt:
+    Removed class androidx.compose.ui.node.ViewInterop_androidKt
 RemovedClass: androidx.compose.ui.platform.AndroidClipboardManager_androidKt:
     Removed class androidx.compose.ui.platform.AndroidClipboardManager_androidKt
 RemovedClass: androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt:
@@ -87,6 +113,8 @@
     Removed class androidx.compose.ui.res.Resources_androidKt
 RemovedClass: androidx.compose.ui.semantics.SemanticsNodeKt:
     Removed class androidx.compose.ui.semantics.SemanticsNodeKt
+RemovedClass: androidx.compose.ui.semantics.SemanticsProperties_androidKt:
+    Removed class androidx.compose.ui.semantics.SemanticsProperties_androidKt
 RemovedClass: androidx.compose.ui.semantics.SemanticsSortKt:
     Removed class androidx.compose.ui.semantics.SemanticsSortKt
 RemovedClass: androidx.compose.ui.viewinterop.AndroidViewHolder_androidKt:
@@ -103,5 +131,7 @@
     Removed package androidx.compose.ui.internal
 RemovedPackage: androidx.compose.ui.platform.accessibility:
     Removed package androidx.compose.ui.platform.accessibility
+RemovedPackage: androidx.compose.ui.text:
+    Removed package androidx.compose.ui.text
 RemovedPackage: androidx.compose.ui.text.input:
     Removed package androidx.compose.ui.text.input
diff --git a/compose/ui/ui/api/restricted_current.txt b/compose/ui/ui/api/restricted_current.txt
index 3c4f4e5..2973b2b 100644
--- a/compose/ui/ui/api/restricted_current.txt
+++ b/compose/ui/ui/api/restricted_current.txt
@@ -385,9 +385,6 @@
     method public static androidx.compose.ui.Modifier focusRequester(androidx.compose.ui.Modifier, androidx.compose.ui.focus.FocusRequester focusRequester);
   }
 
-  public final class FocusRequesterModifierNodeKt {
-  }
-
   public interface FocusState {
     method public boolean getHasFocus();
     method public boolean isCaptured();
@@ -1663,9 +1660,6 @@
     property public abstract androidx.compose.ui.platform.ViewConfiguration viewConfiguration;
   }
 
-  public final class PointerInteropFilter_androidKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PointerKeyboardModifiers {
     ctor public PointerKeyboardModifiers(int packedValue);
   }
@@ -1929,9 +1923,6 @@
     method public static androidx.compose.ui.Modifier layout(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function3<? super androidx.compose.ui.layout.MeasureScope,? super androidx.compose.ui.layout.Measurable,? super androidx.compose.ui.unit.Constraints,? extends androidx.compose.ui.layout.MeasureResult> measure);
   }
 
-  public final class LookaheadLayoutKt {
-  }
-
   public interface Measurable extends androidx.compose.ui.layout.IntrinsicMeasurable {
     method public androidx.compose.ui.layout.Placeable measure(long constraints);
   }
@@ -2068,12 +2059,6 @@
     property protected abstract int parentWidth;
   }
 
-  public final class RelocationModifierKt {
-  }
-
-  public final class RelocationRequesterModifierKt {
-  }
-
   public interface Remeasurement {
     method public void forceRemeasure();
   }
@@ -2168,16 +2153,10 @@
     method public void onModifierLocalsUpdated(androidx.compose.ui.modifier.ModifierLocalReadScope scope);
   }
 
-  public final class ModifierLocalConsumerKt {
-  }
-
   public final class ModifierLocalKt {
     method public static <T> androidx.compose.ui.modifier.ProvidableModifierLocal<T> modifierLocalOf(kotlin.jvm.functions.Function0<? extends T> defaultFactory);
   }
 
-  public final class ModifierLocalNodeKt {
-  }
-
   @androidx.compose.runtime.Stable @kotlin.jvm.JvmDefaultWithCompatibility public interface ModifierLocalProvider<T> extends androidx.compose.ui.Modifier.Element {
     method public androidx.compose.ui.modifier.ProvidableModifierLocal<T> getKey();
     method public T! getValue();
@@ -2185,9 +2164,6 @@
     property public abstract T! value;
   }
 
-  public final class ModifierLocalProviderKt {
-  }
-
   public interface ModifierLocalReadScope {
     method public <T> T! getCurrent(androidx.compose.ui.modifier.ModifierLocal<T>);
   }
@@ -2236,24 +2212,6 @@
     property public final kotlin.jvm.functions.Function0<androidx.compose.ui.node.ComposeUiNode> VirtualConstructor;
   }
 
-  public final class DelegatableNodeKt {
-  }
-
-  public final class DrawModifierNodeKt {
-  }
-
-  public final class LayoutModifierNodeKt {
-  }
-
-  public final class ModifierNodeElementKt {
-  }
-
-  public final class ObserverNodeKt {
-  }
-
-  public final class ParentDataModifierNodeKt {
-  }
-
   public final class Ref<T> {
     ctor public Ref();
     method public T? getValue();
@@ -2271,12 +2229,6 @@
     property public abstract androidx.compose.ui.text.input.TextInputService textInputService;
   }
 
-  public final class SemanticsModifierNodeKt {
-  }
-
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
@@ -2980,9 +2932,6 @@
     method public static void setVerticalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
   }
 
-  public final class SemanticsProperties_androidKt {
-  }
-
   public final class SemanticsPropertyKey<T> {
     ctor public SemanticsPropertyKey(String name, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends T> mergePolicy);
     method public String getName();
@@ -3014,13 +2963,6 @@
 
 }
 
-package androidx.compose.ui.text {
-
-  public final class TextMeasurerHelperKt {
-  }
-
-}
-
 package androidx.compose.ui.viewinterop {
 
   public final class AndroidView_androidKt {
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusTraversalImplicitEnterTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusTraversalImplicitEnterTest.kt
index 99fb704..e2a9849 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusTraversalImplicitEnterTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusTraversalImplicitEnterTest.kt
@@ -181,6 +181,12 @@
         rule.runOnIdle {
             assertThat(movedFocusSuccessfully).isFalse()
             assertThat(child.value).isFalse()
+            when (focusDirection) {
+                Left -> assertThat(right.value).isTrue()
+                Right -> assertThat(left.value).isTrue()
+                Up -> assertThat(down.value).isTrue()
+                Down -> assertThat(up.value).isTrue()
+            }
         }
     }
 
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusTraversalImplicitExitTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusTraversalImplicitExitTest.kt
index d40004d..53968c1 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusTraversalImplicitExitTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusTraversalImplicitExitTest.kt
@@ -16,6 +16,8 @@
 
 package androidx.compose.ui.focus
 
+import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.focusGroup
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.ui.ExperimentalComposeUiApi
@@ -143,7 +145,7 @@
      *                   |   Up   |
      *                   |________|
      *                 ________________
-     *                |  focusedItem  |
+     *                |  parent       |
      *   _________    |   _________   |    _________
      *  |  Left  |    |  | child0 |   |   |  Right |
      *  |________|    |  |________|   |   |________|
@@ -156,11 +158,11 @@
     fun moveFocusExit_blockFocusChange() {
         // Arrange.
         val (up, down, left, right, parent) = List(5) { mutableStateOf(false) }
-        val customFocusEnter = Modifier.focusProperties { exit = { Cancel } }
+        val customFocusExit = Modifier.focusProperties { exit = { Cancel } }
         rule.setContentForTest {
             FocusableBox(up, 30, 0, 10, 10)
             FocusableBox(left, 0, 30, 10, 10)
-            FocusableBox(parent, 20, 20, 70, 50, deactivated = true, modifier = customFocusEnter) {
+            FocusableBox(parent, 20, 20, 70, 50, deactivated = true, modifier = customFocusExit) {
                 FocusableBox(focusedItem, 30, 30, 10, 10, initialFocus)
             }
             FocusableBox(right, 100, 35, 10, 10)
@@ -181,6 +183,227 @@
         }
     }
 
+    /**
+     *                    _________
+     *                   |   Up   |
+     *                   |________|
+     *                 ________________
+     *                |  parent       |
+     *   _________    |   _________   |    _________
+     *  |  Left  |    |  | source |   |   |  Right |
+     *  |________|    |  |________|   |   |________|
+     *                |_______________|
+     *                    _________
+     *                   |  Down  |
+     *                   |________|
+     */
+    @OptIn(ExperimentalFoundationApi::class)
+    @Test
+    fun moveFocusExit_cancelExit() {
+        // Arrange.
+        val (up, down, left, right, parent) = List(5) { mutableStateOf(false) }
+        var (upItem, downItem, leftItem, rightItem) = FocusRequester.createRefs()
+
+        val customFocusExit = Modifier
+            .focusProperties { exit = { Cancel } }
+            .focusGroup()
+
+        rule.setContentForTest {
+            FocusableBox(up, 30, 0, 10, 10, upItem)
+            FocusableBox(left, 0, 30, 10, 10, leftItem)
+            FocusableBox(parent, 20, 20, 30, 30, modifier = customFocusExit) {
+                FocusableBox(focusedItem, 10, 10, 10, 10, initialFocus)
+            }
+            FocusableBox(right, 60, 30, 10, 10, rightItem)
+            FocusableBox(down, 30, 60, 10, 10, downItem)
+        }
+
+        // Act.
+        val movedFocusSuccessfully = rule.runOnIdle { focusManager.moveFocus(focusDirection) }
+
+        // Assert.
+        rule.runOnIdle {
+            assertThat(movedFocusSuccessfully).isFalse()
+            assertThat(up.value).isFalse()
+            assertThat(left.value).isFalse()
+            assertThat(right.value).isFalse()
+            assertThat(down.value).isFalse()
+            assertThat(focusedItem.value).isTrue()
+        }
+    }
+
+    /**
+     *   _________        _________
+     *  |  dest  |       |   Up   |
+     *  |________|       |________|
+     *                 ________________
+     *                |  parent       |
+     *   _________    |   _________   |    _________
+     *  |  Left  |    |  | source |   |   |  Right |
+     *  |________|    |  |________|   |   |________|
+     *                |_______________|
+     *                    _________
+     *                   |  Down  |
+     *                   |________|
+     */
+    @OptIn(ExperimentalFoundationApi::class)
+    @Test
+    fun moveFocusExit_redirectExit() {
+        // Arrange.
+        val destItem = FocusRequester()
+        val (dest, parent) = List(4) { mutableStateOf(false) }
+        val (up, down, left, right) = List(4) { mutableStateOf(false) }
+        var (upItem, downItem, leftItem, rightItem) = FocusRequester.createRefs()
+
+        val customFocusExit = Modifier
+            .focusProperties {
+                exit = {
+                    initialFocus.requestFocus()
+                    Cancel
+                }
+            }
+            .focusGroup()
+
+        rule.setContentForTest {
+            FocusableBox(dest, 0, 0, 10, 10, destItem)
+            FocusableBox(up, 30, 0, 10, 10, upItem)
+            FocusableBox(left, 0, 30, 10, 10, leftItem)
+            FocusableBox(parent, 20, 20, 30, 30, modifier = customFocusExit) {
+                FocusableBox(focusedItem, 10, 10, 10, 10, initialFocus)
+            }
+            FocusableBox(right, 60, 30, 10, 10, rightItem)
+            FocusableBox(down, 30, 60, 10, 10, downItem)
+        }
+
+        // Act.
+        val movedFocusSuccessfully = rule.runOnIdle { focusManager.moveFocus(focusDirection) }
+
+        // Assert.
+        rule.runOnIdle {
+            assertThat(movedFocusSuccessfully).isFalse()
+            assertThat(up.value).isFalse()
+            assertThat(left.value).isFalse()
+            assertThat(right.value).isFalse()
+            assertThat(down.value).isFalse()
+            assertThat(focusedItem.value).isTrue()
+        }
+    }
+
+    /**
+     *                      _________
+     *                     |   Up   |
+     *                     |________|
+     *               _________________________
+     *              | grandparent            |
+     *              |  _____________________ |
+     *              | | parent             | |
+     *   _________  | |     _________      | |  _________
+     *  |  Left  |  | |    | source |      | | |  Right |
+     *  |________|  | |    |________|      | | |________|
+     *              | |____________________| |
+     *              |________________________|
+     *                      _________
+     *                     |  Down  |
+     *                     |________|
+     */
+    @OptIn(ExperimentalFoundationApi::class)
+    @Test
+    fun moveFocusExit_multipleParents_cancelExit() {
+        // Arrange.
+        val (grandparent, parent) = List(4) { mutableStateOf(false) }
+        val (up, down, left, right) = List(4) { mutableStateOf(false) }
+        var (upItem, downItem, leftItem, rightItem) = FocusRequester.createRefs()
+
+        val customFocusExit = Modifier
+            .focusProperties { exit = { Cancel } }
+            .focusGroup()
+
+        rule.setContentForTest {
+            FocusableBox(up, 40, 0, 10, 10, upItem)
+            FocusableBox(left, 0, 40, 10, 10, leftItem)
+            FocusableBox(grandparent, 20, 20, 50, 50, modifier = Modifier.focusGroup()) {
+                FocusableBox(parent, 10, 10, 30, 30, modifier = customFocusExit) {
+                    FocusableBox(focusedItem, 10, 10, 10, 10, initialFocus)
+                }
+            }
+            FocusableBox(right, 80, 40, 10, 10, rightItem)
+            FocusableBox(down, 40, 80, 10, 10, downItem)
+        }
+
+        // Act.
+        val movedFocusSuccessfully = rule.runOnIdle { focusManager.moveFocus(focusDirection) }
+
+        // Assert.
+        rule.runOnIdle {
+            assertThat(movedFocusSuccessfully).isFalse()
+            assertThat(up.value).isFalse()
+            assertThat(left.value).isFalse()
+            assertThat(right.value).isFalse()
+            assertThat(down.value).isFalse()
+            assertThat(focusedItem.value).isTrue()
+        }
+    }
+
+    /**
+     *   _________            _________
+     *  |  dest  |           |   Up   |
+     *  |________|           |________|
+     *                  _____________________
+     *                 | grandparent+parent |
+     *   _________     |      _________     |    _________
+     *  |  Left  |     |     | source |     |   |  Right |
+     *  |________|     |     |________|     |   |________|
+     *                 |____________________|
+     *                        _________
+     *                       |  Down  |
+     *                       |________|
+     */
+    @OptIn(ExperimentalFoundationApi::class)
+    @Test
+    fun moveFocusExit_multipleParents_redirectExit() {
+        // Arrange.
+        val destItem = FocusRequester()
+        val (dest, grandparent, parent) = List(4) { mutableStateOf(false) }
+        val (up, down, left, right) = List(4) { mutableStateOf(false) }
+        var (upItem, downItem, leftItem, rightItem) = FocusRequester.createRefs()
+
+        val customFocusExit = Modifier
+            .focusGroup()
+            .focusProperties {
+                exit = {
+                    initialFocus.requestFocus()
+                    Cancel
+                }
+            }
+            .focusGroup()
+
+        rule.setContentForTest {
+            FocusableBox(dest, 0, 0, 10, 10, destItem)
+            FocusableBox(up, 40, 0, 10, 10, upItem)
+            FocusableBox(left, 0, 40, 10, 10, leftItem)
+            FocusableBox(grandparent, 20, 20, 50, 50, modifier = Modifier.focusGroup()) {
+                FocusableBox(parent, 10, 10, 30, 30, modifier = customFocusExit) {
+                    FocusableBox(focusedItem, 10, 10, 10, 10, initialFocus)
+                }
+            }
+            FocusableBox(right, 80, 40, 10, 10, rightItem)
+            FocusableBox(down, 40, 80, 10, 10, downItem)
+        }
+
+        // Act.
+        val movedFocusSuccessfully = rule.runOnIdle { focusManager.moveFocus(focusDirection) }
+
+        // Assert.
+        rule.runOnIdle {
+            assertThat(movedFocusSuccessfully).isFalse()
+            assertThat(up.value).isFalse()
+            assertThat(left.value).isFalse()
+            assertThat(right.value).isFalse()
+            assertThat(down.value).isFalse()
+            assertThat(focusedItem.value).isTrue()
+        }
+    }
+
     // We need to wrap the inline class parameter in another class because Java can't instantiate
     // the inline class.
     class Param(val focusDirection: FocusDirection) {
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidEmojiTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidEmojiTest.kt
index b0c3d03..118d446 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidEmojiTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidEmojiTest.kt
@@ -16,13 +16,16 @@
 
 package androidx.compose.ui.input
 
+import android.view.Choreographer
 import android.view.View
 import android.view.inputmethod.EditorInfo
 import androidx.compose.ui.text.input.ImeOptions
 import androidx.compose.ui.text.input.InputMethodManager
 import androidx.compose.ui.text.input.TextFieldValue
 import androidx.compose.ui.text.input.TextInputServiceAndroid
+import androidx.compose.ui.text.input.asExecutor
 import androidx.emoji2.text.EmojiCompat
+import androidx.test.espresso.Espresso
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
@@ -47,7 +50,10 @@
         EmojiCompat.reset(e2)
         val view = View(InstrumentationRegistry.getInstrumentation().context)
         val inputMethodManager = mock<InputMethodManager>()
-        val textInputService = TextInputServiceAndroid(view, inputMethodManager)
+        // Choreographer must be retrieved on main thread.
+        val choreographer = Espresso.onIdle { Choreographer.getInstance() }
+        val textInputService =
+            TextInputServiceAndroid(view, inputMethodManager, choreographer.asExecutor())
 
         textInputService.startInput(TextFieldValue(""), ImeOptions.Default, {}, {})
 
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidOnStateUpdateTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidOnStateUpdateTest.kt
index 94300f6..047d3ee 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidOnStateUpdateTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidOnStateUpdateTest.kt
@@ -16,6 +16,7 @@
 
 package androidx.compose.ui.input
 
+import android.view.Choreographer
 import android.view.View
 import android.view.inputmethod.EditorInfo
 import androidx.compose.ui.text.TextRange
@@ -24,6 +25,8 @@
 import androidx.compose.ui.text.input.RecordingInputConnection
 import androidx.compose.ui.text.input.TextFieldValue
 import androidx.compose.ui.text.input.TextInputServiceAndroid
+import androidx.compose.ui.text.input.asExecutor
+import androidx.test.espresso.Espresso
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
@@ -51,7 +54,10 @@
     fun setup() {
         val view = View(InstrumentationRegistry.getInstrumentation().context)
         inputMethodManager = mock()
-        textInputService = TextInputServiceAndroid(view, inputMethodManager)
+        // Choreographer must be retrieved on main thread.
+        val choreographer = Espresso.onIdle { Choreographer.getInstance() }
+        textInputService =
+            TextInputServiceAndroid(view, inputMethodManager, choreographer.asExecutor())
         textInputService.startInput(
             value = TextFieldValue(""),
             imeOptions = ImeOptions.Default,
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeView.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeView.android.kt
index be43b17..26442ef 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeView.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeView.android.kt
@@ -1081,18 +1081,6 @@
     }
 
     /**
-     * Android has an issue where calling showSoftwareKeyboard after calling
-     * hideSoftwareKeyboard, it results in keyboard flickering and sometimes the keyboard ends up
-     * being hidden even though the most recent call was to showKeyboard.
-     *
-     * This function starts a suspended function that listens for show/hide commands and only
-     * runs the latest command.
-     */
-    suspend fun keyboardVisibilityEventLoop() {
-        textInputServiceAndroid.textInputCommandEventLoop()
-    }
-
-    /**
      * Walks the entire LayoutNode sub-hierarchy and marks all nodes as needing measurement.
      */
     private fun invalidateLayoutNodeMeasurement(node: LayoutNode) {
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/Wrapper.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/Wrapper.android.kt
index f8f95fc..90aafa5 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/Wrapper.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/Wrapper.android.kt
@@ -150,7 +150,6 @@
                             currentComposer.collectParameterInformation()
                         }
 
-                        LaunchedEffect(owner) { owner.keyboardVisibilityEventLoop() }
                         LaunchedEffect(owner) { owner.boundsUpdatesEventLoop() }
 
                         CompositionLocalProvider(LocalInspectionTables provides inspectionTable) {
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.android.kt
index c91311e..fd63e3f0 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.android.kt
@@ -19,11 +19,13 @@
 import android.graphics.Rect as AndroidRect
 import android.text.InputType
 import android.util.Log
+import android.view.Choreographer
 import android.view.KeyEvent
 import android.view.View
 import android.view.inputmethod.BaseInputConnection
 import android.view.inputmethod.EditorInfo
 import android.view.inputmethod.InputConnection
+import androidx.compose.runtime.collection.mutableVectorOf
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.text.TextRange
 import androidx.compose.ui.text.input.TextInputServiceAndroid.TextInputCommand.HideKeyboard
@@ -33,22 +35,26 @@
 import androidx.core.view.inputmethod.EditorInfoCompat
 import androidx.emoji2.text.EmojiCompat
 import java.lang.ref.WeakReference
+import java.util.concurrent.Executor
 import kotlin.math.roundToInt
-import kotlinx.coroutines.channels.Channel
 
 private const val DEBUG_CLASS = "TextInputServiceAndroid"
 
 /**
  * Provide Android specific input service with the Operating System.
+ *
+ * @param inputCommandProcessorExecutor [Executor] used to schedule the [processInputCommands]
+ * function when a input command is first requested for a frame.
  */
 internal class TextInputServiceAndroid(
     val view: View,
-    private val inputMethodManager: InputMethodManager
+    private val inputMethodManager: InputMethodManager,
+    private val inputCommandProcessorExecutor: Executor = Choreographer.getInstance().asExecutor(),
 ) : PlatformTextInputService {
 
     /**
-     * Commands that can be sent into [textInputCommandChannel] to be processed by
-     * [textInputCommandEventLoop].
+     * Commands that can be sent into [textInputCommandQueue] to be processed by
+     * [processInputCommands].
      */
     private enum class TextInputCommand {
         StartInput,
@@ -92,9 +98,10 @@
      * A channel that is used to debounce rapid operations such as showing/hiding the keyboard and
      * starting/stopping input, so we can make the minimal number of calls on the
      * [inputMethodManager]. The [TextInputCommand]s sent to this channel are processed by
-     * [textInputCommandEventLoop].
+     * [processInputCommands].
      */
-    private val textInputCommandChannel = Channel<TextInputCommand>(Channel.UNLIMITED)
+    private val textInputCommandQueue = mutableVectorOf<TextInputCommand>()
+    private var frameCallback: Runnable? = null
 
     internal constructor(view: View) : this(view, InputMethodManagerImpl(view))
 
@@ -171,7 +178,7 @@
 
         // Don't actually send the command to the IME yet, it may be overruled by a subsequent call
         // to stopInput.
-        textInputCommandChannel.trySend(StartInput)
+        sendInputCommand(StartInput)
     }
 
     override fun stopInput() {
@@ -184,129 +191,129 @@
 
         // Don't actually send the command to the IME yet, it may be overruled by a subsequent call
         // to startInput.
-        textInputCommandChannel.trySend(StopInput)
+        sendInputCommand(StopInput)
     }
 
     override fun showSoftwareKeyboard() {
         if (DEBUG) {
             Log.d(TAG, "$DEBUG_CLASS.showSoftwareKeyboard")
         }
-        textInputCommandChannel.trySend(ShowKeyboard)
+        sendInputCommand(ShowKeyboard)
     }
 
     override fun hideSoftwareKeyboard() {
         if (DEBUG) {
             Log.d(TAG, "$DEBUG_CLASS.hideSoftwareKeyboard")
         }
-        textInputCommandChannel.trySend(HideKeyboard)
+        sendInputCommand(HideKeyboard)
     }
 
-    /**
-     * Processes commands from the [textInputCommandChannel] to make the appropriate calls on the
-     * [inputMethodManager].
-     */
-    suspend fun textInputCommandEventLoop() {
-        // TODO(b/180071033): Allow for more IMPLICIT flag to be passed.
-        for (initialCommand in textInputCommandChannel) {
-            // When focus changes to a non-Compose view, the system will take care of managing the
-            // keyboard (via ImeFocusController) so we don't need to do anything. This can happen
-            // when a Compose text field is focused, then the user taps on an EditText view.
-            // And any commands that come in while we're not focused should also just be ignored,
-            // since no unfocused view should be messing with the keyboard.
-            // TODO(b/215761849) When focus moves to a different ComposeView than this one, this
-            //  logic doesn't work and the keyboard is not hidden.
-            if (!view.isFocused) {
-                // All queued commands should be ignored, so drain them out of the channel to avoid
-                // waking up this coroutine again immediately.
-                do {
-                    val command = textInputCommandChannel.tryReceive()
-                } while (command.isSuccess)
-                continue
-            }
-
-            // Multiple commands may have been queued up in the channel while this function was
-            // waiting to be resumed. We don't execute the commands as they come in because making a
-            // bunch of calls to change the actual IME quickly can result in flickers. Instead, we
-            // manually coalesce the commands to figure out the minimum number of IME operations we
-            // need to get to the desired final state.
-            // The queued commands effectively operate on a simple state machine consisting of two
-            // flags:
-            //   1. Whether to start a new input connection (true), tear down the input connection
-            //      (false), or leave the current connection as-is (null).
-            var startInput: Boolean? = null
-            //   2. Whether to show the keyboard (true), hide the keyboard (false), or leave the
-            //      keyboard visibility as-is (null).
-            var showKeyboard: Boolean? = null
-
-            // And a function that performs the appropriate state transition given a command.
-            fun TextInputCommand.applyToState() {
-                when (this) {
-                    StartInput -> {
-                        // Any commands before restarting the input are meaningless since they would
-                        // apply to the connection we're going to tear down and recreate.
-                        // Starting a new connection implicitly stops the previous connection.
-                        startInput = true
-                        // It doesn't make sense to start a new connection without the keyboard
-                        // showing.
-                        showKeyboard = true
-                    }
-                    StopInput -> {
-                        startInput = false
-                        // It also doesn't make sense to keep the keyboard visible if it's not
-                        // connected to anything. Note that this is different than the Android
-                        // default behavior for Views, which is to keep the keyboard showing even
-                        // after the view that the IME was shown for loses focus.
-                        // See this doc for some notes and discussion on whether we should auto-hide
-                        // or match Android:
-                        // https://docs.google.com/document/d/1o-y3NkfFPCBhfDekdVEEl41tqtjjqs8jOss6txNgqaw/edit?resourcekey=0-o728aLn51uXXnA4Pkpe88Q#heading=h.ieacosb5rizm
-                        showKeyboard = false
-                    }
-                    ShowKeyboard,
-                    HideKeyboard -> {
-                        // Any keyboard visibility commands sent after input is stopped but before
-                        // input is started should be ignored.
-                        // Otherwise, the last visibility command sent either before the last stop
-                        // command, or after the last start command, is the one that should take
-                        // effect.
-                        if (startInput != false) {
-                            showKeyboard = this == ShowKeyboard
-                        }
-                    }
-                }
-            }
-
-            // Feed all the queued commands into the state machine.
-            var command: TextInputCommand? = initialCommand
-            while (command != null) {
-                command.applyToState()
-                if (DEBUG) {
-                    Log.d(
-                        TAG,
-                        "$DEBUG_CLASS.textInputCommandEventLoop.$command " +
-                            "(startInput=$startInput, showKeyboard=$showKeyboard)"
-                    )
-                }
-                command = textInputCommandChannel.tryReceive().getOrNull()
-            }
-
-            // Now that we've calculated what operations we need to perform on the actual input
-            // manager, perform them.
-            // If the keyboard visibility was changed after starting a new connection, we need to
-            // perform that operation change after starting it.
-            // If the keyboard visibility was changed before closing the connection, we need to
-            // perform that operation before closing the connection so it doesn't no-op.
-            if (startInput == true) {
-                restartInputImmediately()
-            }
-            showKeyboard?.also(::setKeyboardVisibleImmediately)
-            if (startInput == false) {
-                restartInputImmediately()
-            }
-
-            if (DEBUG) Log.d(TAG, "$DEBUG_CLASS.textInputCommandEventLoop.finished")
+    private fun sendInputCommand(command: TextInputCommand) {
+        textInputCommandQueue += command
+        if (frameCallback == null) {
+            frameCallback = Runnable {
+                frameCallback = null
+                processInputCommands()
+            }.also(inputCommandProcessorExecutor::execute)
         }
     }
 
+    private fun processInputCommands() {
+        // When focus changes to a non-Compose view, the system will take care of managing the
+        // keyboard (via ImeFocusController) so we don't need to do anything. This can happen
+        // when a Compose text field is focused, then the user taps on an EditText view.
+        // And any commands that come in while we're not focused should also just be ignored,
+        // since no unfocused view should be messing with the keyboard.
+        // TODO(b/215761849) When focus moves to a different ComposeView than this one, this
+        //  logic doesn't work and the keyboard is not hidden.
+        if (!view.isFocused) {
+            // All queued commands should be ignored.
+            textInputCommandQueue.clear()
+            return
+        }
+
+        // Multiple commands may have been queued up in the channel while this function was
+        // waiting to be resumed. We don't execute the commands as they come in because making a
+        // bunch of calls to change the actual IME quickly can result in flickers. Instead, we
+        // manually coalesce the commands to figure out the minimum number of IME operations we
+        // need to get to the desired final state.
+        // The queued commands effectively operate on a simple state machine consisting of two
+        // flags:
+        //   1. Whether to start a new input connection (true), tear down the input connection
+        //      (false), or leave the current connection as-is (null).
+        var startInput: Boolean? = null
+        //   2. Whether to show the keyboard (true), hide the keyboard (false), or leave the
+        //      keyboard visibility as-is (null).
+        var showKeyboard: Boolean? = null
+
+        // And a function that performs the appropriate state transition given a command.
+        fun TextInputCommand.applyToState() {
+            when (this) {
+                StartInput -> {
+                    // Any commands before restarting the input are meaningless since they would
+                    // apply to the connection we're going to tear down and recreate.
+                    // Starting a new connection implicitly stops the previous connection.
+                    startInput = true
+                    // It doesn't make sense to start a new connection without the keyboard
+                    // showing.
+                    showKeyboard = true
+                }
+
+                StopInput -> {
+                    startInput = false
+                    // It also doesn't make sense to keep the keyboard visible if it's not
+                    // connected to anything. Note that this is different than the Android
+                    // default behavior for Views, which is to keep the keyboard showing even
+                    // after the view that the IME was shown for loses focus.
+                    // See this doc for some notes and discussion on whether we should auto-hide
+                    // or match Android:
+                    // https://docs.google.com/document/d/1o-y3NkfFPCBhfDekdVEEl41tqtjjqs8jOss6txNgqaw/edit?resourcekey=0-o728aLn51uXXnA4Pkpe88Q#heading=h.ieacosb5rizm
+                    showKeyboard = false
+                }
+
+                ShowKeyboard,
+                HideKeyboard -> {
+                    // Any keyboard visibility commands sent after input is stopped but before
+                    // input is started should be ignored.
+                    // Otherwise, the last visibility command sent either before the last stop
+                    // command, or after the last start command, is the one that should take
+                    // effect.
+                    if (startInput != false) {
+                        showKeyboard = this == ShowKeyboard
+                    }
+                }
+            }
+        }
+
+        // Feed all the queued commands into the state machine.
+        textInputCommandQueue.forEach { command ->
+            command.applyToState()
+            if (DEBUG) {
+                Log.d(
+                    TAG,
+                    "$DEBUG_CLASS.textInputCommandEventLoop.$command " +
+                        "(startInput=$startInput, showKeyboard=$showKeyboard)"
+                )
+            }
+        }
+
+        // Now that we've calculated what operations we need to perform on the actual input
+        // manager, perform them.
+        // If the keyboard visibility was changed after starting a new connection, we need to
+        // perform that operation change after starting it.
+        // If the keyboard visibility was changed before closing the connection, we need to
+        // perform that operation before closing the connection so it doesn't no-op.
+        if (startInput == true) {
+            restartInputImmediately()
+        }
+        showKeyboard?.also(::setKeyboardVisibleImmediately)
+        if (startInput == false) {
+            restartInputImmediately()
+        }
+
+        if (DEBUG) Log.d(TAG, "$DEBUG_CLASS.textInputCommandEventLoop.finished")
+    }
+
     override fun updateState(oldValue: TextFieldValue?, newValue: TextFieldValue) {
         if (DEBUG) {
             Log.d(TAG, "$DEBUG_CLASS.updateState called: $oldValue -> $newValue")
@@ -382,13 +389,13 @@
         }
     }
 
-    /** Immediately restart the IME connection, bypassing the [textInputCommandChannel]. */
+    /** Immediately restart the IME connection, bypassing the [textInputCommandQueue]. */
     private fun restartInputImmediately() {
         if (DEBUG) Log.d(TAG, "$DEBUG_CLASS.restartInputImmediately")
         inputMethodManager.restartInput()
     }
 
-    /** Immediately show or hide the keyboard, bypassing the [textInputCommandChannel]. */
+    /** Immediately show or hide the keyboard, bypassing the [textInputCommandQueue]. */
     private fun setKeyboardVisibleImmediately(visible: Boolean) {
         if (DEBUG) Log.d(TAG, "$DEBUG_CLASS.setKeyboardVisibleImmediately(visible=$visible)")
         if (visible) {
@@ -500,4 +507,8 @@
     this.imeOptions = this.imeOptions or EditorInfo.IME_FLAG_NO_FULLSCREEN
 }
 
+internal fun Choreographer.asExecutor(): Executor = Executor { runnable ->
+    postFrameCallback { runnable.run() }
+}
+
 private fun hasFlag(bits: Int, flag: Int): Boolean = (bits and flag) == flag
\ No newline at end of file
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusOwnerImpl.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusOwnerImpl.kt
index d3119d9..fdea309 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusOwnerImpl.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusOwnerImpl.kt
@@ -149,7 +149,7 @@
                 // If we didn't find a potential next item, try to wrap around.
                 return foundNextItem || wrapAroundFocus(focusDirection)
             }
-            else -> return next.findFocusTarget { it.requestFocus() } ?: false
+            else -> return next.findFocusTarget { it.requestFocus() }
         }
     }
 
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusRequester.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusRequester.kt
index d5bbb48..dea7e47 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusRequester.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusRequester.kt
@@ -32,6 +32,11 @@
    response to some event. Eg Modifier.clickable { focusRequester.requestFocus() }
 """
 
+private const val invalidFocusRequesterInvocation = """
+    Please check whether the focusRequester is FocusRequester.Cancel or FocusRequester.Default
+    before invoking any functions on the focusRequester.
+"""
+
 /**
  * The [FocusRequester] is used in conjunction with
  * [Modifier.focusRequester][androidx.compose.ui.focus.focusRequester] to send requests to
@@ -55,8 +60,6 @@
      * @sample androidx.compose.ui.samples.RequestFocusSample
      */
     fun requestFocus() {
-        @OptIn(ExperimentalComposeUiApi::class)
-        check(focusRequesterNodes.isNotEmpty()) { focusRequesterNotInitialized }
         // TODO(b/245755256): Add another API that returns a Boolean indicating
         //  whether requestFocus succeeded or not.
         @OptIn(ExperimentalComposeUiApi::class)
@@ -73,23 +76,20 @@
      * associated with this [FocusRequester].
      */
     @OptIn(ExperimentalComposeUiApi::class)
-    internal fun findFocusTarget(onFound: (FocusTargetModifierNode) -> Boolean): Boolean? {
-        return when (this) {
-            Cancel -> false
-            Default -> null
-            else -> {
-                var success: Boolean? = null
-                focusRequesterNodes.forEach { node ->
-                    node.visitChildren(Nodes.FocusTarget) {
-                        if (onFound(it)) {
-                            success = true
-                            return@forEach
-                        }
-                    }
+    internal fun findFocusTarget(onFound: (FocusTargetModifierNode) -> Boolean): Boolean {
+        check(this != Default) { invalidFocusRequesterInvocation }
+        check(this != Cancel) { invalidFocusRequesterInvocation }
+        check(focusRequesterNodes.isNotEmpty()) { focusRequesterNotInitialized }
+        var success = false
+        focusRequesterNodes.forEach { node ->
+            node.visitChildren(Nodes.FocusTarget) {
+                if (onFound(it)) {
+                    success = true
+                    return@forEach
                 }
-                success
             }
         }
+        return success
     }
 
     /**
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusTraversal.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusTraversal.kt
index 68a42ed..0420c19 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusTraversal.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusTraversal.kt
@@ -102,7 +102,7 @@
 ): Boolean {
     return when (focusDirection) {
         Next, Previous -> oneDimensionalFocusSearch(focusDirection, onFound)
-        Left, Right, Up, Down -> twoDimensionalFocusSearch(focusDirection, onFound)
+        Left, Right, Up, Down -> twoDimensionalFocusSearch(focusDirection, onFound) ?: false
         @OptIn(ExperimentalComposeUiApi::class)
         Enter -> {
             // we search among the children of the active item.
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusSearch.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusSearch.kt
index 2007a4c..ad9109f 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusSearch.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/TwoDimensionalFocusSearch.kt
@@ -23,6 +23,8 @@
 import androidx.compose.ui.focus.FocusDirection.Companion.Left
 import androidx.compose.ui.focus.FocusDirection.Companion.Right
 import androidx.compose.ui.focus.FocusDirection.Companion.Up
+import androidx.compose.ui.focus.FocusRequester.Companion.Cancel
+import androidx.compose.ui.focus.FocusRequester.Companion.Default
 import androidx.compose.ui.focus.FocusStateImpl.Active
 import androidx.compose.ui.focus.FocusStateImpl.ActiveParent
 import androidx.compose.ui.focus.FocusStateImpl.Captured
@@ -44,12 +46,16 @@
  *  of the children is currently focused, we start from that point and search in the specified
  *  [direction][FocusDirection]. If none of the children are currently focused, we pick the
  *  top-left or bottom right based on the specified [direction][FocusDirection].
+ *
+ *  @return The value of [onFound] if a [focusTarget] was found, false if no [focusTarget] was
+ *  found, and null if focus search was cancelled using [FocusRequester.Cancel] or if a custom
+ *  focus search destination didn't point to any [focusTarget].
  */
 @ExperimentalComposeUiApi
 internal fun FocusTargetModifierNode.twoDimensionalFocusSearch(
     direction: FocusDirection,
     onFound: (FocusTargetModifierNode) -> Boolean
-): Boolean {
+): Boolean? {
     when (focusStateImpl) {
         Inactive -> return if (fetchFocusProperties().canFocus) onFound.invoke(this) else false
         ActiveParent -> {
@@ -62,15 +68,16 @@
             when (focusedChild.focusStateImpl) {
 
                 ActiveParent -> {
-                    // If the focusedChild is an intermediate parent,
-                    // we continue searching among its children.
-                    if (focusedChild.twoDimensionalFocusSearch(direction, onFound)) return true
+                    // If the focusedChild is an intermediate parent, we search among its children.
+                    val found = focusedChild.twoDimensionalFocusSearch(direction, onFound)
+                    if (found != false) return found
 
                     // If we don't find a match, we exit this Parent.
                     // First check if this node has a custom focus exit.
                     focusedChild
-                        .fetchFocusProperties().exit(direction)
-                        .findFocusTarget(onFound)?.let { return it }
+                        .fetchFocusProperties().exit(direction).takeUnless { it == Default }?.let {
+                            return if (it == Cancel) null else it.findFocusTarget(onFound)
+                        }
 
                     // If we don't have a custom exit property,
                     // we search among the siblings of the parent.
@@ -106,7 +113,9 @@
 ): Boolean {
 
     // Check if a custom FocusEnter is specified.
-    fetchFocusProperties().enter(direction).findFocusTarget(onFound)?.let { return it }
+    fetchFocusProperties().enter(direction).takeUnless { it == Default }?.let {
+        return if (it == Cancel) false else it.findFocusTarget(onFound)
+    }
 
     val focusableChildren = MutableVector<FocusTargetModifierNode>()
     collectAccessibleChildren(focusableChildren)
@@ -179,7 +188,9 @@
         if (nextItem.fetchFocusProperties().canFocus) return onFound.invoke(nextItem)
 
         // If the result is deactivated, and the deactivated node has a custom Enter, we use it.
-        nextItem.fetchFocusProperties().enter(direction).findFocusTarget(onFound)?.let { return it }
+        nextItem.fetchFocusProperties().enter(direction).takeUnless { it == Default }?.let {
+            return if (it == Cancel) false else it.findFocusTarget(onFound)
+        }
 
         // If the result is deactivated, and there is no custom enter, we search among its children.
         if (nextItem.generateAndSearchChildren(focusedItem, direction, onFound)) return true
@@ -208,18 +219,18 @@
         }
 
         // If we encounter a deactivated child, we mimic a moveFocus(Enter).
-        when (val customEnter = it.fetchFocusProperties().enter(Enter)) {
+        it.fetchFocusProperties().enter(Enter).takeUnless { it == Default }?.let {
             // If the user declined a custom enter, omit this part of the tree.
-            FocusRequester.Cancel -> return@visitSubtreeIf false
-
-            // If there is no custom enter, we consider all the children.
-            FocusRequester.Default -> return@visitSubtreeIf true
-
-            else -> customEnter.focusRequesterNodes.forEach { node ->
-                node.collectAccessibleChildren(accessibleChildren)
+            if (it != Cancel) {
+                it.focusRequesterNodes.forEach { node ->
+                    node.collectAccessibleChildren(accessibleChildren)
+                }
             }
+            return@visitSubtreeIf false
         }
-        false
+
+        // If there is no custom enter, we consider all the children.
+        return@visitSubtreeIf true
     }
 }
 
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroidCommandDebouncingTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroidCommandDebouncingTest.kt
index 9de574d..ba426db 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroidCommandDebouncingTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroidCommandDebouncingTest.kt
@@ -19,6 +19,7 @@
 import android.view.View
 import android.view.inputmethod.ExtractedText
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.Executor
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.cancel
@@ -37,7 +38,8 @@
 
     private val view = mock<View>()
     private val inputMethodManager = TestInputMethodManager()
-    private val service = TextInputServiceAndroid(view, inputMethodManager)
+    private val executor = Executor { runnable -> scope.launch { runnable.run() } }
+    private val service = TextInputServiceAndroid(view, inputMethodManager, executor)
     private val dispatcher = StandardTestDispatcher()
     private val scope = TestScope(dispatcher + Job())
 
@@ -45,7 +47,6 @@
     fun setUp() {
         // Default the view to focused because when it's not focused commands should be ignored.
         whenever(view.isFocused).thenReturn(true)
-        scope.launch { service.textInputCommandEventLoop() }
     }
 
     @After
diff --git a/constraintlayout/constraintlayout-compose-lint/src/main/java/androidx/constraintlayout/compose/lint/ConstraintLayoutComposeIssueRegistry.kt b/constraintlayout/constraintlayout-compose-lint/src/main/java/androidx/constraintlayout/compose/lint/ConstraintLayoutComposeIssueRegistry.kt
index 13e6bed..f81e031 100644
--- a/constraintlayout/constraintlayout-compose-lint/src/main/java/androidx/constraintlayout/compose/lint/ConstraintLayoutComposeIssueRegistry.kt
+++ b/constraintlayout/constraintlayout-compose-lint/src/main/java/androidx/constraintlayout/compose/lint/ConstraintLayoutComposeIssueRegistry.kt
@@ -25,7 +25,7 @@
 private const val CL_COMPOSE_NEW_ISSUE = "new?component=323867&template=1023345"
 
 class ConstraintLayoutComposeIssueRegistry : IssueRegistry() {
-    override val api = 13
+    override val api = 14
 
     override val minApi = CURRENT_API
 
diff --git a/constraintlayout/constraintlayout-compose/api/current.txt b/constraintlayout/constraintlayout-compose/api/current.txt
index 305e1fb..b0e909f 100644
--- a/constraintlayout/constraintlayout-compose/api/current.txt
+++ b/constraintlayout/constraintlayout-compose/api/current.txt
@@ -138,8 +138,8 @@
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional int[] rowWeights, optional float verticalGap, optional float padding);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional float verticalGap, optional int[] rowWeights, optional float paddingHorizontal, optional float paddingVertical);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional int[] rowWeights, optional float verticalGap, optional float padding);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional float verticalGap, optional int[] rowWeights, optional float paddingHorizontal, optional float paddingVertical);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference![]? elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float padding, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
     method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference![]? elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float paddingHorizontal, optional float paddingVertical, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
@@ -160,8 +160,8 @@
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float offset);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
     method public final androidx.constraintlayout.compose.HorizontalChainReference createHorizontalChain(androidx.constraintlayout.compose.LayoutReference![] elements, optional androidx.constraintlayout.compose.ChainStyle chainStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional float horizontalGap, optional int[] columnWeights, optional float padding);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional float horizontalGap, optional int[] columnWeights, optional float paddingHorizontal, optional float paddingVertical);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional float horizontalGap, optional int[] columnWeights, optional float padding);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional float horizontalGap, optional int[] columnWeights, optional float paddingHorizontal, optional float paddingVertical);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.VerticalChainReference createVerticalChain(androidx.constraintlayout.compose.LayoutReference![] elements, optional androidx.constraintlayout.compose.ChainStyle chainStyle);
@@ -437,18 +437,6 @@
     enum_constant public static final androidx.constraintlayout.compose.MotionLayoutFlag FullMeasure;
   }
 
-  public final class MotionLayoutKt {
-  }
-
-  public final class MotionLayoutStateKt {
-  }
-
-  public final class MotionSceneKt {
-  }
-
-  public final class MotionSceneScopeKt {
-  }
-
   public final class State extends androidx.constraintlayout.core.state.State {
     ctor public State(androidx.compose.ui.unit.Density density);
     method public androidx.compose.ui.unit.Density getDensity();
@@ -466,12 +454,6 @@
     property public static final androidx.compose.ui.semantics.SemanticsPropertyKey<androidx.constraintlayout.compose.DesignInfoProvider> DesignInfoDataKey;
   }
 
-  public final class TransitionKt {
-  }
-
-  public final class TransitionScopeKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class VerticalAlign {
     field public static final androidx.constraintlayout.compose.VerticalAlign.Companion Companion;
   }
diff --git a/constraintlayout/constraintlayout-compose/api/public_plus_experimental_current.txt b/constraintlayout/constraintlayout-compose/api/public_plus_experimental_current.txt
index 03cccfe..fe6d261 100644
--- a/constraintlayout/constraintlayout-compose/api/public_plus_experimental_current.txt
+++ b/constraintlayout/constraintlayout-compose/api/public_plus_experimental_current.txt
@@ -173,8 +173,8 @@
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional int[] rowWeights, optional float verticalGap, optional float padding);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional float verticalGap, optional int[] rowWeights, optional float paddingHorizontal, optional float paddingVertical);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional int[] rowWeights, optional float verticalGap, optional float padding);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional float verticalGap, optional int[] rowWeights, optional float paddingHorizontal, optional float paddingVertical);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference![]? elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float padding, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
     method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference![]? elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float paddingHorizontal, optional float paddingVertical, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
@@ -195,8 +195,8 @@
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float offset);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
     method public final androidx.constraintlayout.compose.HorizontalChainReference createHorizontalChain(androidx.constraintlayout.compose.LayoutReference![] elements, optional androidx.constraintlayout.compose.ChainStyle chainStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional float horizontalGap, optional int[] columnWeights, optional float padding);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional float horizontalGap, optional int[] columnWeights, optional float paddingHorizontal, optional float paddingVertical);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional float horizontalGap, optional int[] columnWeights, optional float padding);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional float horizontalGap, optional int[] columnWeights, optional float paddingHorizontal, optional float paddingVertical);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.VerticalChainReference createVerticalChain(androidx.constraintlayout.compose.LayoutReference![] elements, optional androidx.constraintlayout.compose.ChainStyle chainStyle);
diff --git a/constraintlayout/constraintlayout-compose/api/restricted_current.txt b/constraintlayout/constraintlayout-compose/api/restricted_current.txt
index aad0717..75753a2 100644
--- a/constraintlayout/constraintlayout-compose/api/restricted_current.txt
+++ b/constraintlayout/constraintlayout-compose/api/restricted_current.txt
@@ -145,8 +145,8 @@
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional int[] rowWeights, optional float verticalGap, optional float padding);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional float verticalGap, optional int[] rowWeights, optional float paddingHorizontal, optional float paddingVertical);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional int[] rowWeights, optional float verticalGap, optional float padding);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional float verticalGap, optional int[] rowWeights, optional float paddingHorizontal, optional float paddingVertical);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference![]? elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float padding, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
     method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference![]? elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float paddingHorizontal, optional float paddingVertical, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
@@ -167,8 +167,8 @@
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float offset);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
     method public final androidx.constraintlayout.compose.HorizontalChainReference createHorizontalChain(androidx.constraintlayout.compose.LayoutReference![] elements, optional androidx.constraintlayout.compose.ChainStyle chainStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional float horizontalGap, optional int[] columnWeights, optional float padding);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional float horizontalGap, optional int[] columnWeights, optional float paddingHorizontal, optional float paddingVertical);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional float horizontalGap, optional int[] columnWeights, optional float padding);
+    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference![] elements, optional String spans, optional String skips, optional float horizontalGap, optional int[] columnWeights, optional float paddingHorizontal, optional float paddingVertical);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier(androidx.constraintlayout.compose.LayoutReference![] elements, optional float margin);
     method public final androidx.constraintlayout.compose.VerticalChainReference createVerticalChain(androidx.constraintlayout.compose.LayoutReference![] elements, optional androidx.constraintlayout.compose.ChainStyle chainStyle);
@@ -509,10 +509,6 @@
     method public void itemsWithProperties(int count, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super androidx.compose.runtime.State<androidx.constraintlayout.compose.MotionLayoutScope.MotionProperties>,kotlin.Unit> itemContent);
   }
 
-  public final class MotionDragHandlerKt {
-    method @kotlin.PublishedApi internal static inline androidx.compose.ui.Modifier motionPointerInput(androidx.compose.ui.Modifier, Object key, androidx.constraintlayout.compose.MotionProgress motionProgress, androidx.constraintlayout.compose.MotionMeasurer measurer);
-  }
-
   @kotlin.PublishedApi internal final class MotionDragState {
     ctor public MotionDragState(boolean isDragging, long dragAmount, long velocity);
     method public boolean component1();
@@ -581,9 +577,6 @@
     field @kotlin.PublishedApi internal final androidx.constraintlayout.compose.MotionProgress motionProgress;
   }
 
-  public final class MotionLayoutStateKt {
-  }
-
   @kotlin.PublishedApi internal final class MotionMeasurer extends androidx.constraintlayout.compose.Measurer {
     ctor public MotionMeasurer(androidx.compose.ui.unit.Density density);
     method public void clearConstraintSets();
@@ -609,12 +602,6 @@
     method public androidx.constraintlayout.compose.MotionProgress fromState(androidx.compose.runtime.State<java.lang.Float> progressState, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onUpdate);
   }
 
-  public final class MotionSceneKt {
-  }
-
-  public final class MotionSceneScopeKt {
-  }
-
   public final class State extends androidx.constraintlayout.core.state.State {
     ctor public State(androidx.compose.ui.unit.Density density);
     method public androidx.compose.ui.unit.Density getDensity();
@@ -653,12 +640,6 @@
   @kotlin.PublishedApi internal static final class TransitionImpl.Companion {
   }
 
-  public final class TransitionKt {
-  }
-
-  public final class TransitionScopeKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class VerticalAlign {
     field public static final androidx.constraintlayout.compose.VerticalAlign.Companion Companion;
   }
diff --git a/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/RowColumnDslTest.kt b/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/RowColumnDslTest.kt
index 79e7534..bf64550 100644
--- a/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/RowColumnDslTest.kt
+++ b/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/RowColumnDslTest.kt
@@ -57,12 +57,14 @@
     }
 
     @Test
-    fun testColumns() {
+    fun testColumn() {
         val rootSize = 200.dp
         val boxesCount = 4
         rule.setContent {
             ColumnComposableTest(
                 modifier = Modifier.size(rootSize),
+                gridSkips = "",
+                gridSpans = "",
                 boxesCount = boxesCount,
                 vGap = 0,
                 gridRowWeights = intArrayOf(),
@@ -87,12 +89,80 @@
     }
 
     @Test
-    fun testRows() {
+    fun testColumnSkips() {
+        val rootSize = 200.dp
+        val boxesCount = 4
+        rule.setContent {
+            ColumnComposableTest(
+                modifier = Modifier.size(rootSize),
+                gridSkips = "1:2",
+                gridSpans = "",
+                boxesCount = boxesCount,
+                vGap = 0,
+                gridRowWeights = intArrayOf(),
+            )
+        }
+        var expectedX = 0.dp
+        var expectedY = 0.dp
+
+        // 10.dp is the size of a singular box
+        val hGapSize = (rootSize - 10.dp) / 2f
+        val vGapSize = (rootSize - (10.dp * 6f)) / ((boxesCount + 2) * 2f)
+        rule.waitForIdle()
+        expectedX += hGapSize
+        expectedY += vGapSize
+        rule.onNodeWithTag("box0").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += vGapSize + vGapSize + 10.dp
+        expectedY += vGapSize + vGapSize + 10.dp
+        expectedY += vGapSize + vGapSize + 10.dp
+        rule.onNodeWithTag("box1").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += vGapSize + vGapSize + 10.dp
+        rule.onNodeWithTag("box2").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += vGapSize + vGapSize + 10.dp
+        rule.onNodeWithTag("box3").assertPositionInRootIsEqualTo(expectedX, expectedY)
+    }
+
+    @Test
+    fun testColumnSpans() {
+        val rootSize = 200.dp
+        val boxesCount = 4
+        rule.setContent {
+            ColumnComposableTest(
+                modifier = Modifier.size(rootSize),
+                gridSkips = "",
+                gridSpans = "0:2",
+                boxesCount = boxesCount,
+                vGap = 0,
+                gridRowWeights = intArrayOf(),
+            )
+        }
+
+        // 10.dp is the size of a singular box
+        val hGapSize = (rootSize - 10.dp) / 2f
+        val vGapSize = (rootSize - (10.dp * 5f)) / ((boxesCount + 1) * 2f)
+        val rowSize = 10.dp + vGapSize * 2
+        var expectedX = 0.dp
+        var expectedY = rowSize - 5.dp
+
+        expectedX += hGapSize
+        rule.onNodeWithTag("box0").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += expectedY + vGapSize + 10.dp
+        rule.onNodeWithTag("box1").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += vGapSize + vGapSize + 10.dp
+        rule.onNodeWithTag("box2").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += vGapSize + vGapSize + 10.dp
+        rule.onNodeWithTag("box3").assertPositionInRootIsEqualTo(expectedX, expectedY)
+    }
+
+    @Test
+    fun testRow() {
         val rootSize = 200.dp
         val boxesCount = 4
         rule.setContent {
             RowComposableTest(
                 modifier = Modifier.size(rootSize),
+                gridSkips = "",
+                gridSpans = "",
                 boxesCount = boxesCount,
                 hGap = 0,
                 gridColumnWeights = intArrayOf()
@@ -116,9 +186,78 @@
         rule.onNodeWithTag("box3").assertPositionInRootIsEqualTo(expectedX, expectedY)
     }
 
+    @Test
+    fun testRowSkips() {
+        val rootSize = 200.dp
+        val boxesCount = 4
+        rule.setContent {
+            RowComposableTest(
+                modifier = Modifier.size(rootSize),
+                gridSkips = "1:2",
+                gridSpans = "",
+                boxesCount = boxesCount,
+                hGap = 0,
+                gridColumnWeights = intArrayOf()
+            )
+        }
+        var expectedX = 0.dp
+        var expectedY = 0.dp
+
+        // 10.dp is the size of a singular box
+        val hGapSize = (rootSize - (10.dp * 6f)) / ((boxesCount + 2) * 2f)
+        val vGapSize = (rootSize - 10.dp) / 2f
+        rule.waitForIdle()
+        expectedX += hGapSize
+        expectedY += vGapSize
+        rule.onNodeWithTag("box0").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += hGapSize + hGapSize + 10.dp
+        expectedX += hGapSize + hGapSize + 10.dp
+        expectedX += hGapSize + hGapSize + 10.dp
+        rule.onNodeWithTag("box1").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += hGapSize + hGapSize + 10.dp
+        rule.onNodeWithTag("box2").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += hGapSize + hGapSize + 10.dp
+        rule.onNodeWithTag("box3").assertPositionInRootIsEqualTo(expectedX, expectedY)
+    }
+
+    @Test
+    fun testRowSpans() {
+        val rootSize = 200.dp
+        val boxesCount = 4
+        rule.setContent {
+            RowComposableTest(
+                modifier = Modifier.size(rootSize),
+                gridSkips = "",
+                gridSpans = "0:2",
+                boxesCount = boxesCount,
+                hGap = 0,
+                gridColumnWeights = intArrayOf()
+            )
+        }
+
+        // 10.dp is the size of a singular box
+        val hGapSize = (rootSize - (10.dp * 5f)) / ((boxesCount + 1) * 2f)
+        val vGapSize = (rootSize - 10.dp) / 2f
+        val columnSize = 10.dp + hGapSize * 2
+        var expectedX = columnSize - 5.dp
+        var expectedY = 0.dp
+
+        expectedY += vGapSize
+
+        rule.onNodeWithTag("box0").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += expectedX + hGapSize + 10.dp
+        rule.onNodeWithTag("box1").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += hGapSize + hGapSize + 10.dp
+        rule.onNodeWithTag("box2").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += hGapSize + hGapSize + 10.dp
+        rule.onNodeWithTag("box3").assertPositionInRootIsEqualTo(expectedX, expectedY)
+    }
+
     @Composable
     private fun ColumnComposableTest(
         modifier: Modifier = Modifier,
+        gridSkips: String,
+        gridSpans: String,
         gridRowWeights: IntArray,
         boxesCount: Int,
         vGap: Int,
@@ -133,6 +272,8 @@
 
                 val g1 = createColumn(
                     elements = elem.toTypedArray(),
+                    skips = gridSkips,
+                    spans = gridSpans,
                     verticalGap = vGap.dp,
                     rowWeights = gridRowWeights,
                 )
@@ -159,6 +300,8 @@
     @Composable
     private fun RowComposableTest(
         modifier: Modifier = Modifier,
+        gridSkips: String,
+        gridSpans: String,
         gridColumnWeights: IntArray,
         boxesCount: Int,
         hGap: Int,
@@ -174,6 +317,8 @@
                 val g1 = createRow(
                     elements = elem.toTypedArray(),
                     horizontalGap = hGap.dp,
+                    skips = gridSkips,
+                    spans = gridSpans,
                     columnWeights = gridColumnWeights,
                 )
                 constrain(g1) {
diff --git a/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/RowColumnTest.kt b/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/RowColumnTest.kt
index 3dee3b0..85979d4 100644
--- a/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/RowColumnTest.kt
+++ b/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/RowColumnTest.kt
@@ -57,7 +57,7 @@
     }
 
     @Test
-    fun testColumns() {
+    fun testColumn() {
         val rootSize = 200.dp
         val boxesCount = 4
         rule.setContent {
@@ -95,7 +95,84 @@
     }
 
     @Test
-    fun testRows() {
+    fun testColumnSkips() {
+        val rootSize = 200.dp
+        val boxesCount = 4
+        rule.setContent {
+            RowColumnComposableTest(
+                modifier = Modifier.size(rootSize),
+                type = "'column'",
+                width = "'parent'",
+                height = "'parent'",
+                boxesCount = boxesCount,
+                orientation = 0,
+                hGap = 0,
+                vGap = 0,
+                spans = "''",
+                skips = "'1:2'",
+                rowWeights = "''",
+                columnWeights = "''"
+            )
+        }
+        var expectedX = 0.dp
+        var expectedY = 0.dp
+
+        // 10.dp is the size of a singular box
+        val hGapSize = (rootSize - 10.dp) / 2f
+        val vGapSize = (rootSize - (10.dp * 6f)) / ((boxesCount + 2) * 2f)
+        rule.waitForIdle()
+        expectedX += hGapSize
+        expectedY += vGapSize
+        rule.onNodeWithTag("box0").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += vGapSize + vGapSize + 10.dp
+        expectedY += vGapSize + vGapSize + 10.dp
+        expectedY += vGapSize + vGapSize + 10.dp
+        rule.onNodeWithTag("box1").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += vGapSize + vGapSize + 10.dp
+        rule.onNodeWithTag("box2").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += vGapSize + vGapSize + 10.dp
+        rule.onNodeWithTag("box3").assertPositionInRootIsEqualTo(expectedX, expectedY)
+    }
+
+    @Test
+    fun testColumnSpans() {
+        val rootSize = 200.dp
+        val boxesCount = 4
+        rule.setContent {
+            RowColumnComposableTest(
+                modifier = Modifier.size(rootSize),
+                type = "'column'",
+                width = "'parent'",
+                height = "'parent'",
+                boxesCount = boxesCount,
+                orientation = 0,
+                hGap = 0,
+                vGap = 0,
+                spans = "'0:2'",
+                skips = "''",
+                rowWeights = "''",
+                columnWeights = "''"
+            )
+        }
+        // 10.dp is the size of a singular box
+        val hGapSize = (rootSize - 10.dp) / 2f
+        val vGapSize = (rootSize - (10.dp * 5f)) / ((boxesCount + 1) * 2f)
+        val rowSize = 10.dp + vGapSize * 2
+        var expectedX = 0.dp
+        var expectedY = rowSize - 5.dp
+
+        expectedX += hGapSize
+        rule.onNodeWithTag("box0").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += expectedY + vGapSize + 10.dp
+        rule.onNodeWithTag("box1").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += vGapSize + vGapSize + 10.dp
+        rule.onNodeWithTag("box2").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedY += vGapSize + vGapSize + 10.dp
+        rule.onNodeWithTag("box3").assertPositionInRootIsEqualTo(expectedX, expectedY)
+    }
+
+    @Test
+    fun testRow() {
         val rootSize = 200.dp
         val boxesCount = 4
         rule.setContent {
@@ -132,6 +209,84 @@
         rule.onNodeWithTag("box3").assertPositionInRootIsEqualTo(expectedX, expectedY)
     }
 
+    @Test
+    fun testRowSkips() {
+        val rootSize = 200.dp
+        val boxesCount = 4
+        rule.setContent {
+            RowColumnComposableTest(
+                modifier = Modifier.size(rootSize),
+                type = "'row'",
+                width = "'parent'",
+                height = "'parent'",
+                boxesCount = boxesCount,
+                orientation = 0,
+                hGap = 0,
+                vGap = 0,
+                spans = "''",
+                skips = "'1:2'",
+                rowWeights = "''",
+                columnWeights = "''"
+            )
+        }
+        var expectedX = 0.dp
+        var expectedY = 0.dp
+
+        // 10.dp is the size of a singular box
+        val hGapSize = (rootSize - (10.dp * 6f)) / ((boxesCount + 2) * 2f)
+        val vGapSize = (rootSize - 10.dp) / 2f
+        rule.waitForIdle()
+        expectedX += hGapSize
+        expectedY += vGapSize
+        rule.onNodeWithTag("box0").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += hGapSize + hGapSize + 10.dp
+        expectedX += hGapSize + hGapSize + 10.dp
+        expectedX += hGapSize + hGapSize + 10.dp
+        rule.onNodeWithTag("box1").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += hGapSize + hGapSize + 10.dp
+        rule.onNodeWithTag("box2").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += hGapSize + hGapSize + 10.dp
+        rule.onNodeWithTag("box3").assertPositionInRootIsEqualTo(expectedX, expectedY)
+    }
+
+    @Test
+    fun testRowSpans() {
+        val rootSize = 200.dp
+        val boxesCount = 4
+        rule.setContent {
+            RowColumnComposableTest(
+                modifier = Modifier.size(rootSize),
+                type = "'row'",
+                width = "'parent'",
+                height = "'parent'",
+                boxesCount = boxesCount,
+                orientation = 0,
+                hGap = 0,
+                vGap = 0,
+                spans = "'0:2'",
+                skips = "''",
+                rowWeights = "''",
+                columnWeights = "''"
+            )
+        }
+        // 10.dp is the size of a singular box
+        val hGapSize = (rootSize - (10.dp * 5f)) / ((boxesCount + 1) * 2f)
+        val vGapSize = (rootSize - 10.dp) / 2f
+        val columnSize = 10.dp + hGapSize * 2
+        var expectedX = columnSize - 5.dp
+        var expectedY = 0.dp
+
+        expectedY += vGapSize
+
+        rule.onNodeWithTag("box0").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += expectedX + hGapSize + 10.dp
+        rule.onNodeWithTag("box1").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += hGapSize + hGapSize + 10.dp
+        rule.onNodeWithTag("box2").assertPositionInRootIsEqualTo(expectedX, expectedY)
+        expectedX += hGapSize + hGapSize + 10.dp
+        rule.onNodeWithTag("box3").assertPositionInRootIsEqualTo(expectedX, expectedY)
+    }
+
     @Composable
     private fun RowColumnComposableTest(
         modifier: Modifier = Modifier,
diff --git a/constraintlayout/constraintlayout-compose/src/androidMain/kotlin/androidx/constraintlayout/compose/ConstraintLayoutBaseScope.kt b/constraintlayout/constraintlayout-compose/src/androidMain/kotlin/androidx/constraintlayout/compose/ConstraintLayoutBaseScope.kt
index 02a2026..c3912d6 100644
--- a/constraintlayout/constraintlayout-compose/src/androidMain/kotlin/androidx/constraintlayout/compose/ConstraintLayoutBaseScope.kt
+++ b/constraintlayout/constraintlayout-compose/src/androidMain/kotlin/androidx/constraintlayout/compose/ConstraintLayoutBaseScope.kt
@@ -703,6 +703,8 @@
      *      val weights = intArrayOf(3, 3, 2, 2, 1)
      *      val g1 = createRow(
      *          a, b, c, d, e,
+     *          spans = "1:2"
+     *          skips = "1:1,3:2",
      *          horizontalGap = 10.dp,
      *          columnWeights = weights,
      *          padding = 10.dp,
@@ -725,12 +727,16 @@
      *    }
      *
      * @param elements [LayoutReference]s to be laid out by the Grid helper
+     * @param spans specify area(s) in a Row to be spanned - format: positionxsize
+     * @param skips specify area(s) in a Row to be skipped - format: positionxsize
      * @param horizontalGap defines the gap between views in the x axis
      * @param columnWeights defines the weight of each column
      * @param padding sets padding around the content
      */
     fun createRow(
         vararg elements: LayoutReference,
+        spans: String = "",
+        skips: String = "",
         horizontalGap: Dp = 0.dp,
         columnWeights: IntArray = intArrayOf(),
         padding: Dp = 0.dp,
@@ -738,6 +744,8 @@
         return createGrid(
             elements = elements,
             rows = 1,
+            spans = spans,
+            skips = skips,
             horizontalGap = horizontalGap,
             columnWeights = columnWeights,
             paddingLeft = padding,
@@ -760,6 +768,8 @@
      *      val weights = intArrayOf(3, 3, 2, 2, 1)
      *      val g1 = createRow(
      *          a, b, c, d, e,
+     *          spans = "1:2"
+     *          skips = "1:1,3:2",
      *          horizontalGap = 10.dp,
      *          columnWeights = weights,
      *          paddingHorizontal = 10.dp,
@@ -783,6 +793,8 @@
      *   }
      *
      * @param elements [LayoutReference]s to be laid out by the Grid helper
+     * @param spans specify area(s) in a Row to be spanned - format: positionxsize
+     * @param skips specify area(s) in a Row to be skipped - format: positionxsize
      * @param horizontalGap defines the gap between views in the y axis
      * @param columnWeights defines the weight of each column
      * @param paddingHorizontal sets paddingLeft and paddingRight of the content
@@ -790,6 +802,8 @@
      */
     fun createRow(
         vararg elements: LayoutReference,
+        spans: String = "",
+        skips: String = "",
         horizontalGap: Dp = 0.dp,
         columnWeights: IntArray = intArrayOf(),
         paddingHorizontal: Dp = 0.dp,
@@ -798,6 +812,8 @@
         return createGrid(
             elements = elements,
             rows = 1,
+            spans = spans,
+            skips = skips,
             horizontalGap = horizontalGap,
             columnWeights = columnWeights,
             paddingLeft = paddingHorizontal,
@@ -820,6 +836,8 @@
      *      val weights = intArrayOf(3, 3, 2, 2, 1)
      *      val g1 = createColumn(
      *          a, b, c, d, e,
+     *          spans = "1:2"
+     *          skips = "1:1,3:2",
      *          verticalGap = 10.dp,
      *          rowWeights = weights,
      *          padding = 10.dp,
@@ -842,12 +860,16 @@
      *    }
      *
      * @param elements [LayoutReference]s to be laid out by the Grid helper
+     * @param spans specify area(s) in a Column to be spanned - format: positionxsize
+     * @param skips specify area(s) in a Column to be skipped - format: positionxsize
      * @param verticalGap defines the gap between views in the y axis
      * @param rowWeights defines the weight of each row
      * @param padding sets padding around the content
      */
     fun createColumn(
         vararg elements: LayoutReference,
+        spans: String = "",
+        skips: String = "",
         rowWeights: IntArray = intArrayOf(),
         verticalGap: Dp = 0.dp,
         padding: Dp = 0.dp,
@@ -855,6 +877,8 @@
         return createGrid(
             elements = elements,
             columns = 1,
+            spans = spans,
+            skips = skips,
             verticalGap = verticalGap,
             rowWeights = rowWeights,
             paddingLeft = padding,
@@ -877,6 +901,8 @@
      *      val weights = intArrayOf(3, 3, 2, 2, 1)
      *      val g1 = createColumn(
      *          a, b, c, d, e,
+     *          spans = "1:2"
+     *          skips = "1:1,3:2",
      *          verticalGap = 10.dp,
      *          rowWeights = weights,
      *          padding = 10.dp,
@@ -899,6 +925,8 @@
      *    }
      *
      * @param elements [LayoutReference]s to be laid out by the Grid helper
+     * @param spans specify area(s) in a Column to be spanned - format: positionxsize
+     * @param skips specify area(s) in a Column to be skipped - format: positionxsize
      * @param verticalGap defines the gap between views in the y axis
      * @param rowWeights defines the weight of each row
      * @param paddingHorizontal sets paddingLeft and paddingRight of the content
@@ -906,6 +934,8 @@
      */
     fun createColumn(
         vararg elements: LayoutReference,
+        spans: String = "",
+        skips: String = "",
         verticalGap: Dp = 0.dp,
         rowWeights: IntArray = intArrayOf(),
         paddingHorizontal: Dp = 0.dp,
@@ -914,6 +944,8 @@
         return createGrid(
             elements = elements,
             columns = 1,
+            spans = spans,
+            skips = skips,
             verticalGap = verticalGap,
             rowWeights = rowWeights,
             paddingLeft = paddingHorizontal,
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintSetParser.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintSetParser.java
index ef32159..eb03ed5 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintSetParser.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintSetParser.java
@@ -979,13 +979,13 @@
                     break;
                 case "spans":
                     String spans = element.get(param).content();
-                    if (spans != null && spans.contains("x") && spans.contains(":")) {
+                    if (spans != null && spans.contains(":")) {
                         grid.setSpans(spans);
                     }
                     break;
                 case "skips":
                     String skips = element.get(param).content();
-                    if (skips != null && skips.contains("x") && skips.contains(":")) {
+                    if (skips != null && skips.contains(":")) {
                         grid.setSkips(skips);
                     }
                     break;
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/utils/GridCore.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/utils/GridCore.java
index 5cbbe55..7f1153f 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/utils/GridCore.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/utils/GridCore.java
@@ -51,6 +51,11 @@
     private ConstraintWidget[] mBoxWidgets;
 
     /**
+     * Check if skips/spans of a Row or a Columns is handled
+     */
+    private boolean mExtraSpaceHandled = false;
+
+    /**
      * number of rows of the grid
      */
     private int mRows;
@@ -176,7 +181,7 @@
         if (mSpans != null && mSpans.equals(spans.toString())) {
             return;
         }
-
+        mExtraSpaceHandled = false;
         mSpans = spans.toString();
     }
 
@@ -189,7 +194,7 @@
         if (mSkips != null && mSkips.equals(skips)) {
             return;
         }
-
+        mExtraSpaceHandled = false;
         mSkips = skips;
 
     }
@@ -420,20 +425,25 @@
         }
 
         mNextAvailableIndex = 0;
-        createBoxes();
 
         if (mSkips != null && !mSkips.trim().isEmpty()) {
-            int[][] mSkips = parseSpans(this.mSkips);
+            int[][] mSkips = parseSpans(this.mSkips, false);
             if (mSkips != null) {
                 handleSkips(mSkips);
             }
         }
 
+        int[][] parsedSpans = null;
         if (mSpans != null && !mSpans.trim().isEmpty()) {
-            int[][] mSpans = parseSpans(this.mSpans);
-            if (mSpans != null) {
-                handleSpans(mSpans);
-            }
+            parsedSpans = parseSpans(this.mSpans, true);
+        }
+
+        // Need to create boxes before handleSpans since the spanned widgets would be
+        // constrained in this step.
+        createBoxes();
+
+        if (parsedSpans != null) {
+            handleSpans(parsedSpans);
         }
     }
 
@@ -788,21 +798,55 @@
      * col_span- the number of columns to span
      *
      * @param str string format of skips or spans
+     * @param isSpans whether is spans to be parsed (it is skips if not)
      * @return a int matrix that contains skip information.
      */
-    private int[][] parseSpans(String str) {
+    private int[][] parseSpans(String str, boolean isSpans) {
         try {
+            int extraRows = 0;
+            int extraColumns = 0;
             String[] spans = str.split(",");
             int[][] spanMatrix = new int[spans.length][3];
-
             String[] indexAndSpan;
-            String[] rowAndCol;
-            for (int i = 0; i < spans.length; i++) {
-                indexAndSpan = spans[i].trim().split(":");
-                rowAndCol = indexAndSpan[1].split("x");
-                spanMatrix[i][0] = Integer.parseInt(indexAndSpan[0]);
-                spanMatrix[i][1] = Integer.parseInt(rowAndCol[0]);
-                spanMatrix[i][2] = Integer.parseInt(rowAndCol[1]);
+            if (mRows == 1 || mColumns == 1) {
+                for (int i = 0; i < spans.length; i++) {
+                    indexAndSpan = spans[i].trim().split(":");
+                    spanMatrix[i][0] = Integer.parseInt(indexAndSpan[0]);
+                    spanMatrix[i][1] = 1;
+                    spanMatrix[i][2] = 1;
+
+                    if (mColumns == 1) {
+                        spanMatrix[i][1] = Integer.parseInt(indexAndSpan[1]);
+                        extraRows += spanMatrix[i][1];
+                        if (isSpans) {
+                            extraRows--;
+                        }
+                    }
+                    if (mRows == 1) {
+                        spanMatrix[i][2] = Integer.parseInt(indexAndSpan[1]);
+                        extraColumns += spanMatrix[i][2];
+                        if (isSpans) {
+                            extraColumns--;
+                        }
+                    }
+                }
+
+                if (extraRows != 0 && !mExtraSpaceHandled) {
+                    this.setRows(mRows + extraRows);
+                }
+                if (extraColumns != 0 && !mExtraSpaceHandled) {
+                    this.setColumns(mColumns + extraColumns);
+                }
+                mExtraSpaceHandled = true;
+            } else {
+                String[] rowAndCol;
+                for (int i = 0; i < spans.length; i++) {
+                    indexAndSpan = spans[i].trim().split(":");
+                    rowAndCol = indexAndSpan[1].split("x");
+                    spanMatrix[i][0] = Integer.parseInt(indexAndSpan[0]);
+                    spanMatrix[i][1] = Integer.parseInt(rowAndCol[0]);
+                    spanMatrix[i][2] = Integer.parseInt(rowAndCol[1]);
+                }
             }
             return spanMatrix;
         } catch (Exception e) {
@@ -834,14 +878,14 @@
         mNextAvailableIndex = 0;
 
         if (mSkips != null && !mSkips.trim().isEmpty()) {
-            int[][] mSkips = parseSpans(this.mSkips);
+            int[][] mSkips = parseSpans(this.mSkips, false);
             if (mSkips != null) {
                 handleSkips(mSkips);
             }
         }
 
         if (mSpans != null && !mSpans.trim().isEmpty()) {
-            int[][] mSpans = parseSpans(this.mSpans);
+            int[][] mSpans = parseSpans(this.mSpans, true);
             if (mSpans != null) {
                 handleSpans(mSpans);
             }
diff --git a/core/core/api/current.txt b/core/core/api/current.txt
index 3f5d92d..5033a53 100644
--- a/core/core/api/current.txt
+++ b/core/core/api/current.txt
@@ -467,6 +467,7 @@
     ctor public NotificationCompat.BigPictureStyle();
     ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.Bitmap?);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.Bitmap?);
     method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle setBigContentTitle(CharSequence?);
diff --git a/core/core/api/public_plus_experimental_current.txt b/core/core/api/public_plus_experimental_current.txt
index 9df9106..2b431b6 100644
--- a/core/core/api/public_plus_experimental_current.txt
+++ b/core/core/api/public_plus_experimental_current.txt
@@ -467,6 +467,7 @@
     ctor public NotificationCompat.BigPictureStyle();
     ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.Bitmap?);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.Bitmap?);
     method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle setBigContentTitle(CharSequence?);
diff --git a/core/core/api/restricted_current.txt b/core/core/api/restricted_current.txt
index 51353767..9556806 100644
--- a/core/core/api/restricted_current.txt
+++ b/core/core/api/restricted_current.txt
@@ -518,6 +518,7 @@
     ctor public NotificationCompat.BigPictureStyle();
     ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.Bitmap?);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.Bitmap?);
     method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.drawable.Icon?);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.drawable.IconCompat? getPictureIcon(android.os.Bundle?);
diff --git a/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java b/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java
index 4665258..520a252 100644
--- a/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java
@@ -1411,7 +1411,7 @@
                 .setSmallIcon(1)
                 .setStyle(new NotificationCompat.BigPictureStyle()
                         .bigPicture(bitmap)
-                        .bigLargeIcon(null)
+                        .bigLargeIcon((Bitmap) null)
                         .setBigContentTitle("Big Content Title")
                         .setSummaryText("Summary Text"))
                 .build();
@@ -1424,6 +1424,52 @@
         }
     }
 
+    @SdkSuppress(minSdkVersion = 23)
+    @Test
+    public void testBigPictureStyle_withIconNullBigLargeIcon() {
+        Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(),
+                R.drawable.notification_bg_low_pressed);
+        Notification n = new NotificationCompat.Builder(mContext, "channelId")
+                .setSmallIcon(1)
+                .setStyle(new NotificationCompat.BigPictureStyle()
+                        .bigPicture(bitmap)
+                        .bigLargeIcon((Icon) null)
+                        .setBigContentTitle("Big Content Title")
+                        .setSummaryText("Summary Text"))
+                .build();
+        Bundle extras = NotificationCompat.getExtras(n);
+        assertNotNull(extras);
+        assertTrue(extras.containsKey(NotificationCompat.EXTRA_LARGE_ICON_BIG));
+        assertNull(extras.get(NotificationCompat.EXTRA_LARGE_ICON_BIG));
+    }
+
+    @SdkSuppress(minSdkVersion = 23)
+    @Test
+    public void testBigPictureStyle_withIconBigLargeIcon() {
+        Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(),
+                R.drawable.notification_bg_low_pressed);
+        IconCompat iconCompat = IconCompat.createWithResource(mContext, R.drawable.ic_call_decline);
+        Icon icon = iconCompat.toIcon(mContext);
+
+        Notification n = new NotificationCompat.Builder(mContext, "channelId")
+                .setSmallIcon(1)
+                .setStyle(new NotificationCompat.BigPictureStyle()
+                        .bigPicture(bitmap)
+                        .bigLargeIcon(icon)
+                        .setBigContentTitle("Big Content Title")
+                        .setSummaryText("Summary Text"))
+                .build();
+        Bundle extras = NotificationCompat.getExtras(n);
+        assertNotNull(extras);
+        assertTrue(extras.containsKey(NotificationCompat.EXTRA_LARGE_ICON_BIG));
+        assertNotNull(extras.get(NotificationCompat.EXTRA_LARGE_ICON_BIG));
+
+        Icon recoveredIcon = extras.getParcelable(NotificationCompat.EXTRA_LARGE_ICON_BIG);
+        if (Build.VERSION.SDK_INT >= 28) {
+            assertEquals(icon.getResId(), recoveredIcon.getResId());
+        }
+    }
+
     @SdkSuppress(minSdkVersion = 31)
     @Test
     public void testBigPictureStyle_encodesAndRecoversSetContentDescription() {
@@ -2546,9 +2592,9 @@
 
         NotificationCompat.Builder originalBuilder =
                 new NotificationCompat.Builder(mContext, "test id")
-                .setSmallIcon(1)
-                .setContentTitle("test title")
-                .setStyle(callStyle);
+                        .setSmallIcon(1)
+                        .setContentTitle("test title")
+                        .setStyle(callStyle);
 
         Notification notification = originalBuilder.build();
 
diff --git a/core/core/src/androidTest/java/androidx/core/content/FileProviderTest.java b/core/core/src/androidTest/java/androidx/core/content/FileProviderTest.java
index 9de302e..36ef9c7 100644
--- a/core/core/src/androidTest/java/androidx/core/content/FileProviderTest.java
+++ b/core/core/src/androidTest/java/androidx/core/content/FileProviderTest.java
@@ -45,6 +45,7 @@
 import org.junit.runner.RunWith;
 
 import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
@@ -485,7 +486,7 @@
     /**
      * Closes 'closeable', ignoring any checked exceptions. Does nothing if 'closeable' is null.
      */
-    private static void closeQuietly(AutoCloseable closeable) {
+    private static void closeQuietly(Closeable closeable) {
         if (closeable != null) {
             try {
                 closeable.close();
diff --git a/core/core/src/main/java/androidx/core/app/NotificationCompat.java b/core/core/src/main/java/androidx/core/app/NotificationCompat.java
index 4d30246..679e8e0 100644
--- a/core/core/src/main/java/androidx/core/app/NotificationCompat.java
+++ b/core/core/src/main/java/androidx/core/app/NotificationCompat.java
@@ -2497,7 +2497,7 @@
          * this method to explicitly request deferred display.</p>
          *
          * This method has no effect when running on versions prior to
-          * {@link android.os.Build.VERSION_CODES#S}.
+         * {@link android.os.Build.VERSION_CODES#S}.
          */
         @SuppressWarnings("MissingGetterMatchingBuilder") // no underlying getter in platform API
         @NonNull
@@ -3363,6 +3363,16 @@
         }
 
         /**
+         * Override the large icon when the big notification is shown.
+         */
+        @RequiresApi(23)
+        public @NonNull BigPictureStyle bigLargeIcon(@Nullable Icon i) {
+            mBigLargeIcon = i == null ? null : IconCompat.createFromIcon(i);
+            mBigLargeIconSet = true;
+            return this;
+        }
+
+        /**
          * @hide
          */
         @RestrictTo(LIBRARY_GROUP_PREFIX)
@@ -4954,7 +4964,7 @@
                     && extras.containsKey(EXTRA_CALL_PERSON)) {
                 mPerson = Person.fromAndroidPerson(
                         (android.app.Person)
-                        extras.getParcelable(EXTRA_CALL_PERSON));
+                                extras.getParcelable(EXTRA_CALL_PERSON));
             } else if (extras.containsKey(EXTRA_CALL_PERSON_COMPAT)) {
                 mPerson = Person.fromBundle(extras.getBundle(EXTRA_CALL_PERSON_COMPAT));
             }
@@ -5286,7 +5296,7 @@
                 }
                 actionBuilder =
                         Api20Impl.createActionBuilder(iconResId, actionCompat.getTitle(),
-                        actionCompat.getActionIntent());
+                                actionCompat.getActionIntent());
             }
             Bundle actionExtras;
             if (actionCompat.getExtras() != null) {
diff --git a/development/update_studio.sh b/development/update_studio.sh
index 187a9d4..d394214 100755
--- a/development/update_studio.sh
+++ b/development/update_studio.sh
@@ -1,9 +1,24 @@
 #!/bin/bash
+
+function echoAndDo() {
+  echo "$@"
+  eval "$@"
+}
+
 # Get versions
-AGP_VERSION=${1:-8.0.0-alpha07}
-STUDIO_VERSION_STRING=${2:-"Android Studio Flamingo (2022.2.1) Canary 7"}
-STUDIO_IFRAME_LINK=`curl "https://developer.android.com/studio/archive.html" | grep iframe | sed "s/.*src=\"\([a-zA-Z0-9\/\._]*\)\".*/https:\/\/android-dot-devsite-v2-prod.appspot.com\1/g"`
-STUDIO_LINK=`curl -s $STUDIO_IFRAME_LINK | grep -C30 "$STUDIO_VERSION_STRING" | grep Linux | tail -n 1 | sed 's/.*a href="\(.*\).*"/\1/g'`
+echo Getting Studio version and link
+AGP_VERSION=${1:-8.1.0-alpha03}
+STUDIO_VERSION_STRING=${2:-"Android Studio Giraffe | 2022.3.1 Canary 3"}
+STUDIO_IFRAME_LINK=`curl "https://developer.android.com/studio/archive.html" | grep "<iframe " | sed "s/.* src=\"\([^\"]*\)\".*/\1/g"`
+echo iframe link $STUDIO_IFRAME_LINK
+STUDIO_IFRAME_REDIRECT=`curl -s $STUDIO_IFRAME_LINK | grep href | sed 's/.*href="\([^"]*\)".*/\1/g'`
+echo iframe redirect $STUDIO_IFRAME_REDIRECT
+STUDIO_LINK=`curl -s $STUDIO_IFRAME_REDIRECT | grep -C30 "$STUDIO_VERSION_STRING" | grep Linux | tail -n 1 | sed 's/.*a href="\(.*\).*"/\1/g' | sed 's/>.*//'`
+echo STUDIO_LINK: $STUDIO_LINK
+if [ "$STUDIO_LINK" == "" ]; then
+  echo "Error: STUDIO_LINK must not be empty. Open this script and look for parsing errors. Does studio version '$STUDIO_VERSION_STRING' exist?"
+  exit 1
+fi
 STUDIO_VERSION=`echo $STUDIO_LINK | sed "s/.*ide-zips\/\(.*\)\/android-studio-.*/\1/g"`
 
 # Update AGP
@@ -22,7 +37,8 @@
 ARTIFACTS_TO_DOWNLOAD+="com.android.tools.lint:lint-gradle:$LINT_VERSION,"
 ARTIFACTS_TO_DOWNLOAD+="com.android.tools:ninepatch:$LINT_VERSION,"
 
-# Update studio_versions.properties
+# Update libs.versions.toml
+echo Updating dependency versions
 sed -i "s/androidGradlePlugin = .*/androidGradlePlugin = \"$AGP_VERSION\"/g" gradle/libs.versions.toml
 sed -i "s/androidLint = \".*/androidLint = \"$LINT_VERSION\"/g" gradle/libs.versions.toml
 sed -i "s/androidStudio = .*/androidStudio = \"$STUDIO_VERSION\"/g" gradle/libs.versions.toml
@@ -44,4 +60,4 @@
 ARTIFACTS_TO_DOWNLOAD+="com.google.testing.platform:core:$ATP_VERSION"
 
 # Download all the artifacts
-./development/importMaven/importMaven.sh "$ARTIFACTS_TO_DOWNLOAD"
\ No newline at end of file
+echoAndDo ./development/importMaven/importMaven.sh "$ARTIFACTS_TO_DOWNLOAD"
diff --git a/fragment/fragment-lint/src/main/java/androidx/fragment/lint/FragmentIssueRegistry.kt b/fragment/fragment-lint/src/main/java/androidx/fragment/lint/FragmentIssueRegistry.kt
index 3032c3a..f44dbf7 100644
--- a/fragment/fragment-lint/src/main/java/androidx/fragment/lint/FragmentIssueRegistry.kt
+++ b/fragment/fragment-lint/src/main/java/androidx/fragment/lint/FragmentIssueRegistry.kt
@@ -26,7 +26,7 @@
 @Suppress("UnstableApiUsage")
 class FragmentIssueRegistry : IssueRegistry() {
     // tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         FragmentTagDetector.ISSUE,
diff --git a/fragment/fragment-testing-lint/src/main/java/androidx/fragment/testing/lint/FragmentTestingIssueRegistry.kt b/fragment/fragment-testing-lint/src/main/java/androidx/fragment/testing/lint/FragmentTestingIssueRegistry.kt
index 3ba8a76..304b578 100644
--- a/fragment/fragment-testing-lint/src/main/java/androidx/fragment/testing/lint/FragmentTestingIssueRegistry.kt
+++ b/fragment/fragment-testing-lint/src/main/java/androidx/fragment/testing/lint/FragmentTestingIssueRegistry.kt
@@ -22,7 +22,7 @@
 
 @Suppress("UnstableApiUsage")
 class FragmentTestingIssueRegistry : IssueRegistry() {
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(GradleConfigurationDetector.ISSUE)
     override val vendor = Vendor(
diff --git a/fragment/fragment-testing-manifest-lint/src/main/java/androidx/fragment/testing/manifest/lint/FragmentTestingManifestIssueRegistry.kt b/fragment/fragment-testing-manifest-lint/src/main/java/androidx/fragment/testing/manifest/lint/FragmentTestingManifestIssueRegistry.kt
index 7ce1350..41a082b 100644
--- a/fragment/fragment-testing-manifest-lint/src/main/java/androidx/fragment/testing/manifest/lint/FragmentTestingManifestIssueRegistry.kt
+++ b/fragment/fragment-testing-manifest-lint/src/main/java/androidx/fragment/testing/manifest/lint/FragmentTestingManifestIssueRegistry.kt
@@ -22,7 +22,7 @@
 
 @Suppress("UnstableApiUsage")
 class FragmentTestingManifestIssueRegistry : IssueRegistry() {
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(GradleConfigurationDetector.ISSUE)
     override val vendor = Vendor(
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/OnBackStackChangedListenerTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/OnBackStackChangedListenerTest.kt
index 68082e6..8dacb98 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/OnBackStackChangedListenerTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/OnBackStackChangedListenerTest.kt
@@ -19,6 +19,9 @@
 import androidx.fragment.app.FragmentManager.OnBackStackChangedListener
 import androidx.fragment.app.test.FragmentTestActivity
 import androidx.fragment.test.R
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
+import androidx.lifecycle.LifecycleOwner
 import androidx.test.core.app.ActivityScenario
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
@@ -290,4 +293,46 @@
             incomingFragments.remove(fragment2)
         }
     }
+
+    @Test
+    fun testOnBackChangeRemoveListenerAfterStarted() {
+        with(ActivityScenario.launch(FragmentTestActivity::class.java)) {
+            val fragmentManager = withActivity { supportFragmentManager }
+
+            val fragment = StrictFragment()
+            var startedCount = 0
+            var committedCount = 0
+            val listener = object : OnBackStackChangedListener {
+                override fun onBackStackChanged() { /* nothing */ }
+
+                override fun onBackStackChangeStarted(fragment: Fragment, pop: Boolean) {
+                    startedCount++
+                }
+
+                override fun onBackStackChangeCommitted(fragment: Fragment, pop: Boolean) {
+                    committedCount++
+                }
+            }
+            fragmentManager.addOnBackStackChangedListener(listener)
+            withActivity {
+                fragment.lifecycle.addObserver(object : LifecycleEventObserver {
+                    override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
+                        if (event == Lifecycle.Event.ON_START) {
+                            fragmentManager.removeOnBackStackChangedListener(listener)
+                        }
+                    }
+                })
+            }
+
+            fragmentManager.beginTransaction()
+                .setReorderingAllowed(true)
+                .add(R.id.content, fragment)
+                .addToBackStack(null)
+                .commit()
+            executePendingTransactions()
+
+            assertThat(startedCount).isEqualTo(1)
+            assertThat(committedCount).isEqualTo(0)
+        }
+    }
 }
\ No newline at end of file
diff --git a/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java b/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
index 24827f0..c84669f 100644
--- a/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
+++ b/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
@@ -223,7 +223,8 @@
         void onBackStackChanged();
 
         /**
-         * Called whenever the contents of the back stack are starting to be changed.
+         * Called whenever the contents of the back stack are starting to be changed, before
+         * fragments being to move to their target states.
          *
          * @param fragment that is affected by the starting back stack change
          * @param pop whether this back stack change is a pop
@@ -1893,6 +1894,18 @@
         // The last operation determines the overall direction, this ensures that operations
         // such as push, push, pop, push are correctly considered a push
         boolean isPop = isRecordPop.get(endIndex - 1);
+
+        if (mBackStackChangeListeners != null) {
+            // we dispatch callbacks based on each record
+            for (BackStackRecord record : records) {
+                for (Fragment fragment : fragmentsFromRecord(record)) {
+                    // We give all fragment the back stack changed started signal first
+                    for (OnBackStackChangedListener listener : mBackStackChangeListeners) {
+                        listener.onBackStackChangeStarted(fragment, isPop);
+                    }
+                }
+            }
+        }
         // Ensure that Fragments directly affected by operations
         // are moved to their expected state in operation order
         for (int index = startIndex; index < endIndex; index++) {
@@ -1944,15 +1957,9 @@
                 // we dispatch callbacks based on each record
                 for (BackStackRecord record : records) {
                     for (Fragment fragment : fragmentsFromRecord(record)) {
-                        // We give all fragment the back stack changed started signal first
-                        for (int i = 0; i < mBackStackChangeListeners.size(); i++) {
-                            mBackStackChangeListeners.get(i).onBackStackChangeStarted(fragment,
-                                    isPop);
-                        }
                         // Then we give them all the committed signal
-                        for (int i = 0; i < mBackStackChangeListeners.size(); i++) {
-                            mBackStackChangeListeners.get(i).onBackStackChangeCommitted(fragment,
-                                    isPop);
+                        for (OnBackStackChangedListener listener : mBackStackChangeListeners) {
+                            listener.onBackStackChangeCommitted(fragment, isPop);
                         }
                     }
                 }
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverTest.kt b/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverTest.kt
index 2dd1faa..1358257d 100644
--- a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverTest.kt
+++ b/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverTest.kt
@@ -28,6 +28,7 @@
 import android.text.style.UnderlineSpan
 import android.util.Log
 import android.view.View
+import android.view.ViewGroup
 import android.widget.CompoundButton
 import android.widget.FrameLayout
 import android.widget.ImageView
@@ -696,7 +697,7 @@
 
         CallbackTest.received.set(emptyList())
         CallbackTest.latch = CountDownLatch(2)
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<ViewGroup> { root ->
             checkNotNull(
                 root.findChild<TextView> { it.text.toString() == "text1" }?.parent as? View
             )
@@ -731,7 +732,7 @@
 
         CallbackTest.received.set(emptyList())
         CallbackTest.latch = CountDownLatch(1)
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<ViewGroup> { root ->
             checkNotNull(
                 root.findChild<TextView> { it.text.toString() == "text1" }?.parent as? View
             )
@@ -804,7 +805,7 @@
 
         CompoundButtonActionTest.received.set(emptyList())
         CompoundButtonActionTest.latch = CountDownLatch(2)
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<ViewGroup> { root ->
             checkNotNull(root.findChild<TextView> { it.text.toString() == checkbox })
                 .performCompoundButtonClick()
             checkNotNull(root.findChild<TextView> { it.text.toString() == switch })
@@ -872,7 +873,7 @@
 
         CallbackTest.received.set(emptyList())
         CallbackTest.latch = CountDownLatch(1)
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<View> { root ->
             checkNotNull(root.findChild<TextView> { it.text.toString() == "text1" })
                 .performCompoundButtonClick()
         }
@@ -895,7 +896,7 @@
 
         mHostRule.startHost()
         var button: View? = null
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<ViewGroup> { root ->
             val text = checkNotNull(root.findChild<TextView> { it.text.toString() == "initial" })
             button = text.parent as View
         }
@@ -903,7 +904,7 @@
             button!!.performClick()
         }
 
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<ViewGroup> { root ->
             checkNotNull(root.findChild<TextView> { it.text.toString() == "clicked" })
         }
     }
@@ -926,7 +927,7 @@
         }
 
         mHostRule.startHost()
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<View> { root ->
             val view =
                 checkNotNull(
                     root.findChild<TextView> { it.text.toString() == "text1" }?.parent as? View
@@ -941,7 +942,7 @@
             TestGlanceAppWidget.update(context, AppWidgetId(mHostRule.appWidgetId))
         }
 
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<TextView> { root ->
             val view =
                 checkNotNull(
                     root.findChild<TextView> { it.text.toString() == "text1" }?.parent as? View
@@ -969,7 +970,7 @@
 
         CompoundButtonActionTest.received.set(emptyList())
         CompoundButtonActionTest.latch = CountDownLatch(1)
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<ViewGroup> { root ->
             checkNotNull(root.findChild<TextView> { it.text.toString() == "checkbox" })
                 .performCompoundButtonClick()
         }
@@ -987,7 +988,7 @@
 
         CompoundButtonActionTest.received.set(emptyList())
         CompoundButtonActionTest.latch = CountDownLatch(1)
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<ViewGroup> { root ->
             checkNotNull(root.findChild<TextView> { it.text.toString() == "checkbox" })
                 .performCompoundButtonClick()
         }
@@ -1015,7 +1016,7 @@
 
         mHostRule.startHost()
 
-        mHostRule.onHostView { root ->
+        mHostRule.onUnboxedHostView<ViewGroup> { root ->
             val checkbox =
                 checkNotNull(root.findChild<CompoundButton> { it.text.toString() == "checkbox" })
             assertThat(checkbox.hasOnClickListeners()).isFalse()
diff --git a/glance/glance-wear-tiles/api/current.txt b/glance/glance-wear-tiles/api/current.txt
index ca89aca..c693cbc 100644
--- a/glance/glance-wear-tiles/api/current.txt
+++ b/glance/glance-wear-tiles/api/current.txt
@@ -29,9 +29,6 @@
     property public androidx.glance.wear.tiles.TimelineMode timelineMode;
   }
 
-  public final class GlanceWearTilesKt {
-  }
-
   public final class TimeInterval {
     ctor public TimeInterval(optional java.time.Instant start, optional java.time.Instant end);
     method public java.time.Instant component1();
diff --git a/glance/glance-wear-tiles/api/restricted_current.txt b/glance/glance-wear-tiles/api/restricted_current.txt
index ca89aca..c693cbc 100644
--- a/glance/glance-wear-tiles/api/restricted_current.txt
+++ b/glance/glance-wear-tiles/api/restricted_current.txt
@@ -29,9 +29,6 @@
     property public androidx.glance.wear.tiles.TimelineMode timelineMode;
   }
 
-  public final class GlanceWearTilesKt {
-  }
-
   public final class TimeInterval {
     ctor public TimeInterval(optional java.time.Instant start, optional java.time.Instant end);
     method public java.time.Instant component1();
diff --git a/glance/glance/api/current.txt b/glance/glance/api/current.txt
index 004e9be..6363bcd 100644
--- a/glance/glance/api/current.txt
+++ b/glance/glance/api/current.txt
@@ -79,9 +79,6 @@
     method public default <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.glance.GlanceModifier.Element,? super R,? extends R> operation);
   }
 
-  @androidx.glance.GlanceComposable public final class GlanceNodeKt {
-  }
-
   public final class GlanceTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public androidx.glance.color.ColorProviders getColors();
     property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public final androidx.glance.color.ColorProviders colors;
@@ -102,9 +99,6 @@
   public interface ImageProvider {
   }
 
-  public final class UtilsKt {
-  }
-
   public enum Visibility {
     method public static androidx.glance.Visibility valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.glance.Visibility[] values();
diff --git a/glance/glance/api/public_plus_experimental_current.txt b/glance/glance/api/public_plus_experimental_current.txt
index 004e9be..6363bcd 100644
--- a/glance/glance/api/public_plus_experimental_current.txt
+++ b/glance/glance/api/public_plus_experimental_current.txt
@@ -79,9 +79,6 @@
     method public default <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.glance.GlanceModifier.Element,? super R,? extends R> operation);
   }
 
-  @androidx.glance.GlanceComposable public final class GlanceNodeKt {
-  }
-
   public final class GlanceTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public androidx.glance.color.ColorProviders getColors();
     property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public final androidx.glance.color.ColorProviders colors;
@@ -102,9 +99,6 @@
   public interface ImageProvider {
   }
 
-  public final class UtilsKt {
-  }
-
   public enum Visibility {
     method public static androidx.glance.Visibility valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.glance.Visibility[] values();
diff --git a/glance/glance/api/restricted_current.txt b/glance/glance/api/restricted_current.txt
index 004e9be..6363bcd 100644
--- a/glance/glance/api/restricted_current.txt
+++ b/glance/glance/api/restricted_current.txt
@@ -79,9 +79,6 @@
     method public default <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.glance.GlanceModifier.Element,? super R,? extends R> operation);
   }
 
-  @androidx.glance.GlanceComposable public final class GlanceNodeKt {
-  }
-
   public final class GlanceTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public androidx.glance.color.ColorProviders getColors();
     property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public final androidx.glance.color.ColorProviders colors;
@@ -102,9 +99,6 @@
   public interface ImageProvider {
   }
 
-  public final class UtilsKt {
-  }
-
   public enum Visibility {
     method public static androidx.glance.Visibility valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.glance.Visibility[] values();
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index c73fd38..7ed33f1 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -2,13 +2,13 @@
 # -----------------------------------------------------------------------------
 # All of the following should be updated in sync.
 # -----------------------------------------------------------------------------
-androidGradlePlugin = "8.0.0-alpha07"
+androidGradlePlugin = "8.1.0-alpha03"
 # NOTE: When updating the lint version we also need to update the `api` version
 # supported by `IssueRegistry`'s.' For e.g. r.android.com/1331903
-androidLint = "31.0.0-alpha07"
+androidLint = "31.1.0-alpha03"
 # Once you have a chosen version of AGP to upgrade to, go to
 # https://developer.android.com/studio/archive and find the matching version of Studio.
-androidStudio = "2022.2.1.7"
+androidStudio = "2022.3.1.3"
 # -----------------------------------------------------------------------------
 
 androidGradlePluginMin = "7.0.4"
diff --git a/health/connect/connect-client/api/api_lint.ignore b/health/connect/connect-client/api/api_lint.ignore
new file mode 100644
index 0000000..4ad84ae
--- /dev/null
+++ b/health/connect/connect-client/api/api_lint.ignore
@@ -0,0 +1,5 @@
+// Baseline format: 1.0
+ActionValue: androidx.health.connect.client.HealthConnectClient#ACTION_HEALTH_CONNECT_SETTINGS:
+    Inconsistent action value; expected `androidx.health.connect.client.action.HEALTH_CONNECT_SETTINGS`, was `androidx.health.ACTION_HEALTH_CONNECT_SETTINGS`
+ActionValue: androidx.health.connect.client.HealthConnectClient.Companion#ACTION_HEALTH_CONNECT_SETTINGS:
+    Inconsistent action value; expected `androidx.health.connect.client.action.HEALTH_CONNECT_SETTINGS`, was `androidx.health.ACTION_HEALTH_CONNECT_SETTINGS`
diff --git a/health/connect/connect-client/api/current.txt b/health/connect/connect-client/api/current.txt
index 1030f72..e5fb7f2 100644
--- a/health/connect/connect-client/api/current.txt
+++ b/health/connect/connect-client/api/current.txt
@@ -22,6 +22,7 @@
     method public default static int sdkStatus(android.content.Context context);
     method public suspend Object? updateRecords(java.util.List<? extends androidx.health.connect.client.records.Record> records, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property public abstract androidx.health.connect.client.PermissionController permissionController;
+    field public static final String ACTION_HEALTH_CONNECT_SETTINGS = "androidx.health.ACTION_HEALTH_CONNECT_SETTINGS";
     field public static final androidx.health.connect.client.HealthConnectClient.Companion Companion;
     field public static final int SDK_AVAILABLE = 3; // 0x3
     field public static final int SDK_UNAVAILABLE = 1; // 0x1
@@ -36,6 +37,7 @@
     method @Deprecated public boolean isProviderAvailable(android.content.Context context);
     method public int sdkStatus(android.content.Context context, optional String providerPackageName);
     method public int sdkStatus(android.content.Context context);
+    field public static final String ACTION_HEALTH_CONNECT_SETTINGS = "androidx.health.ACTION_HEALTH_CONNECT_SETTINGS";
     field public static final int SDK_AVAILABLE = 3; // 0x3
     field public static final int SDK_UNAVAILABLE = 1; // 0x1
     field public static final int SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED = 2; // 0x2
diff --git a/health/connect/connect-client/api/public_plus_experimental_current.txt b/health/connect/connect-client/api/public_plus_experimental_current.txt
index 1030f72..e5fb7f2 100644
--- a/health/connect/connect-client/api/public_plus_experimental_current.txt
+++ b/health/connect/connect-client/api/public_plus_experimental_current.txt
@@ -22,6 +22,7 @@
     method public default static int sdkStatus(android.content.Context context);
     method public suspend Object? updateRecords(java.util.List<? extends androidx.health.connect.client.records.Record> records, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property public abstract androidx.health.connect.client.PermissionController permissionController;
+    field public static final String ACTION_HEALTH_CONNECT_SETTINGS = "androidx.health.ACTION_HEALTH_CONNECT_SETTINGS";
     field public static final androidx.health.connect.client.HealthConnectClient.Companion Companion;
     field public static final int SDK_AVAILABLE = 3; // 0x3
     field public static final int SDK_UNAVAILABLE = 1; // 0x1
@@ -36,6 +37,7 @@
     method @Deprecated public boolean isProviderAvailable(android.content.Context context);
     method public int sdkStatus(android.content.Context context, optional String providerPackageName);
     method public int sdkStatus(android.content.Context context);
+    field public static final String ACTION_HEALTH_CONNECT_SETTINGS = "androidx.health.ACTION_HEALTH_CONNECT_SETTINGS";
     field public static final int SDK_AVAILABLE = 3; // 0x3
     field public static final int SDK_UNAVAILABLE = 1; // 0x1
     field public static final int SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED = 2; // 0x2
diff --git a/health/connect/connect-client/api/restricted_current.txt b/health/connect/connect-client/api/restricted_current.txt
index 6f049c7..e3916eb 100644
--- a/health/connect/connect-client/api/restricted_current.txt
+++ b/health/connect/connect-client/api/restricted_current.txt
@@ -22,6 +22,7 @@
     method public default static int sdkStatus(android.content.Context context);
     method public suspend Object? updateRecords(java.util.List<? extends androidx.health.connect.client.records.Record> records, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property public abstract androidx.health.connect.client.PermissionController permissionController;
+    field public static final String ACTION_HEALTH_CONNECT_SETTINGS = "androidx.health.ACTION_HEALTH_CONNECT_SETTINGS";
     field public static final androidx.health.connect.client.HealthConnectClient.Companion Companion;
     field public static final int SDK_AVAILABLE = 3; // 0x3
     field public static final int SDK_UNAVAILABLE = 1; // 0x1
@@ -36,6 +37,7 @@
     method @Deprecated public boolean isProviderAvailable(android.content.Context context);
     method public int sdkStatus(android.content.Context context, optional String providerPackageName);
     method public int sdkStatus(android.content.Context context);
+    field public static final String ACTION_HEALTH_CONNECT_SETTINGS = "androidx.health.ACTION_HEALTH_CONNECT_SETTINGS";
     field public static final int SDK_AVAILABLE = 3; // 0x3
     field public static final int SDK_UNAVAILABLE = 1; // 0x1
     field public static final int SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED = 2; // 0x2
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/HealthConnectClient.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/HealthConnectClient.kt
index 1da2a9c..8e942a9 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/HealthConnectClient.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/HealthConnectClient.kt
@@ -363,8 +363,11 @@
         @RestrictTo(RestrictTo.Scope.LIBRARY)
         internal const val DEFAULT_PROVIDER_MIN_VERSION_CODE = 35000
 
-        @RestrictTo(RestrictTo.Scope.LIBRARY) // To be released after testing
-        const val HEALTH_CONNECT_SETTING_INTENT_ACTION =
+        /**
+         * Intent action to open Health Connect settings on this phone. Developers should use this
+         * if they want to re-direct the user to Health Connect.
+         */
+        const val ACTION_HEALTH_CONNECT_SETTINGS =
             "androidx.health.ACTION_HEALTH_CONNECT_SETTINGS"
 
         /**
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt
index c82bdd1..1be95806 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt
@@ -16,9 +16,7 @@
 package androidx.health.connect.client
 
 import androidx.activity.result.contract.ActivityResultContract
-import androidx.annotation.RestrictTo
 import androidx.health.connect.client.HealthConnectClient.Companion.DEFAULT_PROVIDER_PACKAGE_NAME
-import androidx.health.connect.client.permission.HealthDataRequestPermissions
 import androidx.health.connect.client.permission.HealthDataRequestPermissionsInternal
 import androidx.health.connect.client.permission.HealthPermission
 
@@ -27,21 +25,6 @@
 interface PermissionController {
 
     /**
-     * Returns a set of [HealthPermission] granted by the user to the calling app, out of the input
-     * [permissions] set.
-     *
-     * @param permissions set of permissions interested to check if granted or not
-     * @return set of granted permissions.
-     * @throws android.os.RemoteException For any IPC transportation failures.
-     * @throws java.io.IOException For any disk I/O issues.
-     * @throws IllegalStateException If service is not available.
-     */
-    @RestrictTo(RestrictTo.Scope.LIBRARY) // To be deleted once internal clients have migrated.
-    suspend fun getGrantedPermissionsLegacy(
-        permissions: Set<HealthPermission>
-    ): Set<HealthPermission>
-
-    /**
      * Returns a set of all health permissions granted by the user to the calling app.
      *
      * @return set of granted permissions.
@@ -67,22 +50,6 @@
          *
          * @param providerPackageName Optional provider package name to request health permissions
          *   from.
-         * @see androidx.activity.ComponentActivity.registerForActivityResult
-         */
-        @RestrictTo(RestrictTo.Scope.LIBRARY) // To be deleted once internal clients have migrated.
-        @JvmStatic
-        @JvmOverloads
-        fun createRequestPermissionResultContractLegacy(
-            providerPackageName: String = DEFAULT_PROVIDER_PACKAGE_NAME
-        ): ActivityResultContract<Set<HealthPermission>, Set<HealthPermission>> {
-            return HealthDataRequestPermissions(providerPackageName = providerPackageName)
-        }
-
-        /**
-         * Creates an [ActivityResultContract] to request Health permissions.
-         *
-         * @param providerPackageName Optional provider package name to request health permissions
-         *   from.
          * @sample androidx.health.connect.client.samples.RequestPermission
          * @see androidx.activity.ComponentActivity.registerForActivityResult
          */
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/HealthConnectClientImpl.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/HealthConnectClientImpl.kt
index 6006964..680ab63 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/HealthConnectClientImpl.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/HealthConnectClientImpl.kt
@@ -26,8 +26,6 @@
 import androidx.health.connect.client.impl.converters.aggregate.toAggregateDataRowGroupByPeriod
 import androidx.health.connect.client.impl.converters.datatype.toDataType
 import androidx.health.connect.client.impl.converters.datatype.toDataTypeIdPairProtoList
-import androidx.health.connect.client.impl.converters.permission.toJetpackPermission
-import androidx.health.connect.client.impl.converters.permission.toProtoPermission
 import androidx.health.connect.client.impl.converters.records.toProto
 import androidx.health.connect.client.impl.converters.records.toRecord
 import androidx.health.connect.client.impl.converters.request.toDeleteDataRangeRequestProto
@@ -74,22 +72,6 @@
         },
 ) : HealthConnectClient, PermissionController {
 
-    override suspend fun getGrantedPermissionsLegacy(
-        permissions: Set<HealthPermission>
-    ): Set<HealthPermission> {
-        val grantedPermissions =
-            delegate
-                .getGrantedPermissions(permissions.map { it.toProtoPermission() }.toSet())
-                .await()
-                .map { it.toJetpackPermission() }
-                .toSet()
-        Logger.debug(
-            HEALTH_CONNECT_CLIENT_TAG,
-            "Granted ${grantedPermissions.size} out of ${permissions.size} permissions."
-        )
-        return grantedPermissions
-    }
-
     override suspend fun getGrantedPermissions(): Set<String> {
         val grantedPermissions =
             delegate
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/permission/HealthDataRequestPermissions.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/permission/HealthDataRequestPermissions.kt
deleted file mode 100644
index a33d9af..0000000
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/permission/HealthDataRequestPermissions.kt
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package androidx.health.connect.client.permission
-
-import android.content.Context
-import android.content.Intent
-import androidx.activity.result.contract.ActivityResultContract
-import androidx.health.connect.client.HealthConnectClient.Companion.DEFAULT_PROVIDER_PACKAGE_NAME
-import androidx.health.connect.client.HealthConnectClient.Companion.HEALTH_CONNECT_CLIENT_TAG
-import androidx.health.connect.client.impl.converters.permission.toJetpackPermission
-import androidx.health.connect.client.impl.converters.permission.toProtoPermission
-import androidx.health.platform.client.impl.logger.Logger
-import androidx.health.platform.client.permission.Permission as ParcelablePermission
-import androidx.health.platform.client.service.HealthDataServiceConstants.ACTION_REQUEST_PERMISSIONS
-import androidx.health.platform.client.service.HealthDataServiceConstants.KEY_GRANTED_PERMISSIONS_JETPACK
-import androidx.health.platform.client.service.HealthDataServiceConstants.KEY_REQUESTED_PERMISSIONS_JETPACK
-
-/**
- * An [ActivityResultContract] to request Health Connect permissions.
- *
- * @param providerPackageName Optional provider package name for the backing implementation of
- * choice.
- *
- * @see androidx.activity.ComponentActivity.registerForActivityResult
- */
-internal class HealthDataRequestPermissions(
-    private val providerPackageName: String = DEFAULT_PROVIDER_PACKAGE_NAME,
-) : ActivityResultContract<Set<HealthPermission>, Set<HealthPermission>>() {
-
-    override fun createIntent(context: Context, input: Set<HealthPermission>): Intent {
-        require(input.isNotEmpty()) { "At least one permission is required!" }
-
-        val protoPermissionList =
-            input
-                .asSequence()
-                .map { ParcelablePermission(it.toProtoPermission()) }
-                .toCollection(ArrayList())
-        Logger.debug(HEALTH_CONNECT_CLIENT_TAG, "Requesting ${input.size} permissions.")
-        return Intent(ACTION_REQUEST_PERMISSIONS).apply {
-            putParcelableArrayListExtra(KEY_REQUESTED_PERMISSIONS_JETPACK, protoPermissionList)
-            if (providerPackageName.isNotEmpty()) {
-                setPackage(providerPackageName)
-            }
-        }
-    }
-
-    @Suppress("Deprecation")
-    override fun parseResult(resultCode: Int, intent: Intent?): Set<HealthPermission> {
-        val grantedPermissions =
-            intent
-                ?.getParcelableArrayListExtra<ParcelablePermission>(KEY_GRANTED_PERMISSIONS_JETPACK)
-                ?.asSequence()
-                ?.map { it.proto.toJetpackPermission() }
-                ?.toSet()
-                ?: emptySet()
-        Logger.debug(HEALTH_CONNECT_CLIENT_TAG, "Granted ${grantedPermissions.size} permissions.")
-        return grantedPermissions
-    }
-
-    override fun getSynchronousResult(
-        context: Context,
-        input: Set<HealthPermission>,
-    ): SynchronousResult<Set<HealthPermission>>? {
-        return null
-    }
-}
diff --git a/health/connect/connect-client/src/test/java/androidx/health/connect/client/PermissionControllerTest.kt b/health/connect/connect-client/src/test/java/androidx/health/connect/client/PermissionControllerTest.kt
index f73d84e..f0d031bc 100644
--- a/health/connect/connect-client/src/test/java/androidx/health/connect/client/PermissionControllerTest.kt
+++ b/health/connect/connect-client/src/test/java/androidx/health/connect/client/PermissionControllerTest.kt
@@ -18,7 +18,6 @@
 
 import android.content.Context
 import androidx.health.connect.client.permission.HealthPermission
-import androidx.health.connect.client.records.StepsRecord
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.google.common.truth.Truth
@@ -39,20 +38,6 @@
     }
 
     @Test
-    fun createIntentTest() {
-        val requestPermissionContract =
-            PermissionController.createRequestPermissionResultContractLegacy(PROVIDER_PACKAGE_NAME)
-        val intent =
-            requestPermissionContract.createIntent(
-                context,
-                setOf(HealthPermission.createReadPermissionLegacy(StepsRecord::class))
-            )
-
-        Truth.assertThat(intent.action).isEqualTo("androidx.health.ACTION_REQUEST_PERMISSIONS")
-        Truth.assertThat(intent.`package`).isEqualTo(PROVIDER_PACKAGE_NAME)
-    }
-
-    @Test
     fun createIntentTest_permissionStrings() {
         val requestPermissionContract =
             PermissionController.createRequestPermissionResultContract(PROVIDER_PACKAGE_NAME)
diff --git a/health/connect/connect-client/src/test/java/androidx/health/connect/client/impl/HealthConnectClientImplTest.kt b/health/connect/connect-client/src/test/java/androidx/health/connect/client/impl/HealthConnectClientImplTest.kt
index 2fc02d2..ef078d3 100644
--- a/health/connect/connect-client/src/test/java/androidx/health/connect/client/impl/HealthConnectClientImplTest.kt
+++ b/health/connect/connect-client/src/test/java/androidx/health/connect/client/impl/HealthConnectClientImplTest.kt
@@ -25,7 +25,6 @@
 import androidx.health.connect.client.changes.DeletionChange
 import androidx.health.connect.client.changes.UpsertionChange
 import androidx.health.connect.client.impl.converters.datatype.toDataType
-import androidx.health.connect.client.permission.HealthPermission.Companion.createReadPermissionLegacy
 import androidx.health.connect.client.permission.HealthPermission.Companion.getReadPermission
 import androidx.health.connect.client.permission.HealthPermission.Companion.getWritePermission
 import androidx.health.connect.client.records.ActiveCaloriesBurnedRecord
@@ -88,7 +87,6 @@
 
 private val API_METHOD_LIST =
     listOf<suspend HealthConnectClientImpl.() -> Unit>(
-        { getGrantedPermissionsLegacy(setOf()) },
         { revokeAllPermissions() },
         { insertRecords(listOf()) },
         { updateRecords(listOf()) },
@@ -190,36 +188,6 @@
     }
 
     @Test
-    fun getGrantedPermissionsLegacy_none() = runTest {
-        val response = testBlocking {
-            healthConnectClient.getGrantedPermissionsLegacy(
-                setOf(createReadPermissionLegacy(StepsRecord::class))
-            )
-        }
-
-        assertThat(response).isEmpty()
-    }
-
-    @Test
-    fun getGrantedPermissionsLegacy_steps() = runTest {
-        fakeAhpServiceStub.addGrantedPermission(
-            androidx.health.platform.client.permission.Permission(
-                PermissionProto.Permission.newBuilder()
-                    .setDataType(DataProto.DataType.newBuilder().setName("Steps"))
-                    .setAccessType(PermissionProto.AccessType.ACCESS_TYPE_READ)
-                    .build()
-            )
-        )
-        val response = testBlocking {
-            healthConnectClient.getGrantedPermissionsLegacy(
-                setOf(createReadPermissionLegacy(StepsRecord::class))
-            )
-        }
-
-        assertThat(response).containsExactly(createReadPermissionLegacy(StepsRecord::class))
-    }
-
-    @Test
     fun getGrantedPermissions_none() = runTest {
         val response = testBlocking { healthConnectClient.getGrantedPermissions() }
 
diff --git a/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/HealthDataRequestPermissionsTest.kt b/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/HealthDataRequestPermissionsTest.kt
index 7ef9575..99de1ce 100644
--- a/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/HealthDataRequestPermissionsTest.kt
+++ b/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/HealthDataRequestPermissionsTest.kt
@@ -15,104 +15,4 @@
  */
 package androidx.health.connect.client.permission
 
-import android.content.Context
-import android.content.Intent
-import androidx.health.connect.client.HealthConnectClient
-import androidx.health.connect.client.records.StepsRecord
-import androidx.health.platform.client.proto.DataProto
-import androidx.health.platform.client.proto.PermissionProto
-import androidx.health.platform.client.service.HealthDataServiceConstants
-import androidx.test.core.app.ApplicationProvider
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
 private const val TEST_PACKAGE = "com.test.app"
-
-@RunWith(AndroidJUnit4::class)
-class HealthDataRequestPermissionsTest {
-
-    private lateinit var context: Context
-
-    @Before
-    fun setUp() {
-        context = ApplicationProvider.getApplicationContext()
-    }
-
-    @Test
-    fun createIntentTest() {
-        val requestPermissionContract = HealthDataRequestPermissions(TEST_PACKAGE)
-        val intent =
-            requestPermissionContract.createIntent(
-                context,
-                setOf(HealthPermission.createReadPermissionLegacy(StepsRecord::class))
-            )
-
-        assertThat(intent.action).isEqualTo("androidx.health.ACTION_REQUEST_PERMISSIONS")
-        assertThat(intent.`package`).isEqualTo(TEST_PACKAGE)
-    }
-
-    @Test
-    fun createIntent_defaultPackage() {
-        val requestPermissionContract = HealthDataRequestPermissions()
-        val intent =
-            requestPermissionContract.createIntent(
-                context,
-                setOf(HealthPermission.createReadPermissionLegacy(StepsRecord::class))
-            )
-
-        assertThat(intent.action).isEqualTo("androidx.health.ACTION_REQUEST_PERMISSIONS")
-        assertThat(intent.`package`).isEqualTo(HealthConnectClient.DEFAULT_PROVIDER_PACKAGE_NAME)
-    }
-
-    @Test
-    fun parseIntent_null_fallback() {
-        val requestPermissionContract = HealthDataRequestPermissions(TEST_PACKAGE)
-        val result = requestPermissionContract.parseResult(0, null)
-
-        assertThat(result).isEmpty()
-    }
-
-    @Test
-    fun parseIntent_emptyIntent() {
-        val requestPermissionContract = HealthDataRequestPermissions(TEST_PACKAGE)
-        val result = requestPermissionContract.parseResult(0, Intent())
-
-        assertThat(result).isEmpty()
-    }
-
-    @Test
-    fun parseIntent() {
-        val requestPermissionContract = HealthDataRequestPermissions(TEST_PACKAGE)
-        val intent = Intent()
-        intent.putParcelableArrayListExtra(
-            HealthDataServiceConstants.KEY_GRANTED_PERMISSIONS_JETPACK,
-            arrayListOf(
-                androidx.health.platform.client.permission.Permission(
-                    PermissionProto.Permission.newBuilder()
-                        .setDataType(DataProto.DataType.newBuilder().setName("Steps"))
-                        .setAccessType(PermissionProto.AccessType.ACCESS_TYPE_READ)
-                        .build()
-                )
-            )
-        )
-        val result = requestPermissionContract.parseResult(0, intent)
-
-        assertThat(result)
-            .containsExactly(HealthPermission.createReadPermissionLegacy(StepsRecord::class))
-    }
-
-    @Test
-    fun synchronousResult_null() {
-        val requestPermissionContract = HealthDataRequestPermissions(TEST_PACKAGE)
-        val result =
-            requestPermissionContract.getSynchronousResult(
-                context,
-                setOf(HealthPermission.createReadPermissionLegacy(StepsRecord::class))
-            )
-
-        assertThat(result).isNull()
-    }
-}
diff --git a/lifecycle/lifecycle-livedata-core-ktx-lint/src/main/java/androidx/lifecycle/lint/LiveDataCoreIssueRegistry.kt b/lifecycle/lifecycle-livedata-core-ktx-lint/src/main/java/androidx/lifecycle/lint/LiveDataCoreIssueRegistry.kt
index b0aab4e..0b251e7 100644
--- a/lifecycle/lifecycle-livedata-core-ktx-lint/src/main/java/androidx/lifecycle/lint/LiveDataCoreIssueRegistry.kt
+++ b/lifecycle/lifecycle-livedata-core-ktx-lint/src/main/java/androidx/lifecycle/lint/LiveDataCoreIssueRegistry.kt
@@ -23,7 +23,7 @@
 @Suppress("UnstableApiUsage")
 class LiveDataCoreIssueRegistry : IssueRegistry() {
     override val minApi = CURRENT_API
-    override val api = 13
+    override val api = 14
     override val issues get() = listOf(NonNullableMutableLiveDataDetector.ISSUE)
     override val vendor = Vendor(
         feedbackUrl = "https://issuetracker.google.com/issues/new?component=413132",
diff --git a/lifecycle/lifecycle-runtime-ktx-lint/src/main/java/androidx/lifecycle/lint/LifecycleRuntimeIssueRegistry.kt b/lifecycle/lifecycle-runtime-ktx-lint/src/main/java/androidx/lifecycle/lint/LifecycleRuntimeIssueRegistry.kt
index b655be5..ca0bb57 100644
--- a/lifecycle/lifecycle-runtime-ktx-lint/src/main/java/androidx/lifecycle/lint/LifecycleRuntimeIssueRegistry.kt
+++ b/lifecycle/lifecycle-runtime-ktx-lint/src/main/java/androidx/lifecycle/lint/LifecycleRuntimeIssueRegistry.kt
@@ -23,7 +23,7 @@
 @Suppress("UnstableApiUsage")
 class LifecycleRuntimeIssueRegistry : IssueRegistry() {
     // tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         LifecycleWhenChecks.ISSUE,
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/2.6.0-beta01.txt b/lifecycle/lifecycle-viewmodel-compose/api/2.6.0-beta01.txt
index 05b6910..33d89fc 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/2.6.0-beta01.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/2.6.0-beta01.txt
@@ -8,9 +8,6 @@
     field public static final androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner INSTANCE;
   }
 
-  public final class SavedStateHandleSaverKt {
-  }
-
   public final class ViewModelKt {
     method @androidx.compose.runtime.Composable public static <VM extends androidx.lifecycle.ViewModel> VM viewModel(Class<VM> modelClass, optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory, optional androidx.lifecycle.viewmodel.CreationExtras extras);
     method @Deprecated @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM viewModel(optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/current.ignore b/lifecycle/lifecycle-viewmodel-compose/api/current.ignore
new file mode 100644
index 0000000..0a5b8ff
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-compose/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.lifecycle.viewmodel.compose.SavedStateHandleSaverKt:
+    Removed class androidx.lifecycle.viewmodel.compose.SavedStateHandleSaverKt
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/current.txt b/lifecycle/lifecycle-viewmodel-compose/api/current.txt
index 05b6910..33d89fc 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/current.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/current.txt
@@ -8,9 +8,6 @@
     field public static final androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner INSTANCE;
   }
 
-  public final class SavedStateHandleSaverKt {
-  }
-
   public final class ViewModelKt {
     method @androidx.compose.runtime.Composable public static <VM extends androidx.lifecycle.ViewModel> VM viewModel(Class<VM> modelClass, optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory, optional androidx.lifecycle.viewmodel.CreationExtras extras);
     method @Deprecated @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM viewModel(optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/restricted_2.6.0-beta01.txt b/lifecycle/lifecycle-viewmodel-compose/api/restricted_2.6.0-beta01.txt
index 05b6910..33d89fc 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/restricted_2.6.0-beta01.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/restricted_2.6.0-beta01.txt
@@ -8,9 +8,6 @@
     field public static final androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner INSTANCE;
   }
 
-  public final class SavedStateHandleSaverKt {
-  }
-
   public final class ViewModelKt {
     method @androidx.compose.runtime.Composable public static <VM extends androidx.lifecycle.ViewModel> VM viewModel(Class<VM> modelClass, optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory, optional androidx.lifecycle.viewmodel.CreationExtras extras);
     method @Deprecated @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM viewModel(optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.ignore b/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.ignore
new file mode 100644
index 0000000..0a5b8ff
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.lifecycle.viewmodel.compose.SavedStateHandleSaverKt:
+    Removed class androidx.lifecycle.viewmodel.compose.SavedStateHandleSaverKt
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt b/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
index 05b6910..33d89fc 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
@@ -8,9 +8,6 @@
     field public static final androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner INSTANCE;
   }
 
-  public final class SavedStateHandleSaverKt {
-  }
-
   public final class ViewModelKt {
     method @androidx.compose.runtime.Composable public static <VM extends androidx.lifecycle.ViewModel> VM viewModel(Class<VM> modelClass, optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory, optional androidx.lifecycle.viewmodel.CreationExtras extras);
     method @Deprecated @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM viewModel(optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
diff --git a/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt b/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt
index 312cadd..a4f7ce8 100644
--- a/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt
@@ -25,7 +25,7 @@
 
 class AndroidXIssueRegistry : IssueRegistry() {
     override val minApi = CURRENT_API
-    override val api = 13
+    override val api = 14
     override val issues get(): List<Issue> {
         return Issues
     }
diff --git a/lint-checks/src/main/java/androidx/build/lint/BanUncheckedReflection.kt b/lint-checks/src/main/java/androidx/build/lint/BanUncheckedReflection.kt
index ab2b60d..7bab6f3 100644
--- a/lint-checks/src/main/java/androidx/build/lint/BanUncheckedReflection.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/BanUncheckedReflection.kt
@@ -17,17 +17,19 @@
 
 package androidx.build.lint
 
+import com.android.sdklib.SdkVersionInfo.HIGHEST_KNOWN_API
+import com.android.tools.lint.detector.api.ApiConstraint
 import com.android.tools.lint.detector.api.Category
 import com.android.tools.lint.detector.api.Detector
 import com.android.tools.lint.detector.api.Implementation
+import com.android.tools.lint.detector.api.Incident
 import com.android.tools.lint.detector.api.Issue
 import com.android.tools.lint.detector.api.JavaContext
 import com.android.tools.lint.detector.api.Scope
-import com.android.sdklib.SdkVersionInfo.HIGHEST_KNOWN_API
-import com.android.tools.lint.detector.api.Incident
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
-import com.android.tools.lint.detector.api.VersionChecks
+import com.android.tools.lint.detector.api.VersionChecks.Companion.isPrecededByVersionCheckExit
+import com.android.tools.lint.detector.api.VersionChecks.Companion.isWithinVersionCheckConditional
 import com.intellij.psi.PsiAnnotation
 import com.intellij.psi.PsiMethod
 import org.jetbrains.uast.UCallExpression
@@ -55,15 +57,14 @@
         if (!context.evaluator.isMemberInClass(method, METHOD_REFLECTION_CLASS)) return
 
         // Flag if the call isn't inside or preceded by an SDK_INT check.
-        if (!VersionChecks.isWithinVersionCheckConditional(
+        if (!isWithinVersionCheckConditional(
                 context,
                 node,
-                HIGHEST_KNOWN_API,
-                false
+                ApiConstraint.get(HIGHEST_KNOWN_API), false
             ) &&
-            !VersionChecks.isWithinVersionCheckConditional(context, node, 1, true) &&
-            !VersionChecks.isPrecededByVersionCheckExit(context, node, HIGHEST_KNOWN_API) &&
-            !VersionChecks.isPrecededByVersionCheckExit(context, node, 1) &&
+            !isWithinVersionCheckConditional(context, node, ApiConstraint.get(1), true) &&
+            !isPrecededByVersionCheckExit(context, node, ApiConstraint.get(HIGHEST_KNOWN_API)) &&
+            !isPrecededByVersionCheckExit(context, node, ApiConstraint.get(1)) &&
             !isWithinDeprecatedSinceApiMethod(node) &&
             !isWithinDeprecatedSinceApiClass(node)
         ) {
diff --git a/lint-checks/src/main/java/androidx/build/lint/ClassVerificationFailureDetector.kt b/lint-checks/src/main/java/androidx/build/lint/ClassVerificationFailureDetector.kt
index f8d3070..62d19a0 100644
--- a/lint-checks/src/main/java/androidx/build/lint/ClassVerificationFailureDetector.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/ClassVerificationFailureDetector.kt
@@ -202,7 +202,7 @@
                 ?: return
 
             // Change: Removed SimpleDateFormat and Animator checks
-
+            @Suppress("DEPRECATION") // b/262915628
             var api = apiDatabase.getMethodVersion(owner, name, desc)
             if (api == -1) {
                 return
@@ -260,6 +260,7 @@
                             for (type in inheritanceChain) {
                                 val expressionOwner = evaluator.getQualifiedName(type)
                                 if (expressionOwner != null && expressionOwner != owner) {
+                                    @Suppress("DEPRECATION") // b/262915628
                                     val specificApi = apiDatabase.getMethodVersion(
                                         expressionOwner, name, desc
                                     )
@@ -339,6 +340,7 @@
                         ) {
                             break
                         }
+                        @Suppress("DEPRECATION") // b/262915628
                         val specificApi =
                             apiDatabase.getMethodVersion(expressionOwner, name, desc)
                         if (specificApi == -1) {
@@ -385,6 +387,7 @@
                                 if (provider != null) {
                                     val methodOwner = evaluator.getQualifiedName(provider)
                                     if (methodOwner != null) {
+                                        @Suppress("DEPRECATION") // b/262915628
                                         val methodApi = apiDatabase.getMethodVersion(
                                             methodOwner, name, desc
                                         )
@@ -853,6 +856,7 @@
         private fun classAvailableAtMinSdk(className: String): Boolean {
             val apiDatabase = apiDatabase ?: return false
             val minSdk = getMinSdk(context)
+            @Suppress("DEPRECATION") // b/262915628
             val version = apiDatabase.getClassVersion(className)
             return version <= minSdk
         }
diff --git a/navigation/navigation-common-lint/src/main/java/androidx/navigation/common/lint/NavigationCommonIssueRegistry.kt b/navigation/navigation-common-lint/src/main/java/androidx/navigation/common/lint/NavigationCommonIssueRegistry.kt
index ff861cd..f5a5d52 100644
--- a/navigation/navigation-common-lint/src/main/java/androidx/navigation/common/lint/NavigationCommonIssueRegistry.kt
+++ b/navigation/navigation-common-lint/src/main/java/androidx/navigation/common/lint/NavigationCommonIssueRegistry.kt
@@ -27,7 +27,7 @@
  */
 class NavigationCommonIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         EmptyNavDeepLinkDetector.EmptyNavDeepLink
diff --git a/navigation/navigation-compose-lint/src/main/java/androidx/navigation/compose/lint/NavigationComposeIssueRegistry.kt b/navigation/navigation-compose-lint/src/main/java/androidx/navigation/compose/lint/NavigationComposeIssueRegistry.kt
index 402db3be..b6b5d155 100644
--- a/navigation/navigation-compose-lint/src/main/java/androidx/navigation/compose/lint/NavigationComposeIssueRegistry.kt
+++ b/navigation/navigation-compose-lint/src/main/java/androidx/navigation/compose/lint/NavigationComposeIssueRegistry.kt
@@ -27,7 +27,7 @@
  */
 class NavigationComposeIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         ComposableDestinationInComposeScopeDetector.ComposableDestinationInComposeScope,
diff --git a/navigation/navigation-runtime-lint/src/main/java/androidx/navigation/runtime/lint/NavigationRuntimeIssueRegistry.kt b/navigation/navigation-runtime-lint/src/main/java/androidx/navigation/runtime/lint/NavigationRuntimeIssueRegistry.kt
index b4d90ba..48b846a 100644
--- a/navigation/navigation-runtime-lint/src/main/java/androidx/navigation/runtime/lint/NavigationRuntimeIssueRegistry.kt
+++ b/navigation/navigation-runtime-lint/src/main/java/androidx/navigation/runtime/lint/NavigationRuntimeIssueRegistry.kt
@@ -27,7 +27,7 @@
  */
 class NavigationRuntimeIssueRegistry : IssueRegistry() {
     // Tests are run with this version. We ensure that with ApiLintVersionsTest
-    override val api = 13
+    override val api = 14
     override val minApi = CURRENT_API
     override val issues get() = listOf(
         DeepLinkInActivityDestinationDetector.DeepLinkInActivityDestination
diff --git a/paging/paging-common/api/current.ignore b/paging/paging-common/api/current.ignore
index aab3a7e..1002700 100644
--- a/paging/paging-common/api/current.ignore
+++ b/paging/paging-common/api/current.ignore
@@ -11,6 +11,8 @@
     Removed class androidx.paging.HintHandlerKt
 RemovedClass: androidx.paging.PageFetcherSnapshotKt:
     Removed class androidx.paging.PageFetcherSnapshotKt
+RemovedClass: androidx.paging.PagingSourceKt:
+    Removed class androidx.paging.PagingSourceKt
 RemovedClass: androidx.paging.RemoteMediatorAccessorKt:
     Removed class androidx.paging.RemoteMediatorAccessorKt
 RemovedClass: androidx.paging.SeparatorsKt:
diff --git a/paging/paging-common/api/current.txt b/paging/paging-common/api/current.txt
index 56ed7dd..3fca865 100644
--- a/paging/paging-common/api/current.txt
+++ b/paging/paging-common/api/current.txt
@@ -411,9 +411,6 @@
   public static final class PagingSource.LoadResult.Page.Companion {
   }
 
-  public final class PagingSourceKt {
-  }
-
   public final class PagingState<Key, Value> {
     ctor public PagingState(java.util.List<androidx.paging.PagingSource.LoadResult.Page<Key,Value>> pages, Integer? anchorPosition, androidx.paging.PagingConfig config, @IntRange(from=0L) int leadingPlaceholderCount);
     method public Value? closestItemToPosition(int anchorPosition);
diff --git a/paging/paging-common/api/public_plus_experimental_current.txt b/paging/paging-common/api/public_plus_experimental_current.txt
index 06ebfb4..3db67b4 100644
--- a/paging/paging-common/api/public_plus_experimental_current.txt
+++ b/paging/paging-common/api/public_plus_experimental_current.txt
@@ -415,9 +415,6 @@
   public static final class PagingSource.LoadResult.Page.Companion {
   }
 
-  public final class PagingSourceKt {
-  }
-
   public final class PagingState<Key, Value> {
     ctor public PagingState(java.util.List<androidx.paging.PagingSource.LoadResult.Page<Key,Value>> pages, Integer? anchorPosition, androidx.paging.PagingConfig config, @IntRange(from=0L) int leadingPlaceholderCount);
     method public Value? closestItemToPosition(int anchorPosition);
diff --git a/paging/paging-common/api/restricted_current.ignore b/paging/paging-common/api/restricted_current.ignore
index aab3a7e..1002700 100644
--- a/paging/paging-common/api/restricted_current.ignore
+++ b/paging/paging-common/api/restricted_current.ignore
@@ -11,6 +11,8 @@
     Removed class androidx.paging.HintHandlerKt
 RemovedClass: androidx.paging.PageFetcherSnapshotKt:
     Removed class androidx.paging.PageFetcherSnapshotKt
+RemovedClass: androidx.paging.PagingSourceKt:
+    Removed class androidx.paging.PagingSourceKt
 RemovedClass: androidx.paging.RemoteMediatorAccessorKt:
     Removed class androidx.paging.RemoteMediatorAccessorKt
 RemovedClass: androidx.paging.SeparatorsKt:
diff --git a/paging/paging-common/api/restricted_current.txt b/paging/paging-common/api/restricted_current.txt
index 56ed7dd..3fca865 100644
--- a/paging/paging-common/api/restricted_current.txt
+++ b/paging/paging-common/api/restricted_current.txt
@@ -411,9 +411,6 @@
   public static final class PagingSource.LoadResult.Page.Companion {
   }
 
-  public final class PagingSourceKt {
-  }
-
   public final class PagingState<Key, Value> {
     ctor public PagingState(java.util.List<androidx.paging.PagingSource.LoadResult.Page<Key,Value>> pages, Integer? anchorPosition, androidx.paging.PagingConfig config, @IntRange(from=0L) int leadingPlaceholderCount);
     method public Value? closestItemToPosition(int anchorPosition);
diff --git a/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/FullFeaturedSdkTest.kt b/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/FullFeaturedSdkTest.kt
index 4d334f8..a2fcfc5 100644
--- a/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/FullFeaturedSdkTest.kt
+++ b/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/FullFeaturedSdkTest.kt
@@ -45,6 +45,7 @@
             "com/mysdk/IMySdk.java",
             "com/mysdk/IMySecondInterface.java",
             "com/mysdk/IMyUiInterface.java",
+            "com/mysdk/IMyUiInterfaceCoreLibInfoAndBinderWrapper.java",
             "com/mysdk/IMySecondInterfaceTransactionCallback.java",
             "com/mysdk/IResponseTransactionCallback.java",
             "com/mysdk/IStringTransactionCallback.java",
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorTest.kt b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorTest.kt
index dea1e4a..29664ab 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorTest.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorTest.kt
@@ -29,6 +29,8 @@
         "com/sdk/IMyInterface.java",
         "com/sdk/IMySecondInterface.java",
         "com/sdk/IMyInterfaceTransactionCallback.java",
+        "com/sdk/IMySecondInterfaceTransactionCallback.java",
+        "com/sdk/IMySecondInterfaceCoreLibInfoAndBinderWrapper.java",
         "com/sdk/IIntTransactionCallback.java",
         "com/sdk/ICancellationSignal.java",
         "com/sdk/ParcelableStackFrame.java",
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt
index b64faf5..74b3e78 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt
@@ -1,5 +1,6 @@
 package com.sdk
 
+import androidx.privacysandbox.tools.PrivacySandboxValue
 import androidx.privacysandbox.tools.PrivacySandboxInterface
 import androidx.privacysandbox.tools.PrivacySandboxService
 import androidx.privacysandbox.ui.core.SandboxedUiAdapter
@@ -9,6 +10,8 @@
     suspend fun getInterface(): MyInterface
 
     suspend fun maybeGetInterface(): MyInterface?
+
+    suspend fun getUiInterface(): MySecondInterface
 }
 
 @PrivacySandboxInterface
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt
index 8b3e16e..df137b4 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt
@@ -3,5 +3,7 @@
 public interface MySdk {
     public suspend fun getInterface(): MyInterface
 
+    public suspend fun getUiInterface(): MySecondInterface
+
     public suspend fun maybeGetInterface(): MyInterface?
 }
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt
index f898c9c..19a398a 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt
@@ -1,5 +1,6 @@
 package com.sdk
 
+import androidx.privacysandbox.ui.client.SandboxedUiAdapterFactory
 import com.sdk.PrivacySandboxThrowableParcelConverter
 import com.sdk.PrivacySandboxThrowableParcelConverter.fromThrowableParcel
 import kotlin.coroutines.resumeWithException
@@ -30,6 +31,29 @@
         }
     }
 
+    public override suspend fun getUiInterface(): MySecondInterface = suspendCancellableCoroutine {
+        var mCancellationSignal: ICancellationSignal? = null
+        val transactionCallback = object: IMySecondInterfaceTransactionCallback.Stub() {
+            override fun onCancellable(cancellationSignal: ICancellationSignal) {
+                if (it.isCancelled) {
+                    cancellationSignal.cancel()
+                }
+                mCancellationSignal = cancellationSignal
+            }
+            override fun onSuccess(result: IMySecondInterfaceCoreLibInfoAndBinderWrapper) {
+                it.resumeWith(Result.success(MySecondInterfaceClientProxy(result.binder,
+                        SandboxedUiAdapterFactory.createFromCoreLibInfo(result.coreLibInfo))))
+            }
+            override fun onFailure(throwableParcel: PrivacySandboxThrowableParcel) {
+                it.resumeWithException(fromThrowableParcel(throwableParcel))
+            }
+        }
+        remote.getUiInterface(transactionCallback)
+        it.invokeOnCancellation {
+            mCancellationSignal?.cancel()
+        }
+    }
+
     public override suspend fun maybeGetInterface(): MyInterface? = suspendCancellableCoroutine {
         var mCancellationSignal: ICancellationSignal? = null
         val transactionCallback = object: IMyInterfaceTransactionCallback.Stub() {
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt
index 5b7307c..27091fa 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt
@@ -21,6 +21,7 @@
 import androidx.privacysandbox.tools.core.generator.poet.AidlInterfaceSpec.Companion.aidlInterface
 import androidx.privacysandbox.tools.core.generator.poet.AidlMethodSpec
 import androidx.privacysandbox.tools.core.generator.poet.AidlParcelableSpec.Companion.aidlParcelable
+import androidx.privacysandbox.tools.core.generator.poet.AidlTypeKind
 import androidx.privacysandbox.tools.core.generator.poet.AidlTypeSpec
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
 import androidx.privacysandbox.tools.core.model.AnnotatedValue
@@ -32,6 +33,7 @@
 import androidx.privacysandbox.tools.core.model.Types.asNonNull
 import androidx.privacysandbox.tools.core.model.getOnlyService
 import androidx.privacysandbox.tools.core.model.hasSuspendFunctions
+import androidx.privacysandbox.tools.core.model.hasUiInterfaces
 import java.io.File
 import java.nio.file.Path
 import java.nio.file.Paths
@@ -78,12 +80,17 @@
 
     private fun compileAidlInterfaces(aidlSources: List<GeneratedSource>): List<GeneratedSource> {
         aidlCompiler.compile(workingDir, aidlSources.map { it.file.toPath() })
-        val javaSources = aidlSources.map {
-            GeneratedSource(
-                packageName = it.packageName,
-                interfaceName = it.interfaceName,
-                file = getJavaFileForAidlFile(it.file)
-            )
+        val javaSources = aidlSources.mapNotNull {
+            if (it.packageName == bundleType().packageName) {
+                // TODO(b/265266769): use framework stubs so we can stop special Bundle treatment
+                null
+            } else {
+                GeneratedSource(
+                    packageName = it.packageName,
+                    interfaceName = it.interfaceName,
+                    file = getJavaFileForAidlFile(it.file)
+                )
+            }
         }
         javaSources.forEach {
             check(it.file.exists()) {
@@ -96,21 +103,40 @@
     private fun generateAidlContent(): List<AidlFileSpec> {
         val values = api.values.map(::generateValue)
         val service = aidlInterface(api.getOnlyService())
-        val customCallbacks = api.callbacks.map(::aidlInterface)
-        val interfaces = api.interfaces.map(::aidlInterface)
+        val customCallbacks = api.callbacks.flatMap(::aidlInterface)
+        val interfaces = api.interfaces.flatMap(::aidlInterface)
         val suspendFunctionUtilities = generateSuspendFunctionUtilities()
+        val fakeBundle = generateFakeBundle()
         return suspendFunctionUtilities +
             service +
             values +
             customCallbacks +
-            interfaces
+            interfaces +
+            fakeBundle
     }
 
-    private fun aidlInterface(annotatedInterface: AnnotatedInterface) =
-        aidlInterface(Type(annotatedInterface.type.packageName, annotatedInterface.aidlName())) {
+    private fun aidlInterface(annotatedInterface: AnnotatedInterface): List<AidlFileSpec> {
+        val interfaceFile = aidlInterface(
+            Type(annotatedInterface.type.packageName, annotatedInterface.aidlName())
+        ) {
             annotatedInterface.methods.forEach { addMethod(it) }
         }
 
+        return buildList {
+            if (annotatedInterface.inheritsSandboxedUiAdapter) {
+                val uiWrapper = aidlParcelable(annotatedInterface.uiAdapterAidlWrapper()) {
+                    addProperty(
+                        "coreLibInfo",
+                        AidlTypeSpec(bundleType(), kind = AidlTypeKind.PARCELABLE)
+                    )
+                    addProperty("binder", annotatedInterface.aidlType())
+                }
+                add(uiWrapper)
+            }
+            add(interfaceFile)
+        }
+    }
+
     private fun AidlInterfaceSpec.Builder.addMethod(method: Method) {
         addMethod(method.name) {
             method.parameters.forEach { addParameter(it) }
@@ -128,11 +154,14 @@
             "Void cannot be a parameter type."
         }
         val aidlType = getAidlTypeDeclaration(parameter.type)
-        addParameter(
-            parameter.name,
-            aidlType,
-            isIn = api.valueMap.containsKey(parameter.type.asNonNull()) || aidlType.isList
-        )
+
+        addParameter(parameter.name, aidlType)
+    }
+
+    // TODO(b/265266769): Use framework stubs for Bundle
+    private fun generateFakeBundle(): List<AidlFileSpec> {
+        if (!api.hasUiInterfaces()) return emptyList()
+        return listOf(aidlParcelable(bundleType()))
     }
 
     private fun generateSuspendFunctionUtilities(): List<AidlFileSpec> {
@@ -158,10 +187,26 @@
                 addParameter("cancellationSignal", cancellationSignalType())
             }
             addMethod("onSuccess") {
-                if (type != Types.unit) addParameter(Parameter("result", type))
+                val interfaceType = api.interfaceMap[type]
+                if (interfaceType != null && interfaceType.inheritsSandboxedUiAdapter) {
+                    // Bypass getAidlTypeDeclaration, since we want to specify the UI wrapper
+                    // parcelable rather than the interface.
+                    addParameter(
+                        "result",
+                        AidlTypeSpec(
+                            interfaceType.uiAdapterAidlWrapper(),
+                            kind = AidlTypeKind.PARCELABLE
+                        )
+                    )
+                } else if (type != Types.unit) {
+                    addParameter(Parameter("result", type))
+                }
             }
             addMethod("onFailure") {
-                addParameter("throwableParcel", AidlTypeSpec(throwableParcelType()), isIn = true)
+                addParameter(
+                    "throwableParcel",
+                    AidlTypeSpec(throwableParcelType(), kind = AidlTypeKind.PARCELABLE)
+                )
             }
         }
     }
@@ -174,10 +219,21 @@
         return aidlParcelable(throwableParcelType()) {
             addProperty("exceptionClass", primitive("String"))
             addProperty("errorMessage", primitive("String"))
-            addProperty("stackTrace", AidlTypeSpec(parcelableStackFrameType(), isList = true))
-            addProperty("cause", AidlTypeSpec(throwableParcelType(), isList = true))
             addProperty(
-                "suppressedExceptions", AidlTypeSpec(throwableParcelType(), isList = true)
+                "stackTrace",
+                AidlTypeSpec(
+                    parcelableStackFrameType(),
+                    isList = true,
+                    kind = AidlTypeKind.PARCELABLE
+                )
+            )
+            addProperty(
+                "cause",
+                AidlTypeSpec(throwableParcelType(), isList = true, kind = AidlTypeKind.PARCELABLE)
+            )
+            addProperty(
+                "suppressedExceptions",
+                AidlTypeSpec(throwableParcelType(), isList = true, kind = AidlTypeKind.PARCELABLE)
             )
         }
     }
@@ -213,11 +269,18 @@
     }
 
     private fun packageName() = api.getOnlyService().type.packageName
-    private fun cancellationSignalType() = AidlTypeSpec(Type(packageName(), cancellationSignalName))
+    private fun cancellationSignalType() =
+        AidlTypeSpec(Type(packageName(), cancellationSignalName), kind = AidlTypeKind.INTERFACE)
+
     private fun throwableParcelType() = Type(packageName(), throwableParcelName)
     private fun parcelableStackFrameType() = Type(packageName(), parcelableStackFrameName)
+    private fun bundleType() = Type("android.os", "Bundle")
+
     private fun transactionCallback(type: Type) =
-        AidlTypeSpec(Type(api.getOnlyService().type.packageName, type.transactionCallbackName()))
+        AidlTypeSpec(
+            Type(api.getOnlyService().type.packageName, type.transactionCallbackName()),
+            kind = AidlTypeKind.INTERFACE
+        )
 
     private fun getAidlTypeDeclaration(rawType: Type): AidlTypeSpec {
         val type = wrapWithListIfNeeded(rawType)
@@ -254,18 +317,31 @@
     }
 }
 
-fun AnnotatedInterface.aidlName() = "I${type.simpleName}"
+fun AnnotatedInterface.aidlName(): String = "I${type.simpleName}"
 
 fun Type.transactionCallbackName() =
     "I${simpleName}${typeParameters.joinToString("") { it.simpleName }}TransactionCallback"
 
 internal fun AnnotatedValue.aidlType() =
-    AidlTypeSpec(Type(type.packageName, "Parcelable${type.simpleName}"))
+    AidlTypeSpec(
+        Type(type.packageName, "Parcelable${type.simpleName}"),
+        kind = AidlTypeKind.PARCELABLE
+    )
 
-internal fun AnnotatedInterface.aidlType() = AidlTypeSpec(Type(type.packageName, aidlName()))
+internal fun AnnotatedInterface.aidlType() =
+    AidlTypeSpec(Type(type.packageName, aidlName()), kind = AidlTypeKind.INTERFACE)
+
+internal fun AnnotatedInterface.uiAdapterAidlWrapper(): Type {
+    if (!inheritsSandboxedUiAdapter) {
+        throw IllegalArgumentException(
+            "Cannot get UI adapter AIDL wrapper type of non-UI interface"
+        )
+    }
+    return Type(type.packageName, "I${type.simpleName}CoreLibInfoAndBinderWrapper")
+}
 
 internal fun primitive(name: String, isList: Boolean = false) =
-    AidlTypeSpec(Type("", name), requiresImport = false, isList = isList)
+    AidlTypeSpec(Type("", name), isList = isList, kind = AidlTypeKind.PRIMITIVE)
 
 /**
  * Removes nullability from a type, and applies necessary changes to represent it in AIDL.
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/BinderCodeConverter.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/BinderCodeConverter.kt
index ec1cb96..33d8ebf 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/BinderCodeConverter.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/BinderCodeConverter.kt
@@ -190,6 +190,9 @@
         }
         val sandboxInterface = api.interfaceMap[type]
         if (sandboxInterface != null) {
+            if (sandboxInterface.inheritsSandboxedUiAdapter) {
+                return sandboxInterface.uiAdapterAidlWrapper().poetTypeName()
+            }
             return sandboxInterface.aidlType().innerType.poetTypeName()
         }
         if (type.qualifiedName == List::class.qualifiedName)
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt
index 679197d..a63fbf1 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt
@@ -18,13 +18,30 @@
 
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
 import androidx.privacysandbox.tools.core.model.ParsedApi
+import com.squareup.kotlinpoet.ClassName
 import com.squareup.kotlinpoet.CodeBlock
 
 class ClientBinderCodeConverter(api: ParsedApi) : BinderCodeConverter(api) {
+    companion object {
+        val sandboxedUiAdapterFactoryClass =
+            ClassName("androidx.privacysandbox.ui.client", "SandboxedUiAdapterFactory")
+    }
+
     override fun convertToInterfaceModelCode(
         annotatedInterface: AnnotatedInterface,
         expression: String
-    ): CodeBlock = CodeBlock.of("%T(%L)", annotatedInterface.clientProxyNameSpec(), expression)
+    ): CodeBlock {
+        if (annotatedInterface.inheritsSandboxedUiAdapter) {
+            return CodeBlock.of(
+                "%T(%L.binder, %T.createFromCoreLibInfo(%L.coreLibInfo))",
+                annotatedInterface.clientProxyNameSpec(),
+                expression,
+                sandboxedUiAdapterFactoryClass,
+                expression,
+            )
+        }
+        return CodeBlock.of("%T(%L)", annotatedInterface.clientProxyNameSpec(), expression)
+    }
 
     override fun convertToInterfaceBinderCode(
         annotatedInterface: AnnotatedInterface,
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlMethodSpec.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlMethodSpec.kt
index db27169..ce117d6 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlMethodSpec.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlMethodSpec.kt
@@ -26,8 +26,8 @@
             parameters.add(parameter)
         }
 
-        fun addParameter(name: String, type: AidlTypeSpec, isIn: Boolean = false) {
-            addParameter(AidlParameterSpec(name, type, isIn))
+        fun addParameter(name: String, type: AidlTypeSpec) {
+            addParameter(AidlParameterSpec(name, type, isIn = type.isList || type.isParcelable))
         }
 
         fun build() = AidlMethodSpec(name, parameters)
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlTypeSpec.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlTypeSpec.kt
index f87cf6d..4aeb180 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlTypeSpec.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlTypeSpec.kt
@@ -18,9 +18,15 @@
 
 import androidx.privacysandbox.tools.core.model.Type
 
+internal enum class AidlTypeKind {
+    PRIMITIVE,
+    PARCELABLE,
+    INTERFACE,
+}
+
 internal data class AidlTypeSpec(
     val innerType: Type,
-    val requiresImport: Boolean = true,
+    val kind: AidlTypeKind,
     val isList: Boolean = false,
 ) {
     override fun toString() = buildString {
@@ -31,6 +37,9 @@
     /** Returns a new type spec representing a list of this type. */
     fun listSpec(): AidlTypeSpec {
         require(!isList) { "Nested lists are not supported." }
-        return AidlTypeSpec(innerType, requiresImport, isList = true)
+        return copy(isList = true)
     }
+
+    val requiresImport = kind != AidlTypeKind.PRIMITIVE
+    val isParcelable = kind == AidlTypeKind.PARCELABLE
 }
\ No newline at end of file
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedInterface.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedInterface.kt
index 070df87..dc289c6 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedInterface.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedInterface.kt
@@ -26,4 +26,6 @@
      */
     val superTypes: List<Type> = emptyList(),
     val methods: List<Method> = emptyList(),
-)
\ No newline at end of file
+) {
+    val inheritsSandboxedUiAdapter = superTypes.contains(Types.sandboxedUiAdapter)
+}
\ No newline at end of file
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt
index 88245e9..7b61ecc 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt
@@ -30,6 +30,10 @@
         .any(Method::isSuspend)
 }
 
+fun ParsedApi.hasUiInterfaces(): Boolean {
+    return interfaces.any { it.inheritsSandboxedUiAdapter }
+}
+
 object Types {
     val unit = Type(packageName = "kotlin", simpleName = "Unit")
     val boolean = Type(packageName = "kotlin", simpleName = "Boolean")
diff --git a/privacysandbox/tools/tools-testing/src/main/java/androidx/privacysandbox/tools/testing/LibraryStubs.kt b/privacysandbox/tools/tools-testing/src/main/java/androidx/privacysandbox/tools/testing/LibraryStubs.kt
index b51203a..b73cc1f 100644
--- a/privacysandbox/tools/tools-testing/src/main/java/androidx/privacysandbox/tools/testing/LibraryStubs.kt
+++ b/privacysandbox/tools/tools-testing/src/main/java/androidx/privacysandbox/tools/testing/LibraryStubs.kt
@@ -111,6 +111,43 @@
         |}
         |""".trimMargin()
     ),
+    Source.kotlin(
+        "androidx/privacysandbox/ui/client/SandboxedUiAdapterFactory.kt", """
+        |package androidx.privacysandbox.ui.client
+        |import android.content.Context
+        |import android.hardware.display.DisplayManager
+        |import android.os.Binder
+        |import android.os.Build
+        |import android.os.Bundle
+        |import android.view.Display
+        |import android.view.SurfaceControlViewHost
+        |import android.view.SurfaceView
+        |import android.view.View
+        |import androidx.annotation.NonNull
+        |import androidx.annotation.RequiresApi
+        |import androidx.privacysandbox.ui.core.SandboxedUiAdapter
+        |import java.util.concurrent.Executor
+        |@RequiresApi(Build.VERSION_CODES.TIRAMISU)
+        |object SandboxedUiAdapterFactory {
+        |    fun createFromCoreLibInfo(coreLibInfo: Bundle): SandboxedUiAdapter {
+        |        return RemoteAdapter(coreLibInfo)
+        |    }
+        |    private class RemoteAdapter(private val coreLibInfo: Bundle) :
+        |        SandboxedUiAdapter {
+        |        override fun openSession(
+        |            context: Context,
+        |            initialWidth: Int,
+        |            initialHeight: Int,
+        |            isZOrderOnTop: Boolean,
+        |            clientExecutor: Executor,
+        |            client: SandboxedUiAdapter.SessionClient
+        |        ) {
+        |            // This space intentionally left blank
+        |        }
+        |    }
+        |}
+        |""".trimMargin()
+    ),
 )
 
 val allTestLibraryStubs = syntheticSdkRuntimeLibraryStubs + syntheticUiLibraryStubs
\ No newline at end of file
diff --git a/recyclerview/recyclerview-lint/src/main/java/androidx/recyclerview/lint/RecyclerViewIssueRegistry.kt b/recyclerview/recyclerview-lint/src/main/java/androidx/recyclerview/lint/RecyclerViewIssueRegistry.kt
index 4e2d8ab..877177f 100644
--- a/recyclerview/recyclerview-lint/src/main/java/androidx/recyclerview/lint/RecyclerViewIssueRegistry.kt
+++ b/recyclerview/recyclerview-lint/src/main/java/androidx/recyclerview/lint/RecyclerViewIssueRegistry.kt
@@ -25,7 +25,7 @@
 
 class RecyclerViewIssueRegistry : IssueRegistry() {
     override val minApi = CURRENT_API
-    override val api = 13
+    override val api = 14
     override val issues: List<Issue>
         get() = listOf(
             InvalidSetHasFixedSizeDetector.ISSUE
diff --git a/room/room-ktx/api/current.ignore b/room/room-ktx/api/current.ignore
new file mode 100644
index 0000000..26a7fe6
--- /dev/null
+++ b/room/room-ktx/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.room.CoroutinesRoomKt:
+    Removed class androidx.room.CoroutinesRoomKt
diff --git a/room/room-ktx/api/current.txt b/room/room-ktx/api/current.txt
index 6178ad3..666ad72 100644
--- a/room/room-ktx/api/current.txt
+++ b/room/room-ktx/api/current.txt
@@ -1,9 +1,6 @@
 // Signature format: 4.0
 package androidx.room {
 
-  public final class CoroutinesRoomKt {
-  }
-
   public final class RoomDatabaseKt {
     method public static kotlinx.coroutines.flow.Flow<java.util.Set<java.lang.String>> invalidationTrackerFlow(androidx.room.RoomDatabase, String![] tables, optional boolean emitInitialState);
     method public static suspend <R> Object? withTransaction(androidx.room.RoomDatabase, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
diff --git a/room/room-ktx/api/public_plus_experimental_current.txt b/room/room-ktx/api/public_plus_experimental_current.txt
index 6178ad3..666ad72 100644
--- a/room/room-ktx/api/public_plus_experimental_current.txt
+++ b/room/room-ktx/api/public_plus_experimental_current.txt
@@ -1,9 +1,6 @@
 // Signature format: 4.0
 package androidx.room {
 
-  public final class CoroutinesRoomKt {
-  }
-
   public final class RoomDatabaseKt {
     method public static kotlinx.coroutines.flow.Flow<java.util.Set<java.lang.String>> invalidationTrackerFlow(androidx.room.RoomDatabase, String![] tables, optional boolean emitInitialState);
     method public static suspend <R> Object? withTransaction(androidx.room.RoomDatabase, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
diff --git a/room/room-ktx/api/restricted_current.ignore b/room/room-ktx/api/restricted_current.ignore
new file mode 100644
index 0000000..26a7fe6
--- /dev/null
+++ b/room/room-ktx/api/restricted_current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.room.CoroutinesRoomKt:
+    Removed class androidx.room.CoroutinesRoomKt
diff --git a/room/room-ktx/api/restricted_current.txt b/room/room-ktx/api/restricted_current.txt
index f93c497a9..884fcfe 100644
--- a/room/room-ktx/api/restricted_current.txt
+++ b/room/room-ktx/api/restricted_current.txt
@@ -14,9 +14,6 @@
     method public suspend <R> Object? execute(androidx.room.RoomDatabase db, boolean inTransaction, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Callable<R> callable, kotlin.coroutines.Continuation<? super R>);
   }
 
-  public final class CoroutinesRoomKt {
-  }
-
   public final class RoomDatabaseKt {
     method public static kotlinx.coroutines.flow.Flow<java.util.Set<java.lang.String>> invalidationTrackerFlow(androidx.room.RoomDatabase, String![] tables, optional boolean emitInitialState);
     method public static suspend <R> Object? withTransaction(androidx.room.RoomDatabase, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
diff --git a/room/room-runtime-lint/src/main/java/androidx/room/lint/CursorKotlinUseIssueDetector.kt b/room/room-runtime-lint/src/main/java/androidx/room/lint/CursorKotlinUseIssueDetector.kt
index 4ddc81c..57e13f0 100644
--- a/room/room-runtime-lint/src/main/java/androidx/room/lint/CursorKotlinUseIssueDetector.kt
+++ b/room/room-runtime-lint/src/main/java/androidx/room/lint/CursorKotlinUseIssueDetector.kt
@@ -64,7 +64,9 @@
         }
         // If the call is within an SDK_INT check, then its OK
         if (
+            @Suppress("DEPRECATION") // b/262915639
             VersionChecks.isWithinVersionCheckConditional(context, node, 16) ||
+            @Suppress("DEPRECATION") // b/262915639
             VersionChecks.isPrecededByVersionCheckExit(context, node, 16)
         ) {
             return
diff --git a/room/room-runtime-lint/src/main/java/androidx/room/lint/RoomIssueRegistry.kt b/room/room-runtime-lint/src/main/java/androidx/room/lint/RoomIssueRegistry.kt
index 577b802..daedba0 100644
--- a/room/room-runtime-lint/src/main/java/androidx/room/lint/RoomIssueRegistry.kt
+++ b/room/room-runtime-lint/src/main/java/androidx/room/lint/RoomIssueRegistry.kt
@@ -23,7 +23,7 @@
 
 class RoomIssueRegistry : IssueRegistry() {
     override val minApi = CURRENT_API
-    override val api = 13
+    override val api = 14
     override val issues: List<Issue> = listOf(
         CursorKotlinUseIssueDetector.ISSUE,
     )
diff --git a/samples/MediaRoutingDemo/build.gradle b/samples/MediaRoutingDemo/build.gradle
index 4db96f4..a40ccba 100644
--- a/samples/MediaRoutingDemo/build.gradle
+++ b/samples/MediaRoutingDemo/build.gradle
@@ -4,13 +4,14 @@
 }
 
 dependencies {
-    implementation(project(":appcompat:appcompat"))
+    implementation("androidx.appcompat:appcompat:1.6.0")
     implementation(project(":mediarouter:mediarouter"))
-    implementation(project(":recyclerview:recyclerview"))
+    implementation("androidx.recyclerview:recyclerview:1.2.1")
     implementation("androidx.concurrent:concurrent-futures:1.1.0")
     implementation(libs.material)
 
     implementation ("androidx.multidex:multidex:2.0.1")
+    implementation("com.google.guava:guava:31.1-android")
 }
 
 android {
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/MainActivity.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/MainActivity.java
index 90ccfc5..700e126 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/MainActivity.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/MainActivity.java
@@ -685,7 +685,7 @@
     /**
      * Controller Dialog Fragment for the media router dialog.
      */
-    private static class ControllerDialogFragment extends MediaRouteControllerDialogFragment {
+    public static class ControllerDialogFragment extends MediaRouteControllerDialogFragment {
         private MainActivity mMainActivity;
         private MediaRouteControllerDialog mControllerDialog;
         private CheckBox mUseDefaultControlCheckBox;
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/RemotePlayer.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/RemotePlayer.java
index 39575c3..8da024a 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/RemotePlayer.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/player/RemotePlayer.java
@@ -23,6 +23,8 @@
 import android.util.Log;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.concurrent.futures.CallbackToFutureAdapter;
 import androidx.mediarouter.media.MediaItemStatus;
 import androidx.mediarouter.media.MediaRouter.ControlRequestCallback;
 import androidx.mediarouter.media.MediaRouter.RouteInfo;
@@ -34,6 +36,9 @@
 
 import com.example.androidx.mediarouting.data.PlaylistItem;
 import com.example.androidx.mediarouting.providers.SampleMediaRouteProvider;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -176,12 +181,11 @@
     }
 
     private void updateStatus(@NonNull PlaylistItem item, boolean shouldUpdate) {
-        mClient.getStatus(item.getRemoteItemId(), null, new ItemActionCallback() {
+
+        ListenableFuture<MediaItemStatus> remoteStatusFuture = getRemoteItemStatus(item);
+        Futures.addCallback(remoteStatusFuture, new FutureCallback<MediaItemStatus>() {
             @Override
-            public void onResult(@NonNull Bundle data, @NonNull String sessionId,
-                    MediaSessionStatus sessionStatus, @NonNull String itemId,
-                    @NonNull MediaItemStatus itemStatus) {
-                logStatus("getStatus: succeeded", sessionId, sessionStatus, itemId, itemStatus);
+            public void onSuccess(MediaItemStatus itemStatus) {
                 int state = itemStatus.getPlaybackState();
                 if (state == MediaItemStatus.PLAYBACK_STATE_PLAYING
                         || state == MediaItemStatus.PLAYBACK_STATE_PAUSED
@@ -197,13 +201,12 @@
             }
 
             @Override
-            public void onError(String error, int code, Bundle data) {
-                logError("getStatus: failed", error, code);
+            public void onFailure(@NonNull Throwable t) {
                 if (shouldUpdate && mCallback != null) {
                     mCallback.onPlaylistReady();
                 }
             }
-        });
+        }, Runnable::run);
     }
 
     @Override
@@ -413,6 +416,30 @@
         });
     }
 
+    private ListenableFuture<MediaItemStatus> getRemoteItemStatus(
+            @NonNull PlaylistItem playlistItem) {
+        return CallbackToFutureAdapter.getFuture(completer -> {
+            mClient.getStatus(playlistItem.getRemoteItemId(), null, new ItemActionCallback() {
+                @Override
+                public void onError(@Nullable String error, int code, @Nullable Bundle data) {
+                    logError("getStatus: failed", error, code);
+                    completer.setException(new RuntimeException(error));
+                }
+
+                @Override
+                public void onResult(@NonNull Bundle data, @NonNull String sessionId,
+                        @Nullable MediaSessionStatus sessionStatus, @NonNull String itemId,
+                        @NonNull MediaItemStatus itemStatus) {
+                    logStatus("getStatus: succeeded", sessionId, sessionStatus, itemId,
+                            itemStatus);
+                    completer.set(itemStatus);
+                }
+            });
+
+            return "RemotePlayer.getRemoteItemStatus()";
+        });
+    }
+
     private void seekInternal(final PlaylistItem item) {
         throwIfNoSession();
 
diff --git a/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/StartupRuntimeIssueRegistry.kt b/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/StartupRuntimeIssueRegistry.kt
index 84f5620..fad6e87 100644
--- a/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/StartupRuntimeIssueRegistry.kt
+++ b/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/StartupRuntimeIssueRegistry.kt
@@ -28,7 +28,7 @@
  */
 class StartupRuntimeIssueRegistry : IssueRegistry() {
     override val minApi = CURRENT_API
-    override val api = 13
+    override val api = 14
     override val issues: List<Issue>
         get() = listOf(
             InitializerConstructorDetector.ISSUE,
diff --git a/testutils/testutils-paparazzi/build.gradle b/testutils/testutils-paparazzi/build.gradle
index 4128c88..aeb9d21 100644
--- a/testutils/testutils-paparazzi/build.gradle
+++ b/testutils/testutils-paparazzi/build.gradle
@@ -25,7 +25,12 @@
 BundleInsideHelper.forInsideJar(
         project,
         "com.google.protobuf",
-        "androidx.testutils.paparazzi.protobuf"
+        // b/268288856 untangle this mess.
+        // Currently this has to match test/screenshot/screenshot/build.gradle because sometimes
+        // both :internal-testutils-paparazzi and :test:screenshot:screenshot are added to the
+        // classpath and picking a different package will cause missing class exceptions due to
+        // class shadowing
+        "androidx.test.screenshot.protobuf"
 )
 
 dependencies {
diff --git a/testutils/testutils-paparazzi/src/main/kotlin/androidx/testutils/paparazzi/GoldenVerifier.kt b/testutils/testutils-paparazzi/src/main/kotlin/androidx/testutils/paparazzi/GoldenVerifier.kt
index bfca2c7..71be049 100644
--- a/testutils/testutils-paparazzi/src/main/kotlin/androidx/testutils/paparazzi/GoldenVerifier.kt
+++ b/testutils/testutils-paparazzi/src/main/kotlin/androidx/testutils/paparazzi/GoldenVerifier.kt
@@ -110,8 +110,8 @@
             )
             is AnalysisResult.MissingGolden -> throw AssertionError(
                 "Expected golden image for test \"${snapshot.testName.methodName}\" does not " +
-                    "exist. Run ${updateGoldenGradleTask()} to create it and update all golden " +
-                    "images for this test module."
+                    "exist. Run ${updateGoldenGradleTask()} -Pandroidx.ignoreTestFailures=true " +
+                    "to create it and update all golden images for this test module."
             )
         }
     }
diff --git a/testutils/testutils-paparazzi/src/test/kotlin/androidx/testutils/paparazzi/GoldenVerifierTest.kt b/testutils/testutils-paparazzi/src/test/kotlin/androidx/testutils/paparazzi/GoldenVerifierTest.kt
index 6a460df..0775bf6 100644
--- a/testutils/testutils-paparazzi/src/test/kotlin/androidx/testutils/paparazzi/GoldenVerifierTest.kt
+++ b/testutils/testutils-paparazzi/src/test/kotlin/androidx/testutils/paparazzi/GoldenVerifierTest.kt
@@ -219,8 +219,8 @@
     @Test
     fun `asserts on missing golden`() {
         val message = "Expected golden image for test \"asserts on missing golden\" does not " +
-            "exist. Run :updateGolden to create it and update all golden images for this test " +
-            "module."
+            "exist. Run :updateGolden -Pandroidx.ignoreTestFailures=true to create it and update " +
+            "all golden images for this test module."
 
         assertFailsWithMessage(message) {
             goldenVerifier().assertMatchesGolden(snapshot(), loadTestImage("circle"))
diff --git a/tv/tv-foundation/api/current.txt b/tv/tv-foundation/api/current.txt
index bffc836..06738d6 100644
--- a/tv/tv-foundation/api/current.txt
+++ b/tv/tv-foundation/api/current.txt
@@ -9,9 +9,6 @@
     property public final float parentFraction;
   }
 
-  public final class ScrollableWithPivotKt {
-  }
-
 }
 
 package androidx.tv.foundation.lazy.grid {
diff --git a/tv/tv-foundation/api/restricted_current.txt b/tv/tv-foundation/api/restricted_current.txt
index bffc836..06738d6 100644
--- a/tv/tv-foundation/api/restricted_current.txt
+++ b/tv/tv-foundation/api/restricted_current.txt
@@ -9,9 +9,6 @@
     property public final float parentFraction;
   }
 
-  public final class ScrollableWithPivotKt {
-  }
-
 }
 
 package androidx.tv.foundation.lazy.grid {
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridPrefetcherTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridPrefetcherTest.kt
index 914a8d7..513df79 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridPrefetcherTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridPrefetcherTest.kt
@@ -85,6 +85,7 @@
         }
 
         waitForPrefetch(4)
+        waitForPrefetch(5)
 
         rule.onNodeWithTag("4")
             .assertExists()
@@ -105,6 +106,7 @@
         }
 
         waitForPrefetch(2)
+        waitForPrefetch(3)
 
         rule.onNodeWithTag("2")
             .assertExists()
@@ -125,6 +127,7 @@
         }
 
         waitForPrefetch(6)
+        waitForPrefetch(7)
 
         rule.onNodeWithTag("6")
             .assertExists()
@@ -141,6 +144,7 @@
         }
 
         waitForPrefetch(0)
+        waitForPrefetch(1)
 
         rule.onNodeWithTag("0")
             .assertExists()
@@ -221,6 +225,7 @@
         }
 
         waitForPrefetch(6)
+        waitForPrefetch(7)
 
         rule.onNodeWithTag("6")
             .assertExists()
@@ -239,6 +244,7 @@
         }
 
         waitForPrefetch(0)
+        waitForPrefetch(1)
 
         rule.onNodeWithTag("0")
             .assertExists()
diff --git a/tv/tv-material/api/current.txt b/tv/tv-material/api/current.txt
index 83297a9..ad9374e 100644
--- a/tv/tv-material/api/current.txt
+++ b/tv/tv-material/api/current.txt
@@ -1,20 +1,11 @@
 // Signature format: 4.0
 package androidx.tv.material3 {
 
-  public final class CarouselKt {
-  }
-
-  public final class ColorSchemeKt {
-  }
-
   public final class ContentColorKt {
     method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> getLocalContentColor();
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalContentColor;
   }
 
-  public final class ImmersiveListKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.tv.material3.ColorScheme getColorScheme();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.tv.material3.Shapes getShapes();
@@ -24,9 +15,6 @@
     field public static final androidx.tv.material3.MaterialTheme INSTANCE;
   }
 
-  public final class MaterialThemeKt {
-  }
-
   public final class ShapeDefaults {
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraLarge();
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraSmall();
@@ -61,12 +49,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.unit.Dp> LocalAbsoluteTonalElevation;
   }
 
-  public final class TabKt {
-  }
-
-  public final class TabRowKt {
-  }
-
   public final class TextKt {
     method @androidx.compose.runtime.Composable public static void ProvideTextStyle(androidx.compose.ui.text.TextStyle value, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
diff --git a/tv/tv-material/api/restricted_current.txt b/tv/tv-material/api/restricted_current.txt
index 83297a9..ad9374e 100644
--- a/tv/tv-material/api/restricted_current.txt
+++ b/tv/tv-material/api/restricted_current.txt
@@ -1,20 +1,11 @@
 // Signature format: 4.0
 package androidx.tv.material3 {
 
-  public final class CarouselKt {
-  }
-
-  public final class ColorSchemeKt {
-  }
-
   public final class ContentColorKt {
     method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> getLocalContentColor();
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalContentColor;
   }
 
-  public final class ImmersiveListKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.tv.material3.ColorScheme getColorScheme();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.tv.material3.Shapes getShapes();
@@ -24,9 +15,6 @@
     field public static final androidx.tv.material3.MaterialTheme INSTANCE;
   }
 
-  public final class MaterialThemeKt {
-  }
-
   public final class ShapeDefaults {
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraLarge();
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraSmall();
@@ -61,12 +49,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.unit.Dp> LocalAbsoluteTonalElevation;
   }
 
-  public final class TabKt {
-  }
-
-  public final class TabRowKt {
-  }
-
   public final class TextKt {
     method @androidx.compose.runtime.Composable public static void ProvideTextStyle(androidx.compose.ui.text.TextStyle value, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
diff --git a/wear/compose/compose-foundation/api/current.txt b/wear/compose/compose-foundation/api/current.txt
index 2c1e57f..4e9e434 100644
--- a/wear/compose/compose-foundation/api/current.txt
+++ b/wear/compose/compose-foundation/api/current.txt
@@ -196,9 +196,6 @@
     method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
   }
 
-  public final class ScalingLazyColumnMeasureKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
     field public static final androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType.Companion Companion;
   }
diff --git a/wear/compose/compose-foundation/api/public_plus_experimental_current.txt b/wear/compose/compose-foundation/api/public_plus_experimental_current.txt
index 2c1e57f..4e9e434 100644
--- a/wear/compose/compose-foundation/api/public_plus_experimental_current.txt
+++ b/wear/compose/compose-foundation/api/public_plus_experimental_current.txt
@@ -196,9 +196,6 @@
     method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
   }
 
-  public final class ScalingLazyColumnMeasureKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
     field public static final androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType.Companion Companion;
   }
diff --git a/wear/compose/compose-foundation/api/restricted_current.txt b/wear/compose/compose-foundation/api/restricted_current.txt
index 2c1e57f..4e9e434 100644
--- a/wear/compose/compose-foundation/api/restricted_current.txt
+++ b/wear/compose/compose-foundation/api/restricted_current.txt
@@ -196,9 +196,6 @@
     method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
   }
 
-  public final class ScalingLazyColumnMeasureKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
     field public static final androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType.Companion Companion;
   }
diff --git a/wear/compose/compose-material-core/api/current.txt b/wear/compose/compose-material-core/api/current.txt
index d039d22..e6f50d0 100644
--- a/wear/compose/compose-material-core/api/current.txt
+++ b/wear/compose/compose-material-core/api/current.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.wear.compose.materialcore {
-
-  public final class ButtonKt {
-  }
-
-}
-
diff --git a/wear/compose/compose-material-core/api/public_plus_experimental_current.txt b/wear/compose/compose-material-core/api/public_plus_experimental_current.txt
index d039d22..e6f50d0 100644
--- a/wear/compose/compose-material-core/api/public_plus_experimental_current.txt
+++ b/wear/compose/compose-material-core/api/public_plus_experimental_current.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.wear.compose.materialcore {
-
-  public final class ButtonKt {
-  }
-
-}
-
diff --git a/wear/compose/compose-material-core/api/restricted_current.txt b/wear/compose/compose-material-core/api/restricted_current.txt
index d039d22..e6f50d0 100644
--- a/wear/compose/compose-material-core/api/restricted_current.txt
+++ b/wear/compose/compose-material-core/api/restricted_current.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.wear.compose.materialcore {
-
-  public final class ButtonKt {
-  }
-
-}
-
diff --git a/wear/compose/compose-material/api/current.ignore b/wear/compose/compose-material/api/current.ignore
index b61ff34..7b452d1 100644
--- a/wear/compose/compose-material/api/current.ignore
+++ b/wear/compose/compose-material/api/current.ignore
@@ -9,6 +9,8 @@
     Removed class androidx.wear.compose.material.DefaultTimeSourceKt
 RemovedClass: androidx.wear.compose.material.MaterialTextSelectionColorsKt:
     Removed class androidx.wear.compose.material.MaterialTextSelectionColorsKt
+RemovedClass: androidx.wear.compose.material.PlaceholderKt:
+    Removed class androidx.wear.compose.material.PlaceholderKt
 RemovedClass: androidx.wear.compose.material.RangeDefaultsKt:
     Removed class androidx.wear.compose.material.RangeDefaultsKt
 RemovedClass: androidx.wear.compose.material.Resources_androidKt:
@@ -17,5 +19,7 @@
     Removed class androidx.wear.compose.material.ScalingLazyColumnMeasureKt
 RemovedClass: androidx.wear.compose.material.ShapesKt:
     Removed class androidx.wear.compose.material.ShapesKt
+RemovedClass: androidx.wear.compose.material.SwipeableKt:
+    Removed class androidx.wear.compose.material.SwipeableKt
 RemovedClass: androidx.wear.compose.material.TypographyKt:
     Removed class androidx.wear.compose.material.TypographyKt
diff --git a/wear/compose/compose-material/api/current.txt b/wear/compose/compose-material/api/current.txt
index c0a9816..fca0d12 100644
--- a/wear/compose/compose-material/api/current.txt
+++ b/wear/compose/compose-material/api/current.txt
@@ -335,9 +335,6 @@
     property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerState,java.lang.Object> Saver;
   }
 
-  public final class PlaceholderKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PositionIndicatorAlignment {
     field public static final androidx.wear.compose.material.PositionIndicatorAlignment.Companion Companion;
   }
@@ -624,9 +621,6 @@
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissValue Dismissed;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
diff --git a/wear/compose/compose-material/api/restricted_current.ignore b/wear/compose/compose-material/api/restricted_current.ignore
index b61ff34..7b452d1 100644
--- a/wear/compose/compose-material/api/restricted_current.ignore
+++ b/wear/compose/compose-material/api/restricted_current.ignore
@@ -9,6 +9,8 @@
     Removed class androidx.wear.compose.material.DefaultTimeSourceKt
 RemovedClass: androidx.wear.compose.material.MaterialTextSelectionColorsKt:
     Removed class androidx.wear.compose.material.MaterialTextSelectionColorsKt
+RemovedClass: androidx.wear.compose.material.PlaceholderKt:
+    Removed class androidx.wear.compose.material.PlaceholderKt
 RemovedClass: androidx.wear.compose.material.RangeDefaultsKt:
     Removed class androidx.wear.compose.material.RangeDefaultsKt
 RemovedClass: androidx.wear.compose.material.Resources_androidKt:
@@ -17,5 +19,7 @@
     Removed class androidx.wear.compose.material.ScalingLazyColumnMeasureKt
 RemovedClass: androidx.wear.compose.material.ShapesKt:
     Removed class androidx.wear.compose.material.ShapesKt
+RemovedClass: androidx.wear.compose.material.SwipeableKt:
+    Removed class androidx.wear.compose.material.SwipeableKt
 RemovedClass: androidx.wear.compose.material.TypographyKt:
     Removed class androidx.wear.compose.material.TypographyKt
diff --git a/wear/compose/compose-material/api/restricted_current.txt b/wear/compose/compose-material/api/restricted_current.txt
index c0a9816..fca0d12 100644
--- a/wear/compose/compose-material/api/restricted_current.txt
+++ b/wear/compose/compose-material/api/restricted_current.txt
@@ -335,9 +335,6 @@
     property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerState,java.lang.Object> Saver;
   }
 
-  public final class PlaceholderKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PositionIndicatorAlignment {
     field public static final androidx.wear.compose.material.PositionIndicatorAlignment.Companion Companion;
   }
@@ -624,9 +621,6 @@
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissValue Dismissed;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
diff --git a/wear/watchface/watchface-client-guava/src/androidTest/java/androidx/wear/watchface/client/guava/ListenableWatchFaceControlClientTest.kt b/wear/watchface/watchface-client-guava/src/androidTest/java/androidx/wear/watchface/client/guava/ListenableWatchFaceControlClientTest.kt
index 6495a7f..4801d04 100644
--- a/wear/watchface/watchface-client-guava/src/androidTest/java/androidx/wear/watchface/client/guava/ListenableWatchFaceControlClientTest.kt
+++ b/wear/watchface/watchface-client-guava/src/androidTest/java/androidx/wear/watchface/client/guava/ListenableWatchFaceControlClientTest.kt
@@ -40,6 +40,8 @@
 import com.google.common.truth.Truth.assertThat
 import java.time.ZonedDateTime
 import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import org.junit.Assert
 import org.junit.Assert.assertNull
 import org.junit.Before
 import org.junit.Test
@@ -47,8 +49,6 @@
 import org.mockito.Mock
 import org.mockito.Mockito
 import org.mockito.MockitoAnnotations
-import java.util.concurrent.TimeUnit
-import org.junit.Assert
 
 private const val TIMEOUT_MS = 500L
 
@@ -56,41 +56,36 @@
 @MediumTest
 public class ListenableWatchFaceControlClientTest {
 
-    @Mock
-    private lateinit var surfaceHolder: SurfaceHolder
-    @Mock
-    private lateinit var surface: Surface
+    @Mock private lateinit var surfaceHolder: SurfaceHolder
+    @Mock private lateinit var surface: Surface
 
     private val context = ApplicationProvider.getApplicationContext<Context>()
 
     @Before
     public fun setUp() {
         MockitoAnnotations.initMocks(this)
-        Mockito.`when`(surfaceHolder.surfaceFrame)
-            .thenReturn(Rect(0, 0, 400, 400))
+        Mockito.`when`(surfaceHolder.surfaceFrame).thenReturn(Rect(0, 0, 400, 400))
         Mockito.`when`(surfaceHolder.surface).thenReturn(surface)
     }
 
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun headlessSchemaSettingIds() {
-        val client = ListenableWatchFaceControlClient.createWatchFaceControlClient(
-            context,
-            context.packageName
-        ).get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+        val client =
+            ListenableWatchFaceControlClient.createWatchFaceControlClient(
+                    context,
+                    context.packageName
+                )
+                .get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
 
-        val headlessInstance = client.createHeadlessWatchFaceClient(
-            "id",
-            ComponentName(context, ExampleCanvasAnalogWatchFaceService::class.java),
-            DeviceConfig(
-                false,
-                false,
-                0,
-                0
-            ),
-            400,
-            400
-        )!!
+        val headlessInstance =
+            client.createHeadlessWatchFaceClient(
+                "id",
+                ComponentName(context, ExampleCanvasAnalogWatchFaceService::class.java),
+                DeviceConfig(false, false, 0, 0),
+                400,
+                400
+            )!!
 
         assertThat(headlessInstance.userStyleSchema.userStyleSettings.map { it.id.value })
             .containsExactly(
@@ -107,21 +102,18 @@
 
     @Test
     public fun createHeadlessWatchFaceClient_nonExistentWatchFaceComponentName() {
-        val client = ListenableWatchFaceControlClient.createWatchFaceControlClient(
-            context,
-            context.packageName
-        ).get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+        val client =
+            ListenableWatchFaceControlClient.createWatchFaceControlClient(
+                    context,
+                    context.packageName
+                )
+                .get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
 
         assertNull(
             client.createHeadlessWatchFaceClient(
                 "id",
                 ComponentName("?", "i.do.not.exist"),
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 400,
                 400
             )
@@ -132,37 +124,37 @@
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun listenableGetOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClient() {
-        val client = ListenableWatchFaceControlClient.createWatchFaceControlClient(
-            context,
-            context.packageName
-        ).get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+        val client =
+            ListenableWatchFaceControlClient.createWatchFaceControlClient(
+                    context,
+                    context.packageName
+                )
+                .get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
 
         @Suppress("deprecation")
         val interactiveInstanceFuture =
             client.listenableGetOrCreateInteractiveWatchFaceClient(
                 "listenableTestId",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 null,
                 null
             )
 
-        val service = object : ExampleCanvasAnalogWatchFaceService() {
-            init {
-                attachBaseContext(context)
+        val service =
+            object : ExampleCanvasAnalogWatchFaceService() {
+                init {
+                    attachBaseContext(context)
+                }
             }
-        }
-        service.onCreateEngine().onSurfaceChanged(
-            surfaceHolder,
-            0,
-            surfaceHolder.surfaceFrame.width(),
-            surfaceHolder.surfaceFrame.height()
-        )
+        service
+            .onCreateEngine()
+            .onSurfaceChanged(
+                surfaceHolder,
+                0,
+                surfaceHolder.surfaceFrame.width(),
+                surfaceHolder.surfaceFrame.height()
+            )
 
         val interactiveInstance = interactiveInstanceFuture.get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
         assertThat(interactiveInstance.userStyleSchema.userStyleSettings.map { it.id.value })
@@ -180,49 +172,39 @@
 
     @Test
     public fun createMultipleHeadlessInstances() {
-        val client = ListenableWatchFaceControlClient.createWatchFaceControlClient(
-            context,
-            context.packageName
-        ).get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+        val client =
+            ListenableWatchFaceControlClient.createWatchFaceControlClient(
+                    context,
+                    context.packageName
+                )
+                .get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
 
-        val headlessInstance1 = client.createHeadlessWatchFaceClient(
-            "id1",
-            ComponentName(context, ExampleCanvasAnalogWatchFaceService::class.java),
-            DeviceConfig(
-                false,
-                false,
-                0,
-                0
-            ),
-            400,
-            400
-        )!!
+        val headlessInstance1 =
+            client.createHeadlessWatchFaceClient(
+                "id1",
+                ComponentName(context, ExampleCanvasAnalogWatchFaceService::class.java),
+                DeviceConfig(false, false, 0, 0),
+                400,
+                400
+            )!!
 
-        val headlessInstance2 = client.createHeadlessWatchFaceClient(
-            "id2",
-            ComponentName(context, ExampleCanvasAnalogWatchFaceService::class.java),
-            DeviceConfig(
-                false,
-                false,
-                0,
-                0
-            ),
-            400,
-            400
-        )!!
+        val headlessInstance2 =
+            client.createHeadlessWatchFaceClient(
+                "id2",
+                ComponentName(context, ExampleCanvasAnalogWatchFaceService::class.java),
+                DeviceConfig(false, false, 0, 0),
+                400,
+                400
+            )!!
 
-        val headlessInstance3 = client.createHeadlessWatchFaceClient(
-            "id3",
-            ComponentName(context, ExampleCanvasAnalogWatchFaceService::class.java),
-            DeviceConfig(
-                false,
-                false,
-                0,
-                0
-            ),
-            400,
-            400
-        )!!
+        val headlessInstance3 =
+            client.createHeadlessWatchFaceClient(
+                "id3",
+                ComponentName(context, ExampleCanvasAnalogWatchFaceService::class.java),
+                DeviceConfig(false, false, 0, 0),
+                400,
+                400
+            )!!
 
         headlessInstance3.close()
         headlessInstance2.close()
@@ -232,51 +214,47 @@
 
     @Test
     public fun createInteractiveAndHeadlessInstances() {
-        val client = ListenableWatchFaceControlClient.createWatchFaceControlClient(
-            context,
-            context.packageName
-        ).get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+        val client =
+            ListenableWatchFaceControlClient.createWatchFaceControlClient(
+                    context,
+                    context.packageName
+                )
+                .get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
 
         @Suppress("deprecation")
         val interactiveInstanceFuture =
             client.listenableGetOrCreateInteractiveWatchFaceClient(
                 "listenableTestId",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 null,
                 null
             )
 
-        val service = object : ExampleCanvasAnalogWatchFaceService() {
-            init {
-                attachBaseContext(context)
+        val service =
+            object : ExampleCanvasAnalogWatchFaceService() {
+                init {
+                    attachBaseContext(context)
+                }
             }
-        }
-        service.onCreateEngine().onSurfaceChanged(
-            surfaceHolder,
-            0,
-            surfaceHolder.surfaceFrame.width(),
-            surfaceHolder.surfaceFrame.height()
-        )
+        service
+            .onCreateEngine()
+            .onSurfaceChanged(
+                surfaceHolder,
+                0,
+                surfaceHolder.surfaceFrame.width(),
+                surfaceHolder.surfaceFrame.height()
+            )
 
         val interactiveInstance = interactiveInstanceFuture.get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
-        val headlessInstance1 = client.createHeadlessWatchFaceClient(
-            "id",
-            ComponentName(context, ExampleCanvasAnalogWatchFaceService::class.java),
-            DeviceConfig(
-                false,
-                false,
-                0,
-                0
-            ),
-            400,
-            400
-        )!!
+        val headlessInstance1 =
+            client.createHeadlessWatchFaceClient(
+                "id",
+                ComponentName(context, ExampleCanvasAnalogWatchFaceService::class.java),
+                DeviceConfig(false, false, 0, 0),
+                400,
+                400
+            )!!
 
         headlessInstance1.close()
         interactiveInstance.close()
@@ -285,77 +263,76 @@
 
     @Test
     public fun getInteractiveWatchFaceInstanceSysUI_notExist() {
-        val client = ListenableWatchFaceControlClient.createWatchFaceControlClient(
-            context,
-            context.packageName
-        ).get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+        val client =
+            ListenableWatchFaceControlClient.createWatchFaceControlClient(
+                    context,
+                    context.packageName
+                )
+                .get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
 
         assertNull(client.getInteractiveWatchFaceClientInstance("I do not exist"))
     }
 
     @Test
     public fun createWatchFaceControlClient_cancel() {
-        ListenableWatchFaceControlClient.createWatchFaceControlClient(
-            context,
-            context.packageName
-        ).cancel(true)
+        ListenableWatchFaceControlClient.createWatchFaceControlClient(context, context.packageName)
+            .cancel(true)
 
         // Canceling should not prevent a subsequent createWatchFaceControlClient.
-        val client = ListenableWatchFaceControlClient.createWatchFaceControlClient(
-            context,
-            context.packageName
-        ).get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+        val client =
+            ListenableWatchFaceControlClient.createWatchFaceControlClient(
+                    context,
+                    context.packageName
+                )
+                .get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
         assertThat(client).isNotNull()
         client.close()
     }
 
     @Test
     public fun listenableGetOrCreateInteractiveWatchFaceClient_cancel() {
-        val client = ListenableWatchFaceControlClient.createWatchFaceControlClient(
-            context,
-            context.packageName
-        ).get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+        val client =
+            ListenableWatchFaceControlClient.createWatchFaceControlClient(
+                    context,
+                    context.packageName
+                )
+                .get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
 
         @Suppress("deprecation")
-        client.listenableGetOrCreateInteractiveWatchFaceClient(
-            "listenableTestId",
-            DeviceConfig(
-                false,
-                false,
-                0,
-                0
-            ),
-            WatchUiState(false, 0),
-            null,
-            null
-        ).cancel(true)
+        client
+            .listenableGetOrCreateInteractiveWatchFaceClient(
+                "listenableTestId",
+                DeviceConfig(false, false, 0, 0),
+                WatchUiState(false, 0),
+                null,
+                null
+            )
+            .cancel(true)
 
         // Canceling should not prevent a subsequent listenableGetOrCreateInteractiveWatchFaceClient
         @Suppress("deprecation")
         val interactiveInstanceFuture =
             client.listenableGetOrCreateInteractiveWatchFaceClient(
                 "listenableTestId",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 null,
                 null
             )
-        val service = object : ExampleCanvasAnalogWatchFaceService() {
-            init {
-                attachBaseContext(context)
+        val service =
+            object : ExampleCanvasAnalogWatchFaceService() {
+                init {
+                    attachBaseContext(context)
+                }
             }
-        }
-        service.onCreateEngine().onSurfaceChanged(
-            surfaceHolder,
-            0,
-            surfaceHolder.surfaceFrame.width(),
-            surfaceHolder.surfaceFrame.height()
-        )
+        service
+            .onCreateEngine()
+            .onSurfaceChanged(
+                surfaceHolder,
+                0,
+                surfaceHolder.surfaceFrame.width(),
+                surfaceHolder.surfaceFrame.height()
+            )
 
         val interactiveInstance = interactiveInstanceFuture.get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
         assertThat(interactiveInstance).isNotNull()
@@ -365,21 +342,18 @@
 
     @Test
     public fun previewImageUpdateRequestedListener() {
-        val client = ListenableWatchFaceControlClient.createWatchFaceControlClient(
-            context,
-            context.packageName
-        ).get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+        val client =
+            ListenableWatchFaceControlClient.createWatchFaceControlClient(
+                    context,
+                    context.packageName
+                )
+                .get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
 
         var lastPreviewImageUpdateRequestedId = ""
         val interactiveInstanceFuture =
             client.listenableGetOrCreateInteractiveWatchFaceClient(
                 "listenableTestId",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 null,
                 null,
@@ -388,12 +362,14 @@
             )
 
         val service = TestWatchFaceServiceWithPreviewImageUpdateRequest(context, surfaceHolder)
-        service.onCreateEngine().onSurfaceChanged(
-            surfaceHolder,
-            0,
-            surfaceHolder.surfaceFrame.width(),
-            surfaceHolder.surfaceFrame.height()
-        )
+        service
+            .onCreateEngine()
+            .onSurfaceChanged(
+                surfaceHolder,
+                0,
+                surfaceHolder.surfaceFrame.width(),
+                surfaceHolder.surfaceFrame.height()
+            )
 
         val interactiveInstance = interactiveInstanceFuture.get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
         Assert.assertTrue(service.rendererInitializedLatch.await(500, TimeUnit.MILLISECONDS))
@@ -418,8 +394,7 @@
 
     override fun getWallpaperSurfaceHolderOverride() = surfaceHolderOverride
 
-    @Suppress("deprecation")
-    private lateinit var renderer: Renderer.CanvasRenderer
+    @Suppress("deprecation") private lateinit var renderer: Renderer.CanvasRenderer
 
     fun triggerPreviewImageUpdateRequest() {
         renderer.sendPreviewImageNeedsUpdateRequest()
@@ -432,25 +407,27 @@
         currentUserStyleRepository: CurrentUserStyleRepository
     ): WatchFace {
         @Suppress("deprecation")
-        renderer = object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override suspend fun init() {
-                rendererInitializedLatch.countDown()
+        renderer =
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override suspend fun init() {
+                    rendererInitializedLatch.countDown()
+                }
+
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
+
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {}
             }
-
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
-
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {}
-        }
         return WatchFace(WatchFaceType.DIGITAL, renderer)
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client-guava/src/androidTest/java/androidx/wear/watchface/client/guava/ListenableWatchFaceMetadataClientTest.kt b/wear/watchface/watchface-client-guava/src/androidTest/java/androidx/wear/watchface/client/guava/ListenableWatchFaceMetadataClientTest.kt
index 3a57183..15ed3af 100644
--- a/wear/watchface/watchface-client-guava/src/androidTest/java/androidx/wear/watchface/client/guava/ListenableWatchFaceMetadataClientTest.kt
+++ b/wear/watchface/watchface-client-guava/src/androidTest/java/androidx/wear/watchface/client/guava/ListenableWatchFaceMetadataClientTest.kt
@@ -32,10 +32,10 @@
 import androidx.wear.watchface.control.IWatchFaceInstanceServiceStub
 import androidx.wear.watchface.control.WatchFaceControlService
 import com.google.common.truth.Truth
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.MainScope
+import org.junit.Test
+import org.junit.runner.RunWith
 
 private const val TIMEOUT_MS = 500L
 
@@ -45,11 +45,12 @@
  */
 @RequiresApi(Build.VERSION_CODES.O_MR1)
 public class WatchFaceControlTestService : WatchFaceControlService() {
-    private val realService = object : WatchFaceControlService() {
-        @SuppressLint("NewApi")
-        override fun createServiceStub(): IWatchFaceInstanceServiceStub =
-            IWatchFaceInstanceServiceStub(this@WatchFaceControlTestService, MainScope())
-    }
+    private val realService =
+        object : WatchFaceControlService() {
+            @SuppressLint("NewApi")
+            override fun createServiceStub(): IWatchFaceInstanceServiceStub =
+                IWatchFaceInstanceServiceStub(this@WatchFaceControlTestService, MainScope())
+        }
 
     @SuppressLint("NewApi")
     override fun onBind(intent: Intent?): IBinder? = realService.onBind(intent)
@@ -59,10 +60,11 @@
 @MediumTest
 @RequiresApi(Build.VERSION_CODES.O_MR1)
 public class ListenableWatchFaceMetadataClientTest {
-    private val exampleWatchFaceComponentName = ComponentName(
-        "androidx.wear.watchface.samples.test",
-        "androidx.wear.watchface.samples.ExampleCanvasAnalogWatchFaceService"
-    )
+    private val exampleWatchFaceComponentName =
+        ComponentName(
+            "androidx.wear.watchface.samples.test",
+            "androidx.wear.watchface.samples.ExampleCanvasAnalogWatchFaceService"
+        )
 
     private val context = ApplicationProvider.getApplicationContext<Context>()
 
@@ -88,20 +90,14 @@
         val schema = watchFaceMetadataClient.getUserStyleSchema()
 
         Truth.assertThat(schema.userStyleSettings.size).isEqualTo(5)
-        Truth.assertThat(schema.userStyleSettings[0].id.value).isEqualTo(
-            "color_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[1].id.value).isEqualTo(
-            "draw_hour_pips_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[2].id.value).isEqualTo(
-            "watch_hand_length_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[3].id.value).isEqualTo(
-            "complications_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[4].id.value).isEqualTo(
-            "hours_draw_freq_style_setting"
-        )
+        Truth.assertThat(schema.userStyleSettings[0].id.value).isEqualTo("color_style_setting")
+        Truth.assertThat(schema.userStyleSettings[1].id.value)
+            .isEqualTo("draw_hour_pips_style_setting")
+        Truth.assertThat(schema.userStyleSettings[2].id.value)
+            .isEqualTo("watch_hand_length_style_setting")
+        Truth.assertThat(schema.userStyleSettings[3].id.value)
+            .isEqualTo("complications_style_setting")
+        Truth.assertThat(schema.userStyleSettings[4].id.value)
+            .isEqualTo("hours_draw_freq_style_setting")
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client-guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceControlClient.kt b/wear/watchface/watchface-client-guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceControlClient.kt
index 48ded1d..338f592 100644
--- a/wear/watchface/watchface-client-guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceControlClient.kt
+++ b/wear/watchface/watchface-client-guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceControlClient.kt
@@ -20,19 +20,19 @@
 import android.content.Context
 import androidx.concurrent.futures.ResolvableFuture
 import androidx.wear.watchface.Renderer
-import androidx.wear.watchface.complications.data.ComplicationData
-import androidx.wear.watchface.utility.AsyncTraceEvent
 import androidx.wear.watchface.client.WatchFaceControlClient.ServiceNotBoundException
+import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.style.UserStyleData
+import androidx.wear.watchface.utility.AsyncTraceEvent
 import com.google.common.util.concurrent.ListenableFuture
 import java.util.concurrent.Executor
 import java.util.function.Consumer
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Runnable
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.launch
-import kotlin.coroutines.CoroutineContext
 
 /**
  * [ListenableFuture]-based compatibility wrapper around [WatchFaceControlClient]'s suspending
@@ -47,13 +47,14 @@
         watchFaceControlClient.getInteractiveWatchFaceClientInstance(instanceId)
 
     public companion object {
-        internal fun createImmediateCoroutineScope() = CoroutineScope(
-            object : CoroutineDispatcher() {
-                override fun dispatch(context: CoroutineContext, block: Runnable) {
-                    block.run()
+        internal fun createImmediateCoroutineScope() =
+            CoroutineScope(
+                object : CoroutineDispatcher() {
+                    override fun dispatch(context: CoroutineContext, block: Runnable) {
+                        block.run()
+                    }
                 }
-            }
-        )
+            )
 
         /**
          * Launches a coroutine with a new scope and returns a future that correctly handles
@@ -97,11 +98,11 @@
          * asynchronously when the service is connected on a background thread.
          *
          * @param context Calling application's [Context].
-         * @param watchFacePackageName Name of the package containing the watch face control
-         * service to bind to.
+         * @param watchFacePackageName Name of the package containing the watch face control service
+         *   to bind to.
          * @return [ListenableFuture]<[ListenableWatchFaceControlClient]> which on success resolves
-         * to a [ListenableWatchFaceControlClient] or throws a [ServiceNotBoundException] if the
-         * watch face control service can not be bound.
+         *   to a [ListenableWatchFaceControlClient] or throws a [ServiceNotBoundException] if the
+         *   watch face control service can not be bound.
          */
         @JvmStatic
         public fun createWatchFaceControlClient(
@@ -152,17 +153,17 @@
 
     /**
      * [ListenableFuture] wrapper around
-     * [WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient].
-     * This is open to allow mocking.
+     * [WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient]. This is open to allow
+     * mocking.
      *
      * @param id The Id of the interactive instance to get or create.
      * @param deviceConfig The [DeviceConfig] of the interactive instance (only used when creating)
      * @param watchUiState The initial [WatchUiState] for the wearable.
      * @param userStyle Optional [UserStyleData] to apply to the instance (whether or not it's
-     * created). If `null` then the pre-existing user style is preserved (if the instance is created
-     * this will be the [androidx.wear.watchface.style.UserStyleSchema]'s default).
+     *   created). If `null` then the pre-existing user style is preserved (if the instance is
+     *   created this will be the [androidx.wear.watchface.style.UserStyleSchema]'s default).
      * @param slotIdToComplicationData The initial [androidx.wear.watchface.ComplicationSlot] data,
-     * or `null` if unavailable.
+     *   or `null` if unavailable.
      * @return a [ListenableFuture] for the [InteractiveWatchFaceClient].
      */
     @Suppress("AsyncSuffixFuture")
@@ -196,29 +197,29 @@
 
     /**
      * [ListenableFuture] wrapper around
-     * [WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient].
-     * This is open to allow mocking.
+     * [WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient]. This is open to allow
+     * mocking.
      *
      * @param id The Id of the interactive instance to get or create.
      * @param deviceConfig The [DeviceConfig] of the interactive instance (only used when creating)
      * @param watchUiState The initial [WatchUiState] for the wearable.
      * @param userStyle Optional [UserStyleData] to apply to the instance (whether or not it's
-     * created). If `null` then the pre-existing user style is preserved (if the instance is created
-     * this will be the [androidx.wear.watchface.style.UserStyleSchema]'s default).
+     *   created). If `null` then the pre-existing user style is preserved (if the instance is
+     *   created this will be the [androidx.wear.watchface.style.UserStyleSchema]'s default).
      * @param slotIdToComplicationData The initial [androidx.wear.watchface.ComplicationSlot] data,
-     * or `null` if unavailable.
+     *   or `null` if unavailable.
      * @param previewImageUpdateRequestedExecutor The [Executor] on which to run
-     * [previewImageUpdateRequestedListener] if the watch face calls
-     * [Renderer.sendPreviewImageNeedsUpdateRequest].
+     *   [previewImageUpdateRequestedListener] if the watch face calls
+     *   [Renderer.sendPreviewImageNeedsUpdateRequest].
      * @param previewImageUpdateRequestedListener The [Consumer] fires when the watch face calls
-     * [Renderer.sendPreviewImageNeedsUpdateRequest], indicating that it now looks visually
-     * different. The string passed to the [Consumer] is the ID of the watch face (see [id] passed
-     * into [getOrCreateInteractiveWatchFaceClient]) requesting the update. This will usually
-     * match the current watch face but it could also be from a previous watch face if
-     * [InteractiveWatchFaceClient.updateWatchFaceInstance] is called shortly after
-     * [Renderer.sendPreviewImageNeedsUpdateRequest].
-     * The [Consumer] should Schedule creation of a headless instance to render a new preview image
-     * for the instanceId. This is likely an expensive operation and should be rate limited.
+     *   [Renderer.sendPreviewImageNeedsUpdateRequest], indicating that it now looks visually
+     *   different. The string passed to the [Consumer] is the ID of the watch face (see [id] passed
+     *   into [getOrCreateInteractiveWatchFaceClient]) requesting the update. This will usually
+     *   match the current watch face but it could also be from a previous watch face if
+     *   [InteractiveWatchFaceClient.updateWatchFaceInstance] is called shortly after
+     *   [Renderer.sendPreviewImageNeedsUpdateRequest]. The [Consumer] should Schedule creation of a
+     *   headless instance to render a new preview image for the instanceId. This is likely an
+     *   expensive operation and should be rate limited.
      * @return a [ListenableFuture] for the [InteractiveWatchFaceClient].
      */
     @Suppress("AsyncSuffixFuture")
@@ -247,10 +248,12 @@
 
     @Deprecated(
         "Use an overload that specifies a Consumer<String>",
-        replaceWith = ReplaceWith(
-            "getOrCreateInteractiveWatchFaceClient(String, DeviceConfig, WatchUiState," +
-                " UserStyleData?, Map<Int, ComplicationData>?, Executor, " +
-                "Consumer<String>)")
+        replaceWith =
+            ReplaceWith(
+                "getOrCreateInteractiveWatchFaceClient(String, DeviceConfig, WatchUiState," +
+                    " UserStyleData?, Map<Int, ComplicationData>?, Executor, " +
+                    "Consumer<String>)"
+            )
     )
     @Suppress("deprecation")
     override suspend fun getOrCreateInteractiveWatchFaceClient(
diff --git a/wear/watchface/watchface-client-guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceMetadataClient.kt b/wear/watchface/watchface-client-guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceMetadataClient.kt
index 6a1d13b..6d25efd 100644
--- a/wear/watchface/watchface-client-guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceMetadataClient.kt
+++ b/wear/watchface/watchface-client-guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceMetadataClient.kt
@@ -24,9 +24,7 @@
 import androidx.wear.watchface.control.WatchFaceControlService
 import com.google.common.util.concurrent.ListenableFuture
 
-/**
- * [ListenableFuture]-based compatibility wrapper around [WatchFaceMetadataClient.create].
- */
+/** [ListenableFuture]-based compatibility wrapper around [WatchFaceMetadataClient.create]. */
 public class ListenableWatchFaceMetadataClient private constructor() {
     public companion object {
         /**
@@ -36,38 +34,35 @@
          * @param context Calling application's [Context].
          * @param watchFaceName The [ComponentName] of the watch face to fetch meta data from.
          * @return A [ListenableFuture] which resolves with [WatchFaceMetadataClient] if there is
-         * one, otherwise it throws a [ServiceNotBoundException] if the underlying watch face
-         * control service can not be bound or a [ServiceStartFailureException] if the watch face
-         * dies during startup.
+         *   one, otherwise it throws a [ServiceNotBoundException] if the underlying watch face
+         *   control service can not be bound or a [ServiceStartFailureException] if the watch face
+         *   dies during startup.
          */
         @Suppress("AsyncSuffixFuture")
         @JvmStatic
         public fun create(
             context: Context,
             watchFaceName: ComponentName
-        ): ListenableFuture<WatchFaceMetadataClient> = createImpl(
-            context,
-            Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE).apply {
-                setPackage(watchFaceName.packageName)
-            },
-            watchFaceName,
-            WatchFaceMetadataClient.Companion.ParserProvider()
-        )
+        ): ListenableFuture<WatchFaceMetadataClient> =
+            createImpl(
+                context,
+                Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE).apply {
+                    setPackage(watchFaceName.packageName)
+                },
+                watchFaceName,
+                WatchFaceMetadataClient.Companion.ParserProvider()
+            )
 
         internal fun createImpl(
             context: Context,
             intent: Intent,
             watchFaceName: ComponentName,
             parserProvider: WatchFaceMetadataClient.Companion.ParserProvider
-        ) = ListenableWatchFaceControlClient.launchFutureCoroutine(
-            "ListenableWatchFaceMetadataClient.listenableCreateWatchFaceMetadataClient"
-        ) {
-            WatchFaceMetadataClient.createImpl(
-                context,
-                intent,
-                watchFaceName,
-                parserProvider
-            )
-        }
+        ) =
+            ListenableWatchFaceControlClient.launchFutureCoroutine(
+                "ListenableWatchFaceMetadataClient.listenableCreateWatchFaceMetadataClient"
+            ) {
+                WatchFaceMetadataClient.createImpl(context, intent, watchFaceName, parserProvider)
+            }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client/api/current.ignore b/wear/watchface/watchface-client/api/current.ignore
index 9a0c267..203d029 100644
--- a/wear/watchface/watchface-client/api/current.ignore
+++ b/wear/watchface/watchface-client/api/current.ignore
@@ -23,5 +23,9 @@
     Method androidx.wear.watchface.client.InteractiveWatchFaceClient.getUserStyleSchema added thrown exception android.os.RemoteException
 
 
+RemovedClass: androidx.wear.watchface.client.DeviceConfigKt:
+    Removed class androidx.wear.watchface.client.DeviceConfigKt
+RemovedClass: androidx.wear.watchface.client.EditorStateKt:
+    Removed class androidx.wear.watchface.client.EditorStateKt
 RemovedClass: androidx.wear.watchface.client.WatchFaceExceptionKt:
     Removed class androidx.wear.watchface.client.WatchFaceExceptionKt
diff --git a/wear/watchface/watchface-client/api/current.txt b/wear/watchface/watchface-client/api/current.txt
index 781eadf..b7a6bc0 100644
--- a/wear/watchface/watchface-client/api/current.txt
+++ b/wear/watchface/watchface-client/api/current.txt
@@ -68,9 +68,6 @@
     property public final boolean hasLowBitAmbient;
   }
 
-  public final class DeviceConfigKt {
-  }
-
   public final class DisconnectReasons {
     field public static final int ENGINE_DETACHED = 2; // 0x2
     field public static final int ENGINE_DIED = 1; // 0x1
@@ -100,9 +97,6 @@
     property public final androidx.wear.watchface.client.WatchFaceId watchFaceId;
   }
 
-  public final class EditorStateKt {
-  }
-
   public interface HeadlessWatchFaceClient extends java.lang.AutoCloseable {
     method @AnyThread public void addClientDisconnectListener(androidx.wear.watchface.client.HeadlessWatchFaceClient.ClientDisconnectListener listener, java.util.concurrent.Executor executor);
     method public default static androidx.wear.watchface.client.HeadlessWatchFaceClient createFromBundle(android.os.Bundle bundle);
diff --git a/wear/watchface/watchface-client/api/public_plus_experimental_current.txt b/wear/watchface/watchface-client/api/public_plus_experimental_current.txt
index dc24d57..ff5390c 100644
--- a/wear/watchface/watchface-client/api/public_plus_experimental_current.txt
+++ b/wear/watchface/watchface-client/api/public_plus_experimental_current.txt
@@ -72,9 +72,6 @@
     property public final boolean hasLowBitAmbient;
   }
 
-  public final class DeviceConfigKt {
-  }
-
   public final class DisconnectReasons {
     field public static final int ENGINE_DETACHED = 2; // 0x2
     field public static final int ENGINE_DIED = 1; // 0x1
@@ -104,9 +101,6 @@
     property public final androidx.wear.watchface.client.WatchFaceId watchFaceId;
   }
 
-  public final class EditorStateKt {
-  }
-
   public interface HeadlessWatchFaceClient extends java.lang.AutoCloseable {
     method @AnyThread public void addClientDisconnectListener(androidx.wear.watchface.client.HeadlessWatchFaceClient.ClientDisconnectListener listener, java.util.concurrent.Executor executor);
     method public default static androidx.wear.watchface.client.HeadlessWatchFaceClient createFromBundle(android.os.Bundle bundle);
diff --git a/wear/watchface/watchface-client/api/restricted_current.ignore b/wear/watchface/watchface-client/api/restricted_current.ignore
index 9a0c267..203d029 100644
--- a/wear/watchface/watchface-client/api/restricted_current.ignore
+++ b/wear/watchface/watchface-client/api/restricted_current.ignore
@@ -23,5 +23,9 @@
     Method androidx.wear.watchface.client.InteractiveWatchFaceClient.getUserStyleSchema added thrown exception android.os.RemoteException
 
 
+RemovedClass: androidx.wear.watchface.client.DeviceConfigKt:
+    Removed class androidx.wear.watchface.client.DeviceConfigKt
+RemovedClass: androidx.wear.watchface.client.EditorStateKt:
+    Removed class androidx.wear.watchface.client.EditorStateKt
 RemovedClass: androidx.wear.watchface.client.WatchFaceExceptionKt:
     Removed class androidx.wear.watchface.client.WatchFaceExceptionKt
diff --git a/wear/watchface/watchface-client/api/restricted_current.txt b/wear/watchface/watchface-client/api/restricted_current.txt
index 781eadf..b7a6bc0 100644
--- a/wear/watchface/watchface-client/api/restricted_current.txt
+++ b/wear/watchface/watchface-client/api/restricted_current.txt
@@ -68,9 +68,6 @@
     property public final boolean hasLowBitAmbient;
   }
 
-  public final class DeviceConfigKt {
-  }
-
   public final class DisconnectReasons {
     field public static final int ENGINE_DETACHED = 2; // 0x2
     field public static final int ENGINE_DIED = 1; // 0x1
@@ -100,9 +97,6 @@
     property public final androidx.wear.watchface.client.WatchFaceId watchFaceId;
   }
 
-  public final class EditorStateKt {
-  }
-
   public interface HeadlessWatchFaceClient extends java.lang.AutoCloseable {
     method @AnyThread public void addClientDisconnectListener(androidx.wear.watchface.client.HeadlessWatchFaceClient.ClientDisconnectListener listener, java.util.concurrent.Executor executor);
     method public default static androidx.wear.watchface.client.HeadlessWatchFaceClient createFromBundle(android.os.Bundle bundle);
diff --git a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/EditorServiceClientTest.kt b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/EditorServiceClientTest.kt
index 549cbff..8d38cfd 100644
--- a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/EditorServiceClientTest.kt
+++ b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/EditorServiceClientTest.kt
@@ -37,11 +37,12 @@
     @Test
     public fun registerObserver() {
         lateinit var observedEditorState: EditorState
-        val observer = object : EditorListener {
-            override fun onEditorStateChanged(editorState: EditorState) {
-                observedEditorState = editorState
+        val observer =
+            object : EditorListener {
+                override fun onEditorStateChanged(editorState: EditorState) {
+                    observedEditorState = editorState
+                }
             }
-        }
         editorServiceClient.addListener(observer) { runnable -> runnable.run() }
 
         val watchFaceInstanceId = "id-1"
@@ -71,4 +72,4 @@
         assertThat(editorStateString).contains("{color=red, size=small}")
         assertThat(editorStateString).contains("shouldCommitChanges: true")
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/HeadlessWatchFaceClientTest.kt b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/HeadlessWatchFaceClientTest.kt
index 7bdb9f6..d6c8fb5 100644
--- a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/HeadlessWatchFaceClientTest.kt
+++ b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/HeadlessWatchFaceClientTest.kt
@@ -68,13 +68,7 @@
     protected fun createHeadlessWatchFaceClient(
         componentName: ComponentName = exampleCanvasAnalogWatchFaceComponentName
     ): HeadlessWatchFaceClient {
-        return service.createHeadlessWatchFaceClient(
-            "id",
-            componentName,
-            deviceConfig,
-            400,
-            400
-        )!!
+        return service.createHeadlessWatchFaceClient("id", componentName, deviceConfig, 400, 400)!!
     }
 
     protected val exampleCanvasAnalogWatchFaceComponentName =
@@ -83,12 +77,13 @@
     protected val exampleOpenGLWatchFaceComponentName =
         componentOf<ExampleOpenGLBackgroundInitWatchFaceService>()
 
-    protected val deviceConfig = DeviceConfig(
-        hasLowBitAmbient = false,
-        hasBurnInProtection = false,
-        analogPreviewReferenceTimeMillis = 0,
-        digitalPreviewReferenceTimeMillis = 0
-    )
+    protected val deviceConfig =
+        DeviceConfig(
+            hasLowBitAmbient = false,
+            hasBurnInProtection = false,
+            analogPreviewReferenceTimeMillis = 0,
+            digitalPreviewReferenceTimeMillis = 0
+        )
 }
 
 @RunWith(AndroidJUnit4::class)
@@ -102,54 +97,47 @@
 
         Truth.assertThat(headlessInstance.complicationSlotsState.size).isEqualTo(2)
 
-        val leftComplicationDetails = headlessInstance.complicationSlotsState[
-            EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID
-        ]!!
+        val leftComplicationDetails =
+            headlessInstance.complicationSlotsState[EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID]!!
         Truth.assertThat(leftComplicationDetails.bounds).isEqualTo(Rect(80, 160, 160, 240))
         Truth.assertThat(leftComplicationDetails.boundsType)
             .isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
-        Truth.assertThat(
-            leftComplicationDetails.defaultDataSourcePolicy.systemDataSourceFallback
-        ).isEqualTo(
-            SystemDataSources.DATA_SOURCE_DAY_OF_WEEK
-        )
-        Truth.assertThat(leftComplicationDetails.defaultDataSourceType).isEqualTo(
-            ComplicationType.SHORT_TEXT
-        )
-        Truth.assertThat(leftComplicationDetails.supportedTypes).containsExactly(
-            ComplicationType.RANGED_VALUE,
-            ComplicationType.GOAL_PROGRESS,
-            ComplicationType.WEIGHTED_ELEMENTS,
-            ComplicationType.LONG_TEXT,
-            ComplicationType.SHORT_TEXT,
-            ComplicationType.MONOCHROMATIC_IMAGE,
-            ComplicationType.SMALL_IMAGE
-        )
+        Truth.assertThat(leftComplicationDetails.defaultDataSourcePolicy.systemDataSourceFallback)
+            .isEqualTo(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK)
+        Truth.assertThat(leftComplicationDetails.defaultDataSourceType)
+            .isEqualTo(ComplicationType.SHORT_TEXT)
+        Truth.assertThat(leftComplicationDetails.supportedTypes)
+            .containsExactly(
+                ComplicationType.RANGED_VALUE,
+                ComplicationType.GOAL_PROGRESS,
+                ComplicationType.WEIGHTED_ELEMENTS,
+                ComplicationType.LONG_TEXT,
+                ComplicationType.SHORT_TEXT,
+                ComplicationType.MONOCHROMATIC_IMAGE,
+                ComplicationType.SMALL_IMAGE
+            )
         Assert.assertTrue(leftComplicationDetails.isEnabled)
 
-        val rightComplicationDetails = headlessInstance.complicationSlotsState[
-            EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID
-        ]!!
+        val rightComplicationDetails =
+            headlessInstance.complicationSlotsState[
+                    EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID]!!
         Truth.assertThat(rightComplicationDetails.bounds).isEqualTo(Rect(240, 160, 320, 240))
         Truth.assertThat(rightComplicationDetails.boundsType)
             .isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
-        Truth.assertThat(
-            rightComplicationDetails.defaultDataSourcePolicy.systemDataSourceFallback
-        ).isEqualTo(
-            SystemDataSources.DATA_SOURCE_STEP_COUNT
-        )
-        Truth.assertThat(rightComplicationDetails.defaultDataSourceType).isEqualTo(
-            ComplicationType.SHORT_TEXT
-        )
-        Truth.assertThat(rightComplicationDetails.supportedTypes).containsExactly(
-            ComplicationType.RANGED_VALUE,
-            ComplicationType.GOAL_PROGRESS,
-            ComplicationType.WEIGHTED_ELEMENTS,
-            ComplicationType.LONG_TEXT,
-            ComplicationType.SHORT_TEXT,
-            ComplicationType.MONOCHROMATIC_IMAGE,
-            ComplicationType.SMALL_IMAGE
-        )
+        Truth.assertThat(rightComplicationDetails.defaultDataSourcePolicy.systemDataSourceFallback)
+            .isEqualTo(SystemDataSources.DATA_SOURCE_STEP_COUNT)
+        Truth.assertThat(rightComplicationDetails.defaultDataSourceType)
+            .isEqualTo(ComplicationType.SHORT_TEXT)
+        Truth.assertThat(rightComplicationDetails.supportedTypes)
+            .containsExactly(
+                ComplicationType.RANGED_VALUE,
+                ComplicationType.GOAL_PROGRESS,
+                ComplicationType.WEIGHTED_ELEMENTS,
+                ComplicationType.LONG_TEXT,
+                ComplicationType.SHORT_TEXT,
+                ComplicationType.MONOCHROMATIC_IMAGE,
+                ComplicationType.SMALL_IMAGE
+            )
 
         Truth.assertThat(rightComplicationDetails.isEnabled).isTrue()
 
@@ -162,21 +150,16 @@
         val headlessInstance = createHeadlessWatchFaceClient()
 
         Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings.size).isEqualTo(5)
-        Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings[0].id.value).isEqualTo(
-            "color_style_setting"
-        )
-        Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings[1].id.value).isEqualTo(
-            "draw_hour_pips_style_setting"
-        )
-        Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings[2].id.value).isEqualTo(
-            "watch_hand_length_style_setting"
-        )
-        Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings[3].id.value).isEqualTo(
-            "complications_style_setting"
-        )
-        Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings[4].id.value).isEqualTo(
-            "hours_draw_freq_style_setting"
-        )
+        Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings[0].id.value)
+            .isEqualTo("color_style_setting")
+        Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings[1].id.value)
+            .isEqualTo("draw_hour_pips_style_setting")
+        Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings[2].id.value)
+            .isEqualTo("watch_hand_length_style_setting")
+        Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings[3].id.value)
+            .isEqualTo("complications_style_setting")
+        Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings[4].id.value)
+            .isEqualTo("hours_draw_freq_style_setting")
 
         headlessInstance.close()
     }
@@ -190,10 +173,12 @@
         Truth.assertThat(flavorA.id).isEqualTo("exampleFlavor")
         Truth.assertThat(flavorA.style.userStyleMap.containsKey("color_style_setting"))
         Truth.assertThat(flavorA.style.userStyleMap.containsKey("watch_hand_length_style_setting"))
-        Truth.assertThat(flavorA.complications
-            .containsKey(EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID))
-        Truth.assertThat(flavorA.complications
-            .containsKey(EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID))
+        Truth.assertThat(
+            flavorA.complications.containsKey(EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID)
+        )
+        Truth.assertThat(
+            flavorA.complications.containsKey(EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID)
+        )
 
         headlessInstance.close()
     }
@@ -201,50 +186,49 @@
     @Test
     @Suppress("Deprecation") // userStyleSettings
     fun headlessToBundleAndCreateFromBundle() {
-        val headlessInstance = HeadlessWatchFaceClient.createFromBundle(
-            service.createHeadlessWatchFaceClient(
-                "id",
-                exampleCanvasAnalogWatchFaceComponentName,
-                deviceConfig,
-                400,
-                400
-            )!!.toBundle()
-        )
+        val headlessInstance =
+            HeadlessWatchFaceClient.createFromBundle(
+                service
+                    .createHeadlessWatchFaceClient(
+                        "id",
+                        exampleCanvasAnalogWatchFaceComponentName,
+                        deviceConfig,
+                        400,
+                        400
+                    )!!
+                    .toBundle()
+            )
 
         Truth.assertThat(headlessInstance.userStyleSchema.userStyleSettings.size).isEqualTo(5)
     }
 
     @Test
     fun computeUserStyleSchemaDigestHash() {
-        val headlessInstance1 = createHeadlessWatchFaceClient(
-            exampleCanvasAnalogWatchFaceComponentName
-        )
+        val headlessInstance1 =
+            createHeadlessWatchFaceClient(exampleCanvasAnalogWatchFaceComponentName)
 
-        val headlessInstance2 = createHeadlessWatchFaceClient(
-            exampleOpenGLWatchFaceComponentName
-        )
+        val headlessInstance2 = createHeadlessWatchFaceClient(exampleOpenGLWatchFaceComponentName)
 
-        Truth.assertThat(headlessInstance1.getUserStyleSchemaDigestHash()).isNotEqualTo(
-            headlessInstance2.getUserStyleSchemaDigestHash()
-        )
+        Truth.assertThat(headlessInstance1.getUserStyleSchemaDigestHash())
+            .isNotEqualTo(headlessInstance2.getUserStyleSchemaDigestHash())
     }
 
     @Test
     fun headlessLifeCycle() {
-        val headlessInstance = createHeadlessWatchFaceClient(
-            componentOf<TestLifeCycleWatchFaceService>()
-        )
+        val headlessInstance =
+            createHeadlessWatchFaceClient(componentOf<TestLifeCycleWatchFaceService>())
 
         // Blocks until the headless instance has been fully constructed.
         headlessInstance.previewReferenceInstant
         headlessInstance.close()
 
-        Truth.assertThat(TestLifeCycleWatchFaceService.lifeCycleEvents).containsExactly(
-            "WatchFaceService.onCreate",
-            "Renderer.constructed",
-            "Renderer.onDestroy",
-            "WatchFaceService.onDestroy"
-        )
+        Truth.assertThat(TestLifeCycleWatchFaceService.lifeCycleEvents)
+            .containsExactly(
+                "WatchFaceService.onCreate",
+                "Renderer.constructed",
+                "Renderer.onDestroy",
+                "WatchFaceService.onDestroy"
+            )
     }
 }
 
@@ -263,16 +247,13 @@
     fun headlessScreenshot() {
         val headlessInstance = createHeadlessWatchFaceClient()
 
-        val bitmap = headlessInstance.renderWatchFaceToBitmap(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                null
-            ),
-            Instant.ofEpochMilli(1234567),
-            null,
-            complications
-        )
+        val bitmap =
+            headlessInstance.renderWatchFaceToBitmap(
+                RenderParameters(DrawMode.INTERACTIVE, WatchFaceLayer.ALL_WATCH_FACE_LAYERS, null),
+                Instant.ofEpochMilli(1234567),
+                null,
+                complications
+            )
 
         bitmap.assertAgainstGolden(screenshotRule, "headlessScreenshot")
 
@@ -284,20 +265,21 @@
     fun yellowComplicationHighlights() {
         val headlessInstance = createHeadlessWatchFaceClient()
 
-        val bitmap = headlessInstance.renderWatchFaceToBitmap(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                RenderParameters.HighlightLayer(
-                    RenderParameters.HighlightedElement.AllComplicationSlots,
-                    Color.YELLOW,
-                    Color.argb(128, 0, 0, 0) // Darken everything else.
-                )
-            ),
-            Instant.ofEpochMilli(1234567),
-            null,
-            complications
-        )
+        val bitmap =
+            headlessInstance.renderWatchFaceToBitmap(
+                RenderParameters(
+                    DrawMode.INTERACTIVE,
+                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                    RenderParameters.HighlightLayer(
+                        RenderParameters.HighlightedElement.AllComplicationSlots,
+                        Color.YELLOW,
+                        Color.argb(128, 0, 0, 0) // Darken everything else.
+                    )
+                ),
+                Instant.ofEpochMilli(1234567),
+                null,
+                complications
+            )
 
         bitmap.assertAgainstGolden(screenshotRule, "yellowComplicationHighlights")
 
@@ -309,20 +291,21 @@
     fun highlightOnlyLayer() {
         val headlessInstance = createHeadlessWatchFaceClient()
 
-        val bitmap = headlessInstance.renderWatchFaceToBitmap(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                emptySet(),
-                RenderParameters.HighlightLayer(
-                    RenderParameters.HighlightedElement.AllComplicationSlots,
-                    Color.YELLOW,
-                    Color.argb(128, 0, 0, 0) // Darken everything else.
-                )
-            ),
-            Instant.ofEpochMilli(1234567),
-            null,
-            complications
-        )
+        val bitmap =
+            headlessInstance.renderWatchFaceToBitmap(
+                RenderParameters(
+                    DrawMode.INTERACTIVE,
+                    emptySet(),
+                    RenderParameters.HighlightLayer(
+                        RenderParameters.HighlightedElement.AllComplicationSlots,
+                        Color.YELLOW,
+                        Color.argb(128, 0, 0, 0) // Darken everything else.
+                    )
+                ),
+                Instant.ofEpochMilli(1234567),
+                null,
+                complications
+            )
 
         bitmap.assertAgainstGolden(screenshotRule, "highlightOnlyLayer")
 
diff --git a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/ObservableServices.kt b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/ObservableServices.kt
index 864dba7..4ed6b51 100644
--- a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/ObservableServices.kt
+++ b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/ObservableServices.kt
@@ -48,6 +48,7 @@
 
         /**
          * Awaits for up to [maxDurationMillis] milliseconds the service to be bound.
+         *
          * @return True if the service is bound before the time runs out, or false otherwise.
          */
         fun awaitForServiceToBeBound(maxDurationMillis: Long): Boolean =
@@ -57,12 +58,13 @@
             latch = CountDownLatch(1)
         }
 
-        fun createPendingIntent(context: Context) = PendingIntent.getService(
-            context,
-            101,
-            Intent(context, ObservableServiceA::class.java),
-            PendingIntent.FLAG_IMMUTABLE
-        )
+        fun createPendingIntent(context: Context) =
+            PendingIntent.getService(
+                context,
+                101,
+                Intent(context, ObservableServiceA::class.java),
+                PendingIntent.FLAG_IMMUTABLE
+            )
     }
 }
 
@@ -72,6 +74,7 @@
 
         /**
          * Awaits for up to [maxDurationMillis] milliseconds the service to be bound.
+         *
          * @return True if the service is bound before the time runs out, or false otherwise.
          */
         fun awaitForServiceToBeBound(maxDurationMillis: Long): Boolean =
@@ -81,12 +84,13 @@
             latch = CountDownLatch(1)
         }
 
-        fun createPendingIntent(context: Context) = PendingIntent.getService(
-            context,
-            101,
-            Intent(context, ObservableServiceB::class.java),
-            PendingIntent.FLAG_IMMUTABLE
-        )
+        fun createPendingIntent(context: Context) =
+            PendingIntent.getService(
+                context,
+                101,
+                Intent(context, ObservableServiceB::class.java),
+                PendingIntent.FLAG_IMMUTABLE
+            )
     }
 }
 
@@ -96,6 +100,7 @@
 
         /**
          * Awaits for up to [maxDurationMillis] milliseconds the service to be bound.
+         *
          * @return True if the service is bound before the time runs out, or false otherwise.
          */
         fun awaitForServiceToBeBound(maxDurationMillis: Long): Boolean =
@@ -105,11 +110,12 @@
             latch = CountDownLatch(1)
         }
 
-        fun createPendingIntent(context: Context) = PendingIntent.getService(
-            context,
-            101,
-            Intent(context, ObservableServiceC::class.java),
-            PendingIntent.FLAG_IMMUTABLE
-        )
+        fun createPendingIntent(context: Context) =
+            PendingIntent.getService(
+                context,
+                101,
+                Intent(context, ObservableServiceC::class.java),
+                PendingIntent.FLAG_IMMUTABLE
+            )
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/OutdatedWatchFaceControlTestService.kt b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/OutdatedWatchFaceControlTestService.kt
index aa19f94..47251b0 100644
--- a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/OutdatedWatchFaceControlTestService.kt
+++ b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/OutdatedWatchFaceControlTestService.kt
@@ -20,9 +20,7 @@
 import android.content.Intent
 import android.os.IBinder
 
-/**
- * Test WatchFaceControlService which has obsolete XML version in manifest.
- */
+/** Test WatchFaceControlService which has obsolete XML version in manifest. */
 public class OutdatedWatchFaceControlTestService : Service() {
     override fun onBind(p0: Intent?): IBinder? {
         // It is not assumed to be called
diff --git a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/SerializationTest.kt b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/SerializationTest.kt
index 036ae1b..ff8ba4b 100644
--- a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/SerializationTest.kt
+++ b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/SerializationTest.kt
@@ -25,32 +25,32 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
-import androidx.wear.watchface.complications.SystemDataSources
-import androidx.wear.watchface.complications.data.ComplicationType
-import androidx.wear.watchface.complications.data.LongTextComplicationData
-import androidx.wear.watchface.complications.data.ShortTextComplicationData
-import androidx.wear.watchface.complications.data.toApiComplicationData
+import androidx.wear.watchface.ComplicationSlotBoundsType
 import androidx.wear.watchface.DrawMode
 import androidx.wear.watchface.RenderParameters
 import androidx.wear.watchface.client.ComplicationSlotState
 import androidx.wear.watchface.client.WatchFaceId
 import androidx.wear.watchface.client.asApiEditorState
+import androidx.wear.watchface.complications.SystemDataSources
+import androidx.wear.watchface.complications.data.ComplicationType
+import androidx.wear.watchface.complications.data.LongTextComplicationData
+import androidx.wear.watchface.complications.data.ShortTextComplicationData
+import androidx.wear.watchface.complications.data.toApiComplicationData
 import androidx.wear.watchface.control.data.ComplicationRenderParams
 import androidx.wear.watchface.control.data.HeadlessWatchFaceInstanceParams
 import androidx.wear.watchface.control.data.WallpaperInteractiveWatchFaceInstanceParams
 import androidx.wear.watchface.control.data.WatchFaceRenderParams
-import androidx.wear.watchface.ComplicationSlotBoundsType
 import androidx.wear.watchface.data.ComplicationStateWireFormat
 import androidx.wear.watchface.editor.data.EditorStateWireFormat
 import androidx.wear.watchface.style.UserStyleData
 import androidx.wear.watchface.style.WatchFaceLayer
 import com.google.common.truth.Truth.assertThat
+import java.time.Instant
+import java.util.Base64
 import org.junit.Assume
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.time.Instant
-import java.util.Base64
 
 /** Tests that we can deserialize golden resources correctly to ensure backwards compatibility. */
 @RunWith(AndroidJUnit4::class)
@@ -80,9 +80,10 @@
 
     @Test
     public fun complicationRenderParams() {
-        val deserialized = loadGoldenResource(R.raw.complication_render_params) {
-            ComplicationRenderParams.CREATOR.createFromParcel(it)
-        }
+        val deserialized =
+            loadGoldenResource(R.raw.complication_render_params) {
+                ComplicationRenderParams.CREATOR.createFromParcel(it)
+            }
 
         assertThat(deserialized.complicationSlotId).isEqualTo(123)
         assertThat(RenderParameters(deserialized.renderParametersWireFormat))
@@ -94,9 +95,10 @@
                 )
             )
         assertThat(deserialized.calendarTimeMillis).isEqualTo(123456789)
-        assertThat(UserStyleData(deserialized.userStyle!!)).isEqualTo(
-            UserStyleData(mapOf("COLOR_STYLE_SETTING" to "GREEN_STYLE".encodeToByteArray()))
-        )
+        assertThat(UserStyleData(deserialized.userStyle!!))
+            .isEqualTo(
+                UserStyleData(mapOf("COLOR_STYLE_SETTING" to "GREEN_STYLE".encodeToByteArray()))
+            )
 
         val complication =
             deserialized.complicationData!!.toApiComplicationData() as LongTextComplicationData
@@ -108,9 +110,10 @@
 
     @Test
     public fun headlessWatchFaceInstanceParams() {
-        val deserialized = loadGoldenResource(R.raw.headless_watchface_instance_params) {
-            HeadlessWatchFaceInstanceParams.CREATOR.createFromParcel(it)
-        }
+        val deserialized =
+            loadGoldenResource(R.raw.headless_watchface_instance_params) {
+                HeadlessWatchFaceInstanceParams.CREATOR.createFromParcel(it)
+            }
 
         assertThat(deserialized.watchFaceName).isEqualTo(ComponentName("package", "class"))
         assertThat(deserialized.deviceConfig.hasBurnInProtection).isFalse()
@@ -133,7 +136,8 @@
         assertThat(deserialized.idAndComplicationDataWireFormats!![0].id).isEqualTo(1)
 
         val complication =
-            deserialized.idAndComplicationDataWireFormats!![0].complicationData
+            deserialized.idAndComplicationDataWireFormats!![0]
+                .complicationData
                 .toApiComplicationData() as LongTextComplicationData
         assertThat(complication.text.getTextAt(context.resources, Instant.EPOCH))
             .isEqualTo("Test Text")
@@ -146,47 +150,52 @@
         assertThat(deserialized.deviceConfig.digitalPreviewReferenceTimeMillis).isEqualTo(200)
         assertThat(deserialized.watchUiState.inAmbientMode).isFalse()
         assertThat(deserialized.watchUiState.interruptionFilter).isEqualTo(0)
-        assertThat(UserStyleData(deserialized.userStyle)).isEqualTo(
-            UserStyleData(
-                mapOf(
-                    "COLOR_STYLE_SETTING" to "GREEN_STYLE".encodeToByteArray(),
-                    "WATCH_HAND_STYLE" to "GOTHIC".encodeToByteArray()
+        assertThat(UserStyleData(deserialized.userStyle))
+            .isEqualTo(
+                UserStyleData(
+                    mapOf(
+                        "COLOR_STYLE_SETTING" to "GREEN_STYLE".encodeToByteArray(),
+                        "WATCH_HAND_STYLE" to "GOTHIC".encodeToByteArray()
+                    )
                 )
             )
-        )
     }
 
     @Test
     public fun watchFaceRenderParams() {
-        val deserialized = loadGoldenResource(R.raw.watch_face_render_params) {
-            WatchFaceRenderParams.CREATOR.createFromParcel(it)
-        }
+        val deserialized =
+            loadGoldenResource(R.raw.watch_face_render_params) {
+                WatchFaceRenderParams.CREATOR.createFromParcel(it)
+            }
 
-        assertThat(RenderParameters(deserialized.renderParametersWireFormat)).isEqualTo(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                RenderParameters.HighlightLayer(
-                    RenderParameters.HighlightedElement.AllComplicationSlots,
-                    Color.RED,
-                    Color.argb(128, 0, 0, 0)
+        assertThat(RenderParameters(deserialized.renderParametersWireFormat))
+            .isEqualTo(
+                RenderParameters(
+                    DrawMode.INTERACTIVE,
+                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                    RenderParameters.HighlightLayer(
+                        RenderParameters.HighlightedElement.AllComplicationSlots,
+                        Color.RED,
+                        Color.argb(128, 0, 0, 0)
+                    )
                 )
             )
-        )
         assertThat(deserialized.calendarTimeMillis).isEqualTo(123456789)
-        assertThat(UserStyleData(deserialized.userStyle!!)).isEqualTo(
-            UserStyleData(
-                mapOf(
-                    "COLOR_STYLE_SETTING" to "RED".encodeToByteArray(),
-                    "NUM_COMPLICATIONS" to "TWO".encodeToByteArray(),
+        assertThat(UserStyleData(deserialized.userStyle!!))
+            .isEqualTo(
+                UserStyleData(
+                    mapOf(
+                        "COLOR_STYLE_SETTING" to "RED".encodeToByteArray(),
+                        "NUM_COMPLICATIONS" to "TWO".encodeToByteArray(),
+                    )
                 )
             )
-        )
 
         assertThat(deserialized.idAndComplicationDatumWireFormats!!.size).isEqualTo(2)
         assertThat(deserialized.idAndComplicationDatumWireFormats!![0].id).isEqualTo(1)
         val complicationA =
-            deserialized.idAndComplicationDatumWireFormats!![0].complicationData
+            deserialized.idAndComplicationDatumWireFormats!![0]
+                .complicationData
                 .toApiComplicationData() as LongTextComplicationData
         assertThat(complicationA.text.getTextAt(context.resources, Instant.EPOCH))
             .isEqualTo("A Text")
@@ -195,7 +204,8 @@
 
         assertThat(deserialized.idAndComplicationDatumWireFormats!![1].id).isEqualTo(2)
         val complicationB =
-            deserialized.idAndComplicationDatumWireFormats!![1].complicationData
+            deserialized.idAndComplicationDatumWireFormats!![1]
+                .complicationData
                 .toApiComplicationData() as ShortTextComplicationData
         assertThat(complicationB.text.getTextAt(context.resources, Instant.EPOCH))
             .isEqualTo("B Text")
@@ -205,21 +215,19 @@
 
     @Test
     public fun complicationState() {
-        val deserialized = loadGoldenResource(R.raw.complication_state) {
-            ComplicationSlotState(ComplicationStateWireFormat.CREATOR.createFromParcel(it))
-        }
+        val deserialized =
+            loadGoldenResource(R.raw.complication_state) {
+                ComplicationSlotState(ComplicationStateWireFormat.CREATOR.createFromParcel(it))
+            }
 
         assertThat(deserialized.bounds).isEqualTo(Rect(1, 2, 3, 4))
         assertThat(deserialized.boundsType).isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
-        assertThat(deserialized.supportedTypes).containsExactly(
-            ComplicationType.LONG_TEXT, ComplicationType.SHORT_TEXT
-        )
-        assertThat(deserialized.defaultDataSourcePolicy.systemDataSourceFallback).isEqualTo(
-            SystemDataSources.DATA_SOURCE_DAY_AND_DATE
-        )
-        assertThat(deserialized.defaultDataSourcePolicy.primaryDataSource).isEqualTo(
-            ComponentName("a", "b")
-        )
+        assertThat(deserialized.supportedTypes)
+            .containsExactly(ComplicationType.LONG_TEXT, ComplicationType.SHORT_TEXT)
+        assertThat(deserialized.defaultDataSourcePolicy.systemDataSourceFallback)
+            .isEqualTo(SystemDataSources.DATA_SOURCE_DAY_AND_DATE)
+        assertThat(deserialized.defaultDataSourcePolicy.primaryDataSource)
+            .isEqualTo(ComponentName("a", "b"))
         assertThat(deserialized.defaultDataSourcePolicy.secondaryDataSource).isNull()
         assertThat(deserialized.currentType).isEqualTo(ComplicationType.SHORT_TEXT)
         assertThat(deserialized.isEnabled).isTrue()
@@ -230,25 +238,26 @@
 
     @Test
     public fun editorState() {
-        val deserialized = loadGoldenResource(R.raw.editor_state) {
-            EditorStateWireFormat.CREATOR.createFromParcel(it).asApiEditorState()
-        }
+        val deserialized =
+            loadGoldenResource(R.raw.editor_state) {
+                EditorStateWireFormat.CREATOR.createFromParcel(it).asApiEditorState()
+            }
 
         assertThat(deserialized.watchFaceId).isEqualTo(WatchFaceId("id-1"))
-        assertThat(deserialized.userStyle).isEqualTo(
-            UserStyleData(
-                mapOf(
-                    "COLOR_STYLE_SETTING" to "BLUE".encodeToByteArray(),
-                    "NUM_COMPLICATIONS" to "THREE".encodeToByteArray(),
+        assertThat(deserialized.userStyle)
+            .isEqualTo(
+                UserStyleData(
+                    mapOf(
+                        "COLOR_STYLE_SETTING" to "BLUE".encodeToByteArray(),
+                        "NUM_COMPLICATIONS" to "THREE".encodeToByteArray(),
+                    )
                 )
             )
-        )
         assertThat(deserialized.shouldCommitChanges).isTrue()
 
         val complicationA = deserialized.previewComplicationsData[10] as ShortTextComplicationData
         val complicationB = deserialized.previewComplicationsData[20] as LongTextComplicationData
-        assertThat(complicationA.text.getTextAt(context.resources, Instant.EPOCH))
-            .isEqualTo("Mon")
+        assertThat(complicationA.text.getTextAt(context.resources, Instant.EPOCH)).isEqualTo("Mon")
         assertThat(complicationA.title!!.getTextAt(context.resources, Instant.EPOCH))
             .isEqualTo("23rd")
         assertThat(complicationB.text.getTextAt(context.resources, Instant.EPOCH))
diff --git a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/TestNopCanvasWatchFaceService.kt b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/TestNopCanvasWatchFaceService.kt
index 31bca95..2305021 100644
--- a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/TestNopCanvasWatchFaceService.kt
+++ b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/TestNopCanvasWatchFaceService.kt
@@ -37,33 +37,36 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
-                // Intentionally empty.
-            }
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("deprecation")
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
+                    // Intentionally empty.
+                }
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
-                // Intentionally empty.
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {
+                    // Intentionally empty.
+                }
             }
+        )
+
+    override fun getSystemTimeProvider() =
+        object : SystemTimeProvider {
+            override fun getSystemTimeMillis() = 123456789L
+
+            override fun getSystemTimeZoneId() = ZoneId.of("UTC")
         }
-    )
-
-    override fun getSystemTimeProvider() = object : SystemTimeProvider {
-        override fun getSystemTimeMillis() = 123456789L
-
-        override fun getSystemTimeZoneId() = ZoneId.of("UTC")
-    }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/TestWatchFaceServices.kt b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/TestWatchFaceServices.kt
index 4b7919d..1116fca 100644
--- a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/TestWatchFaceServices.kt
+++ b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/TestWatchFaceServices.kt
@@ -82,29 +82,26 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("deprecation")
-        object : Renderer.GlesRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            16
-        ) {
-            init {
-                lifeCycleEvents.add("Renderer.constructed")
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("deprecation")
+            object :
+                Renderer.GlesRenderer(surfaceHolder, currentUserStyleRepository, watchState, 16) {
+                init {
+                    lifeCycleEvents.add("Renderer.constructed")
+                }
+
+                override fun onDestroy() {
+                    super.onDestroy()
+                    lifeCycleEvents.add("Renderer.onDestroy")
+                }
+
+                override fun render(zonedDateTime: ZonedDateTime) {}
+
+                override fun renderHighlightLayer(zonedDateTime: ZonedDateTime) {}
             }
-
-            override fun onDestroy() {
-                super.onDestroy()
-                lifeCycleEvents.add("Renderer.onDestroy")
-            }
-
-            override fun render(zonedDateTime: ZonedDateTime) {}
-
-            override fun renderHighlightLayer(zonedDateTime: ZonedDateTime) {}
-        }
-    )
+        )
 }
 
 internal class TestExampleCanvasAnalogWatchFaceService(
@@ -125,12 +122,13 @@
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
     ): WatchFace {
-        watchFace = super.createWatchFace(
-            surfaceHolder,
-            watchState,
-            complicationSlotsManager,
-            currentUserStyleRepository
-        )
+        watchFace =
+            super.createWatchFace(
+                surfaceHolder,
+                watchState,
+                complicationSlotsManager,
+                currentUserStyleRepository
+            )
         return watchFace
     }
 
@@ -138,11 +136,12 @@
         var systemTimeMillis = 1000000000L
     }
 
-    override fun getSystemTimeProvider() = object : SystemTimeProvider {
-        override fun getSystemTimeMillis() = systemTimeMillis
+    override fun getSystemTimeProvider() =
+        object : SystemTimeProvider {
+            override fun getSystemTimeMillis() = systemTimeMillis
 
-        override fun getSystemTimeZoneId() = ZoneId.of("UTC")
-    }
+            override fun getSystemTimeZoneId() = ZoneId.of("UTC")
+        }
 }
 
 internal class TestExampleOpenGLBackgroundInitWatchFaceService(
@@ -163,12 +162,13 @@
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
     ): WatchFace {
-        watchFace = super.createWatchFace(
-            surfaceHolder,
-            watchState,
-            complicationSlotsManager,
-            currentUserStyleRepository
-        )
+        watchFace =
+            super.createWatchFace(
+                surfaceHolder,
+                watchState,
+                complicationSlotsManager,
+                currentUserStyleRepository
+            )
         return watchFace
     }
 }
@@ -185,15 +185,16 @@
         return ComplicationSlotsManager(
             listOf(
                 ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                    COMPLICATION_ID,
-                    { _, _ -> throw Exception("Deliberately crashing") },
-                    listOf(ComplicationType.LONG_TEXT),
-                    DefaultComplicationDataSourcePolicy(
-                        SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
-                        ComplicationType.LONG_TEXT
-                    ),
-                    ComplicationSlotBounds(RectF(0.1f, 0.1f, 0.4f, 0.4f))
-                ).build()
+                        COMPLICATION_ID,
+                        { _, _ -> throw Exception("Deliberately crashing") },
+                        listOf(ComplicationType.LONG_TEXT),
+                        DefaultComplicationDataSourcePolicy(
+                            SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
+                            ComplicationType.LONG_TEXT
+                        ),
+                        ComplicationSlotBounds(RectF(0.1f, 0.1f, 0.4f, 0.4f))
+                    )
+                    .build()
             ),
             currentUserStyleRepository
         )
@@ -226,29 +227,36 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
-                // Actually rendering something isn't required.
-            }
+    ) =
+        WatchFace(
+                WatchFaceType.DIGITAL,
+                @Suppress("deprecation")
+                object :
+                    Renderer.CanvasRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        CanvasType.HARDWARE,
+                        16
+                    ) {
+                    override fun render(
+                        canvas: Canvas,
+                        bounds: Rect,
+                        zonedDateTime: ZonedDateTime
+                    ) {
+                        // Actually rendering something isn't required.
+                    }
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
-                // Actually rendering something isn't required.
-            }
-        }
-    ).setOverlayStyle(watchFaceOverlayStyle)
+                    override fun renderHighlightLayer(
+                        canvas: Canvas,
+                        bounds: Rect,
+                        zonedDateTime: ZonedDateTime
+                    ) {
+                        // Actually rendering something isn't required.
+                    }
+                }
+            )
+            .setOverlayStyle(watchFaceOverlayStyle)
 }
 
 internal class TestAsyncCanvasRenderInitWatchFaceService(
@@ -268,39 +276,42 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override suspend fun init() {
-                initCompletableDeferred.await()
-            }
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("deprecation")
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override suspend fun init() {
+                    initCompletableDeferred.await()
+                }
 
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
-                // Actually rendering something isn't required.
-            }
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
+                    // Actually rendering something isn't required.
+                }
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
-                TODO("Not yet implemented")
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {
+                    TODO("Not yet implemented")
+                }
             }
+        )
+
+    override fun getSystemTimeProvider() =
+        object : SystemTimeProvider {
+            override fun getSystemTimeMillis() = 123456789L
+
+            override fun getSystemTimeZoneId() = ZoneId.of("UTC")
         }
-    )
-
-    override fun getSystemTimeProvider() = object : SystemTimeProvider {
-        override fun getSystemTimeMillis() = 123456789L
-
-        override fun getSystemTimeZoneId() = ZoneId.of("UTC")
-    }
 }
 
 internal class TestAsyncGlesRenderInitWatchFaceService(
@@ -322,32 +333,29 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("deprecation")
-        object : Renderer.GlesRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            16
-        ) {
-            override suspend fun onUiThreadGlSurfaceCreated(width: Int, height: Int) {
-                onUiThreadGlSurfaceCreatedCompletableDeferred.await()
-            }
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("deprecation")
+            object :
+                Renderer.GlesRenderer(surfaceHolder, currentUserStyleRepository, watchState, 16) {
+                override suspend fun onUiThreadGlSurfaceCreated(width: Int, height: Int) {
+                    onUiThreadGlSurfaceCreatedCompletableDeferred.await()
+                }
 
-            override suspend fun onBackgroundThreadGlContextCreated() {
-                onBackgroundThreadGlContextCreatedCompletableDeferred.await()
-            }
+                override suspend fun onBackgroundThreadGlContextCreated() {
+                    onBackgroundThreadGlContextCreatedCompletableDeferred.await()
+                }
 
-            override fun render(zonedDateTime: ZonedDateTime) {
-                // GLES rendering is complicated and not strictly necessary for our test.
-            }
+                override fun render(zonedDateTime: ZonedDateTime) {
+                    // GLES rendering is complicated and not strictly necessary for our test.
+                }
 
-            override fun renderHighlightLayer(zonedDateTime: ZonedDateTime) {
-                TODO("Not yet implemented")
+                override fun renderHighlightLayer(zonedDateTime: ZonedDateTime) {
+                    TODO("Not yet implemented")
+                }
             }
-        }
-    )
+        )
 }
 
 internal class TestComplicationProviderDefaultsWatchFaceService(
@@ -367,53 +375,48 @@
         return ComplicationSlotsManager(
             listOf(
                 ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                    123,
-                    { _, _ ->
-                        object : CanvasComplication {
-                            override fun render(
-                                canvas: Canvas,
-                                bounds: Rect,
-                                zonedDateTime: ZonedDateTime,
-                                renderParameters: RenderParameters,
-                                slotId: Int
-                            ) {
-                            }
+                        123,
+                        { _, _ ->
+                            object : CanvasComplication {
+                                override fun render(
+                                    canvas: Canvas,
+                                    bounds: Rect,
+                                    zonedDateTime: ZonedDateTime,
+                                    renderParameters: RenderParameters,
+                                    slotId: Int
+                                ) {}
 
-                            override fun drawHighlight(
-                                canvas: Canvas,
-                                bounds: Rect,
-                                boundsType: Int,
-                                zonedDateTime: ZonedDateTime,
-                                color: Int
-                            ) {
-                            }
+                                override fun drawHighlight(
+                                    canvas: Canvas,
+                                    bounds: Rect,
+                                    boundsType: Int,
+                                    zonedDateTime: ZonedDateTime,
+                                    color: Int
+                                ) {}
 
-                            override fun getData() = NoDataComplicationData()
+                                override fun getData() = NoDataComplicationData()
 
-                            override fun loadData(
-                                complicationData: ComplicationData,
-                                loadDrawablesAsynchronous: Boolean
-                            ) {
+                                override fun loadData(
+                                    complicationData: ComplicationData,
+                                    loadDrawablesAsynchronous: Boolean
+                                ) {}
                             }
-                        }
-                    },
-                    listOf(
-                        ComplicationType.PHOTO_IMAGE,
-                        ComplicationType.LONG_TEXT,
-                        ComplicationType.SHORT_TEXT
-                    ),
-                    DefaultComplicationDataSourcePolicy(
-                        ComponentName("com.package1", "com.app1"),
-                        ComplicationType.PHOTO_IMAGE,
-                        ComponentName("com.package2", "com.app2"),
-                        ComplicationType.LONG_TEXT,
-                        SystemDataSources.DATA_SOURCE_STEP_COUNT,
-                        ComplicationType.SHORT_TEXT
-                    ),
-                    ComplicationSlotBounds(
-                        RectF(0.1f, 0.2f, 0.3f, 0.4f)
+                        },
+                        listOf(
+                            ComplicationType.PHOTO_IMAGE,
+                            ComplicationType.LONG_TEXT,
+                            ComplicationType.SHORT_TEXT
+                        ),
+                        DefaultComplicationDataSourcePolicy(
+                            ComponentName("com.package1", "com.app1"),
+                            ComplicationType.PHOTO_IMAGE,
+                            ComponentName("com.package2", "com.app2"),
+                            ComplicationType.LONG_TEXT,
+                            SystemDataSources.DATA_SOURCE_STEP_COUNT,
+                            ComplicationType.SHORT_TEXT
+                        ),
+                        ComplicationSlotBounds(RectF(0.1f, 0.2f, 0.3f, 0.4f))
                     )
-                )
                     .build()
             ),
             currentUserStyleRepository
@@ -425,26 +428,27 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("deprecation")
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {}
             }
-        }
-    )
+        )
 }
 
 internal class TestEdgeComplicationWatchFaceService(
@@ -465,54 +469,49 @@
         return ComplicationSlotsManager(
             listOf(
                 ComplicationSlot.createEdgeComplicationSlotBuilder(
-                    123,
-                    { _, _ ->
-                        object : CanvasComplication {
-                            override fun render(
-                                canvas: Canvas,
-                                bounds: Rect,
-                                zonedDateTime: ZonedDateTime,
-                                renderParameters: RenderParameters,
-                                slotId: Int
-                            ) {
-                            }
+                        123,
+                        { _, _ ->
+                            object : CanvasComplication {
+                                override fun render(
+                                    canvas: Canvas,
+                                    bounds: Rect,
+                                    zonedDateTime: ZonedDateTime,
+                                    renderParameters: RenderParameters,
+                                    slotId: Int
+                                ) {}
 
-                            override fun drawHighlight(
-                                canvas: Canvas,
-                                bounds: Rect,
-                                boundsType: Int,
-                                zonedDateTime: ZonedDateTime,
-                                color: Int
-                            ) {
-                            }
+                                override fun drawHighlight(
+                                    canvas: Canvas,
+                                    bounds: Rect,
+                                    boundsType: Int,
+                                    zonedDateTime: ZonedDateTime,
+                                    color: Int
+                                ) {}
 
-                            override fun getData() = NoDataComplicationData()
+                                override fun getData() = NoDataComplicationData()
 
-                            override fun loadData(
-                                complicationData: ComplicationData,
-                                loadDrawablesAsynchronous: Boolean
-                            ) {
+                                override fun loadData(
+                                    complicationData: ComplicationData,
+                                    loadDrawablesAsynchronous: Boolean
+                                ) {}
                             }
-                        }
-                    },
-                    listOf(
-                        ComplicationType.PHOTO_IMAGE,
-                        ComplicationType.LONG_TEXT,
-                        ComplicationType.SHORT_TEXT
-                    ),
-                    DefaultComplicationDataSourcePolicy(
-                        ComponentName("com.package1", "com.app1"),
-                        ComplicationType.PHOTO_IMAGE,
-                        ComponentName("com.package2", "com.app2"),
-                        ComplicationType.LONG_TEXT,
-                        SystemDataSources.DATA_SOURCE_STEP_COUNT,
-                        ComplicationType.SHORT_TEXT
-                    ),
-                    ComplicationSlotBounds(
-                        RectF(0f, 0f, 1f, 1f)
-                    ),
-                    BoundingArc(45f, 90f, 0.1f)
-                )
+                        },
+                        listOf(
+                            ComplicationType.PHOTO_IMAGE,
+                            ComplicationType.LONG_TEXT,
+                            ComplicationType.SHORT_TEXT
+                        ),
+                        DefaultComplicationDataSourcePolicy(
+                            ComponentName("com.package1", "com.app1"),
+                            ComplicationType.PHOTO_IMAGE,
+                            ComponentName("com.package2", "com.app2"),
+                            ComplicationType.LONG_TEXT,
+                            SystemDataSources.DATA_SOURCE_STEP_COUNT,
+                            ComplicationType.SHORT_TEXT
+                        ),
+                        ComplicationSlotBounds(RectF(0f, 0f, 1f, 1f)),
+                        BoundingArc(45f, 90f, 0.1f)
+                    )
                     .build()
             ),
             currentUserStyleRepository
@@ -524,26 +523,27 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("deprecation")
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {}
             }
-        }
-    )
+        )
 }
 
 internal class TestWatchFaceServiceWithPreviewImageUpdateRequest(
@@ -558,8 +558,7 @@
 
     override fun getWallpaperSurfaceHolderOverride() = surfaceHolderOverride
 
-    @Suppress("deprecation")
-    private lateinit var renderer: Renderer.CanvasRenderer
+    @Suppress("deprecation") private lateinit var renderer: Renderer.CanvasRenderer
 
     fun triggerPreviewImageUpdateRequest() {
         renderer.sendPreviewImageNeedsUpdateRequest()
@@ -572,26 +571,27 @@
         currentUserStyleRepository: CurrentUserStyleRepository
     ): WatchFace {
         @Suppress("deprecation")
-        renderer = object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override suspend fun init() {
-                rendererInitializedLatch.countDown()
-            }
+        renderer =
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override suspend fun init() {
+                    rendererInitializedLatch.countDown()
+                }
 
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {}
             }
-        }
         return WatchFace(WatchFaceType.DIGITAL, renderer)
     }
 }
@@ -613,35 +613,35 @@
             R.string.watchface_complications_setting,
             R.string.watchface_complications_setting_description,
             icon = null,
-            complicationConfig = listOf(
-                UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id(NO_COMPLICATIONS),
-                    resources,
-                    R.string.watchface_complications_setting_none,
-                    null,
-                    listOf(
-                        UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            123,
-                            enabled = false
+            complicationConfig =
+                listOf(
+                    UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        UserStyleSetting.Option.Id(NO_COMPLICATIONS),
+                        resources,
+                        R.string.watchface_complications_setting_none,
+                        null,
+                        listOf(
+                            UserStyleSetting.ComplicationSlotsUserStyleSetting
+                                .ComplicationSlotOverlay(123, enabled = false)
+                        )
+                    ),
+                    UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        UserStyleSetting.Option.Id(LEFT_COMPLICATION),
+                        resources,
+                        R.string.watchface_complications_setting_left,
+                        null,
+                        listOf(
+                            UserStyleSetting.ComplicationSlotsUserStyleSetting
+                                .ComplicationSlotOverlay(
+                                    123,
+                                    enabled = true,
+                                    nameResourceId = R.string.left_complication_screen_name,
+                                    screenReaderNameResourceId =
+                                        R.string.left_complication_screen_reader_name
+                                )
                         )
                     )
                 ),
-                UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id(LEFT_COMPLICATION),
-                    resources,
-                    R.string.watchface_complications_setting_left,
-                    null,
-                    listOf(
-                        UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            123,
-                            enabled = true,
-                            nameResourceId = R.string.left_complication_screen_name,
-                            screenReaderNameResourceId =
-                            R.string.left_complication_screen_reader_name
-                        )
-                    )
-                )
-            ),
             listOf(WatchFaceLayer.COMPLICATIONS)
         )
 
@@ -656,53 +656,49 @@
         return ComplicationSlotsManager(
             listOf(
                 ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                    123,
-                    { _, _ ->
-                        object : CanvasComplication {
-                            override fun render(
-                                canvas: Canvas,
-                                bounds: Rect,
-                                zonedDateTime: ZonedDateTime,
-                                renderParameters: RenderParameters,
-                                slotId: Int
-                            ) {
-                            }
+                        123,
+                        { _, _ ->
+                            object : CanvasComplication {
+                                override fun render(
+                                    canvas: Canvas,
+                                    bounds: Rect,
+                                    zonedDateTime: ZonedDateTime,
+                                    renderParameters: RenderParameters,
+                                    slotId: Int
+                                ) {}
 
-                            override fun drawHighlight(
-                                canvas: Canvas,
-                                bounds: Rect,
-                                boundsType: Int,
-                                zonedDateTime: ZonedDateTime,
-                                color: Int
-                            ) {
-                            }
+                                override fun drawHighlight(
+                                    canvas: Canvas,
+                                    bounds: Rect,
+                                    boundsType: Int,
+                                    zonedDateTime: ZonedDateTime,
+                                    color: Int
+                                ) {}
 
-                            override fun getData() = NoDataComplicationData()
+                                override fun getData() = NoDataComplicationData()
 
-                            override fun loadData(
-                                complicationData: ComplicationData,
-                                loadDrawablesAsynchronous: Boolean
-                            ) {
+                                override fun loadData(
+                                    complicationData: ComplicationData,
+                                    loadDrawablesAsynchronous: Boolean
+                                ) {}
                             }
-                        }
-                    },
-                    listOf(
-                        ComplicationType.PHOTO_IMAGE,
-                        ComplicationType.LONG_TEXT,
-                        ComplicationType.SHORT_TEXT
-                    ),
-                    DefaultComplicationDataSourcePolicy(
-                        ComponentName("com.package1", "com.app1"),
-                        ComplicationType.PHOTO_IMAGE,
-                        ComponentName("com.package2", "com.app2"),
-                        ComplicationType.LONG_TEXT,
-                        SystemDataSources.DATA_SOURCE_STEP_COUNT,
-                        ComplicationType.SHORT_TEXT
-                    ),
-                    ComplicationSlotBounds(
-                        RectF(0.1f, 0.2f, 0.3f, 0.4f)
+                        },
+                        listOf(
+                            ComplicationType.PHOTO_IMAGE,
+                            ComplicationType.LONG_TEXT,
+                            ComplicationType.SHORT_TEXT
+                        ),
+                        DefaultComplicationDataSourcePolicy(
+                            ComponentName("com.package1", "com.app1"),
+                            ComplicationType.PHOTO_IMAGE,
+                            ComponentName("com.package2", "com.app2"),
+                            ComplicationType.LONG_TEXT,
+                            SystemDataSources.DATA_SOURCE_STEP_COUNT,
+                            ComplicationType.SHORT_TEXT
+                        ),
+                        ComplicationSlotBounds(RectF(0.1f, 0.2f, 0.3f, 0.4f))
                     )
-                ).build()
+                    .build()
             ),
             currentUserStyleRepository
         )
@@ -713,26 +709,27 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.ANALOG,
-        @Suppress("deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
+    ) =
+        WatchFace(
+            WatchFaceType.ANALOG,
+            @Suppress("deprecation")
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {}
             }
-        }
-    )
+        )
 }
 
 internal class TestCustomTapFilterWatchFaceService(
@@ -753,62 +750,57 @@
         return ComplicationSlotsManager(
             listOf(
                 ComplicationSlot.createEdgeComplicationSlotBuilder(
-                    123,
-                    { _, _ ->
-                        object : CanvasComplication {
-                            override fun render(
-                                canvas: Canvas,
-                                bounds: Rect,
-                                zonedDateTime: ZonedDateTime,
-                                renderParameters: RenderParameters,
-                                slotId: Int
-                            ) {
-                            }
+                        123,
+                        { _, _ ->
+                            object : CanvasComplication {
+                                override fun render(
+                                    canvas: Canvas,
+                                    bounds: Rect,
+                                    zonedDateTime: ZonedDateTime,
+                                    renderParameters: RenderParameters,
+                                    slotId: Int
+                                ) {}
 
-                            override fun drawHighlight(
-                                canvas: Canvas,
-                                bounds: Rect,
-                                boundsType: Int,
-                                zonedDateTime: ZonedDateTime,
-                                color: Int
-                            ) {
-                            }
+                                override fun drawHighlight(
+                                    canvas: Canvas,
+                                    bounds: Rect,
+                                    boundsType: Int,
+                                    zonedDateTime: ZonedDateTime,
+                                    color: Int
+                                ) {}
 
-                            override fun getData() = NoDataComplicationData()
+                                override fun getData() = NoDataComplicationData()
 
-                            override fun loadData(
-                                complicationData: ComplicationData,
-                                loadDrawablesAsynchronous: Boolean
-                            ) {
+                                override fun loadData(
+                                    complicationData: ComplicationData,
+                                    loadDrawablesAsynchronous: Boolean
+                                ) {}
                             }
+                        },
+                        listOf(
+                            ComplicationType.PHOTO_IMAGE,
+                            ComplicationType.LONG_TEXT,
+                            ComplicationType.SHORT_TEXT
+                        ),
+                        DefaultComplicationDataSourcePolicy(
+                            ComponentName("com.package1", "com.app1"),
+                            ComplicationType.PHOTO_IMAGE,
+                            ComponentName("com.package2", "com.app2"),
+                            ComplicationType.LONG_TEXT,
+                            SystemDataSources.DATA_SOURCE_STEP_COUNT,
+                            ComplicationType.SHORT_TEXT
+                        ),
+                        ComplicationSlotBounds(RectF(0f, 0f, 1f, 1f)),
+                        object : ComplicationTapFilter {
+                            override fun hitTest(
+                                complicationSlot: ComplicationSlot,
+                                screenBounds: Rect,
+                                @Px x: Int,
+                                @Px y: Int,
+                                includeMargins: Boolean
+                            ): Boolean = (x % 2 == 0) && (y % 2 == 0)
                         }
-                    },
-                    listOf(
-                        ComplicationType.PHOTO_IMAGE,
-                        ComplicationType.LONG_TEXT,
-                        ComplicationType.SHORT_TEXT
-                    ),
-                    DefaultComplicationDataSourcePolicy(
-                        ComponentName("com.package1", "com.app1"),
-                        ComplicationType.PHOTO_IMAGE,
-                        ComponentName("com.package2", "com.app2"),
-                        ComplicationType.LONG_TEXT,
-                        SystemDataSources.DATA_SOURCE_STEP_COUNT,
-                        ComplicationType.SHORT_TEXT
-                    ),
-                    ComplicationSlotBounds(
-                        RectF(0f, 0f, 1f, 1f)
-                    ),
-                    object : ComplicationTapFilter {
-                        override fun hitTest(
-                            complicationSlot: ComplicationSlot,
-                            screenBounds: Rect,
-                            @Px x: Int,
-                            @Px y: Int,
-                            includeMargins: Boolean
-                        ): Boolean = (x % 2 == 0) && (y % 2 == 0)
-                    }
-                )
+                    )
                     .build()
             ),
             currentUserStyleRepository
@@ -820,58 +812,65 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("deprecation")
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {}
             }
-        }
-    )
+        )
 }
 
 internal object TestServicesHelpers {
-    fun createTestComplications(context: Context) = mapOf(
-        ExampleCanvasAnalogWatchFaceService.EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID to
-            ShortTextComplicationData.Builder(
-                PlainComplicationText.Builder("ID").build(),
-                ComplicationText.EMPTY
-            ).setTitle(PlainComplicationText.Builder("Left").build())
-                .setTapAction(
-                    PendingIntent.getActivity(context, 0, Intent("left"),
-                        PendingIntent.FLAG_IMMUTABLE
+    fun createTestComplications(context: Context) =
+        mapOf(
+            ExampleCanvasAnalogWatchFaceService.EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID to
+                ShortTextComplicationData.Builder(
+                        PlainComplicationText.Builder("ID").build(),
+                        ComplicationText.EMPTY
                     )
-                )
-                .build(),
-        ExampleCanvasAnalogWatchFaceService.EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID to
-            ShortTextComplicationData.Builder(
-                PlainComplicationText.Builder("ID").build(),
-                ComplicationText.EMPTY
-            ).setTitle(PlainComplicationText.Builder("Right").build())
-                .setTapAction(
-                    PendingIntent.getActivity(context, 0, Intent("right"),
-                        PendingIntent.FLAG_IMMUTABLE
+                    .setTitle(PlainComplicationText.Builder("Left").build())
+                    .setTapAction(
+                        PendingIntent.getActivity(
+                            context,
+                            0,
+                            Intent("left"),
+                            PendingIntent.FLAG_IMMUTABLE
+                        )
                     )
-                )
-                .build()
-    )
-
-    inline fun <reified T>componentOf(): ComponentName {
-        return ComponentName(
-            T::class.java.`package`?.name!!,
-            T::class.java.name
+                    .build(),
+            ExampleCanvasAnalogWatchFaceService.EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID to
+                ShortTextComplicationData.Builder(
+                        PlainComplicationText.Builder("ID").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .setTitle(PlainComplicationText.Builder("Right").build())
+                    .setTapAction(
+                        PendingIntent.getActivity(
+                            context,
+                            0,
+                            Intent("right"),
+                            PendingIntent.FLAG_IMMUTABLE
+                        )
+                    )
+                    .build()
         )
+
+    inline fun <reified T> componentOf(): ComponentName {
+        return ComponentName(T::class.java.`package`?.name!!, T::class.java.name)
     }
 }
diff --git a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlClientTest.kt b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlClientTest.kt
index 7b6539c..365da36 100644
--- a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlClientTest.kt
+++ b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlClientTest.kt
@@ -137,14 +137,11 @@
         )
     }
 
-    @Mock
-    protected lateinit var surfaceHolder: SurfaceHolder
+    @Mock protected lateinit var surfaceHolder: SurfaceHolder
 
-    @Mock
-    protected lateinit var surfaceHolder2: SurfaceHolder
+    @Mock protected lateinit var surfaceHolder2: SurfaceHolder
 
-    @Mock
-    private lateinit var surface: Surface
+    @Mock private lateinit var surface: Surface
 
     protected val handler = Handler(Looper.getMainLooper())
     protected val handlerCoroutineScope =
@@ -152,12 +149,13 @@
 
     protected lateinit var engine: WatchFaceService.EngineWrapper
 
-    protected val deviceConfig = DeviceConfig(
-        hasLowBitAmbient = false,
-        hasBurnInProtection = false,
-        analogPreviewReferenceTimeMillis = 0,
-        digitalPreviewReferenceTimeMillis = 0
-    )
+    protected val deviceConfig =
+        DeviceConfig(
+            hasLowBitAmbient = false,
+            hasBurnInProtection = false,
+            analogPreviewReferenceTimeMillis = 0,
+            digitalPreviewReferenceTimeMillis = 0
+        )
 
     protected val systemState = WatchUiState(false, 0)
 
@@ -167,8 +165,7 @@
     fun setUp() {
         MockitoAnnotations.initMocks(this)
         WatchFaceControlTestService.apiVersionOverride = null
-        Mockito.`when`(surfaceHolder.surfaceFrame)
-            .thenReturn(Rect(0, 0, 400, 400))
+        Mockito.`when`(surfaceHolder.surfaceFrame).thenReturn(Rect(0, 0, 400, 400))
         Mockito.`when`(surfaceHolder.surface).thenReturn(surface)
         Mockito.`when`(surface.isValid).thenReturn(false)
     }
@@ -198,28 +195,29 @@
         previewExecutor: Executor? = null,
         previewListener: Consumer<String>? = null
     ): InteractiveWatchFaceClient {
-        val deferredInteractiveInstance = handlerCoroutineScope.async {
-            if (previewExecutor != null && previewListener != null) {
-                service.getOrCreateInteractiveWatchFaceClient(
-                    instanceId,
-                    deviceConfig,
-                    systemState,
-                    userStyle,
-                    complications,
-                    previewExecutor,
-                    previewListener
-                )
-            } else {
-                @Suppress("deprecation")
-                service.getOrCreateInteractiveWatchFaceClient(
-                    instanceId,
-                    deviceConfig,
-                    systemState,
-                    userStyle,
-                    complications
-                )
+        val deferredInteractiveInstance =
+            handlerCoroutineScope.async {
+                if (previewExecutor != null && previewListener != null) {
+                    service.getOrCreateInteractiveWatchFaceClient(
+                        instanceId,
+                        deviceConfig,
+                        systemState,
+                        userStyle,
+                        complications,
+                        previewExecutor,
+                        previewListener
+                    )
+                } else {
+                    @Suppress("deprecation")
+                    service.getOrCreateInteractiveWatchFaceClient(
+                        instanceId,
+                        deviceConfig,
+                        systemState,
+                        userStyle,
+                        complications
+                    )
+                }
             }
-        }
 
         // Create the engine which triggers construction of the interactive instance.
         handler.post {
@@ -246,10 +244,7 @@
         return value!!
     }
 
-    protected fun tapOnComplication(
-        interactiveInstance: InteractiveWatchFaceClient,
-        slotId: Int
-    ) {
+    protected fun tapOnComplication(interactiveInstance: InteractiveWatchFaceClient, slotId: Int) {
         val leftClickX = interactiveInstance.complicationSlotsState[slotId]!!.bounds.centerX()
         val leftClickY = interactiveInstance.complicationSlotsState[slotId]!!.bounds.centerY()
 
@@ -260,11 +255,11 @@
 
 fun rangedValueComplicationBuilder() =
     RangedValueComplicationData.Builder(
-        value = 50.0f,
-        min = 10.0f,
-        max = 100.0f,
-        ComplicationText.EMPTY
-    )
+            value = 50.0f,
+            min = 10.0f,
+            max = 100.0f,
+            ComplicationText.EMPTY
+        )
         .setText(PlainComplicationText.Builder("Battery").build())
 
 @RunWith(AndroidJUnit4::class)
@@ -285,13 +280,9 @@
 
     @Test
     fun complicationProviderDefaults() {
-        val wallpaperService = TestComplicationProviderDefaultsWatchFaceService(
-            context,
-            surfaceHolder
-        )
-        val interactiveInstance = getOrCreateTestSubject(
-            wallpaperService
-        )
+        val wallpaperService =
+            TestComplicationProviderDefaultsWatchFaceService(context, surfaceHolder)
+        val interactiveInstance = getOrCreateTestSubject(wallpaperService)
 
         try {
             assertThat(interactiveInstance.complicationSlotsState.keys).containsExactly(123)
@@ -317,13 +308,9 @@
 
     @Test
     fun unspecifiedComplicationSlotNames() {
-        val wallpaperService = TestComplicationProviderDefaultsWatchFaceService(
-            context,
-            surfaceHolder
-        )
-        val interactiveInstance = getOrCreateTestSubject(
-            wallpaperService
-        )
+        val wallpaperService =
+            TestComplicationProviderDefaultsWatchFaceService(context, surfaceHolder)
+        val interactiveInstance = getOrCreateTestSubject(wallpaperService)
 
         try {
             assertThat(interactiveInstance.complicationSlotsState.keys).containsExactly(123)
@@ -339,10 +326,7 @@
     @Test
     @Suppress("Deprecation") // userStyleSettings
     fun specifiedComplicationSlotNamesThroughComplicationSlotOption() {
-        val wallpaperService = TestComplicationStyleUpdateWatchFaceService(
-            context,
-            surfaceHolder
-        )
+        val wallpaperService = TestComplicationStyleUpdateWatchFaceService(context, surfaceHolder)
 
         val interactiveInstance = getOrCreateTestSubject(wallpaperService)
 
@@ -355,9 +339,7 @@
         interactiveInstance.updateWatchFaceInstance(
             "testId",
             UserStyle(
-                selectedOptions = mapOf(
-                    leftComplicationUserStyleSetting to optionWithNameOverride
-                )
+                selectedOptions = mapOf(leftComplicationUserStyleSetting to optionWithNameOverride)
             )
         )
 
@@ -380,69 +362,59 @@
 
         assertThat(interactiveInstance.complicationSlotsState.size).isEqualTo(2)
 
-        val leftComplicationDetails = interactiveInstance.complicationSlotsState[
-            EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID
-        ]!!
+        val leftComplicationDetails =
+            interactiveInstance.complicationSlotsState[
+                    EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID]!!
         assertThat(leftComplicationDetails.bounds).isEqualTo(Rect(80, 160, 160, 240))
         assertThat(leftComplicationDetails.boundsType)
             .isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
-        assertThat(
-            leftComplicationDetails.defaultDataSourcePolicy.systemDataSourceFallback
-        ).isEqualTo(
-            SystemDataSources.DATA_SOURCE_DAY_OF_WEEK
-        )
-        assertThat(leftComplicationDetails.defaultDataSourceType).isEqualTo(
-            ComplicationType.SHORT_TEXT
-        )
-        assertThat(leftComplicationDetails.supportedTypes).containsExactly(
-            ComplicationType.RANGED_VALUE,
-            ComplicationType.GOAL_PROGRESS,
-            ComplicationType.WEIGHTED_ELEMENTS,
-            ComplicationType.LONG_TEXT,
-            ComplicationType.SHORT_TEXT,
-            ComplicationType.MONOCHROMATIC_IMAGE,
-            ComplicationType.SMALL_IMAGE
-        )
+        assertThat(leftComplicationDetails.defaultDataSourcePolicy.systemDataSourceFallback)
+            .isEqualTo(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK)
+        assertThat(leftComplicationDetails.defaultDataSourceType)
+            .isEqualTo(ComplicationType.SHORT_TEXT)
+        assertThat(leftComplicationDetails.supportedTypes)
+            .containsExactly(
+                ComplicationType.RANGED_VALUE,
+                ComplicationType.GOAL_PROGRESS,
+                ComplicationType.WEIGHTED_ELEMENTS,
+                ComplicationType.LONG_TEXT,
+                ComplicationType.SHORT_TEXT,
+                ComplicationType.MONOCHROMATIC_IMAGE,
+                ComplicationType.SMALL_IMAGE
+            )
         assertTrue(leftComplicationDetails.isEnabled)
-        assertThat(leftComplicationDetails.currentType).isEqualTo(
-            ComplicationType.SHORT_TEXT
-        )
+        assertThat(leftComplicationDetails.currentType).isEqualTo(ComplicationType.SHORT_TEXT)
         assertThat(leftComplicationDetails.nameResourceId)
             .isEqualTo(R.string.left_complication_screen_name)
-        assertThat(leftComplicationDetails.screenReaderNameResourceId).isEqualTo(
-            R.string.left_complication_screen_reader_name
-        )
+        assertThat(leftComplicationDetails.screenReaderNameResourceId)
+            .isEqualTo(R.string.left_complication_screen_reader_name)
 
-        val rightComplicationDetails = interactiveInstance.complicationSlotsState[
-            EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID
-        ]!!
+        val rightComplicationDetails =
+            interactiveInstance.complicationSlotsState[
+                    EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID]!!
         assertThat(rightComplicationDetails.bounds).isEqualTo(Rect(240, 160, 320, 240))
         assertThat(rightComplicationDetails.boundsType)
             .isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
-        assertThat(
-            rightComplicationDetails.defaultDataSourcePolicy.systemDataSourceFallback
-        ).isEqualTo(SystemDataSources.DATA_SOURCE_STEP_COUNT)
-        assertThat(rightComplicationDetails.defaultDataSourceType).isEqualTo(
-            ComplicationType.SHORT_TEXT
-        )
-        assertThat(rightComplicationDetails.supportedTypes).containsExactly(
-            ComplicationType.RANGED_VALUE,
-            ComplicationType.GOAL_PROGRESS,
-            ComplicationType.WEIGHTED_ELEMENTS,
-            ComplicationType.LONG_TEXT,
-            ComplicationType.SHORT_TEXT,
-            ComplicationType.MONOCHROMATIC_IMAGE,
-            ComplicationType.SMALL_IMAGE
-        )
+        assertThat(rightComplicationDetails.defaultDataSourcePolicy.systemDataSourceFallback)
+            .isEqualTo(SystemDataSources.DATA_SOURCE_STEP_COUNT)
+        assertThat(rightComplicationDetails.defaultDataSourceType)
+            .isEqualTo(ComplicationType.SHORT_TEXT)
+        assertThat(rightComplicationDetails.supportedTypes)
+            .containsExactly(
+                ComplicationType.RANGED_VALUE,
+                ComplicationType.GOAL_PROGRESS,
+                ComplicationType.WEIGHTED_ELEMENTS,
+                ComplicationType.LONG_TEXT,
+                ComplicationType.SHORT_TEXT,
+                ComplicationType.MONOCHROMATIC_IMAGE,
+                ComplicationType.SMALL_IMAGE
+            )
         assertTrue(rightComplicationDetails.isEnabled)
-        assertThat(rightComplicationDetails.currentType).isEqualTo(
-            ComplicationType.SHORT_TEXT
-        )
+        assertThat(rightComplicationDetails.currentType).isEqualTo(ComplicationType.SHORT_TEXT)
         assertThat(rightComplicationDetails.nameResourceId)
             .isEqualTo(R.string.right_complication_screen_name)
-        assertThat(rightComplicationDetails.screenReaderNameResourceId).isEqualTo(
-            R.string.right_complication_screen_reader_name
-        )
+        assertThat(rightComplicationDetails.screenReaderNameResourceId)
+            .isEqualTo(R.string.right_complication_screen_reader_name)
 
         interactiveInstance.close()
     }
@@ -457,27 +429,24 @@
                     rangedValueComplicationBuilder().build(),
                 EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID to
                     LongTextComplicationData.Builder(
-                        PlainComplicationText.Builder("Test").build(),
-                        ComplicationText.EMPTY
-                    ).build()
+                            PlainComplicationText.Builder("Test").build(),
+                            ComplicationText.EMPTY
+                        )
+                        .build()
             )
         )
 
         assertThat(interactiveInstance.complicationSlotsState.size).isEqualTo(2)
 
-        val leftComplicationDetails = interactiveInstance.complicationSlotsState[
-            EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID
-        ]!!
-        val rightComplicationDetails = interactiveInstance.complicationSlotsState[
-            EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID
-        ]!!
+        val leftComplicationDetails =
+            interactiveInstance.complicationSlotsState[
+                    EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID]!!
+        val rightComplicationDetails =
+            interactiveInstance.complicationSlotsState[
+                    EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID]!!
 
-        assertThat(leftComplicationDetails.currentType).isEqualTo(
-            ComplicationType.RANGED_VALUE
-        )
-        assertThat(rightComplicationDetails.currentType).isEqualTo(
-            ComplicationType.LONG_TEXT
-        )
+        assertThat(leftComplicationDetails.currentType).isEqualTo(ComplicationType.RANGED_VALUE)
+        assertThat(rightComplicationDetails.currentType).isEqualTo(ComplicationType.LONG_TEXT)
     }
 
     @Test
@@ -486,19 +455,19 @@
 
         getOrCreateTestSubject(watchFaceService)
 
-        val deferredInteractiveInstance2 = handlerCoroutineScope.async {
-            @Suppress("deprecation")
-            service.getOrCreateInteractiveWatchFaceClient(
-                "testId",
-                deviceConfig,
-                systemState,
-                null,
-                complications
-            )
-        }
+        val deferredInteractiveInstance2 =
+            handlerCoroutineScope.async {
+                @Suppress("deprecation")
+                service.getOrCreateInteractiveWatchFaceClient(
+                    "testId",
+                    deviceConfig,
+                    systemState,
+                    null,
+                    complications
+                )
+            }
 
-        assertThat(awaitWithTimeout(deferredInteractiveInstance2).instanceId)
-            .isEqualTo("testId")
+        assertThat(awaitWithTimeout(deferredInteractiveInstance2).instanceId).isEqualTo("testId")
     }
 
     @Test
@@ -513,23 +482,22 @@
         interactiveInstance.close()
 
         // Connect again to the same wallpaperService instance
-        val deferredExistingInstance = handlerCoroutineScope.async {
-            @Suppress("deprecation")
-            service.getOrCreateInteractiveWatchFaceClient(
-                "testId",
-                deviceConfig,
-                systemState,
-                null,
-                complications
-            )
-        }
+        val deferredExistingInstance =
+            handlerCoroutineScope.async {
+                @Suppress("deprecation")
+                service.getOrCreateInteractiveWatchFaceClient(
+                    "testId",
+                    deviceConfig,
+                    systemState,
+                    null,
+                    complications
+                )
+            }
 
         assertFalse(deferredExistingInstance.isCompleted)
 
         // We don't want to leave a pending request or it'll mess up subsequent tests.
-        handler.post {
-            wallpaperService.onCreateEngine() as WatchFaceService.EngineWrapper
-        }
+        handler.post { wallpaperService.onCreateEngine() as WatchFaceService.EngineWrapper }
 
         awaitWithTimeout(deferredExistingInstance)
     }
@@ -541,29 +509,25 @@
         getOrCreateTestSubject(instanceId = testId)
 
         // Get the instance created above
-        val sysUiInterface =
-            service.getInteractiveWatchFaceClientInstance(testId)!!
+        val sysUiInterface = service.getInteractiveWatchFaceClientInstance(testId)!!
 
         val contentDescriptionLabels = sysUiInterface.contentDescriptionLabels
         assertThat(contentDescriptionLabels.size).isEqualTo(3)
         // Central clock element. Note we don't know the timezone this test will be running in
         // so we can't assert the contents of the clock's test.
         assertThat(contentDescriptionLabels[0].bounds).isEqualTo(Rect(100, 100, 300, 300))
-        assertThat(
-            contentDescriptionLabels[0].getTextAt(context.resources, Instant.EPOCH)
-        ).isNotEqualTo("")
+        assertThat(contentDescriptionLabels[0].getTextAt(context.resources, Instant.EPOCH))
+            .isNotEqualTo("")
 
         // Left complication.
         assertThat(contentDescriptionLabels[1].bounds).isEqualTo(Rect(80, 160, 160, 240))
-        assertThat(
-            contentDescriptionLabels[1].getTextAt(context.resources, Instant.EPOCH)
-        ).isEqualTo("ID Left")
+        assertThat(contentDescriptionLabels[1].getTextAt(context.resources, Instant.EPOCH))
+            .isEqualTo("ID Left")
 
         // Right complication.
         assertThat(contentDescriptionLabels[2].bounds).isEqualTo(Rect(240, 160, 320, 240))
-        assertThat(
-            contentDescriptionLabels[2].getTextAt(context.resources, Instant.EPOCH)
-        ).isEqualTo("ID Right")
+        assertThat(contentDescriptionLabels[2].getTextAt(context.resources, Instant.EPOCH))
+            .isEqualTo("ID Right")
 
         assertThat(sysUiInterface.overlayStyle.backgroundColor).isNull()
         assertThat(sysUiInterface.overlayStyle.foregroundColor).isNull()
@@ -583,36 +547,31 @@
         interactiveInstance.previewReferenceInstant
 
         // Add some additional ContentDescriptionLabels
-        val pendingIntent1 = PendingIntent.getActivity(
-            context, 0, Intent("One"),
-            PendingIntent.FLAG_IMMUTABLE
-        )
-        val pendingIntent2 = PendingIntent.getActivity(
-            context, 0, Intent("Two"),
-            PendingIntent.FLAG_IMMUTABLE
-        )
-        (wallpaperService)
-            .watchFace.renderer.additionalContentDescriptionLabels = listOf(
-            Pair(
-                0,
-                ContentDescriptionLabel(
-                    PlainComplicationText.Builder("Before").build(),
-                    Rect(10, 10, 20, 20),
-                    pendingIntent1
-                )
-            ),
-            Pair(
-                20000,
-                ContentDescriptionLabel(
-                    PlainComplicationText.Builder("After").build(),
-                    Rect(30, 30, 40, 40),
-                    pendingIntent2
+        val pendingIntent1 =
+            PendingIntent.getActivity(context, 0, Intent("One"), PendingIntent.FLAG_IMMUTABLE)
+        val pendingIntent2 =
+            PendingIntent.getActivity(context, 0, Intent("Two"), PendingIntent.FLAG_IMMUTABLE)
+        (wallpaperService).watchFace.renderer.additionalContentDescriptionLabels =
+            listOf(
+                Pair(
+                    0,
+                    ContentDescriptionLabel(
+                        PlainComplicationText.Builder("Before").build(),
+                        Rect(10, 10, 20, 20),
+                        pendingIntent1
+                    )
+                ),
+                Pair(
+                    20000,
+                    ContentDescriptionLabel(
+                        PlainComplicationText.Builder("After").build(),
+                        Rect(30, 30, 40, 40),
+                        pendingIntent2
+                    )
                 )
             )
-        )
 
-        val sysUiInterface =
-            service.getInteractiveWatchFaceClientInstance("testId")!!
+        val sysUiInterface = service.getInteractiveWatchFaceClientInstance("testId")!!
 
         val contentDescriptionLabels = sysUiInterface.contentDescriptionLabels
         assertThat(contentDescriptionLabels.size).isEqualTo(5)
@@ -620,34 +579,29 @@
         // Central clock element. Note we don't know the timezone this test will be running in
         // so we can't assert the contents of the clock's test.
         assertThat(contentDescriptionLabels[0].bounds).isEqualTo(Rect(100, 100, 300, 300))
-        assertThat(
-            contentDescriptionLabels[0].getTextAt(context.resources, Instant.EPOCH)
-        ).isNotEqualTo("")
+        assertThat(contentDescriptionLabels[0].getTextAt(context.resources, Instant.EPOCH))
+            .isNotEqualTo("")
 
         // First additional ContentDescriptionLabel.
         assertThat(contentDescriptionLabels[1].bounds).isEqualTo(Rect(10, 10, 20, 20))
-        assertThat(
-            contentDescriptionLabels[1].getTextAt(context.resources, Instant.EPOCH)
-        ).isEqualTo("Before")
+        assertThat(contentDescriptionLabels[1].getTextAt(context.resources, Instant.EPOCH))
+            .isEqualTo("Before")
         assertThat(contentDescriptionLabels[1].tapAction).isEqualTo(pendingIntent1)
 
         // Left complication.
         assertThat(contentDescriptionLabels[2].bounds).isEqualTo(Rect(80, 160, 160, 240))
-        assertThat(
-            contentDescriptionLabels[2].getTextAt(context.resources, Instant.EPOCH)
-        ).isEqualTo("ID Left")
+        assertThat(contentDescriptionLabels[2].getTextAt(context.resources, Instant.EPOCH))
+            .isEqualTo("ID Left")
 
         // Right complication.
         assertThat(contentDescriptionLabels[3].bounds).isEqualTo(Rect(240, 160, 320, 240))
-        assertThat(
-            contentDescriptionLabels[3].getTextAt(context.resources, Instant.EPOCH)
-        ).isEqualTo("ID Right")
+        assertThat(contentDescriptionLabels[3].getTextAt(context.resources, Instant.EPOCH))
+            .isEqualTo("ID Right")
 
         // Second additional ContentDescriptionLabel.
         assertThat(contentDescriptionLabels[4].bounds).isEqualTo(Rect(30, 30, 40, 40))
-        assertThat(
-            contentDescriptionLabels[4].getTextAt(context.resources, Instant.EPOCH)
-        ).isEqualTo("After")
+        assertThat(contentDescriptionLabels[4].getTextAt(context.resources, Instant.EPOCH))
+            .isEqualTo("After")
         assertThat(contentDescriptionLabels[4].tapAction).isEqualTo(pendingIntent2)
     }
 
@@ -665,12 +619,10 @@
         val interactiveInstance = getOrCreateTestSubject()
 
         assertNull(interactiveInstance.getComplicationIdAt(0, 0))
-        assertThat(interactiveInstance.getComplicationIdAt(85, 165)).isEqualTo(
-            EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID
-        )
-        assertThat(interactiveInstance.getComplicationIdAt(255, 165)).isEqualTo(
-            EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID
-        )
+        assertThat(interactiveInstance.getComplicationIdAt(85, 165))
+            .isEqualTo(EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID)
+        assertThat(interactiveInstance.getComplicationIdAt(255, 165))
+            .isEqualTo(EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID)
         interactiveInstance.close()
     }
 
@@ -693,34 +645,35 @@
     @Test
     fun getDefaultProviderPolicies() {
         assertThat(
-            service.getDefaultComplicationDataSourcePoliciesAndType(
-                exampleCanvasAnalogWatchFaceComponentName
+                service.getDefaultComplicationDataSourcePoliciesAndType(
+                    exampleCanvasAnalogWatchFaceComponentName
+                )
             )
-        ).containsExactlyEntriesIn(
-            mapOf(
-                EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID to
-                    androidx.wear.watchface.client.DefaultComplicationDataSourcePolicyAndType(
-                        DefaultComplicationDataSourcePolicy(
-                            ComponentName(
-                                CONFIGURABLE_DATA_SOURCE_PKG,
-                                CONFIGURABLE_DATA_SOURCE
+            .containsExactlyEntriesIn(
+                mapOf(
+                    EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID to
+                        androidx.wear.watchface.client.DefaultComplicationDataSourcePolicyAndType(
+                            DefaultComplicationDataSourcePolicy(
+                                ComponentName(
+                                    CONFIGURABLE_DATA_SOURCE_PKG,
+                                    CONFIGURABLE_DATA_SOURCE
+                                ),
+                                ComplicationType.SHORT_TEXT,
+                                SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
+                                ComplicationType.SHORT_TEXT
                             ),
-                            ComplicationType.SHORT_TEXT,
-                            SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
                             ComplicationType.SHORT_TEXT
                         ),
-                        ComplicationType.SHORT_TEXT
-                    ),
-                EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID to
-                    androidx.wear.watchface.client.DefaultComplicationDataSourcePolicyAndType(
-                        DefaultComplicationDataSourcePolicy(
-                            SystemDataSources.DATA_SOURCE_STEP_COUNT,
+                    EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID to
+                        androidx.wear.watchface.client.DefaultComplicationDataSourcePolicyAndType(
+                            DefaultComplicationDataSourcePolicy(
+                                SystemDataSources.DATA_SOURCE_STEP_COUNT,
+                                ComplicationType.SHORT_TEXT
+                            ),
                             ComplicationType.SHORT_TEXT
-                        ),
-                        ComplicationType.SHORT_TEXT
-                    )
+                        )
+                )
             )
-        )
     }
 
     @Suppress("DEPRECATION") // DefaultComplicationDataSourcePolicyAndType
@@ -728,34 +681,35 @@
     fun getDefaultProviderPoliciesOldApi() {
         WatchFaceControlTestService.apiVersionOverride = 1
         assertThat(
-            service.getDefaultComplicationDataSourcePoliciesAndType(
-                exampleCanvasAnalogWatchFaceComponentName
+                service.getDefaultComplicationDataSourcePoliciesAndType(
+                    exampleCanvasAnalogWatchFaceComponentName
+                )
             )
-        ).containsExactlyEntriesIn(
-            mapOf(
-                EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID to
-                    androidx.wear.watchface.client.DefaultComplicationDataSourcePolicyAndType(
-                        DefaultComplicationDataSourcePolicy(
-                            ComponentName(
-                                CONFIGURABLE_DATA_SOURCE_PKG,
-                                CONFIGURABLE_DATA_SOURCE
+            .containsExactlyEntriesIn(
+                mapOf(
+                    EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID to
+                        androidx.wear.watchface.client.DefaultComplicationDataSourcePolicyAndType(
+                            DefaultComplicationDataSourcePolicy(
+                                ComponentName(
+                                    CONFIGURABLE_DATA_SOURCE_PKG,
+                                    CONFIGURABLE_DATA_SOURCE
+                                ),
+                                ComplicationType.SHORT_TEXT,
+                                SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
+                                ComplicationType.SHORT_TEXT
                             ),
-                            ComplicationType.SHORT_TEXT,
-                            SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
                             ComplicationType.SHORT_TEXT
                         ),
-                        ComplicationType.SHORT_TEXT
-                    ),
-                EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID to
-                    androidx.wear.watchface.client.DefaultComplicationDataSourcePolicyAndType(
-                        DefaultComplicationDataSourcePolicy(
-                            SystemDataSources.DATA_SOURCE_STEP_COUNT,
+                    EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID to
+                        androidx.wear.watchface.client.DefaultComplicationDataSourcePolicyAndType(
+                            DefaultComplicationDataSourcePolicy(
+                                SystemDataSources.DATA_SOURCE_STEP_COUNT,
+                                ComplicationType.SHORT_TEXT
+                            ),
                             ComplicationType.SHORT_TEXT
-                        ),
-                        ComplicationType.SHORT_TEXT
-                    )
+                        )
+                )
             )
-        )
     }
 
     @Suppress("DEPRECATION") // DefaultComplicationDataSourcePolicyAndType
@@ -764,45 +718,47 @@
         // Tests that we can retrieve the DefaultComplicationDataSourcePolicy without invoking any
         // parts of TestCrashingWatchFaceService that deliberately crash.
         assertThat(
-            service.getDefaultComplicationDataSourcePoliciesAndType(
-                ComponentName(
-                    "androidx.wear.watchface.client.test",
-                    "androidx.wear.watchface.client.test.TestCrashingWatchFaceService"
-
+                service.getDefaultComplicationDataSourcePoliciesAndType(
+                    ComponentName(
+                        "androidx.wear.watchface.client.test",
+                        "androidx.wear.watchface.client.test.TestCrashingWatchFaceService"
+                    )
                 )
             )
-        ).containsExactlyEntriesIn(
-            mapOf(
-                TestCrashingWatchFaceService.COMPLICATION_ID to
-                    androidx.wear.watchface.client.DefaultComplicationDataSourcePolicyAndType(
-                        DefaultComplicationDataSourcePolicy(
-                            SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
+            .containsExactlyEntriesIn(
+                mapOf(
+                    TestCrashingWatchFaceService.COMPLICATION_ID to
+                        androidx.wear.watchface.client.DefaultComplicationDataSourcePolicyAndType(
+                            DefaultComplicationDataSourcePolicy(
+                                SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
+                                ComplicationType.LONG_TEXT
+                            ),
                             ComplicationType.LONG_TEXT
-                        ),
-                        ComplicationType.LONG_TEXT
-                    )
+                        )
+                )
             )
-        )
     }
 
     @Test
     fun addWatchFaceReadyListener_canvasRender() {
         val initCompletableDeferred = CompletableDeferred<Unit>()
-        val wallpaperService = TestAsyncCanvasRenderInitWatchFaceService(
-            context,
-            surfaceHolder,
-            initCompletableDeferred
-        )
-        val deferredInteractiveInstance = handlerCoroutineScope.async {
-            @Suppress("deprecation")
-            service.getOrCreateInteractiveWatchFaceClient(
-                "testId",
-                deviceConfig,
-                systemState,
-                null,
-                complications
+        val wallpaperService =
+            TestAsyncCanvasRenderInitWatchFaceService(
+                context,
+                surfaceHolder,
+                initCompletableDeferred
             )
-        }
+        val deferredInteractiveInstance =
+            handlerCoroutineScope.async {
+                @Suppress("deprecation")
+                service.getOrCreateInteractiveWatchFaceClient(
+                    "testId",
+                    deviceConfig,
+                    systemState,
+                    null,
+                    complications
+                )
+            }
 
         val bitmap = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888)
         val canvas = Canvas(bitmap)
@@ -836,30 +792,30 @@
     @Test
     fun removeWatchFaceReadyListener_canvasRender() {
         val initCompletableDeferred = CompletableDeferred<Unit>()
-        val wallpaperService = TestAsyncCanvasRenderInitWatchFaceService(
-            context,
-            surfaceHolder,
-            initCompletableDeferred
-        )
-        val deferredInteractiveInstance = handlerCoroutineScope.async {
-            @Suppress("deprecation")
-            service.getOrCreateInteractiveWatchFaceClient(
-                "testId",
-                deviceConfig,
-                systemState,
-                null,
-                complications
+        val wallpaperService =
+            TestAsyncCanvasRenderInitWatchFaceService(
+                context,
+                surfaceHolder,
+                initCompletableDeferred
             )
-        }
+        val deferredInteractiveInstance =
+            handlerCoroutineScope.async {
+                @Suppress("deprecation")
+                service.getOrCreateInteractiveWatchFaceClient(
+                    "testId",
+                    deviceConfig,
+                    systemState,
+                    null,
+                    complications
+                )
+            }
 
         val bitmap = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888)
         val canvas = Canvas(bitmap)
         Mockito.`when`(surfaceHolder.lockHardwareCanvas()).thenReturn(canvas)
 
         val renderLatch = CountDownLatch(1)
-        Mockito.`when`(surfaceHolder.unlockCanvasAndPost(canvas)).then {
-            renderLatch.countDown()
-        }
+        Mockito.`when`(surfaceHolder.unlockCanvasAndPost(canvas)).then { renderLatch.countDown() }
 
         // Create the engine which triggers creation of the interactive instance.
         handler.post {
@@ -895,17 +851,17 @@
         val surfaceTexture = SurfaceTexture(false)
         surfaceTexture.setDefaultBufferSize(10, 10)
         Mockito.`when`(surfaceHolder2.surface).thenReturn(Surface(surfaceTexture))
-        Mockito.`when`(surfaceHolder2.surfaceFrame)
-            .thenReturn(Rect(0, 0, 10, 10))
+        Mockito.`when`(surfaceHolder2.surfaceFrame).thenReturn(Rect(0, 0, 10, 10))
 
         val onUiThreadGlSurfaceCreatedCompletableDeferred = CompletableDeferred<Unit>()
         val onBackgroundThreadGlContextCreatedCompletableDeferred = CompletableDeferred<Unit>()
-        val wallpaperService = TestAsyncGlesRenderInitWatchFaceService(
-            context,
-            surfaceHolder2,
-            onUiThreadGlSurfaceCreatedCompletableDeferred,
-            onBackgroundThreadGlContextCreatedCompletableDeferred
-        )
+        val wallpaperService =
+            TestAsyncGlesRenderInitWatchFaceService(
+                context,
+                surfaceHolder2,
+                onUiThreadGlSurfaceCreatedCompletableDeferred,
+                onBackgroundThreadGlContextCreatedCompletableDeferred
+            )
 
         val interactiveInstance = getOrCreateTestSubject(wallpaperService)
 
@@ -950,11 +906,12 @@
 
     @Test
     public fun isComplicationDisplayPolicySupported() {
-        val wallpaperService = TestWatchfaceOverlayStyleWatchFaceService(
-            context,
-            surfaceHolder,
-            WatchFace.OverlayStyle(Color.valueOf(Color.RED), Color.valueOf(Color.BLACK))
-        )
+        val wallpaperService =
+            TestWatchfaceOverlayStyleWatchFaceService(
+                context,
+                surfaceHolder,
+                WatchFace.OverlayStyle(Color.valueOf(Color.RED), Color.valueOf(Color.BLACK))
+            )
         val interactiveInstance = getOrCreateTestSubject(wallpaperService)
 
         assertThat(interactiveInstance.isComplicationDisplayPolicySupported()).isTrue()
@@ -969,22 +926,24 @@
         `when`(mockIInteractiveWatchFace.asBinder()).thenReturn(mockIBinder)
         `when`(mockIInteractiveWatchFace.apiVersion).thenReturn(7)
 
-        val interactiveInstance = InteractiveWatchFaceClientImpl(
-            mockIInteractiveWatchFace,
-            previewImageUpdateRequestedExecutor = null,
-            previewImageUpdateRequestedListener = null
-        )
+        val interactiveInstance =
+            InteractiveWatchFaceClientImpl(
+                mockIInteractiveWatchFace,
+                previewImageUpdateRequestedExecutor = null,
+                previewImageUpdateRequestedListener = null
+            )
 
         assertThat(interactiveInstance.isComplicationDisplayPolicySupported()).isFalse()
     }
 
     @Test
     fun watchfaceOverlayStyle() {
-        val wallpaperService = TestWatchfaceOverlayStyleWatchFaceService(
-            context,
-            surfaceHolder,
-            WatchFace.OverlayStyle(Color.valueOf(Color.RED), Color.valueOf(Color.BLACK))
-        )
+        val wallpaperService =
+            TestWatchfaceOverlayStyleWatchFaceService(
+                context,
+                surfaceHolder,
+                WatchFace.OverlayStyle(Color.valueOf(Color.RED), Color.valueOf(Color.BLACK))
+            )
 
         val interactiveInstance = getOrCreateTestSubject(wallpaperService)
 
@@ -998,11 +957,12 @@
 
     @Test
     fun watchfaceOverlayStyle_after_close() {
-        val wallpaperService = TestWatchfaceOverlayStyleWatchFaceService(
-            context,
-            surfaceHolder,
-            WatchFace.OverlayStyle(Color.valueOf(Color.RED), Color.valueOf(Color.BLACK))
-        )
+        val wallpaperService =
+            TestWatchfaceOverlayStyleWatchFaceService(
+                context,
+                surfaceHolder,
+                WatchFace.OverlayStyle(Color.valueOf(Color.RED), Color.valueOf(Color.BLACK))
+            )
 
         val interactiveInstance = getOrCreateTestSubject(wallpaperService)
 
@@ -1015,10 +975,7 @@
     @Test
     @OptIn(ComplicationExperimental::class)
     fun edgeComplication_boundingArc() {
-        val wallpaperService = TestEdgeComplicationWatchFaceService(
-            context,
-            surfaceHolder
-        )
+        val wallpaperService = TestEdgeComplicationWatchFaceService(context, surfaceHolder)
 
         val interactiveInstance = getOrCreateTestSubject(wallpaperService)
 
@@ -1043,9 +1000,7 @@
             val watchFaceColorsLatch = CountDownLatch(1)
             var watchFaceColors: WatchFaceColors? = null
 
-            interactiveInstance.addOnWatchFaceColorsListener(
-                { runnable -> runnable.run() }
-            ) {
+            interactiveInstance.addOnWatchFaceColorsListener({ runnable -> runnable.run() }) {
                 watchFaceColors = it
                 if (watchFaceColors != null) {
                     watchFaceColorsLatch.countDown()
@@ -1054,13 +1009,14 @@
 
             assertTrue(watchFaceColorsLatch.await(UPDATE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS))
 
-            assertThat(watchFaceColors).isEqualTo(
-                WatchFaceColors(
-                    Color.valueOf(1.0f, 1.0f, 1.0f, 1.0f),
-                    Color.valueOf(0.93333334f, 0.6313726f, 0.6039216f, 1.0f),
-                    Color.valueOf(0.26666668f, 0.26666668f, 0.26666668f, 1.0f)
+            assertThat(watchFaceColors)
+                .isEqualTo(
+                    WatchFaceColors(
+                        Color.valueOf(1.0f, 1.0f, 1.0f, 1.0f),
+                        Color.valueOf(0.93333334f, 0.6313726f, 0.6039216f, 1.0f),
+                        Color.valueOf(0.26666668f, 0.26666668f, 0.26666668f, 1.0f)
+                    )
                 )
-            )
 
             val watchFaceColorsLatch2 = CountDownLatch(1)
             var watchFaceColors2: WatchFaceColors? = null
@@ -1075,9 +1031,7 @@
                 )
             )
 
-            interactiveInstance.addOnWatchFaceColorsListener(
-                { runnable -> runnable.run() }
-            ) {
+            interactiveInstance.addOnWatchFaceColorsListener({ runnable -> runnable.run() }) {
                 watchFaceColors2 = it
                 if (watchFaceColors2 != null) {
                     watchFaceColorsLatch2.countDown()
@@ -1086,13 +1040,14 @@
 
             assertTrue(watchFaceColorsLatch2.await(UPDATE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS))
 
-            assertThat(watchFaceColors2).isEqualTo(
-                WatchFaceColors(
-                    Color.valueOf(0.30980393f, 0.7647059f, 0.96862745f, 1.0f),
-                    Color.valueOf(0.08235294f, 0.39607844f, 0.7529412f, 1.0f),
-                    Color.valueOf(0.26666668f, 0.26666668f, 0.26666668f, 1.0f)
+            assertThat(watchFaceColors2)
+                .isEqualTo(
+                    WatchFaceColors(
+                        Color.valueOf(0.30980393f, 0.7647059f, 0.96862745f, 1.0f),
+                        Color.valueOf(0.08235294f, 0.39607844f, 0.7529412f, 1.0f),
+                        Color.valueOf(0.26666668f, 0.26666668f, 0.26666668f, 1.0f)
+                    )
                 )
-            )
         } finally {
             interactiveInstance.close()
         }
@@ -1104,12 +1059,13 @@
             TestWatchFaceServiceWithPreviewImageUpdateRequest(context, surfaceHolder)
         var lastPreviewImageUpdateRequestedId = ""
 
-        val interactiveInstance = getOrCreateTestSubject(
-            watchFaceService = wallpaperService,
-            instanceId = "wfId-1",
-            previewExecutor = { runnable -> runnable.run() },
-            previewListener = { lastPreviewImageUpdateRequestedId = it }
-        )
+        val interactiveInstance =
+            getOrCreateTestSubject(
+                watchFaceService = wallpaperService,
+                instanceId = "wfId-1",
+                previewExecutor = { runnable -> runnable.run() },
+                previewListener = { lastPreviewImageUpdateRequestedId = it }
+            )
 
         assertTrue(
             wallpaperService.rendererInitializedLatch.await(
@@ -1127,10 +1083,8 @@
 
     @Test
     fun engineDetached() {
-        val wallpaperService = TestComplicationProviderDefaultsWatchFaceService(
-            context,
-            surfaceHolder
-        )
+        val wallpaperService =
+            TestComplicationProviderDefaultsWatchFaceService(context, surfaceHolder)
 
         val interactiveInstance = getOrCreateTestSubject(wallpaperService)
 
@@ -1141,7 +1095,9 @@
                     lastDisconnectReason = disconnectReason
                 }
             }
-        ) { it.run() }
+        ) {
+            it.run()
+        }
 
         // Simulate detach.
         engine.onDestroy()
@@ -1151,10 +1107,7 @@
 
     @Test
     fun tapComplication() {
-        val wallpaperService = TestExampleCanvasAnalogWatchFaceService(
-            context,
-            surfaceHolder
-        )
+        val wallpaperService = TestExampleCanvasAnalogWatchFaceService(context, surfaceHolder)
         val interactiveInstance = getOrCreateTestSubject(wallpaperService)
         interactiveInstance.updateComplicationData(
             mapOf(
@@ -1167,48 +1120,46 @@
 
         tapOnComplication(interactiveInstance, EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID)
 
-        assertTrue(
-            ObservableServiceA.awaitForServiceToBeBound(UPDATE_TIMEOUT_MILLIS)
-        )
+        assertTrue(ObservableServiceA.awaitForServiceToBeBound(UPDATE_TIMEOUT_MILLIS))
     }
 
     @Test
     fun tapTimelineComplication() {
-        val wallpaperService = TestExampleCanvasAnalogWatchFaceService(
-            context,
-            surfaceHolder
-        )
+        val wallpaperService = TestExampleCanvasAnalogWatchFaceService(context, surfaceHolder)
         val interactiveInstance = getOrCreateTestSubject(wallpaperService)
         val watchFaceImpl = runBlocking { engine.deferredWatchFaceImpl.await() }
 
         // Create a timeline complication with three phases, each with their own tap actions leading
         // to ObservableServiceA, ObservableServiceB & ObservableServiceC getting bound.
-        val timelineComplication = rangedValueComplicationBuilder()
-            .setTapAction(ObservableServiceA.createPendingIntent(context))
-            .build()
-            .asWireComplicationData()
+        val timelineComplication =
+            rangedValueComplicationBuilder()
+                .setTapAction(ObservableServiceA.createPendingIntent(context))
+                .build()
+                .asWireComplicationData()
 
         timelineComplication.setTimelineEntryCollection(
             listOf(
                 ShortTextComplicationData.Builder(
-                    PlainComplicationText.Builder("B").build(),
-                    ComplicationText.EMPTY
-                )
+                        PlainComplicationText.Builder("B").build(),
+                        ComplicationText.EMPTY
+                    )
                     .setTapAction(ObservableServiceB.createPendingIntent(context))
                     .build()
-                    .asWireComplicationData().apply {
+                    .asWireComplicationData()
+                    .apply {
                         timelineStartEpochSecond =
                             10 + TestExampleCanvasAnalogWatchFaceService.systemTimeMillis / 1000
                         timelineEndEpochSecond =
                             20 + TestExampleCanvasAnalogWatchFaceService.systemTimeMillis / 1000
                     },
                 ShortTextComplicationData.Builder(
-                    PlainComplicationText.Builder("C").build(),
-                    ComplicationText.EMPTY
-                )
+                        PlainComplicationText.Builder("C").build(),
+                        ComplicationText.EMPTY
+                    )
                     .setTapAction(ObservableServiceC.createPendingIntent(context))
                     .build()
-                    .asWireComplicationData().apply {
+                    .asWireComplicationData()
+                    .apply {
                         timelineStartEpochSecond =
                             20 + TestExampleCanvasAnalogWatchFaceService.systemTimeMillis / 1000
                         timelineEndEpochSecond =
@@ -1265,16 +1216,13 @@
     fun getOrCreateInteractiveWatchFaceClient() {
         val interactiveInstance = getOrCreateTestSubject()
 
-        val bitmap = interactiveInstance.renderWatchFaceToBitmap(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                null
-            ),
-            Instant.ofEpochMilli(1234567),
-            null,
-            complications
-        )
+        val bitmap =
+            interactiveInstance.renderWatchFaceToBitmap(
+                RenderParameters(DrawMode.INTERACTIVE, WatchFaceLayer.ALL_WATCH_FACE_LAYERS, null),
+                Instant.ofEpochMilli(1234567),
+                null,
+                complications
+            )
 
         try {
             bitmap.assertAgainstGolden(screenshotRule, "interactiveScreenshot")
@@ -1286,27 +1234,26 @@
     @SuppressLint("NewApi") // renderWatchFaceToBitmap
     @Test
     fun getOrCreateInteractiveWatchFaceClient_initialStyle() {
-        val interactiveInstance = getOrCreateTestSubject(
-            // An incomplete map which is OK.
-            userStyle = UserStyleData(
-                mapOf(
-                    "color_style_setting" to "green_style".encodeToByteArray(),
-                    "draw_hour_pips_style_setting" to BooleanOption.FALSE.id.value,
-                    "watch_hand_length_style_setting" to DoubleRangeOption(0.8).id.value
-                )
+        val interactiveInstance =
+            getOrCreateTestSubject(
+                // An incomplete map which is OK.
+                userStyle =
+                    UserStyleData(
+                        mapOf(
+                            "color_style_setting" to "green_style".encodeToByteArray(),
+                            "draw_hour_pips_style_setting" to BooleanOption.FALSE.id.value,
+                            "watch_hand_length_style_setting" to DoubleRangeOption(0.8).id.value
+                        )
+                    )
             )
-        )
 
-        val bitmap = interactiveInstance.renderWatchFaceToBitmap(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                null
-            ),
-            Instant.ofEpochMilli(1234567),
-            null,
-            complications
-        )
+        val bitmap =
+            interactiveInstance.renderWatchFaceToBitmap(
+                RenderParameters(DrawMode.INTERACTIVE, WatchFaceLayer.ALL_WATCH_FACE_LAYERS, null),
+                Instant.ofEpochMilli(1234567),
+                null,
+                complications
+            )
 
         try {
             bitmap.assertAgainstGolden(screenshotRule, "initialStyle")
@@ -1324,36 +1271,34 @@
 
         getOrCreateTestSubject(watchFaceService, instanceId = testId)
 
-        val deferredInteractiveInstance2 = handlerCoroutineScope.async {
-            @Suppress("deprecation")
-            service.getOrCreateInteractiveWatchFaceClient(
-                testId,
-                deviceConfig,
-                systemState,
-                UserStyleData(
-                    mapOf(
-                        "color_style_setting" to "blue_style".encodeToByteArray(),
-                        "draw_hour_pips_style_setting" to BooleanOption.FALSE.id.value,
-                        "watch_hand_length_style_setting" to DoubleRangeOption(0.25).id.value
-                    )
-                ),
-                complications
-            )
-        }
+        val deferredInteractiveInstance2 =
+            handlerCoroutineScope.async {
+                @Suppress("deprecation")
+                service.getOrCreateInteractiveWatchFaceClient(
+                    testId,
+                    deviceConfig,
+                    systemState,
+                    UserStyleData(
+                        mapOf(
+                            "color_style_setting" to "blue_style".encodeToByteArray(),
+                            "draw_hour_pips_style_setting" to BooleanOption.FALSE.id.value,
+                            "watch_hand_length_style_setting" to DoubleRangeOption(0.25).id.value
+                        )
+                    ),
+                    complications
+                )
+            }
 
         val interactiveInstance2 = awaitWithTimeout(deferredInteractiveInstance2)
         assertThat(interactiveInstance2.instanceId).isEqualTo("testId")
 
-        val bitmap = interactiveInstance2.renderWatchFaceToBitmap(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                null
-            ),
-            Instant.ofEpochMilli(1234567),
-            null,
-            complications
-        )
+        val bitmap =
+            interactiveInstance2.renderWatchFaceToBitmap(
+                RenderParameters(DrawMode.INTERACTIVE, WatchFaceLayer.ALL_WATCH_FACE_LAYERS, null),
+                Instant.ofEpochMilli(1234567),
+                null,
+                complications
+            )
 
         try {
             // Note the hour hand pips and both complicationSlots should be visible in this image.
@@ -1366,16 +1311,18 @@
     @SuppressLint("NewApi") // renderWatchFaceToBitmap
     @Test
     fun updateInstance() {
-        val interactiveInstance = getOrCreateTestSubject(
-            userStyle = UserStyleData(
-                mapOf(
-                    COLOR_STYLE_SETTING to GREEN_STYLE.encodeToByteArray(),
-                    WATCH_HAND_LENGTH_STYLE_SETTING to DoubleRangeOption(0.25).id.value,
-                    DRAW_HOUR_PIPS_STYLE_SETTING to BooleanOption.FALSE.id.value,
-                    COMPLICATIONS_STYLE_SETTING to NO_COMPLICATIONS.encodeToByteArray()
-                )
+        val interactiveInstance =
+            getOrCreateTestSubject(
+                userStyle =
+                    UserStyleData(
+                        mapOf(
+                            COLOR_STYLE_SETTING to GREEN_STYLE.encodeToByteArray(),
+                            WATCH_HAND_LENGTH_STYLE_SETTING to DoubleRangeOption(0.25).id.value,
+                            DRAW_HOUR_PIPS_STYLE_SETTING to BooleanOption.FALSE.id.value,
+                            COMPLICATIONS_STYLE_SETTING to NO_COMPLICATIONS.encodeToByteArray()
+                        )
+                    )
             )
-        )
 
         assertThat(interactiveInstance.instanceId).isEqualTo("testId")
 
@@ -1394,23 +1341,19 @@
         assertThat(interactiveInstance.instanceId).isEqualTo("testId2")
 
         // It should be possible to create an instance with the updated id.
-        val instance =
-            service.getInteractiveWatchFaceClientInstance("testId2")
+        val instance = service.getInteractiveWatchFaceClientInstance("testId2")
         assertThat(instance).isNotNull()
         instance?.close()
 
         // The previous instance should still be usable despite the new instance being closed.
         interactiveInstance.updateComplicationData(complications)
-        val bitmap = interactiveInstance.renderWatchFaceToBitmap(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                null
-            ),
-            Instant.ofEpochMilli(1234567),
-            null,
-            complications
-        )
+        val bitmap =
+            interactiveInstance.renderWatchFaceToBitmap(
+                RenderParameters(DrawMode.INTERACTIVE, WatchFaceLayer.ALL_WATCH_FACE_LAYERS, null),
+                Instant.ofEpochMilli(1234567),
+                null,
+                complications
+            )
 
         try {
             // Note the hour hand pips and both complicationSlots should be visible in this image.
@@ -1426,52 +1369,46 @@
         val surfaceTexture = SurfaceTexture(false)
         surfaceTexture.setDefaultBufferSize(400, 400)
         Mockito.`when`(surfaceHolder2.surface).thenReturn(Surface(surfaceTexture))
-        Mockito.`when`(surfaceHolder2.surfaceFrame)
-            .thenReturn(Rect(0, 0, 400, 400))
+        Mockito.`when`(surfaceHolder2.surfaceFrame).thenReturn(Rect(0, 0, 400, 400))
 
         val wallpaperService =
             TestExampleOpenGLBackgroundInitWatchFaceService(context, surfaceHolder2)
 
-        val interactiveInstance = getOrCreateTestSubject(
-            wallpaperService,
-            complications = emptyMap()
-        )
+        val interactiveInstance =
+            getOrCreateTestSubject(wallpaperService, complications = emptyMap())
 
-        val headlessInstance = HeadlessWatchFaceClient.createFromBundle(
-            service.createHeadlessWatchFaceClient(
-                "id",
-                exampleOpenGLWatchFaceComponentName,
-                deviceConfig,
-                200,
-                200
-            )!!.toBundle()
-        )
+        val headlessInstance =
+            HeadlessWatchFaceClient.createFromBundle(
+                service
+                    .createHeadlessWatchFaceClient(
+                        "id",
+                        exampleOpenGLWatchFaceComponentName,
+                        deviceConfig,
+                        200,
+                        200
+                    )!!
+                    .toBundle()
+            )
 
         // Take screenshots from both instances to confirm rendering works as expected despite the
         // watch face using shared SharedAssets.
-        val interactiveBitmap = interactiveInstance.renderWatchFaceToBitmap(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+        val interactiveBitmap =
+            interactiveInstance.renderWatchFaceToBitmap(
+                RenderParameters(DrawMode.INTERACTIVE, WatchFaceLayer.ALL_WATCH_FACE_LAYERS, null),
+                Instant.ofEpochMilli(1234567),
+                null,
                 null
-            ),
-            Instant.ofEpochMilli(1234567),
-            null,
-            null
-        )
+            )
 
         interactiveBitmap.assertAgainstGolden(screenshotRule, "opengl_interactive")
 
-        val headlessBitmap = headlessInstance.renderWatchFaceToBitmap(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+        val headlessBitmap =
+            headlessInstance.renderWatchFaceToBitmap(
+                RenderParameters(DrawMode.INTERACTIVE, WatchFaceLayer.ALL_WATCH_FACE_LAYERS, null),
+                Instant.ofEpochMilli(1234567),
+                null,
                 null
-            ),
-            Instant.ofEpochMilli(1234567),
-            null,
-            null
-        )
+            )
 
         headlessBitmap.assertAgainstGolden(screenshotRule, "opengl_headless")
 
diff --git a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlTestService.kt b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlTestService.kt
index 41ce537..16ca796 100644
--- a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlTestService.kt
+++ b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlTestService.kt
@@ -27,8 +27,8 @@
 import kotlinx.coroutines.MainScope
 
 /**
- * Test shim to allow us to connect to WatchFaceControlService from
- * [WatchFaceControlClientTest] and to optionally override the reported API version.
+ * Test shim to allow us to connect to WatchFaceControlService from [WatchFaceControlClientTest] and
+ * to optionally override the reported API version.
  */
 @RequiresApi(Build.VERSION_CODES.O_MR1)
 public class WatchFaceControlTestService : WatchFaceControlService() {
@@ -44,10 +44,8 @@
         object : WatchFaceControlService() {
             override fun createServiceStub(): IWatchFaceInstanceServiceStub =
                 @RequiresApi(Build.VERSION_CODES.O_MR1)
-                object : IWatchFaceInstanceServiceStub(
-                    this@WatchFaceControlTestService,
-                    MainScope()
-                ) {
+                object :
+                    IWatchFaceInstanceServiceStub(this@WatchFaceControlTestService, MainScope()) {
                     override fun getApiVersion(): Int = apiVersionOverride ?: super.getApiVersion()
                 }
 
diff --git a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceMetadataServiceTest.kt b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceMetadataServiceTest.kt
index 7d54fd5..095e36a 100644
--- a/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceMetadataServiceTest.kt
+++ b/wear/watchface/watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceMetadataServiceTest.kt
@@ -51,14 +51,16 @@
 @MediumTest
 @RequiresApi(Build.VERSION_CODES.O_MR1)
 public class WatchFaceMetadataServiceTest {
-    private val exampleWatchFaceComponentName = ComponentName(
-        "androidx.wear.watchface.client.test",
-        "androidx.wear.watchface.samples.ExampleCanvasAnalogWatchFaceService"
-    )
-    private val nopCanvasWatchFaceServiceComponentName = ComponentName(
-        "androidx.wear.watchface.client.test",
-        "androidx.wear.watchface.client.test.TestNopCanvasWatchFaceService"
-    )
+    private val exampleWatchFaceComponentName =
+        ComponentName(
+            "androidx.wear.watchface.client.test",
+            "androidx.wear.watchface.samples.ExampleCanvasAnalogWatchFaceService"
+        )
+    private val nopCanvasWatchFaceServiceComponentName =
+        ComponentName(
+            "androidx.wear.watchface.client.test",
+            "androidx.wear.watchface.client.test.TestNopCanvasWatchFaceService"
+        )
 
     private val context = ApplicationProvider.getApplicationContext<Context>()
 
@@ -90,21 +92,15 @@
         val schema = client.getUserStyleSchema()
 
         Truth.assertThat(schema.userStyleSettings.size).isEqualTo(5)
-        Truth.assertThat(schema.userStyleSettings[0].id.value).isEqualTo(
-            "color_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[1].id.value).isEqualTo(
-            "draw_hour_pips_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[2].id.value).isEqualTo(
-            "watch_hand_length_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[3].id.value).isEqualTo(
-            "complications_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[4].id.value).isEqualTo(
-            "hours_draw_freq_style_setting"
-        )
+        Truth.assertThat(schema.userStyleSettings[0].id.value).isEqualTo("color_style_setting")
+        Truth.assertThat(schema.userStyleSettings[1].id.value)
+            .isEqualTo("draw_hour_pips_style_setting")
+        Truth.assertThat(schema.userStyleSettings[2].id.value)
+            .isEqualTo("watch_hand_length_style_setting")
+        Truth.assertThat(schema.userStyleSettings[3].id.value)
+            .isEqualTo("complications_style_setting")
+        Truth.assertThat(schema.userStyleSettings[4].id.value)
+            .isEqualTo("hours_draw_freq_style_setting")
 
         Truth.assertThat(client.isUserStyleSchemaStatic).isFalse()
     }
@@ -117,21 +113,15 @@
         val schema = client.getUserStyleSchema()
 
         Truth.assertThat(schema.userStyleSettings.size).isEqualTo(5)
-        Truth.assertThat(schema.userStyleSettings[0].id.value).isEqualTo(
-            "color_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[1].id.value).isEqualTo(
-            "draw_hour_pips_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[2].id.value).isEqualTo(
-            "watch_hand_length_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[3].id.value).isEqualTo(
-            "complications_style_setting"
-        )
-        Truth.assertThat(schema.userStyleSettings[4].id.value).isEqualTo(
-            "hours_draw_freq_style_setting"
-        )
+        Truth.assertThat(schema.userStyleSettings[0].id.value).isEqualTo("color_style_setting")
+        Truth.assertThat(schema.userStyleSettings[1].id.value)
+            .isEqualTo("draw_hour_pips_style_setting")
+        Truth.assertThat(schema.userStyleSettings[2].id.value)
+            .isEqualTo("watch_hand_length_style_setting")
+        Truth.assertThat(schema.userStyleSettings[3].id.value)
+            .isEqualTo("complications_style_setting")
+        Truth.assertThat(schema.userStyleSettings[4].id.value)
+            .isEqualTo("hours_draw_freq_style_setting")
 
         Truth.assertThat(client.isUserStyleSchemaStatic).isFalse()
     }
@@ -143,57 +133,58 @@
         val complicationSlotMetadataMap = service.getComplicationSlotMetadataMap()
         Truth.assertThat(complicationSlotMetadataMap.size).isEqualTo(2)
 
-        val leftComplicationMetadata = complicationSlotMetadataMap[
-            EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID
-        ]!!
+        val leftComplicationMetadata =
+            complicationSlotMetadataMap[EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID]!!
         Truth.assertThat(
-            leftComplicationMetadata.bounds!!.perComplicationTypeBounds[ComplicationType.SHORT_TEXT]
-        ).isEqualTo(RectF(0.2f, 0.4f, 0.4f, 0.6f))
+                leftComplicationMetadata.bounds!!
+                    .perComplicationTypeBounds[ComplicationType.SHORT_TEXT]
+            )
+            .isEqualTo(RectF(0.2f, 0.4f, 0.4f, 0.6f))
         Truth.assertThat(leftComplicationMetadata.boundsType)
             .isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
+        Truth.assertThat(leftComplicationMetadata.defaultDataSourcePolicy.systemDataSourceFallback)
+            .isEqualTo(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK)
         Truth.assertThat(
-            leftComplicationMetadata.defaultDataSourcePolicy.systemDataSourceFallback
-        ).isEqualTo(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK)
-        Truth.assertThat(
-            leftComplicationMetadata.defaultDataSourcePolicy
-                .systemDataSourceFallbackDefaultType
-        ).isEqualTo(ComplicationType.SHORT_TEXT)
-        Truth.assertThat(leftComplicationMetadata.supportedTypes).containsExactly(
-            ComplicationType.RANGED_VALUE,
-            ComplicationType.GOAL_PROGRESS,
-            ComplicationType.WEIGHTED_ELEMENTS,
-            ComplicationType.LONG_TEXT,
-            ComplicationType.SHORT_TEXT,
-            ComplicationType.MONOCHROMATIC_IMAGE,
-            ComplicationType.SMALL_IMAGE
-        )
+                leftComplicationMetadata.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
+            )
+            .isEqualTo(ComplicationType.SHORT_TEXT)
+        Truth.assertThat(leftComplicationMetadata.supportedTypes)
+            .containsExactly(
+                ComplicationType.RANGED_VALUE,
+                ComplicationType.GOAL_PROGRESS,
+                ComplicationType.WEIGHTED_ELEMENTS,
+                ComplicationType.LONG_TEXT,
+                ComplicationType.SHORT_TEXT,
+                ComplicationType.MONOCHROMATIC_IMAGE,
+                ComplicationType.SMALL_IMAGE
+            )
 
-        val rightComplicationMetadata = complicationSlotMetadataMap[
-            EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID
-        ]!!
+        val rightComplicationMetadata =
+            complicationSlotMetadataMap[EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID]!!
         Truth.assertThat(
-            rightComplicationMetadata.bounds!!.perComplicationTypeBounds[
-                ComplicationType.SHORT_TEXT
-            ]
-        ).isEqualTo(RectF(0.6f, 0.4f, 0.8f, 0.6f))
+                rightComplicationMetadata.bounds!!
+                    .perComplicationTypeBounds[ComplicationType.SHORT_TEXT]
+            )
+            .isEqualTo(RectF(0.6f, 0.4f, 0.8f, 0.6f))
         Truth.assertThat(rightComplicationMetadata.boundsType)
             .isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
+        Truth.assertThat(rightComplicationMetadata.defaultDataSourcePolicy.systemDataSourceFallback)
+            .isEqualTo(SystemDataSources.DATA_SOURCE_STEP_COUNT)
         Truth.assertThat(
-            rightComplicationMetadata.defaultDataSourcePolicy.systemDataSourceFallback
-        ).isEqualTo(SystemDataSources.DATA_SOURCE_STEP_COUNT)
-        Truth.assertThat(
-            rightComplicationMetadata.defaultDataSourcePolicy
-                .systemDataSourceFallbackDefaultType
-        ).isEqualTo(ComplicationType.SHORT_TEXT)
-        Truth.assertThat(rightComplicationMetadata.supportedTypes).containsExactly(
-            ComplicationType.RANGED_VALUE,
-            ComplicationType.GOAL_PROGRESS,
-            ComplicationType.WEIGHTED_ELEMENTS,
-            ComplicationType.LONG_TEXT,
-            ComplicationType.SHORT_TEXT,
-            ComplicationType.MONOCHROMATIC_IMAGE,
-            ComplicationType.SMALL_IMAGE
-        )
+                rightComplicationMetadata.defaultDataSourcePolicy
+                    .systemDataSourceFallbackDefaultType
+            )
+            .isEqualTo(ComplicationType.SHORT_TEXT)
+        Truth.assertThat(rightComplicationMetadata.supportedTypes)
+            .containsExactly(
+                ComplicationType.RANGED_VALUE,
+                ComplicationType.GOAL_PROGRESS,
+                ComplicationType.WEIGHTED_ELEMENTS,
+                ComplicationType.LONG_TEXT,
+                ComplicationType.SHORT_TEXT,
+                ComplicationType.MONOCHROMATIC_IMAGE,
+                ComplicationType.SMALL_IMAGE
+            )
     }
 
     @Test
@@ -206,24 +197,22 @@
     @Suppress("Deprecation") // userStyleSettings
     public fun userStyleSchema_static_metadata() {
         runBlocking {
-            val client = WatchFaceMetadataClient.createImpl(
-                context,
-                Intent(context, WatchFaceControlTestService::class.java).apply {
-                    action = WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE
-                },
-                exampleWatchFaceComponentName,
-                object : WatchFaceMetadataClient.Companion.ParserProvider() {
-                    override fun getParser(
-                        context: Context,
-                        watchFaceName: ComponentName
-                    ) = context.resources.getXml(R.xml.xml_watchface)
-                }
-            )
+            val client =
+                WatchFaceMetadataClient.createImpl(
+                    context,
+                    Intent(context, WatchFaceControlTestService::class.java).apply {
+                        action = WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE
+                    },
+                    exampleWatchFaceComponentName,
+                    object : WatchFaceMetadataClient.Companion.ParserProvider() {
+                        override fun getParser(context: Context, watchFaceName: ComponentName) =
+                            context.resources.getXml(R.xml.xml_watchface)
+                    }
+                )
             val schema = client.getUserStyleSchema()
 
-            Truth.assertThat(schema.userStyleSettings.toString()).isEqualTo(
-                "[{TimeStyle : minimal, seconds}]"
-            )
+            Truth.assertThat(schema.userStyleSettings.toString())
+                .isEqualTo("[{TimeStyle : minimal, seconds}]")
 
             Truth.assertThat(client.isUserStyleSchemaStatic).isTrue()
         }
@@ -233,19 +222,18 @@
     @OptIn(ComplicationExperimental::class)
     public fun getComplicationSlotMetadataMap_static_metadata() {
         runBlocking {
-            val client = WatchFaceMetadataClient.createImpl(
-                context,
-                Intent(context, WatchFaceControlTestService::class.java).apply {
-                    action = WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE
-                },
-                exampleWatchFaceComponentName,
-                object : WatchFaceMetadataClient.Companion.ParserProvider() {
-                    override fun getParser(
-                        context: Context,
-                        watchFaceName: ComponentName
-                    ) = context.resources.getXml(R.xml.xml_watchface)
-                }
-            )
+            val client =
+                WatchFaceMetadataClient.createImpl(
+                    context,
+                    Intent(context, WatchFaceControlTestService::class.java).apply {
+                        action = WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE
+                    },
+                    exampleWatchFaceComponentName,
+                    object : WatchFaceMetadataClient.Companion.ParserProvider() {
+                        override fun getParser(context: Context, watchFaceName: ComponentName) =
+                            context.resources.getXml(R.xml.xml_watchface)
+                    }
+                )
             val complications = client.getComplicationSlotMetadataMap()
 
             Truth.assertThat(complications.keys).containsExactly(10, 20, 30)
@@ -264,27 +252,32 @@
                 .isEqualTo(ComponentName("com.app.example1", "com.app.example1.Class"))
 
             Truth.assertThat(
-                complications[10]!!.defaultDataSourcePolicy.primaryDataSourceDefaultType
-            ).isEqualTo(ComplicationType.SHORT_TEXT)
+                    complications[10]!!.defaultDataSourcePolicy.primaryDataSourceDefaultType
+                )
+                .isEqualTo(ComplicationType.SHORT_TEXT)
 
             Truth.assertThat(complications[10]!!.defaultDataSourcePolicy.secondaryDataSource)
                 .isEqualTo(ComponentName("com.app.example2", "com.app.example2.Class"))
 
             Truth.assertThat(
-                complications[10]!!.defaultDataSourcePolicy.secondaryDataSourceDefaultType
-            ).isEqualTo(ComplicationType.SMALL_IMAGE)
+                    complications[10]!!.defaultDataSourcePolicy.secondaryDataSourceDefaultType
+                )
+                .isEqualTo(ComplicationType.SMALL_IMAGE)
 
             Truth.assertThat(complications[10]!!.defaultDataSourcePolicy.systemDataSourceFallback)
                 .isEqualTo(SystemDataSources.DATA_SOURCE_WATCH_BATTERY)
 
             Truth.assertThat(
-                complications[10]!!.defaultDataSourcePolicy
-                    .systemDataSourceFallbackDefaultType
-            ).isEqualTo(ComplicationType.RANGED_VALUE)
+                    complications[10]!!.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
+                )
+                .isEqualTo(ComplicationType.RANGED_VALUE)
 
             Truth.assertThat(
-                complications[10]!!.bounds!!.perComplicationTypeBounds[ComplicationType.SHORT_TEXT]
-            ).isEqualTo(RectF(0.3f, 0.7f, 0.7f, 0.9f))
+                    complications[10]!!
+                        .bounds!!
+                        .perComplicationTypeBounds[ComplicationType.SHORT_TEXT]
+                )
+                .isEqualTo(RectF(0.3f, 0.7f, 0.7f, 0.9f))
 
             Truth.assertThat(complications[20]!!.boundsType)
                 .isEqualTo(ComplicationSlotBoundsType.BACKGROUND)
@@ -296,23 +289,25 @@
                 .isEqualTo(ComponentName("com.package", "com.app"))
 
             Truth.assertThat(
-                complications[20]!!.defaultDataSourcePolicy.primaryDataSourceDefaultType
-            ).isEqualTo(ComplicationType.PHOTO_IMAGE)
+                    complications[20]!!.defaultDataSourcePolicy.primaryDataSourceDefaultType
+                )
+                .isEqualTo(ComplicationType.PHOTO_IMAGE)
 
             Truth.assertThat(complications[20]!!.defaultDataSourcePolicy.secondaryDataSource)
                 .isNull()
 
             Truth.assertThat(
-                complications[20]!!.defaultDataSourcePolicy.secondaryDataSourceDefaultType
-            ).isNull()
+                    complications[20]!!.defaultDataSourcePolicy.secondaryDataSourceDefaultType
+                )
+                .isNull()
 
             Truth.assertThat(complications[20]!!.defaultDataSourcePolicy.systemDataSourceFallback)
                 .isEqualTo(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET)
 
             Truth.assertThat(
-                complications[20]!!.defaultDataSourcePolicy
-                    .systemDataSourceFallbackDefaultType
-            ).isEqualTo(ComplicationType.PHOTO_IMAGE)
+                    complications[20]!!.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
+                )
+                .isEqualTo(ComplicationType.PHOTO_IMAGE)
 
             Truth.assertThat(complications[30]!!.boundsType)
                 .isEqualTo(ComplicationSlotBoundsType.EDGE)
@@ -324,31 +319,35 @@
                 .isEqualTo(ComponentName("com.app.example1", "com.app.example1.Class"))
 
             Truth.assertThat(
-                complications[30]!!.defaultDataSourcePolicy.primaryDataSourceDefaultType
-            ).isEqualTo(ComplicationType.SHORT_TEXT)
+                    complications[30]!!.defaultDataSourcePolicy.primaryDataSourceDefaultType
+                )
+                .isEqualTo(ComplicationType.SHORT_TEXT)
 
             Truth.assertThat(complications[30]!!.defaultDataSourcePolicy.secondaryDataSource)
                 .isEqualTo(ComponentName("com.app.example2", "com.app.example2.Class"))
 
             Truth.assertThat(
-                complications[30]!!.defaultDataSourcePolicy.secondaryDataSourceDefaultType
-            ).isEqualTo(ComplicationType.SMALL_IMAGE)
+                    complications[30]!!.defaultDataSourcePolicy.secondaryDataSourceDefaultType
+                )
+                .isEqualTo(ComplicationType.SMALL_IMAGE)
 
             Truth.assertThat(complications[30]!!.defaultDataSourcePolicy.systemDataSourceFallback)
                 .isEqualTo(SystemDataSources.DATA_SOURCE_WATCH_BATTERY)
 
             Truth.assertThat(
-                complications[30]!!.defaultDataSourcePolicy
-                    .systemDataSourceFallbackDefaultType
-            ).isEqualTo(ComplicationType.RANGED_VALUE)
+                    complications[30]!!.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
+                )
+                .isEqualTo(ComplicationType.RANGED_VALUE)
 
             Truth.assertThat(
-                complications[30]!!.bounds!!.perComplicationTypeBounds[ComplicationType.SHORT_TEXT]
-            ).isEqualTo(RectF(0.0f, 0.0f, 1.0f, 1.0f))
+                    complications[30]!!
+                        .bounds!!
+                        .perComplicationTypeBounds[ComplicationType.SHORT_TEXT]
+                )
+                .isEqualTo(RectF(0.0f, 0.0f, 1.0f, 1.0f))
 
-            Truth.assertThat(
-                complications[30]!!.getBoundingArc()
-            ).isEqualTo(BoundingArc(-45.0f, 90.0f, 0.1f))
+            Truth.assertThat(complications[30]!!.getBoundingArc())
+                .isEqualTo(BoundingArc(-45.0f, 90.0f, 0.1f))
         }
     }
 
@@ -359,10 +358,10 @@
         val flavors = client.getUserStyleFlavors()
         val schema = client.getUserStyleSchema()
 
-        val metadata = context.packageManager.getServiceInfo(
-            exampleWatchFaceComponentName,
-            PackageManager.GET_META_DATA
-        ).metaData
+        val metadata =
+            context.packageManager
+                .getServiceInfo(exampleWatchFaceComponentName, PackageManager.GET_META_DATA)
+                .metaData
 
         Truth.assertThat(metadata.getBoolean(Constants.META_DATA_FLAVORS_SUPPORTED)).isEqualTo(true)
 
@@ -372,9 +371,8 @@
 
         // check settings' defaults
         val userStyleMap = flavor.style.userStyleMap
-        Truth.assertThat(userStyleMap.keys).containsExactly(
-            "color_style_setting", "watch_hand_length_style_setting"
-        )
+        Truth.assertThat(userStyleMap.keys)
+            .containsExactly("color_style_setting", "watch_hand_length_style_setting")
 
         val userStyle = UserStyle(flavor.style, schema)
         Truth.assertThat(userStyle[UserStyleSetting.Id("color_style_setting")]!!.id)
@@ -383,64 +381,59 @@
         // Check complication slots' defaults
         val complications = flavor.complications
 
-        Truth.assertThat(complications.keys).containsExactly(
-            EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-            EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID
-        )
+        Truth.assertThat(complications.keys)
+            .containsExactly(
+                EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID
+            )
 
         val left = complications[EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID]!!
         val right = complications[EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID]!!
 
         Truth.assertThat(left.primaryDataSource).isNull()
         Truth.assertThat(left.secondaryDataSource).isNull()
-        Truth.assertThat(left.systemDataSourceFallback).isEqualTo(
-            SystemDataSources.DATA_SOURCE_DAY_OF_WEEK
-        )
-        Truth.assertThat(left.systemDataSourceFallbackDefaultType).isEqualTo(
-            ComplicationType.SHORT_TEXT
-        )
+        Truth.assertThat(left.systemDataSourceFallback)
+            .isEqualTo(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK)
+        Truth.assertThat(left.systemDataSourceFallbackDefaultType)
+            .isEqualTo(ComplicationType.SHORT_TEXT)
 
-        Truth.assertThat(right.primaryDataSource).isEqualTo(
-            ComponentName(
-                CONFIGURABLE_DATA_SOURCE_PKG, CONFIGURABLE_DATA_SOURCE
-            )
-        )
-        Truth.assertThat(right.primaryDataSourceDefaultType).isEqualTo(
-            ComplicationType.SHORT_TEXT
-        )
+        Truth.assertThat(right.primaryDataSource)
+            .isEqualTo(ComponentName(CONFIGURABLE_DATA_SOURCE_PKG, CONFIGURABLE_DATA_SOURCE))
+        Truth.assertThat(right.primaryDataSourceDefaultType).isEqualTo(ComplicationType.SHORT_TEXT)
         Truth.assertThat(right.secondaryDataSource).isNull()
-        Truth.assertThat(right.systemDataSourceFallback).isEqualTo(
-            SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
-        )
-        Truth.assertThat(right.systemDataSourceFallbackDefaultType).isEqualTo(
-            ComplicationType.SHORT_TEXT
-        )
+        Truth.assertThat(right.systemDataSourceFallback)
+            .isEqualTo(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET)
+        Truth.assertThat(right.systemDataSourceFallbackDefaultType)
+            .isEqualTo(ComplicationType.SHORT_TEXT)
     }
 
     @Test
     public fun xmlVersionCompatibility() {
         Truth.assertThat(
-            WatchFaceMetadataClient.isXmlVersionCompatible(
-                context,
-                context.resources,
-                context.packageName
+                WatchFaceMetadataClient.isXmlVersionCompatible(
+                    context,
+                    context.resources,
+                    context.packageName
+                )
             )
-        ).isTrue()
+            .isTrue()
         Truth.assertThat(
-            WatchFaceMetadataClient.isXmlVersionCompatible(
-                context,
-                context.resources,
-                context.packageName,
-                OutdatedWatchFaceControlTestService::class.java.name
+                WatchFaceMetadataClient.isXmlVersionCompatible(
+                    context,
+                    context.resources,
+                    context.packageName,
+                    OutdatedWatchFaceControlTestService::class.java.name
+                )
             )
-        ).isFalse()
+            .isFalse()
         Truth.assertThat(
-            WatchFaceMetadataClient.isXmlVersionCompatible(
-                context,
-                context.resources,
-                "non.existing.package",
-                "non.existing.package.Service"
+                WatchFaceMetadataClient.isXmlVersionCompatible(
+                    context,
+                    context.resources,
+                    "non.existing.package",
+                    "non.existing.package.Service"
+                )
             )
-        ).isFalse()
+            .isFalse()
     }
 }
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/BindHelper.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/BindHelper.kt
index 7871341..0274d30 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/BindHelper.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/BindHelper.kt
@@ -31,9 +31,9 @@
          *
          * @param context The [Context] on which to call [Context.bindService]
          * @param intent The [Intent] to pass to [Context.bindService]
-         * @param serviceConnection The [ServiceConnection] to pass to [Context.bindService].
-         * Note on API 29 and above this will be called on a binder thread, before that it will be
-         * called on the UI thread.
+         * @param serviceConnection The [ServiceConnection] to pass to [Context.bindService]. Note
+         *   on API 29 and above this will be called on a binder thread, before that it will be
+         *   called on the UI thread.
          * @return The result of [Context.bindService]
          */
         fun bindService(
@@ -44,11 +44,7 @@
             return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                 // API 29 lets us specify an executor to avoid a round trip via the potentially
                 // congested UI thread.
-                BindHelper29.bindServiceWithImmediateExecutor(
-                    context,
-                    intent,
-                    serviceConnection
-                )
+                BindHelper29.bindServiceWithImmediateExecutor(context, intent, serviceConnection)
             } else {
                 /** Note serviceConnection will be dispatched on the UI thread. */
                 context.bindService(
@@ -69,11 +65,12 @@
             context: Context,
             intent: Intent,
             serviceConnection: ServiceConnection
-        ) = context.bindService(
-            intent,
-            Context.BIND_AUTO_CREATE or Context.BIND_IMPORTANT,
-            { command -> command.run() },
-            serviceConnection
-        )
+        ) =
+            context.bindService(
+                intent,
+                Context.BIND_AUTO_CREATE or Context.BIND_IMPORTANT,
+                { command -> command.run() },
+                serviceConnection
+            )
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/ComplicationSlotState.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/ComplicationSlotState.kt
index 77a1fcb..012c042 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/ComplicationSlotState.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/ComplicationSlotState.kt
@@ -36,8 +36,7 @@
     public val bounds: Rect
 
     /** The type of the complication's bounds. */
-    @ComplicationSlotBoundsType
-    public val boundsType: Int
+    @ComplicationSlotBoundsType public val boundsType: Int
 
     /** The [ComplicationType]s supported by this complication. */
     public val supportedTypes: List<ComplicationType>
@@ -51,16 +50,14 @@
         get() = defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
 
     /** Whether or not the complication is currently enabled (i.e. it should be drawn. */
-    @get:JvmName("isEnabled")
-    public val isEnabled: Boolean
+    @get:JvmName("isEnabled") public val isEnabled: Boolean
 
     /**
      * Whether or not the complication was initially enabled before considering any
      * [ComplicationSlotsOption] whose [ComplicationSlotOverlay]s may enable or disable
      * complicationSlots.
      */
-    @get:JvmName("isInitiallyEnabled")
-    public val isInitiallyEnabled: Boolean
+    @get:JvmName("isInitiallyEnabled") public val isInitiallyEnabled: Boolean
 
     /** The [ComplicationType] of the complication's current [ComplicationData]. */
     public val currentType: ComplicationType
@@ -78,45 +75,41 @@
      * The ID of a string resource (or `null` if absent) to identify the complication slot visually
      * in an editor. This is supposed to be short and without the word complication in it.
      */
-    @get:Suppress("AutoBoxing")
-    public val nameResourceId: Int?
+    @get:Suppress("AutoBoxing") public val nameResourceId: Int?
 
     /**
      * The ID of a string resource (or `null` if absent) to identify the complication slot in a
      * screen reader. This is supposed to be a complete sentence.
      */
-    @get:Suppress("AutoBoxing")
-    public val screenReaderNameResourceId: Int?
+    @get:Suppress("AutoBoxing") public val screenReaderNameResourceId: Int?
 
-    @OptIn(ComplicationExperimental::class)
-    private val boundingArc: BoundingArc?
+    @OptIn(ComplicationExperimental::class) private val boundingArc: BoundingArc?
 
     /** Describes the geometry of an edge complication if specified, or `null` otherwise. */
     // TODO(b/230364881): Make this a normal primary property when BoundingArc is no longer
     // experimental.
-    @ComplicationExperimental
-    public fun getBoundingArc(): BoundingArc? = boundingArc
+    @ComplicationExperimental public fun getBoundingArc(): BoundingArc? = boundingArc
 
     /**
      * @param bounds Screen space bounds of the [ComplicationSlot] in pixels.
      * @param boundsType The type of the complication's bounds.
      * @param supportedTypes The [ComplicationType]s supported by this complication.
      * @param defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] for this
-     * complication slot.
+     *   complication slot.
      * @param isEnabled Whether or not the complication is currently enabled (i.e. it should be
-     * drawn).
+     *   drawn).
      * @param isInitiallyEnabled Whether or not the complication was initially enabled before
-     * considering any [ComplicationSlotsOption] whose [ComplicationSlotOverlay]s may enable or
-     * disable complicationSlots.
+     *   considering any [ComplicationSlotsOption] whose [ComplicationSlotOverlay]s may enable or
+     *   disable complicationSlots.
      * @param currentType The [ComplicationType] of the complication's current [ComplicationData].
      * @param fixedComplicationDataSource Whether or not the complication data source is fixed (i.e
-     * the user can't configure it).
+     *   the user can't configure it).
      * @param complicationConfigExtras Extras to be merged into the Intent sent when invoking the
-     * complication data source chooser activity.
+     *   complication data source chooser activity.
      * @param nameResourceId The ID of a string resource (or `null` if absent) to visually identify
-     * the complication slot in an editor.
+     *   the complication slot in an editor.
      * @param screenReaderNameResourceId The ID of a string resource (or `null` if absent) to
-     * identify the complication slot in a screen reader.
+     *   identify the complication slot in a screen reader.
      */
     public constructor(
         bounds: Rect,
@@ -128,10 +121,8 @@
         currentType: ComplicationType,
         fixedComplicationDataSource: Boolean,
         complicationConfigExtras: Bundle,
-        @Suppress("AutoBoxing")
-        nameResourceId: Int?,
-        @Suppress("AutoBoxing")
-        screenReaderNameResourceId: Int?
+        @Suppress("AutoBoxing") nameResourceId: Int?,
+        @Suppress("AutoBoxing") screenReaderNameResourceId: Int?
     ) {
         this.bounds = bounds
         this.boundsType = boundsType
@@ -154,23 +145,23 @@
      * @param boundsType The type of the complication's bounds.
      * @param supportedTypes The [ComplicationType]s supported by this complication.
      * @param defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] for this
-     * complication slot.
+     *   complication slot.
      * @param isEnabled Whether or not the complication is currently enabled (i.e. it should be
-     * drawn).
+     *   drawn).
      * @param isInitiallyEnabled Whether or not the complication was initially enabled before
-     * considering any [ComplicationSlotsOption] whose [ComplicationSlotOverlay]s may enable or
-     * disable complicationSlots.
+     *   considering any [ComplicationSlotsOption] whose [ComplicationSlotOverlay]s may enable or
+     *   disable complicationSlots.
      * @param currentType The [ComplicationType] of the complication's current [ComplicationData].
      * @param fixedComplicationDataSource Whether or not the complication data source is fixed (i.e
-     * the user can't configure it).
+     *   the user can't configure it).
      * @param complicationConfigExtras Extras to be merged into the Intent sent when invoking the
-     * complication data source chooser activity.
+     *   complication data source chooser activity.
      * @param nameResourceId The ID of a string resource (or `null` if absent) to visually identify
-     * the complication slot in an editor.
+     *   the complication slot in an editor.
      * @param screenReaderNameResourceId The ID of a string resource (or `null` if absent) to
-     * identify the complication slot in a screen reader.
+     *   identify the complication slot in a screen reader.
      * @param edgeComplicationBoundingArc The [BoundingArc] describing the geometry of an edge
-     * complication if specified, or `null` otherwise.
+     *   complication if specified, or `null` otherwise.
      */
     @ComplicationExperimental
     public constructor(
@@ -183,10 +174,8 @@
         currentType: ComplicationType,
         fixedComplicationDataSource: Boolean,
         complicationConfigExtras: Bundle,
-        @Suppress("AutoBoxing")
-        nameResourceId: Int?,
-        @Suppress("AutoBoxing")
-        screenReaderNameResourceId: Int?,
+        @Suppress("AutoBoxing") nameResourceId: Int?,
+        @Suppress("AutoBoxing") screenReaderNameResourceId: Int?,
         edgeComplicationBoundingArc: BoundingArc?
     ) {
         this.bounds = bounds
@@ -208,21 +197,22 @@
      * @param boundsType The type of the complication's bounds.
      * @param supportedTypes The [ComplicationType]s supported by this complication.
      * @param defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] for this
-     * complication slot.
+     *   complication slot.
      * @param defaultDataSourceType The default [ComplicationType] for this complication.
      * @param isEnabled Whether or not the complication is currently enabled (i.e. it should be
-     * drawn).
+     *   drawn).
      * @param isInitiallyEnabled Whether or not the complication was initially enabled before
-     * considering any [ComplicationSlotsOption] whose [ComplicationSlotOverlay]s may enable or
-     * disable complicationSlots.
+     *   considering any [ComplicationSlotsOption] whose [ComplicationSlotOverlay]s may enable or
+     *   disable complicationSlots.
      * @param currentType The [ComplicationType] of the complication's current [ComplicationData].
      * @param fixedComplicationDataSource Whether or not the complication data source is fixed (i.e
-     * the user can't configure it).
+     *   the user can't configure it).
      * @param complicationConfigExtras Extras to be merged into the Intent sent when invoking the
-     * complication data source chooser activity.
+     *   complication data source chooser activity.
      */
     @Deprecated(
-        "defaultDataSourceType is depreciated", ReplaceWith(
+        "defaultDataSourceType is depreciated",
+        ReplaceWith(
             "ComplicationSlotState(Rect, Int, List<ComplicationType>, " +
                 "DefaultComplicationDataSourcePolicy, Boolean, Boolean, ComplicationType, Boolean" +
                 ", Bundle)"
@@ -243,33 +233,33 @@
         this.bounds = bounds
         this.boundsType = boundsType
         this.supportedTypes = supportedTypes
-        this.defaultDataSourcePolicy = when {
-            defaultDataSourcePolicy.secondaryDataSource != null ->
-                DefaultComplicationDataSourcePolicy(
-                    defaultDataSourcePolicy.primaryDataSource!!,
-                    defaultDataSourcePolicy.primaryDataSourceDefaultType
-                        ?: defaultDataSourceType,
-                    defaultDataSourcePolicy.secondaryDataSource!!,
-                    defaultDataSourcePolicy.secondaryDataSourceDefaultType
-                        ?: defaultDataSourceType,
-                    defaultDataSourcePolicy.systemDataSourceFallback,
-                    defaultDataSourceType
-                )
-
-            defaultDataSourcePolicy.primaryDataSource != null ->
-                DefaultComplicationDataSourcePolicy(
-                    defaultDataSourcePolicy.primaryDataSource!!,
-                    defaultDataSourcePolicy.primaryDataSourceDefaultType
-                        ?: defaultDataSourceType,
-                    defaultDataSourcePolicy.systemDataSourceFallback,
-                    defaultDataSourceType
-                )
-
-            else -> DefaultComplicationDataSourcePolicy(
-                defaultDataSourcePolicy.systemDataSourceFallback,
-                defaultDataSourceType
-            )
-        }
+        this.defaultDataSourcePolicy =
+            when {
+                defaultDataSourcePolicy.secondaryDataSource != null ->
+                    DefaultComplicationDataSourcePolicy(
+                        defaultDataSourcePolicy.primaryDataSource!!,
+                        defaultDataSourcePolicy.primaryDataSourceDefaultType
+                            ?: defaultDataSourceType,
+                        defaultDataSourcePolicy.secondaryDataSource!!,
+                        defaultDataSourcePolicy.secondaryDataSourceDefaultType
+                            ?: defaultDataSourceType,
+                        defaultDataSourcePolicy.systemDataSourceFallback,
+                        defaultDataSourceType
+                    )
+                defaultDataSourcePolicy.primaryDataSource != null ->
+                    DefaultComplicationDataSourcePolicy(
+                        defaultDataSourcePolicy.primaryDataSource!!,
+                        defaultDataSourcePolicy.primaryDataSourceDefaultType
+                            ?: defaultDataSourceType,
+                        defaultDataSourcePolicy.systemDataSourceFallback,
+                        defaultDataSourceType
+                    )
+                else ->
+                    DefaultComplicationDataSourcePolicy(
+                        defaultDataSourcePolicy.systemDataSourceFallback,
+                        defaultDataSourceType
+                    )
+            }
         this.isEnabled = isEnabled
         this.isInitiallyEnabled = isInitiallyEnabled
         this.currentType = currentType
@@ -293,9 +283,7 @@
         DefaultComplicationDataSourcePolicy(
             complicationStateWireFormat.defaultDataSourcesToTry ?: emptyList(),
             complicationStateWireFormat.fallbackSystemProvider,
-            ComplicationType.fromWireType(
-                complicationStateWireFormat.primaryDataSourceDefaultType
-            ),
+            ComplicationType.fromWireType(complicationStateWireFormat.primaryDataSourceDefaultType),
             ComplicationType.fromWireType(
                 complicationStateWireFormat.secondaryDataSourceDefaultType
             ),
@@ -348,8 +336,7 @@
         if (complicationConfigExtras != other.complicationConfigExtras) return false
         if (nameResourceId != other.nameResourceId) return false
         if (screenReaderNameResourceId != other.screenReaderNameResourceId) return false
-        @OptIn(ComplicationExperimental::class)
-        if (boundingArc != other.boundingArc) return false
+        @OptIn(ComplicationExperimental::class) if (boundingArc != other.boundingArc) return false
 
         return true
     }
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/DeviceConfig.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/DeviceConfig.kt
index bc924c6..f9498e4 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/DeviceConfig.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/DeviceConfig.kt
@@ -16,8 +16,8 @@
 
 package androidx.wear.watchface.client
 
-import androidx.wear.watchface.data.DeviceConfig as WireDeviceConfig
 import androidx.annotation.RestrictTo
+import androidx.wear.watchface.data.DeviceConfig as WireDeviceConfig
 
 /**
  * Describes the hardware configuration of the device the watch face is running on.
@@ -25,26 +25,25 @@
  * @param hasLowBitAmbient Whether or not the watch hardware supports low bit ambient support.
  * @param hasBurnInProtection Whether or not the watch hardware supports burn in protection.
  * @param analogPreviewReferenceTimeMillis UTC reference time for screenshots of analog watch faces
- * in milliseconds since the epoch.
+ *   in milliseconds since the epoch.
  * @param digitalPreviewReferenceTimeMillis UTC reference time for screenshots of digital watch
- * faces in milliseconds since the epoch.
+ *   faces in milliseconds since the epoch.
  */
 public class DeviceConfig(
-    @get:JvmName("hasLowBitAmbient")
-    public val hasLowBitAmbient: Boolean,
-    @get:JvmName("hasBurnInProtection")
-    public val hasBurnInProtection: Boolean,
+    @get:JvmName("hasLowBitAmbient") public val hasLowBitAmbient: Boolean,
+    @get:JvmName("hasBurnInProtection") public val hasBurnInProtection: Boolean,
     public val analogPreviewReferenceTimeMillis: Long,
     public val digitalPreviewReferenceTimeMillis: Long
 ) {
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    public fun asWireDeviceConfig(): WireDeviceConfig = WireDeviceConfig(
-        hasLowBitAmbient,
-        hasBurnInProtection,
-        analogPreviewReferenceTimeMillis,
-        digitalPreviewReferenceTimeMillis
-    )
+    public fun asWireDeviceConfig(): WireDeviceConfig =
+        WireDeviceConfig(
+            hasLowBitAmbient,
+            hasBurnInProtection,
+            analogPreviewReferenceTimeMillis,
+            digitalPreviewReferenceTimeMillis
+        )
 
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
@@ -85,9 +84,10 @@
 
 /** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-public fun WireDeviceConfig.asApiDeviceConfig(): DeviceConfig = DeviceConfig(
-    hasLowBitAmbient,
-    hasBurnInProtection,
-    analogPreviewReferenceTimeMillis,
-    digitalPreviewReferenceTimeMillis
-)
\ No newline at end of file
+public fun WireDeviceConfig.asApiDeviceConfig(): DeviceConfig =
+    DeviceConfig(
+        hasLowBitAmbient,
+        hasBurnInProtection,
+        analogPreviewReferenceTimeMillis,
+        digitalPreviewReferenceTimeMillis
+    )
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/EditorServiceClient.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/EditorServiceClient.kt
index 9a2c34f..9ebde74 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/EditorServiceClient.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/EditorServiceClient.kt
@@ -35,45 +35,39 @@
      */
     public fun addListener(editorListener: EditorListener, listenerExecutor: Executor)
 
-    /** Unregisters an [EditorListener] previously registered via [addListener].  */
+    /** Unregisters an [EditorListener] previously registered via [addListener]. */
     public fun removeListener(editorListener: EditorListener)
 
     /** Instructs any open editor to close. */
-    @Throws(RemoteException::class)
-    public fun closeEditor()
+    @Throws(RemoteException::class) public fun closeEditor()
 }
 
 /** Observes state changes in [androidx.wear.watchface.editor.EditorSession]. */
 public interface EditorListener {
-    /** Called in response to [androidx.wear.watchface.editor.EditorSession.close] .*/
+    /** Called in response to [androidx.wear.watchface.editor.EditorSession.close] . */
     public fun onEditorStateChanged(editorState: EditorState)
 }
 
-internal class EditorServiceClientImpl(
-    private val iEditorService: IEditorService
-) : EditorServiceClient {
+internal class EditorServiceClientImpl(private val iEditorService: IEditorService) :
+    EditorServiceClient {
     private val lock = Any()
     private val editorMap = HashMap<EditorListener, Int>()
 
-    override fun addListener(
-        editorListener: EditorListener,
-        listenerExecutor: Executor
-    ) {
-        val observer = object : IEditorObserver.Stub() {
-            override fun getApiVersion() = IEditorObserver.API_VERSION
+    override fun addListener(editorListener: EditorListener, listenerExecutor: Executor) {
+        val observer =
+            object : IEditorObserver.Stub() {
+                override fun getApiVersion() = IEditorObserver.API_VERSION
 
-            override fun onEditorStateChange(editorStateWireFormat: EditorStateWireFormat) {
-                listenerExecutor.execute {
-                    editorListener.onEditorStateChanged(
-                        editorStateWireFormat.asApiEditorState()
-                    )
+                override fun onEditorStateChange(editorStateWireFormat: EditorStateWireFormat) {
+                    listenerExecutor.execute {
+                        editorListener.onEditorStateChanged(
+                            editorStateWireFormat.asApiEditorState()
+                        )
+                    }
                 }
             }
-        }
 
-        synchronized(lock) {
-            editorMap[editorListener] = iEditorService.registerObserver(observer)
-        }
+        synchronized(lock) { editorMap[editorListener] = iEditorService.registerObserver(observer) }
     }
 
     override fun removeListener(editorListener: EditorListener) {
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/EditorState.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/EditorState.kt
index 77f5f87..379ca96 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/EditorState.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/EditorState.kt
@@ -35,8 +35,8 @@
  * watch faces and editors should not need to do anything special because of this.
  *
  * @param id The system's id for a watch face being edited. This is passed in from
- * [androidx.wear.watchface.EditorRequest.watchFaceId] and matches the value passed to
- * [androidx.wear.watchface.WatchState.watchFaceInstanceId].
+ *   [androidx.wear.watchface.EditorRequest.watchFaceId] and matches the value passed to
+ *   [androidx.wear.watchface.WatchState.watchFaceInstanceId].
  */
 public class WatchFaceId(public val id: String) {
     override fun equals(other: Any?): Boolean {
@@ -65,23 +65,24 @@
  * @param watchFaceId The system's watch face instance ID. See [WatchFaceId] for details.
  * @param userStyle The current [UserStyle] encoded as a [UserStyleData].
  * @param previewComplicationsData Preview [ComplicationData] needed for taking screenshots without
- * live complication data.
+ *   live complication data.
  * @param shouldCommitChanges Whether or not this state should be committed (i.e. the user aborted
- * the session). If it's not committed then any changes (E.g. complication data source changes)
- * should  be abandoned. There's no need to resend the style to the watchface because the library
- * will have restored the previous style.
+ *   the session). If it's not committed then any changes (E.g. complication data source changes)
+ *   should be abandoned. There's no need to resend the style to the watchface because the library
+ *   will have restored the previous style.
  * @param previewImage If `non-null` this [Bitmap] contains a preview image of the watch face
- * rendered with the final style and complications and the
- * [androidx.wear.watchface.editor.PreviewScreenshotParams] specified in the
- * [androidx.wear.watchface.editor.EditorRequest]. If [shouldCommitChanges] is `false` then this
- * will also be `null` (see implementation of [androidx.wear.watchface.editor.EditorSession.close]).
+ *   rendered with the final style and complications and the
+ *   [androidx.wear.watchface.editor.PreviewScreenshotParams] specified in the
+ *   [androidx.wear.watchface.editor.EditorRequest]. If [shouldCommitChanges] is `false` then this
+ *   will also be `null` (see implementation of
+ *   [androidx.wear.watchface.editor.EditorSession.close]).
  */
-public class EditorState internal constructor(
+public class EditorState
+internal constructor(
     public val watchFaceId: WatchFaceId,
     public val userStyle: UserStyleData,
     public val previewComplicationsData: Map<Int, ComplicationData>,
-    @get:JvmName("shouldCommitChanges")
-    public val shouldCommitChanges: Boolean,
+    @get:JvmName("shouldCommitChanges") public val shouldCommitChanges: Boolean,
     public val previewImage: Bitmap?
 ) {
     override fun toString(): String =
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/HeadlessWatchFaceClient.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/HeadlessWatchFaceClient.kt
index e7ef0ef..6094a6b 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/HeadlessWatchFaceClient.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/HeadlessWatchFaceClient.kt
@@ -23,11 +23,10 @@
 import android.support.wearable.watchface.SharedMemoryImage
 import androidx.annotation.AnyThread
 import androidx.annotation.RequiresApi
-import androidx.wear.watchface.complications.data.ComplicationData
-import androidx.wear.watchface.utility.TraceEvent
 import androidx.wear.watchface.ComplicationSlot
 import androidx.wear.watchface.ComplicationSlotsManager
 import androidx.wear.watchface.RenderParameters
+import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.control.IHeadlessWatchFace
 import androidx.wear.watchface.control.data.ComplicationRenderParams
 import androidx.wear.watchface.control.data.WatchFaceRenderParams
@@ -36,12 +35,13 @@
 import androidx.wear.watchface.style.UserStyleFlavors
 import androidx.wear.watchface.style.UserStyleSchema
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting
+import androidx.wear.watchface.utility.TraceEvent
 import java.security.MessageDigest
 import java.time.Instant
 import java.util.concurrent.Executor
 
 /**
- * Controls a stateless remote headless watch face.  This is mostly intended for use by watch face
+ * Controls a stateless remote headless watch face. This is mostly intended for use by watch face
  * editor UIs which need to generate screenshots for various styling configurations without
  * affecting the current watchface.
  *
@@ -59,12 +59,10 @@
     }
 
     /** The [Instant] to use when rendering previews. */
-    @get:Throws(RemoteException::class)
-    public val previewReferenceInstant: Instant
+    @get:Throws(RemoteException::class) public val previewReferenceInstant: Instant
 
     /** The watch face's [UserStyleSchema]. */
-    @get:Throws(RemoteException::class)
-    public val userStyleSchema: UserStyleSchema
+    @get:Throws(RemoteException::class) public val userStyleSchema: UserStyleSchema
 
     /**
      * A SHA-1 [MessageDigest] hash of the [UserStyleSchema]. Note that for performance reasons
@@ -82,7 +80,7 @@
      * Returns the watch face's [UserStyleFlavors] if any.
      *
      * @throws [RuntimeException] if the watch face threw an exception while trying to service the
-     * request or there was a communication problem with watch face process.
+     *   request or there was a communication problem with watch face process.
      */
     public fun getUserStyleFlavors(): UserStyleFlavors = UserStyleFlavors()
 
@@ -104,10 +102,10 @@
      * @param instant The [Instant] to render with
      * @param userStyle Optional [UserStyle] to render with, if null the default style is used.
      * @param slotIdToComplicationData Map of [androidx.wear.watchface.ComplicationSlot] ids to
-     * [ComplicationData] to render with, or if `null` [androidx.wear.watchface.ComplicationSlot]
-     * are not rendered.
+     *   [ComplicationData] to render with, or if `null` [androidx.wear.watchface.ComplicationSlot]
+     *   are not rendered.
      * @return A shared memory backed [Bitmap] containing a screenshot of the watch face with the
-     * given settings.
+     *   given settings.
      */
     @RequiresApi(27)
     @Throws(RemoteException::class)
@@ -128,7 +126,7 @@
      * @param complicationData the [ComplicationData] to render with
      * @param userStyle Optional [UserStyle] to render with, if null the default style is used
      * @return A shared memory backed [Bitmap] containing a screenshot of the watch face with the
-     * given settings, or `null` if [complicationSlotId] is unrecognized.
+     *   given settings, or `null` if [complicationSlotId] is unrecognized.
      */
     @RequiresApi(27)
     @Throws(RemoteException::class)
@@ -156,42 +154,37 @@
     /**
      * Removes a [ClientDisconnectListener] previously registered by [addClientDisconnectListener].
      */
-    @AnyThread
-    public fun removeClientDisconnectListener(listener: ClientDisconnectListener)
+    @AnyThread public fun removeClientDisconnectListener(listener: ClientDisconnectListener)
 
     /** Returns true if the connection to the server side is alive. */
-    @AnyThread
-    public fun isConnectionAlive(): Boolean
+    @AnyThread public fun isConnectionAlive(): Boolean
 
     /** Stores the underlying connection in a [Bundle]. */
     public fun toBundle(): Bundle
 }
 
-internal class HeadlessWatchFaceClientImpl internal constructor(
-    private val iHeadlessWatchFace: IHeadlessWatchFace
-) : HeadlessWatchFaceClient {
+internal class HeadlessWatchFaceClientImpl
+internal constructor(private val iHeadlessWatchFace: IHeadlessWatchFace) : HeadlessWatchFaceClient {
 
     private val lock = Any()
     private val listeners = HashMap<HeadlessWatchFaceClient.ClientDisconnectListener, Executor>()
 
     init {
-        iHeadlessWatchFace.asBinder().linkToDeath(
-            {
-                var listenerCopy:
-                    HashMap<HeadlessWatchFaceClient.ClientDisconnectListener, Executor>
+        iHeadlessWatchFace
+            .asBinder()
+            .linkToDeath(
+                {
+                    var listenerCopy:
+                        HashMap<HeadlessWatchFaceClient.ClientDisconnectListener, Executor>
 
-                synchronized(lock) {
-                    listenerCopy = HashMap(listeners)
-                }
+                    synchronized(lock) { listenerCopy = HashMap(listeners) }
 
-                for ((listener, executor) in listenerCopy) {
-                    executor.execute {
-                        listener.onClientDisconnected()
+                    for ((listener, executor) in listenerCopy) {
+                        executor.execute { listener.onClientDisconnected() }
                     }
-                }
-            },
-            0
-        )
+                },
+                0
+            )
     }
 
     override val previewReferenceInstant: Instant
@@ -207,20 +200,20 @@
             userStyleSchema.getDigestHash()
         }
 
-    override fun getUserStyleFlavors(): UserStyleFlavors =
-        callRemote {
-            if (iHeadlessWatchFace.apiVersion >= 3) {
-                UserStyleFlavors(iHeadlessWatchFace.userStyleFlavors)
-            } else {
-                UserStyleFlavors()
-            }
+    override fun getUserStyleFlavors(): UserStyleFlavors = callRemote {
+        if (iHeadlessWatchFace.apiVersion >= 3) {
+            UserStyleFlavors(iHeadlessWatchFace.userStyleFlavors)
+        } else {
+            UserStyleFlavors()
         }
+    }
 
     override val complicationSlotsState: Map<Int, ComplicationSlotState>
-        get() = iHeadlessWatchFace.complicationState.associateBy(
-            { it.id },
-            { ComplicationSlotState(it.complicationState) }
-        )
+        get() =
+            iHeadlessWatchFace.complicationState.associateBy(
+                { it.id },
+                { ComplicationSlotState(it.complicationState) }
+            )
 
     @RequiresApi(27)
     override fun renderWatchFaceToBitmap(
@@ -228,23 +221,24 @@
         instant: Instant,
         userStyle: UserStyle?,
         slotIdToComplicationData: Map<Int, ComplicationData>?
-    ): Bitmap = TraceEvent("HeadlessWatchFaceClientImpl.renderWatchFaceToBitmap").use {
-        SharedMemoryImage.ashmemReadImageBundle(
-            iHeadlessWatchFace.renderWatchFaceToBitmap(
-                WatchFaceRenderParams(
-                    renderParameters.toWireFormat(),
-                    instant.toEpochMilli(),
-                    userStyle?.toWireFormat(),
-                    slotIdToComplicationData?.map {
-                        IdAndComplicationDataWireFormat(
-                            it.key,
-                            it.value.asWireComplicationData()
-                        )
-                    }
+    ): Bitmap =
+        TraceEvent("HeadlessWatchFaceClientImpl.renderWatchFaceToBitmap").use {
+            SharedMemoryImage.ashmemReadImageBundle(
+                iHeadlessWatchFace.renderWatchFaceToBitmap(
+                    WatchFaceRenderParams(
+                        renderParameters.toWireFormat(),
+                        instant.toEpochMilli(),
+                        userStyle?.toWireFormat(),
+                        slotIdToComplicationData?.map {
+                            IdAndComplicationDataWireFormat(
+                                it.key,
+                                it.value.asWireComplicationData()
+                            )
+                        }
+                    )
                 )
             )
-        )
-    }
+        }
 
     @RequiresApi(27)
     override fun renderComplicationToBitmap(
@@ -253,19 +247,20 @@
         instant: Instant,
         complicationData: ComplicationData,
         userStyle: UserStyle?,
-    ): Bitmap? = TraceEvent("HeadlessWatchFaceClientImpl.renderComplicationToBitmap").use {
-        iHeadlessWatchFace.renderComplicationToBitmap(
-            ComplicationRenderParams(
-                complicationSlotId,
-                renderParameters.toWireFormat(),
-                instant.toEpochMilli(),
-                complicationData.asWireComplicationData(),
-                userStyle?.toWireFormat(),
-            )
-        )?.let {
-            SharedMemoryImage.ashmemReadImageBundle(it)
+    ): Bitmap? =
+        TraceEvent("HeadlessWatchFaceClientImpl.renderComplicationToBitmap").use {
+            iHeadlessWatchFace
+                .renderComplicationToBitmap(
+                    ComplicationRenderParams(
+                        complicationSlotId,
+                        renderParameters.toWireFormat(),
+                        instant.toEpochMilli(),
+                        complicationData.asWireComplicationData(),
+                        userStyle?.toWireFormat(),
+                    )
+                )
+                ?.let { SharedMemoryImage.ashmemReadImageBundle(it) }
         }
-    }
 
     override fun addClientDisconnectListener(
         listener: HeadlessWatchFaceClient.ClientDisconnectListener,
@@ -282,18 +277,16 @@
     override fun removeClientDisconnectListener(
         listener: HeadlessWatchFaceClient.ClientDisconnectListener
     ) {
-        synchronized(lock) {
-            listeners.remove(listener)
-        }
+        synchronized(lock) { listeners.remove(listener) }
     }
 
     override fun isConnectionAlive() = iHeadlessWatchFace.asBinder().isBinderAlive
 
-    override fun toBundle() = Bundle().apply {
-        this.putBinder(HeadlessWatchFaceClient.BINDER_KEY, iHeadlessWatchFace.asBinder())
-    }
+    override fun toBundle() =
+        Bundle().apply {
+            this.putBinder(HeadlessWatchFaceClient.BINDER_KEY, iHeadlessWatchFace.asBinder())
+        }
 
-    override fun close() = TraceEvent("HeadlessWatchFaceClientImpl.close").use {
-        iHeadlessWatchFace.release()
-    }
+    override fun close() =
+        TraceEvent("HeadlessWatchFaceClientImpl.close").use { iHeadlessWatchFace.release() }
 }
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/InteractiveWatchFaceClient.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/InteractiveWatchFaceClient.kt
index 370ed48..566abd4 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/InteractiveWatchFaceClient.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/InteractiveWatchFaceClient.kt
@@ -25,42 +25,37 @@
 import androidx.annotation.IntDef
 import androidx.annotation.Px
 import androidx.annotation.RequiresApi
+import androidx.wear.watchface.ComplicationSlot
+import androidx.wear.watchface.ComplicationSlotBoundsType
+import androidx.wear.watchface.ComplicationSlotsManager
+import androidx.wear.watchface.ContentDescriptionLabel
+import androidx.wear.watchface.RenderParameters
+import androidx.wear.watchface.Renderer
+import androidx.wear.watchface.TapType
+import androidx.wear.watchface.WatchFaceColors
+import androidx.wear.watchface.WatchFaceExperimental
 import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.complications.data.ComplicationDisplayPolicy
 import androidx.wear.watchface.complications.data.toApiComplicationText
-import androidx.wear.watchface.utility.TraceEvent
-import androidx.wear.watchface.ComplicationSlot
-import androidx.wear.watchface.ComplicationSlotsManager
-import androidx.wear.watchface.ContentDescriptionLabel
-import androidx.wear.watchface.Renderer
-import androidx.wear.watchface.RenderParameters
-import androidx.wear.watchface.TapType
-import androidx.wear.watchface.WatchFaceColors
 import androidx.wear.watchface.control.IInteractiveWatchFace
-import androidx.wear.watchface.control.data.WatchFaceRenderParams
-import androidx.wear.watchface.ComplicationSlotBoundsType
-import androidx.wear.watchface.WatchFaceExperimental
 import androidx.wear.watchface.control.IWatchfaceListener
 import androidx.wear.watchface.control.IWatchfaceReadyListener
+import androidx.wear.watchface.control.data.WatchFaceRenderParams
 import androidx.wear.watchface.data.IdAndComplicationDataWireFormat
 import androidx.wear.watchface.data.WatchFaceColorsWireFormat
 import androidx.wear.watchface.data.WatchUiState
 import androidx.wear.watchface.style.UserStyle
+import androidx.wear.watchface.style.UserStyleData
 import androidx.wear.watchface.style.UserStyleSchema
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting
-import androidx.wear.watchface.style.UserStyleData
 import androidx.wear.watchface.toApiFormat
+import androidx.wear.watchface.utility.TraceEvent
 import java.time.Instant
 import java.util.concurrent.Executor
 import java.util.function.Consumer
 
 /** @hide */
-@IntDef(
-    value = [
-        DisconnectReasons.ENGINE_DIED,
-        DisconnectReasons.ENGINE_DETACHED
-    ]
-)
+@IntDef(value = [DisconnectReasons.ENGINE_DIED, DisconnectReasons.ENGINE_DETACHED])
 public annotation class DisconnectReason
 
 /**
@@ -70,19 +65,19 @@
 public object DisconnectReasons {
 
     /**
-     * The underlying engine died, probably because the watch face was killed or crashed.
-     * Sometimes this is due to memory pressure and it's not the watch face's fault. Usually in
-     * response a new [InteractiveWatchFaceClient] should be created (see
-     * [WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient]), however if this new
-     * client also disconnects due to [ENGINE_DIED] within a few seconds the watchface is
-     * probably bad and it's recommended to switch to a safe system default watch face.
+     * The underlying engine died, probably because the watch face was killed or crashed. Sometimes
+     * this is due to memory pressure and it's not the watch face's fault. Usually in response a new
+     * [InteractiveWatchFaceClient] should be created (see
+     * [WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient]), however if this new client
+     * also disconnects due to [ENGINE_DIED] within a few seconds the watchface is probably bad and
+     * it's recommended to switch to a safe system default watch face.
      */
     public const val ENGINE_DIED: Int = 1
 
     /**
-     * Wallpaper service detached from the engine, which is now defunct. The watch face itself
-     * has no control over this. Usually in response a new [InteractiveWatchFaceClient]
-     * should be created (see [WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient]).
+     * Wallpaper service detached from the engine, which is now defunct. The watch face itself has
+     * no control over this. Usually in response a new [InteractiveWatchFaceClient] should be
+     * created (see [WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient]).
      */
     public const val ENGINE_DETACHED: Int = 2
 }
@@ -101,7 +96,7 @@
      * visually clean transition.
      *
      * @param slotIdToComplicationData The [ComplicationData] for each
-     * [androidx.wear.watchface.ComplicationSlot].
+     *   [androidx.wear.watchface.ComplicationSlot].
      */
     @Throws(RemoteException::class)
     public fun updateComplicationData(slotIdToComplicationData: Map<Int, ComplicationData>)
@@ -113,9 +108,9 @@
      * @param instant The [Instant] render with.
      * @param userStyle Optional [UserStyle] to render with, if null the current style is used.
      * @param idAndComplicationData Map of complication ids to [ComplicationData] to render with, or
-     * if null then the existing complication data if any is used.
-     * @return A shared memory backed [Bitmap] containing a screenshot of the watch  face with the
-     * given settings.
+     *   if null then the existing complication data if any is used.
+     * @return A shared memory backed [Bitmap] containing a screenshot of the watch face with the
+     *   given settings.
      */
     @RequiresApi(27)
     @Throws(RemoteException::class)
@@ -127,13 +122,12 @@
     ): Bitmap
 
     /** The UTC reference preview time for this watch face in milliseconds since the epoch. */
-    @get:Throws(RemoteException::class)
-    public val previewReferenceInstant: Instant
+    @get:Throws(RemoteException::class) public val previewReferenceInstant: Instant
 
     /**
-     * The watchface's [OverlayStyle] which configures the system status overlay on
-     * Wear 3.0 and beyond. Note for older watch faces which don't support this, the default value
-     * will be returned.
+     * The watchface's [OverlayStyle] which configures the system status overlay on Wear 3.0 and
+     * beyond. Note for older watch faces which don't support this, the default value will be
+     * returned.
      */
     @get:Throws(RemoteException::class)
     public val overlayStyle: OverlayStyle
@@ -142,9 +136,9 @@
 
     /**
      * Renames this instance to [newInstanceId] (must be unique, usually this would be different
-     * from the old ID but that's not a requirement). Sets the current [UserStyle] and clears
-     * any complication data. Setting the new UserStyle may have a side effect of enabling or
-     * disabling complicationSlots, which will be visible via [ComplicationSlotState.isEnabled].
+     * from the old ID but that's not a requirement). Sets the current [UserStyle] and clears any
+     * complication data. Setting the new UserStyle may have a side effect of enabling or disabling
+     * complicationSlots, which will be visible via [ComplicationSlotState.isEnabled].
      *
      * NB [setWatchUiState] and [updateWatchFaceInstance] can be called in any order.
      */
@@ -154,24 +148,20 @@
     /**
      * Renames this instance to [newInstanceId] (must be unique, usually this would be different
      * from the old ID but that's not a requirement). Sets the current [UserStyle] represented as a
-     * [UserStyleData> and clears any complication data. Setting the new UserStyle may have a
-     * side effect of enabling or disabling complicationSlots, which will be visible via
-     * [ComplicationSlotState.isEnabled].
+     * [UserStyleData> and clears any complication data. Setting the new UserStyle may have a side effect of enabling or disabling complicationSlots, which will be visible via [ComplicationSlotState.isEnabled].
      */
     @Throws(RemoteException::class)
     public fun updateWatchFaceInstance(newInstanceId: String, userStyle: UserStyleData)
 
     /** Returns the ID of this watch face instance. */
-    @get:Throws(RemoteException::class)
-    public val instanceId: String
+    @get:Throws(RemoteException::class) public val instanceId: String
 
     /** The watch face's [UserStyleSchema]. */
-    @get:Throws(RemoteException::class)
-    public val userStyleSchema: UserStyleSchema
+    @get:Throws(RemoteException::class) public val userStyleSchema: UserStyleSchema
 
     /**
      * Map of [androidx.wear.watchface.ComplicationSlot] ids to [ComplicationSlotState] for each
-     * [ComplicationSlot] registered with the  watch face's [ComplicationSlotsManager]. The
+     * [ComplicationSlot] registered with the watch face's [ComplicationSlotsManager]. The
      * ComplicationSlotState is based on the initial state of each
      * [androidx.wear.watchface.ComplicationSlot] plus any overrides from a
      * [ComplicationSlotsUserStyleSetting]. As a consequence ComplicationSlotState may update based
@@ -189,14 +179,18 @@
     @SuppressWarnings("AutoBoxing")
     @Throws(RemoteException::class)
     public fun getComplicationIdAt(@Px x: Int, @Px y: Int): Int? =
-        complicationSlotsState.asSequence().firstOrNull {
-            it.value.isEnabled && when (it.value.boundsType) {
-                ComplicationSlotBoundsType.ROUND_RECT -> it.value.bounds.contains(x, y)
-                ComplicationSlotBoundsType.BACKGROUND -> false
-                ComplicationSlotBoundsType.EDGE -> false
-                else -> false
+        complicationSlotsState
+            .asSequence()
+            .firstOrNull {
+                it.value.isEnabled &&
+                    when (it.value.boundsType) {
+                        ComplicationSlotBoundsType.ROUND_RECT -> it.value.bounds.contains(x, y)
+                        ComplicationSlotBoundsType.BACKGROUND -> false
+                        ComplicationSlotBoundsType.EDGE -> false
+                        else -> false
+                    }
             }
-        }?.key
+            ?.key
 
     public companion object {
         /** Indicates a "down" touch event on the watch face. */
@@ -241,8 +235,7 @@
     public fun setWatchUiState(watchUiState: androidx.wear.watchface.client.WatchUiState)
 
     /** Triggers watch face rendering into the surface when in ambient mode. */
-    @Throws(RemoteException::class)
-    public fun performAmbientTick()
+    @Throws(RemoteException::class) public fun performAmbientTick()
 
     /**
      * Callback that observes when the client disconnects. Use [addClientDisconnectListener] to
@@ -258,15 +251,11 @@
             "Deprecated, use an overload that passes the disconnectReason",
             ReplaceWith("onClientDisconnected(Int)")
         )
-        public fun onClientDisconnected() {
-        }
+        public fun onClientDisconnected() {}
 
-        /**
-         * The client disconnected, due to [disconnectReason].
-         */
+        /** The client disconnected, due to [disconnectReason]. */
         public fun onClientDisconnected(@DisconnectReason disconnectReason: Int) {
-            @Suppress("DEPRECATION")
-            onClientDisconnected()
+            @Suppress("DEPRECATION") onClientDisconnected()
         }
     }
 
@@ -277,12 +266,10 @@
     /**
      * Removes a [ClientDisconnectListener] previously registered by [addClientDisconnectListener].
      */
-    @AnyThread
-    public fun removeClientDisconnectListener(listener: ClientDisconnectListener)
+    @AnyThread public fun removeClientDisconnectListener(listener: ClientDisconnectListener)
 
     /** Returns true if the connection to the server side is alive. */
-    @AnyThread
-    public fun isConnectionAlive(): Boolean
+    @AnyThread public fun isConnectionAlive(): Boolean
 
     /**
      * Interface passed to [addOnWatchFaceReadyListener] which calls
@@ -311,9 +298,7 @@
      */
     public fun addOnWatchFaceReadyListener(executor: Executor, listener: OnWatchFaceReadyListener)
 
-    /**
-     * Stops listening for events registered by [addOnWatchFaceReadyListener].
-     */
+    /** Stops listening for events registered by [addOnWatchFaceReadyListener]. */
     public fun removeOnWatchFaceReadyListener(listener: OnWatchFaceReadyListener)
 
     /**
@@ -322,20 +307,17 @@
      * face's [Renderer.watchfaceColors] change.
      *
      * @param executor The [Executor] on which to run [listener].
-     * @param listener The [Consumer] to run whenever the watch face's
-     * [Renderer.watchfaceColors] change.
+     * @param listener The [Consumer] to run whenever the watch face's [Renderer.watchfaceColors]
+     *   change.
      */
     @OptIn(WatchFaceExperimental::class)
     @WatchFaceClientExperimental
     public fun addOnWatchFaceColorsListener(
         executor: Executor,
         listener: Consumer<WatchFaceColors?>
-    ) {
-    }
+    ) {}
 
-    /**
-     * Stops listening for events registered by [addOnWatchFaceColorsListener].
-     */
+    /** Stops listening for events registered by [addOnWatchFaceColorsListener]. */
     @OptIn(WatchFaceExperimental::class)
     @WatchFaceClientExperimental
     public fun removeOnWatchFaceColorsListener(listener: Consumer<WatchFaceColors?>) {}
@@ -351,7 +333,8 @@
 
 /** Controls a stateful remote interactive watch face. */
 @OptIn(WatchFaceExperimental::class)
-internal class InteractiveWatchFaceClientImpl internal constructor(
+internal class InteractiveWatchFaceClientImpl
+internal constructor(
     private val iInteractiveWatchFace: IInteractiveWatchFace,
     private val previewImageUpdateRequestedExecutor: Executor?,
     private val previewImageUpdateRequestedListener: Consumer<String>?
@@ -362,53 +345,48 @@
         HashMap<InteractiveWatchFaceClient.ClientDisconnectListener, Executor>()
     private val readyListeners =
         HashMap<InteractiveWatchFaceClient.OnWatchFaceReadyListener, Executor>()
-    private val watchFaceColorsChangeListeners =
-        HashMap<Consumer<WatchFaceColors?>, Executor>()
+    private val watchFaceColorsChangeListeners = HashMap<Consumer<WatchFaceColors?>, Executor>()
     private var watchfaceReadyListenerRegistered = false
     private var lastWatchFaceColors: WatchFaceColors? = null
     private var disconnectReason: Int? = null
     private var closed = false
 
-    private val iWatchFaceListener = object : IWatchfaceListener.Stub() {
-        override fun getApiVersion() = IWatchfaceListener.API_VERSION
+    private val iWatchFaceListener =
+        object : IWatchfaceListener.Stub() {
+            override fun getApiVersion() = IWatchfaceListener.API_VERSION
 
-        override fun onWatchfaceReady() {
-            this@InteractiveWatchFaceClientImpl.onWatchFaceReady()
-        }
-
-        override fun onWatchfaceColorsChanged(watchFaceColors: WatchFaceColorsWireFormat?) {
-            var listenerCopy: HashMap<Consumer<WatchFaceColors?>, Executor>
-
-            synchronized(lock) {
-                listenerCopy = HashMap(watchFaceColorsChangeListeners)
-                lastWatchFaceColors = watchFaceColors?.toApiFormat()
+            override fun onWatchfaceReady() {
+                this@InteractiveWatchFaceClientImpl.onWatchFaceReady()
             }
 
-            for ((listener, executor) in listenerCopy) {
-                executor.execute {
-                    listener.accept(lastWatchFaceColors)
+            override fun onWatchfaceColorsChanged(watchFaceColors: WatchFaceColorsWireFormat?) {
+                var listenerCopy: HashMap<Consumer<WatchFaceColors?>, Executor>
+
+                synchronized(lock) {
+                    listenerCopy = HashMap(watchFaceColorsChangeListeners)
+                    lastWatchFaceColors = watchFaceColors?.toApiFormat()
+                }
+
+                for ((listener, executor) in listenerCopy) {
+                    executor.execute { listener.accept(lastWatchFaceColors) }
                 }
             }
-        }
 
-        override fun onPreviewImageUpdateRequested(watchFaceId: String) {
-            previewImageUpdateRequestedExecutor?.execute {
-                previewImageUpdateRequestedListener!!.accept(watchFaceId)
+            override fun onPreviewImageUpdateRequested(watchFaceId: String) {
+                previewImageUpdateRequestedExecutor?.execute {
+                    previewImageUpdateRequestedListener!!.accept(watchFaceId)
+                }
+            }
+
+            override fun onEngineDetached() {
+                sendDisconnectNotification(DisconnectReasons.ENGINE_DETACHED)
             }
         }
 
-        override fun onEngineDetached() {
-            sendDisconnectNotification(DisconnectReasons.ENGINE_DETACHED)
-        }
-    }
-
     init {
-        iInteractiveWatchFace.asBinder().linkToDeath(
-            {
-                sendDisconnectNotification(DisconnectReasons.ENGINE_DIED)
-            },
-            0
-        )
+        iInteractiveWatchFace
+            .asBinder()
+            .linkToDeath({ sendDisconnectNotification(DisconnectReasons.ENGINE_DIED) }, 0)
 
         if (iInteractiveWatchFace.apiVersion >= 6) {
             iInteractiveWatchFace.addWatchFaceListener(iWatchFaceListener)
@@ -416,30 +394,28 @@
     }
 
     internal fun sendDisconnectNotification(reason: Int) {
-        val listenersCopy = synchronized(lock) {
-            // Don't send more than one notification.
-            if (disconnectReason != null) {
-                return
+        val listenersCopy =
+            synchronized(lock) {
+                // Don't send more than one notification.
+                if (disconnectReason != null) {
+                    return
+                }
+                disconnectReason = reason
+                HashMap(disconnectListeners)
             }
-            disconnectReason = reason
-            HashMap(disconnectListeners)
-        }
         for ((listener, executor) in listenersCopy) {
-            executor.execute {
-                listener.onClientDisconnected(reason)
-            }
+            executor.execute { listener.onClientDisconnected(reason) }
         }
     }
 
-    override fun updateComplicationData(
-        slotIdToComplicationData: Map<Int, ComplicationData>
-    ) = TraceEvent("InteractiveWatchFaceClientImpl.updateComplicationData").use {
-        iInteractiveWatchFace.updateComplicationData(
-            slotIdToComplicationData.map {
-                IdAndComplicationDataWireFormat(it.key, it.value.asWireComplicationData())
-            }
-        )
-    }
+    override fun updateComplicationData(slotIdToComplicationData: Map<Int, ComplicationData>) =
+        TraceEvent("InteractiveWatchFaceClientImpl.updateComplicationData").use {
+            iInteractiveWatchFace.updateComplicationData(
+                slotIdToComplicationData.map {
+                    IdAndComplicationDataWireFormat(it.key, it.value.asWireComplicationData())
+                }
+            )
+        }
 
     @RequiresApi(27)
     override fun renderWatchFaceToBitmap(
@@ -447,23 +423,24 @@
         instant: Instant,
         userStyle: UserStyle?,
         idAndComplicationData: Map<Int, ComplicationData>?
-    ): Bitmap = TraceEvent("InteractiveWatchFaceClientImpl.renderWatchFaceToBitmap").use {
-        SharedMemoryImage.ashmemReadImageBundle(
-            iInteractiveWatchFace.renderWatchFaceToBitmap(
-                WatchFaceRenderParams(
-                    renderParameters.toWireFormat(),
-                    instant.toEpochMilli(),
-                    userStyle?.toWireFormat(),
-                    idAndComplicationData?.map {
-                        IdAndComplicationDataWireFormat(
-                            it.key,
-                            it.value.asWireComplicationData()
-                        )
-                    }
+    ): Bitmap =
+        TraceEvent("InteractiveWatchFaceClientImpl.renderWatchFaceToBitmap").use {
+            SharedMemoryImage.ashmemReadImageBundle(
+                iInteractiveWatchFace.renderWatchFaceToBitmap(
+                    WatchFaceRenderParams(
+                        renderParameters.toWireFormat(),
+                        instant.toEpochMilli(),
+                        userStyle?.toWireFormat(),
+                        idAndComplicationData?.map {
+                            IdAndComplicationDataWireFormat(
+                                it.key,
+                                it.value.asWireComplicationData()
+                            )
+                        }
+                    )
                 )
             )
-        )
-    }
+        }
 
     override val previewReferenceInstant: Instant
         get() = Instant.ofEpochMilli(iInteractiveWatchFace.previewReferenceTimeMillis)
@@ -478,23 +455,15 @@
             return OverlayStyle(null, null)
         }
 
-    override fun updateWatchFaceInstance(newInstanceId: String, userStyle: UserStyle) = TraceEvent(
-        "InteractiveWatchFaceClientImpl.updateInstance"
-    ).use {
-        iInteractiveWatchFace.updateWatchfaceInstance(newInstanceId, userStyle.toWireFormat())
-    }
+    override fun updateWatchFaceInstance(newInstanceId: String, userStyle: UserStyle) =
+        TraceEvent("InteractiveWatchFaceClientImpl.updateInstance").use {
+            iInteractiveWatchFace.updateWatchfaceInstance(newInstanceId, userStyle.toWireFormat())
+        }
 
-    override fun updateWatchFaceInstance(
-        newInstanceId: String,
-        userStyle: UserStyleData
-    ) = TraceEvent(
-        "InteractiveWatchFaceClientImpl.updateInstance"
-    ).use {
-        iInteractiveWatchFace.updateWatchfaceInstance(
-            newInstanceId,
-            userStyle.toWireFormat()
-        )
-    }
+    override fun updateWatchFaceInstance(newInstanceId: String, userStyle: UserStyleData) =
+        TraceEvent("InteractiveWatchFaceClientImpl.updateInstance").use {
+            iInteractiveWatchFace.updateWatchfaceInstance(newInstanceId, userStyle.toWireFormat())
+        }
 
     override val instanceId: String
         get() = iInteractiveWatchFace.instanceId
@@ -503,79 +472,64 @@
         get() = UserStyleSchema(iInteractiveWatchFace.userStyleSchema)
 
     override val complicationSlotsState: Map<Int, ComplicationSlotState>
-        get() = iInteractiveWatchFace.complicationDetails.associateBy(
-            { it.id },
-            { ComplicationSlotState(it.complicationState) }
-        )
+        get() =
+            iInteractiveWatchFace.complicationDetails.associateBy(
+                { it.id },
+                { ComplicationSlotState(it.complicationState) }
+            )
 
-    override fun close() = TraceEvent("InteractiveWatchFaceClientImpl.close").use {
-        if (iInteractiveWatchFace.apiVersion >= 6) {
-            iInteractiveWatchFace.removeWatchFaceListener(iWatchFaceListener)
+    override fun close() =
+        TraceEvent("InteractiveWatchFaceClientImpl.close").use {
+            if (iInteractiveWatchFace.apiVersion >= 6) {
+                iInteractiveWatchFace.removeWatchFaceListener(iWatchFaceListener)
+            }
+            iInteractiveWatchFace.release()
+            synchronized(lock) { closed = true }
         }
-        iInteractiveWatchFace.release()
-        synchronized(lock) {
-            closed = true
-        }
-    }
 
-    override fun sendTouchEvent(
-        xPosition: Int,
-        yPosition: Int,
-        @TapType tapType: Int
-    ) = TraceEvent("InteractiveWatchFaceClientImpl.sendTouchEvent").use {
-        iInteractiveWatchFace.sendTouchEvent(xPosition, yPosition, tapType)
-    }
+    override fun sendTouchEvent(xPosition: Int, yPosition: Int, @TapType tapType: Int) =
+        TraceEvent("InteractiveWatchFaceClientImpl.sendTouchEvent").use {
+            iInteractiveWatchFace.sendTouchEvent(xPosition, yPosition, tapType)
+        }
 
     override val contentDescriptionLabels: List<ContentDescriptionLabel>
-        get() = iInteractiveWatchFace.contentDescriptionLabels?.map {
-            ContentDescriptionLabel(
-                it.text.toApiComplicationText(),
-                it.bounds,
-                it.tapAction
-            )
-        } ?: emptyList()
+        get() =
+            iInteractiveWatchFace.contentDescriptionLabels?.map {
+                ContentDescriptionLabel(it.text.toApiComplicationText(), it.bounds, it.tapAction)
+            }
+                ?: emptyList()
 
-    override fun setWatchUiState(
-        watchUiState: androidx.wear.watchface.client.WatchUiState
-    ) = TraceEvent(
-        "InteractiveWatchFaceClientImpl.setSystemState"
-    ).use {
-        iInteractiveWatchFace.setWatchUiState(
-            WatchUiState(
-                watchUiState.inAmbientMode,
-                watchUiState.interruptionFilter
+    override fun setWatchUiState(watchUiState: androidx.wear.watchface.client.WatchUiState) =
+        TraceEvent("InteractiveWatchFaceClientImpl.setSystemState").use {
+            iInteractiveWatchFace.setWatchUiState(
+                WatchUiState(watchUiState.inAmbientMode, watchUiState.interruptionFilter)
             )
-        )
-    }
+        }
 
-    override fun performAmbientTick() = TraceEvent(
-        "InteractiveWatchFaceClientImpl.performAmbientTick"
-    ).use {
-        iInteractiveWatchFace.ambientTickUpdate()
-    }
+    override fun performAmbientTick() =
+        TraceEvent("InteractiveWatchFaceClientImpl.performAmbientTick").use {
+            iInteractiveWatchFace.ambientTickUpdate()
+        }
 
     override fun addClientDisconnectListener(
         listener: InteractiveWatchFaceClient.ClientDisconnectListener,
         executor: Executor
     ) {
-        val disconnectReasonCopy = synchronized(lock) {
-            require(!disconnectListeners.contains(listener)) {
-                "Don't call addClientDisconnectListener multiple times for the same listener"
+        val disconnectReasonCopy =
+            synchronized(lock) {
+                require(!disconnectListeners.contains(listener)) {
+                    "Don't call addClientDisconnectListener multiple times for the same listener"
+                }
+                disconnectListeners.put(listener, executor)
+                disconnectReason
             }
-            disconnectListeners.put(listener, executor)
-            disconnectReason
-        }
-        disconnectReasonCopy?.let {
-            listener.onClientDisconnected(it)
-        }
+        disconnectReasonCopy?.let { listener.onClientDisconnected(it) }
     }
 
     override fun removeClientDisconnectListener(
         listener: InteractiveWatchFaceClient.ClientDisconnectListener
     ) {
-        synchronized(lock) {
-            disconnectListeners.remove(listener)
-        }
+        synchronized(lock) { disconnectListeners.remove(listener) }
     }
 
     override fun isConnectionAlive() =
@@ -588,7 +542,6 @@
         when {
             // From version 6 we want to use IWatchFaceListener instead.
             iInteractiveWatchFace.apiVersion >= 6 -> return
-
             iInteractiveWatchFace.apiVersion >= 2 -> {
                 iInteractiveWatchFace.addWatchfaceReadyListener(
                     object : IWatchfaceReadyListener.Stub() {
@@ -600,7 +553,6 @@
                     }
                 )
             }
-
             else -> {
                 // We can emulate this on an earlier API by using a call to get userStyleSchema that
                 // will block until the watch face is ready. to Avoid blocking the current thread we
@@ -621,14 +573,10 @@
     internal fun onWatchFaceReady() {
         var listenerCopy: HashMap<InteractiveWatchFaceClient.OnWatchFaceReadyListener, Executor>
 
-        synchronized(lock) {
-            listenerCopy = HashMap(readyListeners)
-        }
+        synchronized(lock) { listenerCopy = HashMap(readyListeners) }
 
         for ((listener, executor) in listenerCopy) {
-            executor.execute {
-                listener.onWatchFaceReady()
-            }
+            executor.execute { listener.onWatchFaceReady() }
         }
     }
 
@@ -648,9 +596,7 @@
     override fun removeOnWatchFaceReadyListener(
         listener: InteractiveWatchFaceClient.OnWatchFaceReadyListener
     ) {
-        synchronized(lock) {
-            readyListeners.remove(listener)
-        }
+        synchronized(lock) { readyListeners.remove(listener) }
     }
 
     @WatchFaceClientExperimental
@@ -658,49 +604,50 @@
         executor: Executor,
         listener: Consumer<WatchFaceColors?>
     ) {
-        val colors = synchronized(lock) {
-            require(!watchFaceColorsChangeListeners.contains(listener)) {
-                "Don't call addOnWatchFaceColorsListener multiple times for the same listener"
-            }
-            maybeRegisterWatchfaceReadyListener()
-            watchFaceColorsChangeListeners.put(listener, executor)
+        val colors =
+            synchronized(lock) {
+                require(!watchFaceColorsChangeListeners.contains(listener)) {
+                    "Don't call addOnWatchFaceColorsListener multiple times for the same listener"
+                }
+                maybeRegisterWatchfaceReadyListener()
+                watchFaceColorsChangeListeners.put(listener, executor)
 
-            lastWatchFaceColors
-        }
+                lastWatchFaceColors
+            }
 
         listener.accept(colors)
     }
 
     @WatchFaceClientExperimental
-    override fun removeOnWatchFaceColorsListener(
-        listener: Consumer<WatchFaceColors?>
-    ) {
-        synchronized(lock) {
-            watchFaceColorsChangeListeners.remove(listener)
-        }
+    override fun removeOnWatchFaceColorsListener(listener: Consumer<WatchFaceColors?>) {
+        synchronized(lock) { watchFaceColorsChangeListeners.remove(listener) }
     }
 
-    override fun getComplicationIdAt(@Px x: Int, @Px y: Int): Int? = TraceEvent(
-        "getComplicationIdAt"
-    ).use {
-        if (iInteractiveWatchFace.apiVersion >= 7) {
-            val longId = iInteractiveWatchFace.getComplicationIdAt(x, y)
-            if (longId == Long.MIN_VALUE) {
-                null
-            } else {
-                longId.toInt()
-            }
-        } else {
-            complicationSlotsState.asSequence().firstOrNull {
-                it.value.isEnabled && when (it.value.boundsType) {
-                    ComplicationSlotBoundsType.ROUND_RECT -> it.value.bounds.contains(x, y)
-                    ComplicationSlotBoundsType.BACKGROUND -> false
-                    ComplicationSlotBoundsType.EDGE -> false
-                    else -> false
+    override fun getComplicationIdAt(@Px x: Int, @Px y: Int): Int? =
+        TraceEvent("getComplicationIdAt").use {
+            if (iInteractiveWatchFace.apiVersion >= 7) {
+                val longId = iInteractiveWatchFace.getComplicationIdAt(x, y)
+                if (longId == Long.MIN_VALUE) {
+                    null
+                } else {
+                    longId.toInt()
                 }
-            }?.key
+            } else {
+                complicationSlotsState
+                    .asSequence()
+                    .firstOrNull {
+                        it.value.isEnabled &&
+                            when (it.value.boundsType) {
+                                ComplicationSlotBoundsType.ROUND_RECT ->
+                                    it.value.bounds.contains(x, y)
+                                ComplicationSlotBoundsType.BACKGROUND -> false
+                                ComplicationSlotBoundsType.EDGE -> false
+                                else -> false
+                            }
+                    }
+                    ?.key
+            }
         }
-    }
 
     override fun isComplicationDisplayPolicySupported() = iInteractiveWatchFace.apiVersion >= 8
 }
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/OverlayStyle.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/OverlayStyle.kt
index 0b1f55e..7091065 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/OverlayStyle.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/OverlayStyle.kt
@@ -31,9 +31,9 @@
     val backgroundColor: Color?,
 
     /**
-     * The background color of items rendered in the status indicator tray. If not `null` then
-     * this must be either [Color.BLACK] or [Color.WHITE]. If this is `null` then the system
-     * default will be used.
+     * The background color of items rendered in the status indicator tray. If not `null` then this
+     * must be either [Color.BLACK] or [Color.WHITE]. If this is `null` then the system default will
+     * be used.
      */
     val foregroundColor: Color?
 ) {
@@ -65,4 +65,4 @@
         return "OverlayStyle(backgroundColor=$backgroundColor, " +
             "foregroundColor=$foregroundColor)"
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceClientExperimental.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceClientExperimental.kt
index 66f5166..7693278 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceClientExperimental.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceClientExperimental.kt
@@ -16,8 +16,6 @@
 
 package androidx.wear.watchface.client
 
-@RequiresOptIn(
-    "This is an experimental API that may change or be removed without warning."
-)
+@RequiresOptIn("This is an experimental API that may change or be removed without warning.")
 @Retention(AnnotationRetention.BINARY)
 annotation class WatchFaceClientExperimental
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt
index 2bc3ba1..fad38e4 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt
@@ -29,8 +29,6 @@
 import androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy
 import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.complications.data.ComplicationType
-import androidx.wear.watchface.utility.AsyncTraceEvent
-import androidx.wear.watchface.utility.TraceEvent
 import androidx.wear.watchface.control.IInteractiveWatchFace
 import androidx.wear.watchface.control.IPendingInteractiveWatchFace
 import androidx.wear.watchface.control.IWatchFaceControlService
@@ -43,12 +41,14 @@
 import androidx.wear.watchface.data.WatchUiState
 import androidx.wear.watchface.style.UserStyleData
 import androidx.wear.watchface.style.data.UserStyleWireFormat
+import androidx.wear.watchface.utility.AsyncTraceEvent
+import androidx.wear.watchface.utility.TraceEvent
 import java.util.concurrent.Executor
 import java.util.function.Consumer
-import kotlinx.coroutines.CompletableDeferred
-import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlin.coroutines.resume
 import kotlin.coroutines.resumeWithException
+import kotlinx.coroutines.CompletableDeferred
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * Connects to a watch face's WatchFaceControlService which allows the user to control the watch
@@ -63,22 +63,23 @@
          *
          * @param context Calling application's [Context].
          * @param watchFacePackageName The name of the package containing the watch face control
-         * service to bind to.
+         *   service to bind to.
          * @return The [WatchFaceControlClient] if there is one.
          * @throws [ServiceNotBoundException] if the watch face control service can not be bound or
-         * a [ServiceStartFailureException] if the watch face dies during startup.
+         *   a [ServiceStartFailureException] if the watch face dies during startup.
          */
         @JvmStatic
         @Throws(ServiceNotBoundException::class, ServiceStartFailureException::class)
         public suspend fun createWatchFaceControlClient(
             context: Context,
             watchFacePackageName: String
-        ): WatchFaceControlClient = createWatchFaceControlClientImpl(
-            context,
-            Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE).apply {
-                setPackage(watchFacePackageName)
-            }
-        )
+        ): WatchFaceControlClient =
+            createWatchFaceControlClientImpl(
+                context,
+                Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE).apply {
+                    setPackage(watchFacePackageName)
+                }
+            )
 
         /** @hide */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -88,34 +89,29 @@
         ): WatchFaceControlClient {
             val deferredService = CompletableDeferred<IWatchFaceControlService>()
             val traceEvent = AsyncTraceEvent("WatchFaceControlClientImpl.bindService")
-            val serviceConnection = object : ServiceConnection {
-                override fun onServiceConnected(name: ComponentName, binder: IBinder) {
-                    traceEvent.close()
-                    deferredService.complete(IWatchFaceControlService.Stub.asInterface(binder))
-                }
+            val serviceConnection =
+                object : ServiceConnection {
+                    override fun onServiceConnected(name: ComponentName, binder: IBinder) {
+                        traceEvent.close()
+                        deferredService.complete(IWatchFaceControlService.Stub.asInterface(binder))
+                    }
 
-                override fun onServiceDisconnected(name: ComponentName?) {
-                    // Note if onServiceConnected is called first completeExceptionally will do
-                    // nothing because the CompletableDeferred is already completed.
-                    traceEvent.close()
-                    deferredService.completeExceptionally(ServiceStartFailureException())
+                    override fun onServiceDisconnected(name: ComponentName?) {
+                        // Note if onServiceConnected is called first completeExceptionally will do
+                        // nothing because the CompletableDeferred is already completed.
+                        traceEvent.close()
+                        deferredService.completeExceptionally(ServiceStartFailureException())
+                    }
                 }
-            }
             if (!BindHelper.bindService(context, intent, serviceConnection)) {
                 traceEvent.close()
                 throw ServiceNotBoundException()
             }
-            return WatchFaceControlClientImpl(
-                context,
-                deferredService.await(),
-                serviceConnection
-            )
+            return WatchFaceControlClientImpl(context, deferredService.await(), serviceConnection)
         }
     }
 
-    /**
-     * Exception thrown by [createWatchFaceControlClient] if the remote service can't be bound.
-     */
+    /** Exception thrown by [createWatchFaceControlClient] if the remote service can't be bound. */
     public class ServiceNotBoundException : Exception()
 
     /** Exception thrown by [WatchFaceControlClient] methods if the service dies during start up. */
@@ -129,7 +125,7 @@
      *
      * @param instanceId The name of the interactive watch face instance to retrieve
      * @return The [InteractiveWatchFaceClient] or `null` if [instanceId] is unrecognized, or
-     * [ServiceNotBoundException] if the WatchFaceControlService is not bound.
+     *   [ServiceNotBoundException] if the WatchFaceControlService is not bound.
      */
     @Throws(RemoteException::class)
     public fun getInteractiveWatchFaceClientInstance(
@@ -144,8 +140,8 @@
      * When finished call [HeadlessWatchFaceClient.close] to release resources.
      *
      * @param watchFaceName The [ComponentName] of the watch face to create a headless instance for
-     * must be in the same APK the WatchFaceControlClient is connected to. NB a single apk can
-     * contain multiple watch faces.
+     *   must be in the same APK the WatchFaceControlClient is connected to. NB a single apk can
+     *   contain multiple watch faces.
      * @param deviceConfig The hardware [DeviceConfig]
      * @param surfaceWidth The width of screen shots taken by the [HeadlessWatchFaceClient]
      * @param surfaceHeight The height of screen shots taken by the [HeadlessWatchFaceClient]
@@ -174,10 +170,10 @@
      * When finished call [HeadlessWatchFaceClient.close] to release resources.
      *
      * @param id The ID for the requested [HeadlessWatchFaceClient], will be exposed to the watch
-     * face via [androidx.wear.watchface.WatchState.watchFaceInstanceId].
+     *   face via [androidx.wear.watchface.WatchState.watchFaceInstanceId].
      * @param watchFaceName The [ComponentName] of the watch face to create a headless instance for
-     * must be in the same APK the WatchFaceControlClient is connected to. NB a single apk can
-     * contain multiple watch faces.
+     *   must be in the same APK the WatchFaceControlClient is connected to. NB a single apk can
+     *   contain multiple watch faces.
      * @param deviceConfig The hardware [DeviceConfig]
      * @param surfaceWidth The width of screen shots taken by the [HeadlessWatchFaceClient]
      * @param surfaceHeight The height of screen shots taken by the [HeadlessWatchFaceClient]
@@ -196,21 +192,21 @@
         createHeadlessWatchFaceClient(watchFaceName, deviceConfig, surfaceWidth, surfaceHeight)
 
     /**
-     * Requests either an existing [InteractiveWatchFaceClient] with the specified [id] or
-     * schedules creation of an [InteractiveWatchFaceClient] for the next time the
-     * WallpaperService creates an engine.
+     * Requests either an existing [InteractiveWatchFaceClient] with the specified [id] or schedules
+     * creation of an [InteractiveWatchFaceClient] for the next time the WallpaperService creates an
+     * engine.
      *
      * NOTE that currently only one [InteractiveWatchFaceClient] per process can exist at a time.
      *
-     * @param id The ID for the requested [InteractiveWatchFaceClient], will be exposed to the
-     * watch face via [androidx.wear.watchface.WatchState.watchFaceInstanceId].
+     * @param id The ID for the requested [InteractiveWatchFaceClient], will be exposed to the watch
+     *   face via [androidx.wear.watchface.WatchState.watchFaceInstanceId].
      * @param deviceConfig The [DeviceConfig] for the wearable.
      * @param watchUiState The initial [WatchUiState] for the wearable.
      * @param userStyle Optional [UserStyleData] to apply to the instance (whether or not it's
-     * created). If `null` then the pre-existing user style is preserved (if the instance is created
-     * this will be the [androidx.wear.watchface.style.UserStyleSchema]'s default).
+     *   created). If `null` then the pre-existing user style is preserved (if the instance is
+     *   created this will be the [androidx.wear.watchface.style.UserStyleSchema]'s default).
      * @param slotIdToComplicationData The initial [androidx.wear.watchface.ComplicationSlot] data,
-     * or `null` if unavailable.
+     *   or `null` if unavailable.
      * @return The [InteractiveWatchFaceClient], this should be closed when finished.
      * @throws [ServiceStartFailureException] if the watchface dies during startup.
      */
@@ -233,33 +229,32 @@
 
     /**
      * Requests either an existing [InteractiveWatchFaceClient] with the specified [instanceId] or
-     * schedules creation of an [InteractiveWatchFaceClient] for the next time the
-     * WallpaperService creates an engine.
+     * schedules creation of an [InteractiveWatchFaceClient] for the next time the WallpaperService
+     * creates an engine.
      *
      * NOTE that currently only one [InteractiveWatchFaceClient] per process can exist at a time.
      *
      * @param instanceId The ID for the requested [InteractiveWatchFaceClient], will be exposed to
-     * the watch face via [androidx.wear.watchface.WatchState.watchFaceInstanceId].
+     *   the watch face via [androidx.wear.watchface.WatchState.watchFaceInstanceId].
      * @param deviceConfig The [DeviceConfig] for the wearable.
      * @param watchUiState The initial [WatchUiState] for the wearable.
      * @param userStyle Optional [UserStyleData] to apply to the instance (whether or not it's
-     * created). If `null` then the pre-existing user style is preserved (if the instance is created
-     * this will be the [androidx.wear.watchface.style.UserStyleSchema]'s default).
+     *   created). If `null` then the pre-existing user style is preserved (if the instance is
+     *   created this will be the [androidx.wear.watchface.style.UserStyleSchema]'s default).
      * @param slotIdToComplicationData The initial [androidx.wear.watchface.ComplicationSlot] data,
-     * or `null` if unavailable.
+     *   or `null` if unavailable.
      * @param previewImageUpdateRequestedExecutor The [Executor] on which to run
-     * [previewImageUpdateRequestedListener] if the watch face calls
-     * [Renderer.sendPreviewImageNeedsUpdateRequest].
+     *   [previewImageUpdateRequestedListener] if the watch face calls
+     *   [Renderer.sendPreviewImageNeedsUpdateRequest].
      * @param previewImageUpdateRequestedListener The [Consumer] fires when the watch face calls
-     * [Renderer.sendPreviewImageNeedsUpdateRequest], indicating that it now looks visually
-     * different. The string passed to the [Consumer] is the ID of the watch face (see [instanceId]
-     * passed into [getOrCreateInteractiveWatchFaceClient]) requesting the update. This will usually
-     * match the current watch face but it could also be from a previous watch face if
-     * [InteractiveWatchFaceClient.updateWatchFaceInstance] is called shortly after
-     * [Renderer.sendPreviewImageNeedsUpdateRequest].
-     * The [Consumer] should Schedule creation of a headless instance to render a new preview image
-     * for the instanceId. This is likely an expensive operation and should be rate limited.
-     *
+     *   [Renderer.sendPreviewImageNeedsUpdateRequest], indicating that it now looks visually
+     *   different. The string passed to the [Consumer] is the ID of the watch face (see
+     *   [instanceId] passed into [getOrCreateInteractiveWatchFaceClient]) requesting the update.
+     *   This will usually match the current watch face but it could also be from a previous watch
+     *   face if [InteractiveWatchFaceClient.updateWatchFaceInstance] is called shortly after
+     *   [Renderer.sendPreviewImageNeedsUpdateRequest]. The [Consumer] should Schedule creation of a
+     *   headless instance to render a new preview image for the instanceId. This is likely an
+     *   expensive operation and should be rate limited.
      * @return The [InteractiveWatchFaceClient], this should be closed when finished.
      * @throws [ServiceStartFailureException] if the watchface dies during startup.
      */
@@ -273,16 +268,16 @@
         slotIdToComplicationData: Map<Int, ComplicationData>?,
         previewImageUpdateRequestedExecutor: Executor,
         previewImageUpdateRequestedListener: Consumer<String>
-    ): InteractiveWatchFaceClient = getOrCreateInteractiveWatchFaceClient(
-        instanceId,
-        deviceConfig,
-        watchUiState,
-        userStyle,
-        slotIdToComplicationData
-    )
+    ): InteractiveWatchFaceClient =
+        getOrCreateInteractiveWatchFaceClient(
+            instanceId,
+            deviceConfig,
+            watchUiState,
+            userStyle,
+            slotIdToComplicationData
+        )
 
-    @Throws(RemoteException::class)
-    public fun getEditorServiceClient(): EditorServiceClient
+    @Throws(RemoteException::class) public fun getEditorServiceClient(): EditorServiceClient
 
     /**
      * Returns a map of [androidx.wear.watchface.ComplicationSlot] id to the
@@ -292,8 +287,8 @@
      * watch face.
      *
      * @param watchFaceName The [ComponentName] of the watch face to obtain the map of
-     * [DefaultComplicationDataSourcePolicyAndType]s for. It must be in the same APK the
-     * WatchFaceControlClient is connected to. NB a single apk can contain multiple watch faces.
+     *   [DefaultComplicationDataSourcePolicyAndType]s for. It must be in the same APK the
+     *   WatchFaceControlClient is connected to. NB a single apk can contain multiple watch faces.
      */
     @Deprecated("Use the WatchFaceMetadataClient instead.")
     @Suppress("DEPRECATION") // DefaultComplicationDataSourcePolicyAndType
@@ -315,7 +310,7 @@
  * state of a [androidx.wear.watchface.ComplicationSlot].
  *
  * @param policy The [DefaultComplicationDataSourcePolicy] for the
- * [androidx.wear.watchface.ComplicationSlot].
+ *   [androidx.wear.watchface.ComplicationSlot].
  * @param type The default [ComplicationType] for the [androidx.wear.watchface.ComplicationSlot].
  */
 @Deprecated("Use the WatchFaceMetadataClient instead.")
@@ -343,7 +338,8 @@
     }
 }
 
-internal class WatchFaceControlClientImpl internal constructor(
+internal class WatchFaceControlClientImpl
+internal constructor(
     private val context: Context,
     private val service: IWatchFaceControlService,
     private val serviceConnection: ServiceConnection
@@ -354,15 +350,14 @@
         const val TAG = "WatchFaceControlClientImpl"
     }
 
-    override fun getInteractiveWatchFaceClientInstance(
-        instanceId: String
-    ) = service.getInteractiveWatchFaceInstance(instanceId)?.let {
-        InteractiveWatchFaceClientImpl(
-            it,
-            previewImageUpdateRequestedExecutor = null,
-            previewImageUpdateRequestedListener = null
-        )
-    }
+    override fun getInteractiveWatchFaceClientInstance(instanceId: String) =
+        service.getInteractiveWatchFaceInstance(instanceId)?.let {
+            InteractiveWatchFaceClientImpl(
+                it,
+                previewImageUpdateRequestedExecutor = null,
+                previewImageUpdateRequestedListener = null
+            )
+        }
 
     @Deprecated(
         "Creating a headless client without a watchface ID is deprecated",
@@ -375,22 +370,21 @@
         deviceConfig: DeviceConfig,
         surfaceWidth: Int,
         surfaceHeight: Int
-    ): HeadlessWatchFaceClient? = TraceEvent(
-        "WatchFaceControlClientImpl.createHeadlessWatchFaceClient"
-    ).use {
-        requireNotClosed()
-        return service.createHeadlessWatchFaceInstance(
-            HeadlessWatchFaceInstanceParams(
-                watchFaceName,
-                deviceConfig.asWireDeviceConfig(),
-                surfaceWidth,
-                surfaceHeight,
-                null
-            )
-        )?.let {
-            HeadlessWatchFaceClientImpl(it)
+    ): HeadlessWatchFaceClient? =
+        TraceEvent("WatchFaceControlClientImpl.createHeadlessWatchFaceClient").use {
+            requireNotClosed()
+            return service
+                .createHeadlessWatchFaceInstance(
+                    HeadlessWatchFaceInstanceParams(
+                        watchFaceName,
+                        deviceConfig.asWireDeviceConfig(),
+                        surfaceWidth,
+                        surfaceHeight,
+                        null
+                    )
+                )
+                ?.let { HeadlessWatchFaceClientImpl(it) }
         }
-    }
 
     override fun createHeadlessWatchFaceClient(
         id: String,
@@ -398,29 +392,30 @@
         deviceConfig: DeviceConfig,
         surfaceWidth: Int,
         surfaceHeight: Int
-    ): HeadlessWatchFaceClient? = TraceEvent(
-        "WatchFaceControlClientImpl.createHeadlessWatchFaceClient"
-    ).use {
-        requireNotClosed()
-        return service.createHeadlessWatchFaceInstance(
-            HeadlessWatchFaceInstanceParams(
-                watchFaceName,
-                deviceConfig.asWireDeviceConfig(),
-                surfaceWidth,
-                surfaceHeight,
-                id
-            )
-        )?.let {
-            HeadlessWatchFaceClientImpl(it)
+    ): HeadlessWatchFaceClient? =
+        TraceEvent("WatchFaceControlClientImpl.createHeadlessWatchFaceClient").use {
+            requireNotClosed()
+            return service
+                .createHeadlessWatchFaceInstance(
+                    HeadlessWatchFaceInstanceParams(
+                        watchFaceName,
+                        deviceConfig.asWireDeviceConfig(),
+                        surfaceWidth,
+                        surfaceHeight,
+                        id
+                    )
+                )
+                ?.let { HeadlessWatchFaceClientImpl(it) }
         }
-    }
 
     @Deprecated(
         "Use an overload that specifies Consumer<String>",
-        replaceWith = ReplaceWith(
-            "getOrCreateInteractiveWatchFaceClient(String, DeviceConfig, WatchUiState, " +
-                "UserStyleData?, Map<Int, ComplicationData>?, Executor, " +
-                "Consumer<String>)")
+        replaceWith =
+            ReplaceWith(
+                "getOrCreateInteractiveWatchFaceClient(String, DeviceConfig, WatchUiState, " +
+                    "UserStyleData?, Map<Int, ComplicationData>?, Executor, " +
+                    "Consumer<String>)"
+            )
     )
     override suspend fun getOrCreateInteractiveWatchFaceClient(
         id: String,
@@ -428,15 +423,16 @@
         watchUiState: androidx.wear.watchface.client.WatchUiState,
         userStyle: UserStyleData?,
         slotIdToComplicationData: Map<Int, ComplicationData>?
-    ): InteractiveWatchFaceClient = getOrCreateInteractiveWatchFaceClientImpl(
-        id,
-        deviceConfig,
-        watchUiState,
-        userStyle,
-        slotIdToComplicationData,
-        previewImageUpdateRequestedExecutor = null,
-        previewImageUpdateRequestedListener = null
-    )
+    ): InteractiveWatchFaceClient =
+        getOrCreateInteractiveWatchFaceClientImpl(
+            id,
+            deviceConfig,
+            watchUiState,
+            userStyle,
+            slotIdToComplicationData,
+            previewImageUpdateRequestedExecutor = null,
+            previewImageUpdateRequestedListener = null
+        )
 
     override suspend fun getOrCreateInteractiveWatchFaceClient(
         instanceId: String,
@@ -446,15 +442,16 @@
         slotIdToComplicationData: Map<Int, ComplicationData>?,
         previewImageUpdateRequestedExecutor: Executor,
         previewImageUpdateRequestedListener: Consumer<String>
-    ): InteractiveWatchFaceClient = getOrCreateInteractiveWatchFaceClientImpl(
-        instanceId,
-        deviceConfig,
-        watchUiState,
-        userStyle,
-        slotIdToComplicationData,
-        previewImageUpdateRequestedExecutor,
-        previewImageUpdateRequestedListener
-    )
+    ): InteractiveWatchFaceClient =
+        getOrCreateInteractiveWatchFaceClientImpl(
+            instanceId,
+            deviceConfig,
+            watchUiState,
+            userStyle,
+            slotIdToComplicationData,
+            previewImageUpdateRequestedExecutor,
+            previewImageUpdateRequestedListener
+        )
 
     private suspend fun getOrCreateInteractiveWatchFaceClientImpl(
         id: String,
@@ -466,84 +463,85 @@
         previewImageUpdateRequestedListener: Consumer<String>?
     ): InteractiveWatchFaceClient {
         requireNotClosed()
-        val traceEvent = AsyncTraceEvent(
-            "WatchFaceControlClientImpl" +
-                ".getOrCreateWallpaperServiceBackedInteractiveWatchFaceClientAsync"
-        )
+        val traceEvent =
+            AsyncTraceEvent(
+                "WatchFaceControlClientImpl" +
+                    ".getOrCreateWallpaperServiceBackedInteractiveWatchFaceClientAsync"
+            )
         return suspendCancellableCoroutine { continuation ->
             // [IWatchFaceControlService.getOrCreateInteractiveWatchFaceWCS] has an asynchronous
             // callback and it's possible the watch face might crash during start up so we register
             // a death observer.
-            val deathObserver = IBinder.DeathRecipient {
-                continuation.resumeWithException(
-                    WatchFaceControlClient.ServiceStartFailureException()
-                )
-            }
+            val deathObserver =
+                IBinder.DeathRecipient {
+                    continuation.resumeWithException(
+                        WatchFaceControlClient.ServiceStartFailureException()
+                    )
+                }
             val serviceBinder = service.asBinder()
             serviceBinder.linkToDeath(deathObserver, 0)
 
-            service.getOrCreateInteractiveWatchFace(
-                WallpaperInteractiveWatchFaceInstanceParams(
-                    id,
-                    androidx.wear.watchface.data.DeviceConfig(
-                        deviceConfig.hasLowBitAmbient,
-                        deviceConfig.hasBurnInProtection,
-                        deviceConfig.analogPreviewReferenceTimeMillis,
-                        deviceConfig.digitalPreviewReferenceTimeMillis
-                    ),
-                    WatchUiState(
-                        watchUiState.inAmbientMode,
-                        watchUiState.interruptionFilter
-                    ),
-                    userStyle?.toWireFormat() ?: UserStyleWireFormat(emptyMap()),
-                    slotIdToComplicationData?.map {
-                        IdAndComplicationDataWireFormat(
-                            it.key,
-                            it.value.asWireComplicationData()
-                        )
-                    },
-                    null,
-                    null
-                ),
-                object : IPendingInteractiveWatchFace.Stub() {
-                    override fun getApiVersion() = API_VERSION
-
-                    override fun onInteractiveWatchFaceCreated(
-                        iInteractiveWatchFace: IInteractiveWatchFace
-                    ) {
-                        safeUnlinkToDeath(serviceBinder, deathObserver)
-                        traceEvent.close()
-                        continuation.resume(
-                            InteractiveWatchFaceClientImpl(
-                                iInteractiveWatchFace,
-                                previewImageUpdateRequestedExecutor,
-                                previewImageUpdateRequestedListener
+            service
+                .getOrCreateInteractiveWatchFace(
+                    WallpaperInteractiveWatchFaceInstanceParams(
+                        id,
+                        androidx.wear.watchface.data.DeviceConfig(
+                            deviceConfig.hasLowBitAmbient,
+                            deviceConfig.hasBurnInProtection,
+                            deviceConfig.analogPreviewReferenceTimeMillis,
+                            deviceConfig.digitalPreviewReferenceTimeMillis
+                        ),
+                        WatchUiState(watchUiState.inAmbientMode, watchUiState.interruptionFilter),
+                        userStyle?.toWireFormat() ?: UserStyleWireFormat(emptyMap()),
+                        slotIdToComplicationData?.map {
+                            IdAndComplicationDataWireFormat(
+                                it.key,
+                                it.value.asWireComplicationData()
                             )
-                        )
-                    }
+                        },
+                        null,
+                        null
+                    ),
+                    object : IPendingInteractiveWatchFace.Stub() {
+                        override fun getApiVersion() = API_VERSION
 
-                    override fun onInteractiveWatchFaceCrashed(exception: CrashInfoParcel) {
-                        safeUnlinkToDeath(serviceBinder, deathObserver)
-                        traceEvent.close()
-                        continuation.resumeWithException(
-                            WatchFaceControlClient.ServiceStartFailureException(
-                                "Watchface crashed during init: $exception"
+                        override fun onInteractiveWatchFaceCreated(
+                            iInteractiveWatchFace: IInteractiveWatchFace
+                        ) {
+                            safeUnlinkToDeath(serviceBinder, deathObserver)
+                            traceEvent.close()
+                            continuation.resume(
+                                InteractiveWatchFaceClientImpl(
+                                    iInteractiveWatchFace,
+                                    previewImageUpdateRequestedExecutor,
+                                    previewImageUpdateRequestedListener
+                                )
                             )
-                        )
+                        }
+
+                        override fun onInteractiveWatchFaceCrashed(exception: CrashInfoParcel) {
+                            safeUnlinkToDeath(serviceBinder, deathObserver)
+                            traceEvent.close()
+                            continuation.resumeWithException(
+                                WatchFaceControlClient.ServiceStartFailureException(
+                                    "Watchface crashed during init: $exception"
+                                )
+                            )
+                        }
                     }
-                }
-            )?.let {
-                // There was an existing watchface.onInteractiveWatchFaceCreated
-                safeUnlinkToDeath(serviceBinder, deathObserver)
-                traceEvent.close()
-                continuation.resume(
-                    InteractiveWatchFaceClientImpl(
-                        it,
-                        previewImageUpdateRequestedExecutor,
-                        previewImageUpdateRequestedListener
-                    )
                 )
-            }
+                ?.let {
+                    // There was an existing watchface.onInteractiveWatchFaceCreated
+                    safeUnlinkToDeath(serviceBinder, deathObserver)
+                    traceEvent.close()
+                    continuation.resume(
+                        InteractiveWatchFaceClientImpl(
+                            it,
+                            previewImageUpdateRequestedExecutor,
+                            previewImageUpdateRequestedListener
+                        )
+                    )
+                }
         }
     }
 
@@ -556,75 +554,72 @@
         }
     }
 
-    override fun getEditorServiceClient(): EditorServiceClient = TraceEvent(
-        "WatchFaceControlClientImpl.getEditorServiceClient"
-    ).use {
-        requireNotClosed()
-        return EditorServiceClientImpl(service.editorService)
-    }
+    override fun getEditorServiceClient(): EditorServiceClient =
+        TraceEvent("WatchFaceControlClientImpl.getEditorServiceClient").use {
+            requireNotClosed()
+            return EditorServiceClientImpl(service.editorService)
+        }
 
     @Deprecated("Use the WatchFaceMetadataClient instead.")
     @Suppress("DEPRECATION") // DefaultComplicationDataSourcePolicyAndType
     override fun getDefaultComplicationDataSourcePoliciesAndType(
         watchFaceName: ComponentName
-    ): Map<Int, DefaultComplicationDataSourcePolicyAndType> = TraceEvent(
-        "WatchFaceControlClientImpl.getDefaultProviderPolicies"
-    ).use {
-        requireNotClosed()
-        if (service.apiVersion >= 2) {
-            // Fast path.
-            service.getDefaultProviderPolicies(DefaultProviderPoliciesParams(watchFaceName))
-                .associateBy(
-                    {
-                        it.id
-                    },
-                    {
-                        DefaultComplicationDataSourcePolicyAndType(
-                            DefaultComplicationDataSourcePolicy(
-                                it.defaultProvidersToTry ?: emptyList(),
-                                it.fallbackSystemProvider,
-                                ComplicationType.fromWireType(it.defaultProviderType),
-                                ComplicationType.fromWireType(it.defaultProviderType),
+    ): Map<Int, DefaultComplicationDataSourcePolicyAndType> =
+        TraceEvent("WatchFaceControlClientImpl.getDefaultProviderPolicies").use {
+            requireNotClosed()
+            if (service.apiVersion >= 2) {
+                // Fast path.
+                service
+                    .getDefaultProviderPolicies(DefaultProviderPoliciesParams(watchFaceName))
+                    .associateBy(
+                        { it.id },
+                        {
+                            DefaultComplicationDataSourcePolicyAndType(
+                                DefaultComplicationDataSourcePolicy(
+                                    it.defaultProvidersToTry ?: emptyList(),
+                                    it.fallbackSystemProvider,
+                                    ComplicationType.fromWireType(it.defaultProviderType),
+                                    ComplicationType.fromWireType(it.defaultProviderType),
+                                    ComplicationType.fromWireType(it.defaultProviderType)
+                                ),
                                 ComplicationType.fromWireType(it.defaultProviderType)
-                            ),
-                            ComplicationType.fromWireType(it.defaultProviderType)
+                            )
+                        }
+                    )
+            } else {
+                // Slow backwards compatible path.
+                val headlessClient =
+                    createHeadlessWatchFaceClient(
+                        "id",
+                        watchFaceName,
+                        DeviceConfig(false, false, 0, 0),
+                        1,
+                        1,
+                    )!!
+
+                // NB .use {} syntax doesn't compile here.
+                try {
+                    headlessClient.complicationSlotsState.mapValues {
+                        DefaultComplicationDataSourcePolicyAndType(
+                            it.value.defaultDataSourcePolicy,
+                            it.value.defaultDataSourceType
                         )
                     }
-                )
-        } else {
-            // Slow backwards compatible path.
-            val headlessClient = createHeadlessWatchFaceClient(
-                "id",
-                watchFaceName,
-                DeviceConfig(false, false, 0, 0),
-                1,
-                1,
-            )!!
-
-            // NB .use {} syntax doesn't compile here.
-            try {
-                headlessClient.complicationSlotsState.mapValues {
-                    DefaultComplicationDataSourcePolicyAndType(
-                        it.value.defaultDataSourcePolicy,
-                        it.value.defaultDataSourceType
-                    )
+                } finally {
+                    headlessClient.close()
                 }
-            } finally {
-                headlessClient.close()
             }
         }
-    }
 
     private fun requireNotClosed() {
-        require(!closed) {
-            "WatchFaceControlClient method called after close"
-        }
+        require(!closed) { "WatchFaceControlClient method called after close" }
     }
 
-    override fun close() = TraceEvent("WatchFaceControlClientImpl.close").use {
-        closed = true
-        context.unbindService(serviceConnection)
-    }
+    override fun close() =
+        TraceEvent("WatchFaceControlClientImpl.close").use {
+            closed = true
+            context.unbindService(serviceConnection)
+        }
 
     override fun hasComplicationDataCache(): Boolean {
         if (service.apiVersion < 4) {
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceException.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceException.kt
index 53d358a..0e1d605 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceException.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceException.kt
@@ -23,8 +23,6 @@
     try {
         task()
     } catch (e: RemoteException) {
-        if (Build.VERSION.SDK_INT >= 30)
-            throw Api30Helper.toRuntimeExpression(e)
-        else
-            throw RuntimeException(e)
+        if (Build.VERSION.SDK_INT >= 30) throw Api30Helper.toRuntimeExpression(e)
+        else throw RuntimeException(e)
     }
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceMetadataClient.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceMetadataClient.kt
index 7d66a64..ad6a215 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceMetadataClient.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceMetadataClient.kt
@@ -29,26 +29,26 @@
 import android.util.Log
 import androidx.annotation.RestrictTo
 import androidx.wear.watchface.BoundingArc
-import androidx.wear.watchface.complications.ComplicationSlotBounds
-import androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy
-import androidx.wear.watchface.complications.data.ComplicationType
-import androidx.wear.watchface.utility.AsyncTraceEvent
-import androidx.wear.watchface.utility.TraceEvent
-import androidx.wear.watchface.client.WatchFaceControlClient.Companion.createWatchFaceControlClient
-import androidx.wear.watchface.control.IWatchFaceControlService
-import androidx.wear.watchface.control.WatchFaceControlService
-import androidx.wear.watchface.control.data.GetComplicationSlotMetadataParams
-import androidx.wear.watchface.control.data.GetUserStyleSchemaParams
-import androidx.wear.watchface.control.data.HeadlessWatchFaceInstanceParams
 import androidx.wear.watchface.ComplicationSlotBoundsType
 import androidx.wear.watchface.WatchFaceService
 import androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition
+import androidx.wear.watchface.client.WatchFaceControlClient.Companion.createWatchFaceControlClient
+import androidx.wear.watchface.complications.ComplicationSlotBounds
+import androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy
 import androidx.wear.watchface.complications.data.ComplicationExperimental
+import androidx.wear.watchface.complications.data.ComplicationType
+import androidx.wear.watchface.control.IWatchFaceControlService
+import androidx.wear.watchface.control.WatchFaceControlService
+import androidx.wear.watchface.control.data.GetComplicationSlotMetadataParams
 import androidx.wear.watchface.control.data.GetUserStyleFlavorsParams
+import androidx.wear.watchface.control.data.GetUserStyleSchemaParams
+import androidx.wear.watchface.control.data.HeadlessWatchFaceInstanceParams
 import androidx.wear.watchface.style.UserStyleFlavors
 import androidx.wear.watchface.style.UserStyleSchema
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay
+import androidx.wear.watchface.utility.AsyncTraceEvent
+import androidx.wear.watchface.utility.TraceEvent
 import kotlinx.coroutines.CompletableDeferred
 
 /**
@@ -69,10 +69,10 @@
          * @param watchFaceName The [ComponentName] of the watch face to fetch meta data from.
          * @return The [WatchFaceMetadataClient] if there is one.
          * @throws [ServiceNotBoundException] if the underlying watch face control service can not
-         * be bound or a [ServiceStartFailureException] if the watch face dies during startup. If
-         * the service's manifest contains an
-         * androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition meta data node then
-         * [PackageManager.NameNotFoundException] is thrown if [watchFaceName] is invalid.
+         *   be bound or a [ServiceStartFailureException] if the watch face dies during startup. If
+         *   the service's manifest contains an
+         *   androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition meta data node then
+         *   [PackageManager.NameNotFoundException] is thrown if [watchFaceName] is invalid.
          */
         @Throws(
             ServiceNotBoundException::class,
@@ -108,26 +108,32 @@
             controlServicePackage: String,
             controlServiceName: String = ANDROIDX_WATCHFACE_CONTROL_SERVICE
         ): Boolean {
-            val controlServiceComponentName = ComponentName(
-                controlServicePackage,
-                controlServiceName)
-            val version = try {
-                context.packageManager.getServiceInfo(
-                    controlServiceComponentName,
-                    PackageManager.GET_META_DATA or PackageManager.MATCH_DISABLED_COMPONENTS
-                ).metaData.getInt(ANDROIDX_WATCHFACE_XML_VERSION, 0)
-            } catch (exception: PackageManager.NameNotFoundException) {
-                // WatchFaceControlService may be missing in case WF is built with
-                // pre-androidx watchface library.
-                return false
-            }
+            val controlServiceComponentName =
+                ComponentName(controlServicePackage, controlServiceName)
+            val version =
+                try {
+                    context.packageManager
+                        .getServiceInfo(
+                            controlServiceComponentName,
+                            PackageManager.GET_META_DATA or PackageManager.MATCH_DISABLED_COMPONENTS
+                        )
+                        .metaData
+                        .getInt(ANDROIDX_WATCHFACE_XML_VERSION, 0)
+                } catch (exception: PackageManager.NameNotFoundException) {
+                    // WatchFaceControlService may be missing in case WF is built with
+                    // pre-androidx watchface library.
+                    return false
+                }
 
-            val ourVersion = resources.getInteger(
-                androidx.wear.watchface.R.integer.watch_face_xml_version)
+            val ourVersion =
+                resources.getInteger(androidx.wear.watchface.R.integer.watch_face_xml_version)
 
             if (version > ourVersion) {
-                Log.w(TAG, "WatchFaceControlService version ($version) " +
-                    "of $controlServiceComponentName is higher than $ourVersion")
+                Log.w(
+                    TAG,
+                    "WatchFaceControlService version ($version) " +
+                        "of $controlServiceComponentName is higher than $ourVersion"
+                )
                 return false
             }
 
@@ -143,13 +149,12 @@
                 if (!isXmlVersionCompatible(context, context.resources, watchFaceName.packageName))
                     return null
 
-                return context.packageManager.getServiceInfo(
-                    watchFaceName,
-                    PackageManager.GET_META_DATA
-                ).loadXmlMetaData(
-                    context.packageManager,
-                    WatchFaceService.XML_WATCH_FACE_METADATA
-                )
+                return context.packageManager
+                    .getServiceInfo(watchFaceName, PackageManager.GET_META_DATA)
+                    .loadXmlMetaData(
+                        context.packageManager,
+                        WatchFaceService.XML_WATCH_FACE_METADATA
+                    )
             }
         }
 
@@ -177,19 +182,20 @@
 
             val deferredService = CompletableDeferred<IWatchFaceControlService>()
             val traceEvent = AsyncTraceEvent("WatchFaceMetadataClientImpl.bindService")
-            val serviceConnection = object : ServiceConnection {
-                override fun onServiceConnected(name: ComponentName, binder: IBinder) {
-                    traceEvent.close()
-                    deferredService.complete(IWatchFaceControlService.Stub.asInterface(binder))
-                }
+            val serviceConnection =
+                object : ServiceConnection {
+                    override fun onServiceConnected(name: ComponentName, binder: IBinder) {
+                        traceEvent.close()
+                        deferredService.complete(IWatchFaceControlService.Stub.asInterface(binder))
+                    }
 
-                override fun onServiceDisconnected(name: ComponentName?) {
-                    // Note if onServiceConnected is called first completeExceptionally will do
-                    // nothing because the CompletableDeferred is already completed.
-                    traceEvent.close()
-                    deferredService.completeExceptionally(ServiceStartFailureException())
+                    override fun onServiceDisconnected(name: ComponentName?) {
+                        // Note if onServiceConnected is called first completeExceptionally will do
+                        // nothing because the CompletableDeferred is already completed.
+                        traceEvent.close()
+                        deferredService.completeExceptionally(ServiceStartFailureException())
+                    }
                 }
-            }
             if (!BindHelper.bindService(context, intent, serviceConnection)) {
                 traceEvent.close()
                 throw ServiceNotBoundException()
@@ -203,9 +209,7 @@
         }
     }
 
-    /**
-     * Exception thrown by [createWatchFaceControlClient] if the remote service can't be bound.
-     */
+    /** Exception thrown by [createWatchFaceControlClient] if the remote service can't be bound. */
     public class ServiceNotBoundException : Exception()
 
     /** Exception thrown by [WatchFaceControlClient] methods if the service dies during start up. */
@@ -215,7 +219,7 @@
      * Returns the watch face's [UserStyleSchema].
      *
      * @throws [RuntimeException] if the watch face threw an exception while trying to service the
-     * request or there was a communication problem with watch face process.
+     *   request or there was a communication problem with watch face process.
      */
     public fun getUserStyleSchema(): UserStyleSchema
 
@@ -231,7 +235,7 @@
      * for each slot in the watch face's [androidx.wear.watchface.ComplicationSlotsManager].
      *
      * @throws [RuntimeException] if the watch face threw an exception while trying to service the
-     * request or there was a communication problem with watch face process.
+     *   request or there was a communication problem with watch face process.
      */
     public fun getComplicationSlotMetadataMap(): Map<Int, ComplicationSlotMetadata>
 
@@ -239,7 +243,7 @@
      * Returns the watch face's [UserStyleFlavors].
      *
      * @throws [RuntimeException] if the watch face threw an exception while trying to service the
-     * request or there was a communication problem with watch face process.
+     *   request or there was a communication problem with watch face process.
      */
     public fun getUserStyleFlavors(): UserStyleFlavors
 }
@@ -248,63 +252,58 @@
  * Static metadata for a [androidx.wear.watchface.ComplicationSlot].
  *
  * @property bounds The complication slot's [ComplicationSlotBounds]. Only non `null` for watch
- * faces with a new enough [androidx.wear.watchface.control.WatchFaceControlService].
+ *   faces with a new enough [androidx.wear.watchface.control.WatchFaceControlService].
  * @property boundsType The [ComplicationSlotBoundsType] of the complication slot.
  * @property supportedTypes The list of [ComplicationType]s accepted by this complication slot. Used
- * during complication data source selection, this list should be non-empty.
+ *   during complication data source selection, this list should be non-empty.
  * @property defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] which controls the
- * initial complication data source when the watch face is first installed.
+ *   initial complication data source when the watch face is first installed.
  * @property isInitiallyEnabled At creation a complication slot is either enabled or disabled. This
- * can be overridden by a [ComplicationSlotsUserStyleSetting] (see
- * [ComplicationSlotOverlay.enabled]).
- * Editors need to know the initial state of a complication slot to predict the effects of making a
- * style change.
- * @property fixedComplicationDataSource  Whether or not the complication slot's complication data
- * source is fixed (i.e. can't be changed by the user). This is useful for watch faces built
- * around specific complication  complication data sources.
+ *   can be overridden by a [ComplicationSlotsUserStyleSetting] (see
+ *   [ComplicationSlotOverlay.enabled]). Editors need to know the initial state of a complication
+ *   slot to predict the effects of making a style change.
+ * @property fixedComplicationDataSource Whether or not the complication slot's complication data
+ *   source is fixed (i.e. can't be changed by the user). This is useful for watch faces built
+ *   around specific complication complication data sources.
  * @property complicationConfigExtras Extras to be merged into the Intent sent when invoking the
- * complication data source chooser activity.
+ *   complication data source chooser activity.
  */
 public class ComplicationSlotMetadata
-@ComplicationExperimental constructor(
+@ComplicationExperimental
+constructor(
     public val bounds: ComplicationSlotBounds?,
     @ComplicationSlotBoundsType public val boundsType: Int,
     public val supportedTypes: List<ComplicationType>,
     public val defaultDataSourcePolicy: DefaultComplicationDataSourcePolicy,
-    @get:JvmName("isInitiallyEnabled")
-    public val isInitiallyEnabled: Boolean,
+    @get:JvmName("isInitiallyEnabled") public val isInitiallyEnabled: Boolean,
     public val fixedComplicationDataSource: Boolean,
     public val complicationConfigExtras: Bundle,
     private val boundingArc: BoundingArc?
 ) {
-    /**
-     * The optional [BoundingArc] for an edge complication if specified, or `null` otherwise.
-     */
+    /** The optional [BoundingArc] for an edge complication if specified, or `null` otherwise. */
     // TODO(b/230364881): Make this a normal primary constructor property when BoundingArc is no
     // longer experimental.
-    @ComplicationExperimental
-    public fun getBoundingArc(): BoundingArc? = boundingArc
+    @ComplicationExperimental public fun getBoundingArc(): BoundingArc? = boundingArc
 
     /**
      * Constructs a [ComplicationSlotMetadata].
      *
-     * @param bounds The complication slot's [ComplicationSlotBounds]. Only non `null` for watch faces
-     * with a new enough [androidx.wear.watchface.control.WatchFaceControlService].
+     * @param bounds The complication slot's [ComplicationSlotBounds]. Only non `null` for watch
+     *   faces with a new enough [androidx.wear.watchface.control.WatchFaceControlService].
      * @param boundsType The [ComplicationSlotBoundsType] of the complication slot.
-     * @param supportedTypes The list of [ComplicationType]s accepted by this complication slot. Used
-     * during complication data source selection, this list should be non-empty.
+     * @param supportedTypes The list of [ComplicationType]s accepted by this complication slot.
+     *   Used during complication data source selection, this list should be non-empty.
      * @param defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] which controls the
-     * initial complication data source when the watch face is first installed.
+     *   initial complication data source when the watch face is first installed.
      * @param isInitiallyEnabled At creation a complication slot is either enabled or disabled. This
-     * can be overridden by a [ComplicationSlotsUserStyleSetting] (see
-     * [ComplicationSlotOverlay.enabled]).
-     * Editors need to know the initial state of a complication slot to predict the effects of making a
-     * style change.
-     * @param fixedComplicationDataSource  Whether or not the complication slot's complication data
-     * source is fixed (i.e. can't be changed by the user). This is useful for watch faces built
-     * around specific complication  complication data sources.
+     *   can be overridden by a [ComplicationSlotsUserStyleSetting] (see
+     *   [ComplicationSlotOverlay.enabled]). Editors need to know the initial state of a
+     *   complication slot to predict the effects of making a style change.
+     * @param fixedComplicationDataSource Whether or not the complication slot's complication data
+     *   source is fixed (i.e. can't be changed by the user). This is useful for watch faces built
+     *   around specific complication complication data sources.
      * @param complicationConfigExtras Extras to be merged into the Intent sent when invoking the
-     * complication data source chooser activity.
+     *   complication data source chooser activity.
      */
     // TODO(b/230364881): Deprecate when BoundingArc is no longer experimental.
     @OptIn(ComplicationExperimental::class)
@@ -328,7 +327,8 @@
     )
 }
 
-internal class WatchFaceMetadataClientImpl internal constructor(
+internal class WatchFaceMetadataClientImpl
+internal constructor(
     private val context: Context,
     private val service: IWatchFaceControlService,
     private val serviceConnection: ServiceConnection,
@@ -336,47 +336,42 @@
 ) : WatchFaceMetadataClient {
     private var closed = false
     private val headlessClientDelegate = lazy {
-        createHeadlessWatchFaceClient(
-            watchFaceName
-        ) ?: throw WatchFaceMetadataClient.ServiceStartFailureException(
-            "Could not open headless client for ${watchFaceName.flattenToString()}"
-        )
+        createHeadlessWatchFaceClient(watchFaceName)
+            ?: throw WatchFaceMetadataClient.ServiceStartFailureException(
+                "Could not open headless client for ${watchFaceName.flattenToString()}"
+            )
     }
     private val headlessClient by headlessClientDelegate
 
     private fun createHeadlessWatchFaceClient(
         watchFaceName: ComponentName
-    ): HeadlessWatchFaceClient? = TraceEvent(
-        "WatchFaceMetadataClientImpl.createHeadlessWatchFaceClient"
-    ).use {
-        requireNotClosed()
-        return service.createHeadlessWatchFaceInstance(
-            HeadlessWatchFaceInstanceParams(
-                watchFaceName,
-                androidx.wear.watchface.data.DeviceConfig(false, false, 0, 0),
-                1,
-                1,
-                null
-            )
-        )?.let {
-            HeadlessWatchFaceClientImpl(it)
+    ): HeadlessWatchFaceClient? =
+        TraceEvent("WatchFaceMetadataClientImpl.createHeadlessWatchFaceClient").use {
+            requireNotClosed()
+            return service
+                .createHeadlessWatchFaceInstance(
+                    HeadlessWatchFaceInstanceParams(
+                        watchFaceName,
+                        androidx.wear.watchface.data.DeviceConfig(false, false, 0, 0),
+                        1,
+                        1,
+                        null
+                    )
+                )
+                ?.let { HeadlessWatchFaceClientImpl(it) }
         }
-    }
 
     private fun requireNotClosed() {
-        require(!closed) {
-            "WatchFaceMetadataClient method called after close"
-        }
+        require(!closed) { "WatchFaceMetadataClient method called after close" }
     }
 
-    override fun getUserStyleSchema(): UserStyleSchema =
-        callRemote {
-            if (service.apiVersion >= 3) {
-                UserStyleSchema(service.getUserStyleSchema(GetUserStyleSchemaParams(watchFaceName)))
-            } else {
-                headlessClient.userStyleSchema
-            }
+    override fun getUserStyleSchema(): UserStyleSchema = callRemote {
+        if (service.apiVersion >= 3) {
+            UserStyleSchema(service.getUserStyleSchema(GetUserStyleSchemaParams(watchFaceName)))
+        } else {
+            headlessClient.userStyleSchema
         }
+    }
 
     override val isUserStyleSchemaStatic: Boolean
         get() = false
@@ -386,9 +381,10 @@
         requireNotClosed()
         return callRemote {
             if (service.apiVersion >= 3) {
-                val wireFormat = service.getComplicationSlotMetadata(
-                    GetComplicationSlotMetadataParams(watchFaceName)
-                )
+                val wireFormat =
+                    service.getComplicationSlotMetadata(
+                        GetComplicationSlotMetadataParams(watchFaceName)
+                    )
                 wireFormat.associateBy(
                     { it.id },
                     {
@@ -409,12 +405,8 @@
                             DefaultComplicationDataSourcePolicy(
                                 it.defaultDataSourcesToTry ?: emptyList(),
                                 it.fallbackSystemDataSource,
-                                ComplicationType.fromWireType(
-                                    it.primaryDataSourceDefaultType
-                                ),
-                                ComplicationType.fromWireType(
-                                    it.secondaryDataSourceDefaultType
-                                ),
+                                ComplicationType.fromWireType(it.primaryDataSourceDefaultType),
+                                ComplicationType.fromWireType(it.secondaryDataSourceDefaultType),
                                 ComplicationType.fromWireType(it.defaultDataSourceType)
                             ),
                             it.isInitiallyEnabled,
@@ -445,23 +437,20 @@
 
     override fun getUserStyleFlavors(): UserStyleFlavors = callRemote {
         if (service.apiVersion >= 5) {
-            UserStyleFlavors(
-                service.getUserStyleFlavors(
-                    GetUserStyleFlavorsParams(watchFaceName)
-                )
-            )
+            UserStyleFlavors(service.getUserStyleFlavors(GetUserStyleFlavorsParams(watchFaceName)))
         } else {
             UserStyleFlavors()
         }
     }
 
-    override fun close() = TraceEvent("WatchFaceMetadataClientImpl.close").use {
-        closed = true
-        if (headlessClientDelegate.isInitialized()) {
-            headlessClient.close()
+    override fun close() =
+        TraceEvent("WatchFaceMetadataClientImpl.close").use {
+            closed = true
+            if (headlessClientDelegate.isInitialized()) {
+                headlessClient.close()
+            }
+            context.unbindService(serviceConnection)
         }
-        context.unbindService(serviceConnection)
-    }
 }
 
 internal class XmlWatchFaceMetadataClientImpl(
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchUiState.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchUiState.kt
index 3975627..0e35f45 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchUiState.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchUiState.kt
@@ -21,16 +21,18 @@
 
 /**
  * The InterruptionFilter.
+ *
  * @hide
  */
 @IntDef(
-    value = [
-        NotificationManager.INTERRUPTION_FILTER_ALARMS,
-        NotificationManager.INTERRUPTION_FILTER_ALL,
-        NotificationManager.INTERRUPTION_FILTER_NONE,
-        NotificationManager.INTERRUPTION_FILTER_PRIORITY,
-        NotificationManager.INTERRUPTION_FILTER_UNKNOWN
-    ]
+    value =
+        [
+            NotificationManager.INTERRUPTION_FILTER_ALARMS,
+            NotificationManager.INTERRUPTION_FILTER_ALL,
+            NotificationManager.INTERRUPTION_FILTER_NONE,
+            NotificationManager.INTERRUPTION_FILTER_PRIORITY,
+            NotificationManager.INTERRUPTION_FILTER_UNKNOWN
+        ]
 )
 public annotation class InterruptionFilter
 
@@ -39,19 +41,15 @@
  *
  * @param inAmbientMode Whether the device is is ambient mode or not.
  * @param interruptionFilter The interruption filter defines which notifications are allowed to
- * interrupt the user. For watch faces this value is one of:
- * [NotificationManager.INTERRUPTION_FILTER_ALARMS],
- * [NotificationManager.INTERRUPTION_FILTER_ALL],
- * [NotificationManager.INTERRUPTION_FILTER_NONE],
- * [NotificationManager.INTERRUPTION_FILTER_PRIORITY],
- * [NotificationManager.INTERRUPTION_FILTER_UNKNOWN]. @see [NotificationManager] for more details.
+ *   interrupt the user. For watch faces this value is one of:
+ *   [NotificationManager.INTERRUPTION_FILTER_ALARMS],
+ *   [NotificationManager.INTERRUPTION_FILTER_ALL], [NotificationManager.INTERRUPTION_FILTER_NONE],
+ *   [NotificationManager.INTERRUPTION_FILTER_PRIORITY],
+ *   [NotificationManager.INTERRUPTION_FILTER_UNKNOWN]. @see [NotificationManager] for more details.
  */
 public class WatchUiState(
-    @get:JvmName("inAmbientMode")
-    public val inAmbientMode: Boolean,
-
-    @InterruptionFilter
-    public val interruptionFilter: Int
+    @get:JvmName("inAmbientMode") public val inAmbientMode: Boolean,
+    @InterruptionFilter public val interruptionFilter: Int
 ) {
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
@@ -74,4 +72,4 @@
     override fun toString(): String {
         return "WatchUiState(inAmbientMode=$inAmbientMode, interruptionFilter=$interruptionFilter)"
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/InteractiveWatchFaceClientTest.kt b/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/InteractiveWatchFaceClientTest.kt
index 931ae1f..e880a88 100644
--- a/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/InteractiveWatchFaceClientTest.kt
+++ b/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/InteractiveWatchFaceClientTest.kt
@@ -18,13 +18,13 @@
 
 import android.os.IBinder
 import androidx.wear.watchface.control.IInteractiveWatchFace
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mockito.`when`
 import org.mockito.kotlin.any
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.Mockito.`when`
 
 @RunWith(ClientTestRunner::class)
 class InteractiveWatchFaceClientTest {
@@ -37,11 +37,12 @@
 
     @Test
     public fun sendDisconnectNotification() {
-        val client = InteractiveWatchFaceClientImpl(
-            iInteractiveWatchFace,
-            previewImageUpdateRequestedExecutor = null,
-            previewImageUpdateRequestedListener = null
-        )
+        val client =
+            InteractiveWatchFaceClientImpl(
+                iInteractiveWatchFace,
+                previewImageUpdateRequestedExecutor = null,
+                previewImageUpdateRequestedListener = null
+            )
 
         val listener = mock<InteractiveWatchFaceClient.ClientDisconnectListener>()
         client.addClientDisconnectListener(listener, { it.run() })
@@ -53,4 +54,4 @@
         // But only one should be sent to the listener.
         verify(listener, times(1)).onClientDisconnected(any())
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/JavaCompatTest.java b/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/JavaCompatTest.java
index 1270b7b..b0688cf 100644
--- a/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/JavaCompatTest.java
+++ b/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/JavaCompatTest.java
@@ -18,8 +18,8 @@
 
 /** Tests that Java interfaces implementing kotlin interfaces with defaults compile. */
 public class JavaCompatTest {
-    class ClientDisconnectListenerImpl implements
-            InteractiveWatchFaceClient.ClientDisconnectListener {
+    class ClientDisconnectListenerImpl
+            implements InteractiveWatchFaceClient.ClientDisconnectListener {
         @Override
         @SuppressWarnings("deprecation")
         public void onClientDisconnected() {}
diff --git a/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/WatchFaceIdTest.kt b/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/WatchFaceIdTest.kt
index c6c137e..cd92cc3 100644
--- a/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/WatchFaceIdTest.kt
+++ b/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/WatchFaceIdTest.kt
@@ -18,18 +18,16 @@
 
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
-import org.robolectric.RobolectricTestRunner
-import org.robolectric.internal.bytecode.InstrumentationConfiguration
 import org.junit.runner.RunWith
 import org.junit.runners.model.FrameworkMethod
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.internal.bytecode.InstrumentationConfiguration
 
 // Without this we get test failures with an error:
 // "failed to access class kotlin.jvm.internal.DefaultConstructorMarker".
 public class ClientTestRunner(testClass: Class<*>) : RobolectricTestRunner(testClass) {
     override fun createClassLoaderConfig(method: FrameworkMethod): InstrumentationConfiguration =
-        InstrumentationConfiguration.Builder(
-            super.createClassLoaderConfig(method)
-        )
+        InstrumentationConfiguration.Builder(super.createClassLoaderConfig(method))
             .doNotInstrumentPackage("androidx.wear.watchface.client")
             .build()
 }
@@ -57,4 +55,4 @@
         assertThat(a1.hashCode()).isEqualTo(a2.hashCode())
         assertThat(a1.hashCode()).isNotEqualTo(b1.hashCode())
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/WatchFaceMetadataClientTest.kt b/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/WatchFaceMetadataClientTest.kt
index 43ff4bc..6ba9d7a 100644
--- a/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/WatchFaceMetadataClientTest.kt
+++ b/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/WatchFaceMetadataClientTest.kt
@@ -28,11 +28,11 @@
 import androidx.wear.watchface.control.IWatchFaceControlService
 import androidx.wear.watchface.data.ComplicationSlotMetadataWireFormat
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.any
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.kotlin.mock
 import org.mockito.Mockito.`when`
+import org.mockito.kotlin.any
+import org.mockito.kotlin.mock
 
 @RunWith(ClientTestRunner::class)
 class WatchFaceMetadataClientTest {
@@ -49,47 +49,47 @@
         val longTextBounds = RectF(0.1f, 0.3f, 0.9f, 0.5f)
 
         // Return a ComplicationSlotMetadataWireFormat with partial complicationBounds
-        `when`(mockService.getComplicationSlotMetadata(any())).thenReturn(
-            arrayOf(
-                ComplicationSlotMetadataWireFormat(
-                    id,
-                    intArrayOf(
+        `when`(mockService.getComplicationSlotMetadata(any()))
+            .thenReturn(
+                arrayOf(
+                    ComplicationSlotMetadataWireFormat(
+                        id,
+                        intArrayOf(
+                            ComplicationType.SHORT_TEXT.toWireComplicationType(),
+                            ComplicationType.LONG_TEXT.toWireComplicationType()
+                        ),
+                        arrayOf(shortTextBounds, longTextBounds),
+                        ComplicationSlotBoundsType.ROUND_RECT,
+                        intArrayOf(ComplicationType.SHORT_TEXT.toWireComplicationType()),
+                        emptyList(),
+                        SystemDataSources.DATA_SOURCE_DATE,
                         ComplicationType.SHORT_TEXT.toWireComplicationType(),
-                        ComplicationType.LONG_TEXT.toWireComplicationType()
-                    ),
-                    arrayOf(shortTextBounds, longTextBounds),
-                    ComplicationSlotBoundsType.ROUND_RECT,
-                    intArrayOf(ComplicationType.SHORT_TEXT.toWireComplicationType()),
-                    emptyList(),
-                    SystemDataSources.DATA_SOURCE_DATE,
-                    ComplicationType.SHORT_TEXT.toWireComplicationType(),
-                    ComplicationType.SHORT_TEXT.toWireComplicationType(),
-                    ComplicationType.SHORT_TEXT.toWireComplicationType(),
-                    false,
-                    false,
-                    Bundle()
+                        ComplicationType.SHORT_TEXT.toWireComplicationType(),
+                        ComplicationType.SHORT_TEXT.toWireComplicationType(),
+                        false,
+                        false,
+                        Bundle()
+                    )
                 )
             )
-        )
 
-        val client = WatchFaceMetadataClientImpl(
-            ApplicationProvider.getApplicationContext<Context>(),
-            mockService,
-            mockServiceConnection,
-            watchFaceName
-        )
+        val client =
+            WatchFaceMetadataClientImpl(
+                ApplicationProvider.getApplicationContext<Context>(),
+                mockService,
+                mockServiceConnection,
+                watchFaceName
+            )
 
         // This should not crash.
         val map = client.getComplicationSlotMetadataMap()
 
         // SHORT_TEXT and LONG_TEXT should match the input
-        assertThat(
-            map[id]!!.bounds!!.perComplicationTypeBounds[ComplicationType.SHORT_TEXT]
-        ).isEqualTo(shortTextBounds)
+        assertThat(map[id]!!.bounds!!.perComplicationTypeBounds[ComplicationType.SHORT_TEXT])
+            .isEqualTo(shortTextBounds)
 
-        assertThat(
-            map[id]!!.bounds!!.perComplicationTypeBounds[ComplicationType.LONG_TEXT]
-        ).isEqualTo(longTextBounds)
+        assertThat(map[id]!!.bounds!!.perComplicationTypeBounds[ComplicationType.LONG_TEXT])
+            .isEqualTo(longTextBounds)
 
         // All other types should have been backfilled with an empty rect.
         for (type in ComplicationType.values()) {
@@ -98,4 +98,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data-source-ktx/src/main/java/androidx/wear/watchface/complications/datasource/SuspendingComplicationDataSourceService.kt b/wear/watchface/watchface-complications-data-source-ktx/src/main/java/androidx/wear/watchface/complications/datasource/SuspendingComplicationDataSourceService.kt
index 653f26d..5395624 100644
--- a/wear/watchface/watchface-complications-data-source-ktx/src/main/java/androidx/wear/watchface/complications/datasource/SuspendingComplicationDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-ktx/src/main/java/androidx/wear/watchface/complications/datasource/SuspendingComplicationDataSourceService.kt
@@ -24,9 +24,7 @@
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.launch
 
-/**
- * Kotlin coroutine wrapper for [ComplicationDataSourceService] producing [ComplicationData].
- */
+/** Kotlin coroutine wrapper for [ComplicationDataSourceService] producing [ComplicationData]. */
 public abstract class SuspendingComplicationDataSourceService : ComplicationDataSourceService() {
     private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate)
 
@@ -34,9 +32,7 @@
         request: ComplicationRequest,
         listener: ComplicationRequestListener
     ) {
-        scope.launch {
-            listener.onComplicationData(onComplicationRequest(request))
-        }
+        scope.launch { listener.onComplicationData(onComplicationRequest(request)) }
     }
 
     /**
@@ -44,8 +40,8 @@
      *
      * The [ComplicationData] returned from this method will be passed to the
      * [ComplicationDataSourceService.ComplicationRequestListener] provided to
-     * [onComplicationRequest].
-     * Return `null` to indicate that the previous complication data shouldn't be overwritten.
+     * [onComplicationRequest]. Return `null` to indicate that the previous complication data
+     * shouldn't be overwritten.
      *
      * @see ComplicationDataSourceService.onComplicationRequest
      * @see ComplicationDataSourceService.ComplicationRequestListener.onComplicationData
@@ -63,17 +59,15 @@
  * Kotlin coroutine wrapper for [ComplicationDataSourceService] producing
  * [ComplicationDataTimeline].
  */
-public abstract class
-SuspendingTimelineComplicationDataSourceService : ComplicationDataSourceService() {
+public abstract class SuspendingTimelineComplicationDataSourceService :
+    ComplicationDataSourceService() {
     private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate)
 
     final override fun onComplicationRequest(
         request: ComplicationRequest,
         listener: ComplicationRequestListener
     ) {
-        scope.launch {
-            listener.onComplicationDataTimeline(onComplicationRequest(request))
-        }
+        scope.launch { listener.onComplicationDataTimeline(onComplicationRequest(request)) }
     }
 
     /**
@@ -81,9 +75,8 @@
      *
      * The [ComplicationDataTimeline] returned from this method will be passed to the
      * [ComplicationDataSourceService.ComplicationRequestListener] provided to
-     * [onComplicationRequest].
-     * Return `null` to indicate that the previous complication data timeline shouldn't be
-     * overwritten.
+     * [onComplicationRequest]. Return `null` to indicate that the previous complication data
+     * timeline shouldn't be overwritten.
      *
      * @see ComplicationDataSourceService.onComplicationRequest
      * @see ComplicationDataSourceService.ComplicationRequestListener.onComplicationData
@@ -97,4 +90,4 @@
         super.onDestroy()
         scope.cancel()
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data-source-ktx/src/test/java/androidx/wear/watchface/complications/datasource/SuspendingComplicationDataSourceServiceTest.kt b/wear/watchface/watchface-complications-data-source-ktx/src/test/java/androidx/wear/watchface/complications/datasource/SuspendingComplicationDataSourceServiceTest.kt
index d1f7af5..5b31578 100644
--- a/wear/watchface/watchface-complications-data-source-ktx/src/test/java/androidx/wear/watchface/complications/datasource/SuspendingComplicationDataSourceServiceTest.kt
+++ b/wear/watchface/watchface-complications-data-source-ktx/src/test/java/androidx/wear/watchface/complications/datasource/SuspendingComplicationDataSourceServiceTest.kt
@@ -24,35 +24,38 @@
 import androidx.wear.watchface.complications.data.PlainComplicationText
 import androidx.wear.watchface.complications.data.ShortTextComplicationData
 import com.google.common.truth.Truth.assertThat
+import java.time.Instant
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.model.FrameworkMethod
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.annotation.internal.DoNotInstrument
 import org.robolectric.internal.bytecode.InstrumentationConfiguration
-import java.time.Instant
 
 class TestService : SuspendingComplicationDataSourceService() {
     override suspend fun onComplicationRequest(request: ComplicationRequest) =
         ShortTextComplicationData.Builder(
-            PlainComplicationText.Builder("Complication").build(),
-            ComplicationText.EMPTY
-        ).build()
+                PlainComplicationText.Builder("Complication").build(),
+                ComplicationText.EMPTY
+            )
+            .build()
 
     override fun getPreviewData(type: ComplicationType) =
         ShortTextComplicationData.Builder(
-            PlainComplicationText.Builder("Preview").build(),
-            ComplicationText.EMPTY
-        ).build()
+                PlainComplicationText.Builder("Preview").build(),
+                ComplicationText.EMPTY
+            )
+            .build()
 }
 
 class TestTimelineService : SuspendingTimelineComplicationDataSourceService() {
     override suspend fun onComplicationRequest(request: ComplicationRequest) =
         ComplicationDataTimeline(
             ShortTextComplicationData.Builder(
-                PlainComplicationText.Builder("Default").build(),
-                ComplicationText.EMPTY
-            ).build(),
+                    PlainComplicationText.Builder("Default").build(),
+                    ComplicationText.EMPTY
+                )
+                .build(),
             listOf(
                 TimelineEntry(
                     TimeInterval(
@@ -60,21 +63,23 @@
                         Instant.ofEpochSecond(100001000)
                     ),
                     ShortTextComplicationData.Builder(
-                        PlainComplicationText.Builder("Override").build(),
-                        ComplicationText.EMPTY
-                    ).build()
+                            PlainComplicationText.Builder("Override").build(),
+                            ComplicationText.EMPTY
+                        )
+                        .build()
                 )
             )
         )
 
     override fun getPreviewData(type: ComplicationType) =
         ShortTextComplicationData.Builder(
-            PlainComplicationText.Builder("Preview").build(),
-            ComplicationText.EMPTY
-        ).build()
+                PlainComplicationText.Builder("Preview").build(),
+                ComplicationText.EMPTY
+            )
+            .build()
 }
 
-/** Needed to prevent Robolectric from instrumenting various classes.  */
+/** Needed to prevent Robolectric from instrumenting various classes. */
 class ComplicationsTestRunner(clazz: Class<*>?) : RobolectricTestRunner(clazz) {
     override fun createClassLoaderConfig(method: FrameworkMethod): InstrumentationConfiguration {
         return InstrumentationConfiguration.Builder(super.createClassLoaderConfig(method))
@@ -107,9 +112,8 @@
             }
         )
 
-        assertThat(
-            (result as ShortTextComplicationData).text.getTextAt(resources, Instant.EPOCH)
-        ).isEqualTo("Complication")
+        assertThat((result as ShortTextComplicationData).text.getTextAt(resources, Instant.EPOCH))
+            .isEqualTo("Complication")
     }
 
     @Test
@@ -120,7 +124,7 @@
         testService.onComplicationRequest(
             ComplicationRequest(123, ComplicationType.SMALL_IMAGE, false),
             object : ComplicationDataSourceService.ComplicationRequestListener {
-                override fun onComplicationData(complicationData: ComplicationData?) { }
+                override fun onComplicationData(complicationData: ComplicationData?) {}
 
                 override fun onComplicationDataTimeline(
                     complicationDataTimeline: ComplicationDataTimeline?
@@ -131,17 +135,21 @@
         )
 
         assertThat(
-            (result.defaultComplicationData as ShortTextComplicationData)
-                .text.getTextAt(resources, Instant.EPOCH)
-        ).isEqualTo("Default")
+                (result.defaultComplicationData as ShortTextComplicationData)
+                    .text
+                    .getTextAt(resources, Instant.EPOCH)
+            )
+            .isEqualTo("Default")
 
         val timelineEntry = result.timelineEntries.toTypedArray()[0]
         assertThat(timelineEntry.validity.start).isEqualTo(Instant.ofEpochSecond(100000000))
         assertThat(timelineEntry.validity.end).isEqualTo(Instant.ofEpochSecond(100001000))
         assertThat(
-            (timelineEntry.complicationData as ShortTextComplicationData)
-                .text.getTextAt(resources, Instant.EPOCH)
-        ).isEqualTo("Override")
+                (timelineEntry.complicationData as ShortTextComplicationData)
+                    .text
+                    .getTextAt(resources, Instant.EPOCH)
+            )
+            .isEqualTo("Override")
     }
 
     @Test
@@ -149,10 +157,14 @@
         val testService = TestService()
 
         assertThat(
-            testService.getPreviewData(ComplicationType.SMALL_IMAGE).text.getTextAt(
-                ApplicationProvider.getApplicationContext<Context>().resources,
-                Instant.EPOCH
+                testService
+                    .getPreviewData(ComplicationType.SMALL_IMAGE)
+                    .text
+                    .getTextAt(
+                        ApplicationProvider.getApplicationContext<Context>().resources,
+                        Instant.EPOCH
+                    )
             )
-        ).isEqualTo("Preview")
+            .isEqualTo("Preview")
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/AsynchronousDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/AsynchronousDataSourceService.kt
index d718dbb..dbd0230 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/AsynchronousDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/AsynchronousDataSourceService.kt
@@ -21,12 +21,12 @@
 import android.text.Spanned
 import android.text.style.ForegroundColorSpan
 import androidx.wear.watchface.complications.data.ComplicationData
-import androidx.wear.watchface.complications.datasource.ComplicationDataSourceService
-import androidx.wear.watchface.complications.datasource.ComplicationRequest
 import androidx.wear.watchface.complications.data.ComplicationText
 import androidx.wear.watchface.complications.data.ComplicationType
 import androidx.wear.watchface.complications.data.LongTextComplicationData
 import androidx.wear.watchface.complications.data.ShortTextComplicationData
+import androidx.wear.watchface.complications.datasource.ComplicationDataSourceService
+import androidx.wear.watchface.complications.datasource.ComplicationRequest
 import java.util.concurrent.ExecutorService
 import java.util.concurrent.Executors
 
@@ -43,54 +43,52 @@
                 when (request.complicationType) {
                     ComplicationType.SHORT_TEXT ->
                         ShortTextComplicationData.Builder(
-                            plainText("# ${request.complicationInstanceId}"),
-                            ComplicationText.EMPTY
-                        ).build()
-
+                                plainText("# ${request.complicationInstanceId}"),
+                                ComplicationText.EMPTY
+                            )
+                            .build()
                     ComplicationType.LONG_TEXT ->
                         LongTextComplicationData.Builder(
-                            plainText(
-                                SpannableString("hello ${request.complicationInstanceId}").apply {
-                                    setSpan(
-                                        ForegroundColorSpan(Color.RED),
-                                        0,
-                                        5,
-                                        Spanned.SPAN_INCLUSIVE_INCLUSIVE
-                                    )
-                                }
-                            ),
-                            ComplicationText.EMPTY
-                        ).build()
-
+                                plainText(
+                                    SpannableString("hello ${request.complicationInstanceId}")
+                                        .apply {
+                                            setSpan(
+                                                ForegroundColorSpan(Color.RED),
+                                                0,
+                                                5,
+                                                Spanned.SPAN_INCLUSIVE_INCLUSIVE
+                                            )
+                                        }
+                                ),
+                                ComplicationText.EMPTY
+                            )
+                            .build()
                     else -> null
                 }
             )
         }
     }
 
-    override fun getPreviewData(type: ComplicationType): ComplicationData? = when (type) {
-        ComplicationType.SHORT_TEXT ->
-            ShortTextComplicationData.Builder(
-                plainText("# 123"),
-                ComplicationText.EMPTY
-            ).build()
-
-        ComplicationType.LONG_TEXT ->
-            LongTextComplicationData.Builder(
-                plainText(
-                    SpannableString("hello 123").apply {
-                        setSpan(
-                            ForegroundColorSpan(Color.RED),
-                            0,
-                            5,
-                            Spanned.SPAN_INCLUSIVE_INCLUSIVE
-                        )
-                    }
-                ),
-                ComplicationText.EMPTY
-            ).build()
-
-        else
-        -> null
-    }
+    override fun getPreviewData(type: ComplicationType): ComplicationData? =
+        when (type) {
+            ComplicationType.SHORT_TEXT ->
+                ShortTextComplicationData.Builder(plainText("# 123"), ComplicationText.EMPTY)
+                    .build()
+            ComplicationType.LONG_TEXT ->
+                LongTextComplicationData.Builder(
+                        plainText(
+                            SpannableString("hello 123").apply {
+                                setSpan(
+                                    ForegroundColorSpan(Color.RED),
+                                    0,
+                                    5,
+                                    Spanned.SPAN_INCLUSIVE_INCLUSIVE
+                                )
+                            }
+                        ),
+                        ComplicationText.EMPTY
+                    )
+                    .build()
+            else -> null
+        }
 }
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/BackgroundDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/BackgroundDataSourceService.kt
index 29d15de..fea793a 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/BackgroundDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/BackgroundDataSourceService.kt
@@ -20,13 +20,13 @@
 import android.os.Handler
 import android.os.Looper
 import androidx.wear.watchface.complications.data.ComplicationData
-import androidx.wear.watchface.complications.datasource.ComplicationDataSourceService
-import androidx.wear.watchface.complications.datasource.ComplicationRequest
-import androidx.wear.watchface.complications.datasource.ComplicationDataSourceUpdateRequester
 import androidx.wear.watchface.complications.data.ComplicationText
 import androidx.wear.watchface.complications.data.ComplicationType
 import androidx.wear.watchface.complications.data.LongTextComplicationData
 import androidx.wear.watchface.complications.data.ShortTextComplicationData
+import androidx.wear.watchface.complications.datasource.ComplicationDataSourceService
+import androidx.wear.watchface.complications.datasource.ComplicationDataSourceUpdateRequester
+import androidx.wear.watchface.complications.datasource.ComplicationRequest
 
 const val UPDATE_CADEANCE_MS = 10000L
 
@@ -40,10 +40,11 @@
 
     override fun onCreate() {
         if (updateRequester == null) {
-            updateRequester = ComplicationDataSourceUpdateRequester.create(
-                this,
-                ComponentName(this, BackgroundDataSourceService::class.java)
-            )
+            updateRequester =
+                ComplicationDataSourceUpdateRequester.create(
+                    this,
+                    ComponentName(this, BackgroundDataSourceService::class.java)
+                )
         }
     }
 
@@ -66,34 +67,29 @@
             when (request.complicationType) {
                 ComplicationType.SHORT_TEXT ->
                     ShortTextComplicationData.Builder(
-                        plainText("# $counter"),
-                        ComplicationText.EMPTY
-                    ).build()
-
+                            plainText("# $counter"),
+                            ComplicationText.EMPTY
+                        )
+                        .build()
                 ComplicationType.LONG_TEXT ->
                     LongTextComplicationData.Builder(
-                        plainText("Count $counter"),
-                        ComplicationText.EMPTY
-                    ).build()
-
+                            plainText("Count $counter"),
+                            ComplicationText.EMPTY
+                        )
+                        .build()
                 else -> null
             }
         )
     }
 
-    override fun getPreviewData(type: ComplicationType): ComplicationData? = when (type) {
-        ComplicationType.SHORT_TEXT ->
-            ShortTextComplicationData.Builder(
-                plainText("# 123"),
-                ComplicationText.EMPTY
-            ).build()
-
-        ComplicationType.LONG_TEXT ->
-            LongTextComplicationData.Builder(
-                plainText("Count 123"),
-                ComplicationText.EMPTY
-            ).build()
-
-        else -> null
-    }
+    override fun getPreviewData(type: ComplicationType): ComplicationData? =
+        when (type) {
+            ComplicationType.SHORT_TEXT ->
+                ShortTextComplicationData.Builder(plainText("# 123"), ComplicationText.EMPTY)
+                    .build()
+            ComplicationType.LONG_TEXT ->
+                LongTextComplicationData.Builder(plainText("Count 123"), ComplicationText.EMPTY)
+                    .build()
+            else -> null
+        }
 }
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ColorRampDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ColorRampDataSourceService.kt
index 40720bf..da0d5e0 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ColorRampDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ColorRampDataSourceService.kt
@@ -36,11 +36,12 @@
     ) {
         listener.onComplicationData(
             RangedValueComplicationData.Builder(
-                value = 75f,
-                min = 0.0f,
-                max = 100.0f,
-                plainText("Many colors")
-            ).setText(plainText("Colors"))
+                    value = 75f,
+                    min = 0.0f,
+                    max = 100.0f,
+                    plainText("Many colors")
+                )
+                .setText(plainText("Colors"))
                 .setValueType(RangedValueComplicationData.TYPE_RATING)
                 .setColorRamp(
                     ColorRamp(
@@ -59,30 +60,31 @@
         )
     }
 
-    override fun getPreviewData(type: ComplicationType): ComplicationData? = when (type) {
-        ComplicationType.RANGED_VALUE ->
-            RangedValueComplicationData.Builder(
-                value = 10f,
-                min = 0.0f,
-                max = 100.0f,
-                plainText("Many colors")
-            ).setText(plainText("Colors"))
-                .setValueType(RangedValueComplicationData.TYPE_RATING)
-                .setColorRamp(
-                    ColorRamp(
-                        intArrayOf(
-                            Color.GREEN,
-                            Color.YELLOW,
-                            Color.argb(255, 255, 255, 0),
-                            Color.RED,
-                            Color.argb(255, 255, 0, 255),
-                            Color.argb(255, 92, 64, 51)
-                        ),
-                        interpolated = true
+    override fun getPreviewData(type: ComplicationType): ComplicationData? =
+        when (type) {
+            ComplicationType.RANGED_VALUE ->
+                RangedValueComplicationData.Builder(
+                        value = 10f,
+                        min = 0.0f,
+                        max = 100.0f,
+                        plainText("Many colors")
                     )
-                )
-                .build()
-
-        else -> null
-    }
+                    .setText(plainText("Colors"))
+                    .setValueType(RangedValueComplicationData.TYPE_RATING)
+                    .setColorRamp(
+                        ColorRamp(
+                            intArrayOf(
+                                Color.GREEN,
+                                Color.YELLOW,
+                                Color.argb(255, 255, 255, 0),
+                                Color.RED,
+                                Color.argb(255, 255, 0, 255),
+                                Color.argb(255, 92, 64, 51)
+                            ),
+                            interpolated = true
+                        )
+                    )
+                    .build()
+            else -> null
+        }
 }
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ConfigActivity.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ConfigActivity.kt
index 9d470e8..1768a39 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ConfigActivity.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ConfigActivity.kt
@@ -22,22 +22,22 @@
 import androidx.wear.watchface.complications.datasource.ComplicationDataSourceService
 import kotlin.random.Random
 
-/**
- * Config activity for data source which generates random in [0..100) range
- */
+/** Config activity for data source which generates random in [0..100) range */
 class ConfigActivity : Activity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
         setContentView(R.layout.config_activity_layout)
 
-        val complicationId = intent.getIntExtra(
-            ComplicationDataSourceService.EXTRA_CONFIG_COMPLICATION_ID, -1)
+        val complicationId =
+            intent.getIntExtra(ComplicationDataSourceService.EXTRA_CONFIG_COMPLICATION_ID, -1)
 
         findViewById<View>(R.id.config_gen_button).setOnClickListener {
             val num = Random.nextInt(100)
-            getSharedPreferences(SHARED_PREF_NAME, 0).edit()
-                .putInt(getKey(complicationId, SHARED_PREF_KEY), num).apply()
+            getSharedPreferences(SHARED_PREF_NAME, 0)
+                .edit()
+                .putInt(getKey(complicationId, SHARED_PREF_KEY), num)
+                .apply()
 
             setResult(RESULT_OK)
             finish()
@@ -54,4 +54,4 @@
             return "$complicationId/$prefKey"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ConfigurableDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ConfigurableDataSourceService.kt
index 6ab1aca..a275f17 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ConfigurableDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ConfigurableDataSourceService.kt
@@ -29,29 +29,35 @@
         request: ComplicationRequest,
         listener: ComplicationRequestListener
     ) {
-        val value = getSharedPreferences(ConfigActivity.SHARED_PREF_NAME, 0).getInt(
-            ConfigActivity.getKey(
-                request.complicationInstanceId,
-                ConfigActivity.SHARED_PREF_KEY),
-            DEFAULT_VALUE)
+        val value =
+            getSharedPreferences(ConfigActivity.SHARED_PREF_NAME, 0)
+                .getInt(
+                    ConfigActivity.getKey(
+                        request.complicationInstanceId,
+                        ConfigActivity.SHARED_PREF_KEY
+                    ),
+                    DEFAULT_VALUE
+                )
 
         listener.onComplicationData(makeComplicationData(value))
     }
 
-    override fun getPreviewData(type: ComplicationType) = when (type) {
-        ComplicationType.SHORT_TEXT -> makeComplicationData(DEFAULT_VALUE)
-        else -> null
-    }
+    override fun getPreviewData(type: ComplicationType) =
+        when (type) {
+            ComplicationType.SHORT_TEXT -> makeComplicationData(DEFAULT_VALUE)
+            else -> null
+        }
 
     private fun makeComplicationData(value: Int): ComplicationData {
         return ShortTextComplicationData.Builder(
-            plainText(value.toString()),
-            ComplicationText.EMPTY
-        ).build()
+                plainText(value.toString()),
+                ComplicationText.EMPTY
+            )
+            .build()
     }
 
     companion object {
         // used as default value while data source has not been configured
         const val DEFAULT_VALUE = 0
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/GoalProgressDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/GoalProgressDataSourceService.kt
index 3108039..a8ba82e 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/GoalProgressDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/GoalProgressDataSourceService.kt
@@ -34,25 +34,27 @@
     ) {
         listener.onComplicationData(
             GoalProgressComplicationData.Builder(
-                value = 12345.0f,
-                targetValue = 10000.0f,
-                plainText("12345 steps")
-            ).setText(plainText("12345"))
+                    value = 12345.0f,
+                    targetValue = 10000.0f,
+                    plainText("12345 steps")
+                )
+                .setText(plainText("12345"))
                 .setTitle(plainText("Steps"))
                 .build()
         )
     }
 
-    override fun getPreviewData(type: ComplicationType): ComplicationData? = when (type) {
-        ComplicationType.GOAL_PROGRESS ->
-            GoalProgressComplicationData.Builder(
-                value = 1024.0f,
-                targetValue = 10000.0f,
-                plainText("Steps complication")
-            ).setText(plainText("1024"))
-                .setTitle(plainText("Steps"))
-                .build()
-
-        else -> null
-    }
-}
\ No newline at end of file
+    override fun getPreviewData(type: ComplicationType): ComplicationData? =
+        when (type) {
+            ComplicationType.GOAL_PROGRESS ->
+                GoalProgressComplicationData.Builder(
+                        value = 1024.0f,
+                        targetValue = 10000.0f,
+                        plainText("Steps complication")
+                    )
+                    .setText(plainText("1024"))
+                    .setTitle(plainText("Steps"))
+                    .build()
+            else -> null
+        }
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ImmediateDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ImmediateDataSourceService.kt
index 0481ad4..78ee6ed 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ImmediateDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ImmediateDataSourceService.kt
@@ -17,12 +17,12 @@
 package androidx.wear.watchface.complications.datasource.samples
 
 import androidx.wear.watchface.complications.data.ComplicationData
-import androidx.wear.watchface.complications.datasource.ComplicationDataSourceService
-import androidx.wear.watchface.complications.datasource.ComplicationRequest
 import androidx.wear.watchface.complications.data.ComplicationText
 import androidx.wear.watchface.complications.data.ComplicationType
 import androidx.wear.watchface.complications.data.LongTextComplicationData
 import androidx.wear.watchface.complications.data.ShortTextComplicationData
+import androidx.wear.watchface.complications.datasource.ComplicationDataSourceService
+import androidx.wear.watchface.complications.datasource.ComplicationRequest
 
 /** A minimal complication data source which reports the ID of the complication immediately. */
 class ImmediateDataSourceService : ComplicationDataSourceService() {
@@ -35,34 +35,29 @@
             when (request.complicationType) {
                 ComplicationType.SHORT_TEXT ->
                     ShortTextComplicationData.Builder(
-                        plainText("# ${request.complicationInstanceId}"),
-                        ComplicationText.EMPTY
-                    ).build()
-
+                            plainText("# ${request.complicationInstanceId}"),
+                            ComplicationText.EMPTY
+                        )
+                        .build()
                 ComplicationType.LONG_TEXT ->
                     LongTextComplicationData.Builder(
-                        plainText("hello ${request.complicationInstanceId}"),
-                        ComplicationText.EMPTY
-                    ).build()
-
+                            plainText("hello ${request.complicationInstanceId}"),
+                            ComplicationText.EMPTY
+                        )
+                        .build()
                 else -> null
             }
         )
     }
 
-    override fun getPreviewData(type: ComplicationType): ComplicationData? = when (type) {
-        ComplicationType.SHORT_TEXT ->
-            ShortTextComplicationData.Builder(
-                plainText("# 123"),
-                ComplicationText.EMPTY
-            ).build()
-
-        ComplicationType.LONG_TEXT ->
-            LongTextComplicationData.Builder(
-                plainText("hello 123"),
-                ComplicationText.EMPTY
-            ).build()
-
-        else -> null
-    }
-}
\ No newline at end of file
+    override fun getPreviewData(type: ComplicationType): ComplicationData? =
+        when (type) {
+            ComplicationType.SHORT_TEXT ->
+                ShortTextComplicationData.Builder(plainText("# 123"), ComplicationText.EMPTY)
+                    .build()
+            ComplicationType.LONG_TEXT ->
+                LongTextComplicationData.Builder(plainText("hello 123"), ComplicationText.EMPTY)
+                    .build()
+            else -> null
+        }
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/NonInterpolatedColorRampDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/NonInterpolatedColorRampDataSourceService.kt
index 178fd13..c801654 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/NonInterpolatedColorRampDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/NonInterpolatedColorRampDataSourceService.kt
@@ -36,11 +36,12 @@
     ) {
         listener.onComplicationData(
             RangedValueComplicationData.Builder(
-                value = 75f,
-                min = 0.0f,
-                max = 100.0f,
-                plainText("Example")
-            ).setText(plainText("Example"))
+                    value = 75f,
+                    min = 0.0f,
+                    max = 100.0f,
+                    plainText("Example")
+                )
+                .setText(plainText("Example"))
                 .setValueType(RangedValueComplicationData.TYPE_RATING)
                 .setColorRamp(
                     ColorRamp(
@@ -52,23 +53,24 @@
         )
     }
 
-    override fun getPreviewData(type: ComplicationType): ComplicationData? = when (type) {
-        ComplicationType.RANGED_VALUE ->
-            RangedValueComplicationData.Builder(
-                value = 10f,
-                min = 0.0f,
-                max = 100.0f,
-                plainText("Example")
-            ).setText(plainText("Example"))
-                .setValueType(RangedValueComplicationData.TYPE_RATING)
-                .setColorRamp(
-                    ColorRamp(
-                        intArrayOf(Color.GREEN, Color.YELLOW, Color.RED),
-                        interpolated = false
+    override fun getPreviewData(type: ComplicationType): ComplicationData? =
+        when (type) {
+            ComplicationType.RANGED_VALUE ->
+                RangedValueComplicationData.Builder(
+                        value = 10f,
+                        min = 0.0f,
+                        max = 100.0f,
+                        plainText("Example")
                     )
-                )
-                .build()
-
-        else -> null
-    }
+                    .setText(plainText("Example"))
+                    .setValueType(RangedValueComplicationData.TYPE_RATING)
+                    .setColorRamp(
+                        ColorRamp(
+                            intArrayOf(Color.GREEN, Color.YELLOW, Color.RED),
+                            interpolated = false
+                        )
+                    )
+                    .build()
+            else -> null
+        }
 }
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/PlainComplicationText.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/PlainComplicationText.kt
index 249a921..39aaa1e 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/PlainComplicationText.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/PlainComplicationText.kt
@@ -18,5 +18,4 @@
 
 import androidx.wear.watchface.complications.data.PlainComplicationText
 
-internal fun plainText(text: CharSequence) =
-    PlainComplicationText.Builder(text).build()
\ No newline at end of file
+internal fun plainText(text: CharSequence) = PlainComplicationText.Builder(text).build()
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/SynchronousDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/SynchronousDataSourceService.kt
index f4a625e..f75980a 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/SynchronousDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/SynchronousDataSourceService.kt
@@ -26,8 +26,8 @@
 import java.time.ZonedDateTime
 
 /**
- * A minimal immediate complication data source. Typically this would be used to surface sensor
- * data rather than the time.
+ * A minimal immediate complication data source. Typically this would be used to surface sensor data
+ * rather than the time.
  */
 class SynchronousDataSourceService : ComplicationDataSourceService() {
 
@@ -42,51 +42,45 @@
                 when (request.complicationType) {
                     ComplicationType.SHORT_TEXT ->
                         ShortTextComplicationData.Builder(
-                            plainText("S ${time.second}"),
-                            ComplicationText.EMPTY
-                        ).build()
-
+                                plainText("S ${time.second}"),
+                                ComplicationText.EMPTY
+                            )
+                            .build()
                     ComplicationType.LONG_TEXT ->
                         LongTextComplicationData.Builder(
-                            plainText("Secs ${time.second}"),
-                            ComplicationText.EMPTY
-                        ).build()
-
+                                plainText("Secs ${time.second}"),
+                                ComplicationText.EMPTY
+                            )
+                            .build()
                     else -> null
                 }
             } else {
                 when (request.complicationType) {
                     ComplicationType.SHORT_TEXT ->
                         ShortTextComplicationData.Builder(
-                            plainText("M ${time.minute}"),
-                            ComplicationText.EMPTY
-                        ).build()
-
+                                plainText("M ${time.minute}"),
+                                ComplicationText.EMPTY
+                            )
+                            .build()
                     ComplicationType.LONG_TEXT ->
                         LongTextComplicationData.Builder(
-                            plainText("Mins ${time.minute}"),
-                            ComplicationText.EMPTY
-                        ).build()
-
+                                plainText("Mins ${time.minute}"),
+                                ComplicationText.EMPTY
+                            )
+                            .build()
                     else -> null
                 }
             }
         )
     }
 
-    override fun getPreviewData(type: ComplicationType): ComplicationData? = when (type) {
-        ComplicationType.SHORT_TEXT ->
-            ShortTextComplicationData.Builder(
-                plainText("S 10"),
-                ComplicationText.EMPTY
-            ).build()
-
-        ComplicationType.LONG_TEXT ->
-            LongTextComplicationData.Builder(
-                plainText("Secs 10"),
-                ComplicationText.EMPTY
-            ).build()
-
-        else -> null
-    }
-}
\ No newline at end of file
+    override fun getPreviewData(type: ComplicationType): ComplicationData? =
+        when (type) {
+            ComplicationType.SHORT_TEXT ->
+                ShortTextComplicationData.Builder(plainText("S 10"), ComplicationText.EMPTY).build()
+            ComplicationType.LONG_TEXT ->
+                LongTextComplicationData.Builder(plainText("Secs 10"), ComplicationText.EMPTY)
+                    .build()
+            else -> null
+        }
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/WeightedElementDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/WeightedElementDataSourceService.kt
index 073af3f..c64f878 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/WeightedElementDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/WeightedElementDataSourceService.kt
@@ -35,30 +35,32 @@
     ) {
         listener.onComplicationData(
             WeightedElementsComplicationData.Builder(
-                listOf(
-                    WeightedElementsComplicationData.Element(1.0f, Color.RED),
-                    WeightedElementsComplicationData.Element(1.0f, Color.GREEN),
-                    WeightedElementsComplicationData.Element(2.0f, Color.BLUE),
-                    WeightedElementsComplicationData.Element(3.0f, Color.YELLOW)
-                ),
-                plainText("Example weighted elements")
-            ).setText(plainText("Calories"))
+                    listOf(
+                        WeightedElementsComplicationData.Element(1.0f, Color.RED),
+                        WeightedElementsComplicationData.Element(1.0f, Color.GREEN),
+                        WeightedElementsComplicationData.Element(2.0f, Color.BLUE),
+                        WeightedElementsComplicationData.Element(3.0f, Color.YELLOW)
+                    ),
+                    plainText("Example weighted elements")
+                )
+                .setText(plainText("Calories"))
                 .build()
         )
     }
 
-    override fun getPreviewData(type: ComplicationType): ComplicationData? = when (type) {
-        ComplicationType.WEIGHTED_ELEMENTS ->
-            WeightedElementsComplicationData.Builder(
-                listOf(
-                    WeightedElementsComplicationData.Element(1.0f, Color.RED),
-                    WeightedElementsComplicationData.Element(2.0f, Color.GREEN),
-                    WeightedElementsComplicationData.Element(3.0f, Color.BLUE),
-                ),
-                plainText("Example weighted elements")
-            ).setText(plainText("Calories"))
-                .build()
-
-        else -> null
-    }
-}
\ No newline at end of file
+    override fun getPreviewData(type: ComplicationType): ComplicationData? =
+        when (type) {
+            ComplicationType.WEIGHTED_ELEMENTS ->
+                WeightedElementsComplicationData.Builder(
+                        listOf(
+                            WeightedElementsComplicationData.Element(1.0f, Color.RED),
+                            WeightedElementsComplicationData.Element(2.0f, Color.GREEN),
+                            WeightedElementsComplicationData.Element(3.0f, Color.BLUE),
+                        ),
+                        plainText("Example weighted elements")
+                    )
+                    .setText(plainText("Calories"))
+                    .build()
+            else -> null
+        }
+}
diff --git a/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceService.kt b/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceService.kt
index 6af62fd..2450fd86 100644
--- a/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceService.kt
@@ -16,7 +16,6 @@
 
 package androidx.wear.watchface.complications.datasource
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.annotation.SuppressLint
 import android.app.Activity
 import android.app.Service
@@ -27,6 +26,7 @@
 import android.os.IBinder
 import android.os.Looper
 import android.os.RemoteException
+import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.support.wearable.complications.ComplicationProviderInfo
 import android.support.wearable.complications.IComplicationManager
 import android.support.wearable.complications.IComplicationProvider
@@ -51,14 +51,15 @@
 /**
  * Data associated with complication request in
  * [ComplicationDataSourceService.onComplicationRequest].
+ *
  * @param complicationInstanceId The system's id for the requested complication which is a unique
- * value for the tuple [Watch face ComponentName, complication slot ID].
+ *   value for the tuple [Watch face ComponentName, complication slot ID].
  * @param complicationType The type of complication data requested.
- * @param immediateResponseRequired If `true` then
- * [ComplicationRequestListener.onComplicationData] should be called as soon as possible (ideally
- * less than 100ms instead of the usual 20s deadline). This will only be `true` within a
- * [ComplicationDataSourceService.onStartImmediateComplicationRequests]
- * [ComplicationDataSourceService.onStopImmediateComplicationRequests] pair.
+ * @param immediateResponseRequired If `true` then [ComplicationRequestListener.onComplicationData]
+ *   should be called as soon as possible (ideally less than 100ms instead of the usual 20s
+ *   deadline). This will only be `true` within a
+ *   [ComplicationDataSourceService.onStartImmediateComplicationRequests]
+ *   [ComplicationDataSourceService.onStopImmediateComplicationRequests] pair.
  */
 public class ComplicationRequest(
     complicationInstanceId: Int,
@@ -66,8 +67,8 @@
     immediateResponseRequired: Boolean
 ) {
     /**
-     * The system's id for the requested complication which is a unique value for the tuple [Watch
-     * face ComponentName, complication slot ID].
+     * The system's id for the requested complication which is a unique value for the tuple
+     * [Watch face ComponentName, complication slot ID].
      */
     public val complicationInstanceId: Int = complicationInstanceId
 
@@ -99,33 +100,28 @@
  * for updates from the complication system.
  *
  * Manifest requirements:
- *
- * - The manifest declaration of this service must include an
- * intent filter for android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST.
- *
+ * - The manifest declaration of this service must include an intent filter for
+ *   android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST.
  * - A ComplicationDataSourceService must include a `meta-data` tag with
- * android.support.wearable.complications.SUPPORTED_TYPES in its manifest entry. The value of this
- * tag should be a comma separated list of types supported by the data source. Types should be given
- * as named as per the type fields in the [ComplicationData], but omitting the "TYPE_" prefix, e.g.
- * `SHORT_TEXT`, `LONG_TEXT`, `RANGED_VALUE`.
+ *   android.support.wearable.complications.SUPPORTED_TYPES in its manifest entry. The value of this
+ *   tag should be a comma separated list of types supported by the data source. Types should be
+ *   given as named as per the type fields in the [ComplicationData], but omitting the "TYPE_"
+ *   prefix, e.g. `SHORT_TEXT`, `LONG_TEXT`, `RANGED_VALUE`.
  *
- * The order in which types are listed has no significance. In the case where a watch face
- * supports multiple types in a single complication slot, the watch face will determine which types
- * it prefers.
+ * The order in which types are listed has no significance. In the case where a watch face supports
+ * multiple types in a single complication slot, the watch face will determine which types it
+ * prefers.
  *
  * For example, a complication data source that supports the RANGED_VALUE, SHORT_TEXT, and ICON
  * types would include the following in its manifest entry:
- *
  * ```
  * <meta-data android:name="android.support.wearable.complications.SUPPORTED_TYPES"
  * android:value="RANGED_VALUE,SHORT_TEXT,ICON"/>
  * ```
- *
- *
  * - A ComplicationDataSourceService should include a `meta-data` tag with
- * android.support.wearable.complications.UPDATE_PERIOD_SECONDS its manifest entry. The value of
- * this tag is the number of seconds the complication data source would like to elapse between
- * update requests.
+ *   android.support.wearable.complications.UPDATE_PERIOD_SECONDS its manifest entry. The value of
+ *   this tag is the number of seconds the complication data source would like to elapse between
+ *   update requests.
  *
  * Note that update requests are not guaranteed to be sent with this frequency.
  *
@@ -134,7 +130,6 @@
  *
  * For example, a complication data source that would like to update every ten minutes should
  * include the following in its manifest entry:
- *
  * ```
  * <meta-data android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
  * android:value="600"/>
@@ -152,10 +147,9 @@
  *      "androidx.wear.watchface.complications.data.source.IMMEDIATE_UPDATE_PERIOD_MILLISECONDS"
  *   android:value="1000"/>
  * ```
- *
  * - A ComplicationDataSourceService can include a `meta-data` tag with
- * android.support.wearable.complications.PROVIDER_CONFIG_ACTION its manifest entry to cause a
- * configuration activity to be shown when the complication data source is selected.
+ *   android.support.wearable.complications.PROVIDER_CONFIG_ACTION its manifest entry to cause a
+ *   configuration activity to be shown when the complication data source is selected.
  *
  * The configuration activity must reside in the same package as the complication data source, and
  * must register an intent filter for the action specified here, including
@@ -178,23 +172,21 @@
  * complication data source should be set on the given complication.
  *
  * It is possible to provide additional 'meta-data' tag
- * androidx.watchface.complications.datasource.DEFAULT_CONFIG_SUPPORTED in the service
- * set to "true" to let the system know that the data source is able to provide complication data
- * before it is configured.
- *
+ * androidx.watchface.complications.datasource.DEFAULT_CONFIG_SUPPORTED in the service set to "true"
+ * to let the system know that the data source is able to provide complication data before it is
+ * configured.
  * - The manifest entry for the service should also include an android:icon attribute. The icon
- * provided there should be a single-color white icon that represents the complication data source.
- * This icon will be shown in the complication data source chooser interface, and may also be
- * included in [ComplicationProviderInfo] given to watch faces for display in their configuration
- * activities.
- *
+ *   provided there should be a single-color white icon that represents the complication data
+ *   source. This icon will be shown in the complication data source chooser interface, and may also
+ *   be included in [ComplicationProviderInfo] given to watch faces for display in their
+ *   configuration activities.
  * - The manifest entry should also include
- * `android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER"` to
- * ensure that only the system can bind to it.
+ *   `android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER"` to
+ *   ensure that only the system can bind to it.
  *
- * Multiple complication data sources in the same APK are supported but in android R there's a
- * soft limit of 100 data sources per APK. Above that the companion watchface editor won't
- * support this complication data source app.
+ * Multiple complication data sources in the same APK are supported but in android R there's a soft
+ * limit of 100 data sources per APK. Above that the companion watchface editor won't support this
+ * complication data source app.
  *
  * There's no need to call setDataSource for any the ComplicationData Builders because the system
  * will append this value on your behalf.
@@ -238,12 +230,11 @@
      * This will be called on the main thread.
      *
      * @param complicationInstanceId The system's ID for the complication. Note this ID is distinct
-     * from the complication slot used by the watch face itself.
+     *   from the complication slot used by the watch face itself.
      * @param type The [ComplicationType] of the activated slot.
      */
     @MainThread
-    public open fun onComplicationActivated(complicationInstanceId: Int, type: ComplicationType) {
-    }
+    public open fun onComplicationActivated(complicationInstanceId: Int, type: ComplicationType) {}
 
     /**
      * Called when a complication data update is requested for the given complication id.
@@ -252,14 +243,14 @@
      * displayed. If the request can not be fulfilled or no update is needed then null should be
      * passed to the callback.
      *
-     * The callback doesn't have be called within onComplicationRequest but it should be called
-     * soon after. If this does not occur within around 20 seconds (exact timeout length subject to
+     * The callback doesn't have be called within onComplicationRequest but it should be called soon
+     * after. If this does not occur within around 20 seconds (exact timeout length subject to
      * change), then the system will unbind from this service which may cause your eventual update
      * to not be received. However if [ComplicationRequest.immediateResponseRequired] is `true` then
      * provider should try to deliver the response in under 100 milliseconds, if `false` the
      * deadline is 20 seconds. [ComplicationRequest.immediateResponseRequired] will only ever be
-     * `true` if [METADATA_KEY_IMMEDIATE_UPDATE_PERIOD_MILLISECONDS] is present in the manifest,
-     * and the provider has the privileged permission
+     * `true` if [METADATA_KEY_IMMEDIATE_UPDATE_PERIOD_MILLISECONDS] is present in the manifest, and
+     * the provider has the privileged permission
      * com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE, and the
      * complication is visible and non-ambient.
      *
@@ -303,32 +294,30 @@
         /**
          * Sends the [ComplicationDataTimeline] to the system. If null is passed then any previous
          * complication data will not be overwritten. Can be called on any thread. Should only be
-         * called once. Note this is mutually exclusive with [onComplicationData].
-         * Note only [ComplicationDataTimeline.defaultComplicationData] is supported by older
-         * watch faces .
+         * called once. Note this is mutually exclusive with [onComplicationData]. Note only
+         * [ComplicationDataTimeline.defaultComplicationData] is supported by older watch faces .
          */
         // TODO(alexclarke): Plumb a capability bit so the developers can know if timelines are
         // supported by the watch face.
         @Throws(RemoteException::class)
-        public fun onComplicationDataTimeline(complicationDataTimeline: ComplicationDataTimeline?) {
-        }
+        public fun onComplicationDataTimeline(
+            complicationDataTimeline: ComplicationDataTimeline?
+        ) {}
     }
 
     /**
      * If a metadata key with [METADATA_KEY_IMMEDIATE_UPDATE_PERIOD_MILLISECONDS] is present in the
      * manifest, and the provider has privileged permission
      * `com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE`, then
-     * [onStartImmediateComplicationRequests] will be called when the watch
-     * face is visible and non-ambient. A series of [onComplicationRequest]s will follow where
+     * [onStartImmediateComplicationRequests] will be called when the watch face is visible and
+     * non-ambient. A series of [onComplicationRequest]s will follow where
      * [ComplicationRequest.immediateResponseRequired] is `true`, ending with a call to
      * [onStopImmediateComplicationRequests].
      *
      * @param complicationInstanceId The system's ID for the complication. Note this ID is distinct
-     * from the complication slot used by the watch face itself.
+     *   from the complication slot used by the watch face itself.
      */
-    @MainThread
-    public open fun onStartImmediateComplicationRequests(complicationInstanceId: Int) {
-    }
+    @MainThread public open fun onStartImmediateComplicationRequests(complicationInstanceId: Int) {}
 
     /**
      * If a metadata key with [METADATA_KEY_IMMEDIATE_UPDATE_PERIOD_MILLISECONDS] is present in the
@@ -340,11 +329,9 @@
      * complication becomes visible and non-ambient again.
      *
      * @param complicationInstanceId The system's ID for the complication. Note this ID is distinct
-     * from the complication slot used by the watch face itself.
+     *   from the complication slot used by the watch face itself.
      */
-    @MainThread
-    public open fun onStopImmediateComplicationRequests(complicationInstanceId: Int) {
-    }
+    @MainThread public open fun onStopImmediateComplicationRequests(complicationInstanceId: Int) {}
 
     /**
      * Called when a complication is deactivated.
@@ -356,11 +343,9 @@
      * This will be called on the main thread.
      *
      * @param complicationInstanceId The system's ID for the complication. Note this ID is distinct
-     * from the complication slot used by the watch face itself.
+     *   from the complication slot used by the watch face itself.
      */
-    @MainThread
-    public open fun onComplicationDeactivated(complicationInstanceId: Int) {
-    }
+    @MainThread public open fun onComplicationDeactivated(complicationInstanceId: Int) {}
 
     private inner class IComplicationProviderWrapper : IComplicationProvider.Stub() {
         @SuppressLint("SyntheticAccessor")
@@ -386,8 +371,7 @@
                                     "TYPE_EMPTY. Use TYPE_NO_DATA instead."
                             }
                             require(
-                                dataType == ComplicationType.NO_DATA ||
-                                    dataType == expectedDataType
+                                dataType == ComplicationType.NO_DATA || dataType == expectedDataType
                             ) {
                                 "Complication data should match the requested type. " +
                                     "Expected $expectedDataType got $dataType."
@@ -419,14 +403,14 @@
                                     "TYPE_EMPTY. Use TYPE_NO_DATA instead."
                             }
                             require(
-                                dataType == ComplicationType.NO_DATA ||
-                                    dataType == expectedDataType
+                                dataType == ComplicationType.NO_DATA || dataType == expectedDataType
                             ) {
                                 "Complication data should match the requested type. " +
                                     "Expected $expectedDataType got $dataType."
                             }
-                            if (defaultComplicationData != null &&
-                                defaultComplicationData is NoDataComplicationData
+                            if (
+                                defaultComplicationData != null &&
+                                    defaultComplicationData is NoDataComplicationData
                             ) {
                                 defaultComplicationData.placeholder?.let {
                                     require(it.type == expectedDataType) {
@@ -447,9 +431,7 @@
                                             }
                                         }
                                     } else {
-                                        require(
-                                            timelineComplicationData.type == expectedDataType
-                                        ) {
+                                        require(timelineComplicationData.type == expectedDataType) {
                                             "Timeline entry types must match the requested type. " +
                                                 "Expected $expectedDataType got " +
                                                 "${timelineComplicationData.type}."
@@ -457,17 +439,18 @@
                                     }
                                 }
                             }
-                            complicationDataTimeline?.asWireComplicationData()
+                            complicationDataTimeline
+                                ?.asWireComplicationData()
                                 .evaluateAndUpdateManager()
                         }
 
                         private fun WireComplicationData?.evaluateAndUpdateManager() {
                             lastExpressionEvaluator?.close() // Cancelling any previous evaluation.
                             if (
-                            // Will be evaluated by the platform.
+                                // Will be evaluated by the platform.
                                 Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU ||
-                                // When no update is needed, the data is going to be null.
-                                this == null
+                                    // When no update is needed, the data is going to be null.
+                                    this == null
                             ) {
                                 iComplicationManager.updateComplicationData(
                                     complicationInstanceId,
@@ -535,10 +518,7 @@
             val expectedDataType = fromWireType(type)
             val complicationData = getPreviewData(expectedDataType)
             val dataType = complicationData?.type ?: ComplicationType.NO_DATA
-            require(
-                dataType == ComplicationType.NO_DATA ||
-                    dataType == expectedDataType
-            ) {
+            require(dataType == ComplicationType.NO_DATA || dataType == expectedDataType) {
                 "Preview data should match the requested type. " +
                     "Expected $expectedDataType got $dataType."
             }
@@ -598,8 +578,7 @@
                                     "TYPE_EMPTY. Use TYPE_NO_DATA instead."
                             }
                             require(
-                                dataType == ComplicationType.NO_DATA ||
-                                    dataType == expectedDataType
+                                dataType == ComplicationType.NO_DATA || dataType == expectedDataType
                             ) {
                                 "Complication data should match the requested type. " +
                                     "Expected $expectedDataType got $dataType."
@@ -625,8 +604,7 @@
                                     "TYPE_EMPTY. Use TYPE_NO_DATA instead."
                             }
                             require(
-                                dataType == ComplicationType.NO_DATA ||
-                                    dataType == expectedDataType
+                                dataType == ComplicationType.NO_DATA || dataType == expectedDataType
                             ) {
                                 "Complication data should match the requested type. " +
                                     "Expected $expectedDataType got $dataType."
@@ -665,9 +643,9 @@
          * the [ComplicationData], but omitting the "TYPE_" prefix, e.g. `SHORT_TEXT`, `LONG_TEXT`,
          * `RANGED_VALUE`.
          *
-         * The order in which types are listed has no significance. In the case where a watch
-         * face supports multiple types in a single complication slot, the watch face will
-         * determine which types it prefers.
+         * The order in which types are listed has no significance. In the case where a watch face
+         * supports multiple types in a single complication slot, the watch face will determine
+         * which types it prefers.
          *
          * For example, a complication data source that supports the RANGED_VALUE, SHORT_TEXT, and
          * ICON type would include the following in its manifest entry:
@@ -725,8 +703,8 @@
         /**
          * Metadata key used to declare a list of watch faces that may receive data from a
          * complication data source before they are granted the RECEIVE_COMPLICATION_DATA
-         * permission. This allows the listed watch faces to set the complication data source as
-         * a default and have the complication populate when the watch face is first seen.
+         * permission. This allows the listed watch faces to set the complication data source as a
+         * default and have the complication populate when the watch face is first seen.
          *
          * Only trusted watch faces that will set this complication data source as a default should
          * be included in this list.
@@ -736,10 +714,9 @@
          *
          * The value of this tag should be a comma separated list of watch faces or packages. An
          * entry can be a flattened component, as if [ComponentName.flattenToString] had been
-         * called, to declare a specific watch face as safe. An entry can also be a package name,
-         * as if [ComponentName.getPackageName] had been called, in which case any watch face
-         * under the app with that package name will be considered safe for this complication data
-         * source.
+         * called, to declare a specific watch face as safe. An entry can also be a package name, as
+         * if [ComponentName.getPackageName] had been called, in which case any watch face under the
+         * app with that package name will be considered safe for this complication data source.
          */
         // TODO(b/192233205): Migrate value to androidx.
         public const val METADATA_KEY_SAFE_WATCH_FACES: String =
@@ -747,9 +724,9 @@
 
         /**
          * Metadata key used to declare that the complication data source should be hidden from the
-         * complication data source chooser interface. If set to "true", users will not be able
-         * to select this complication data source. The complication data source may still be
-         * specified as a default complication data source by watch faces.
+         * complication data source chooser interface. If set to "true", users will not be able to
+         * select this complication data source. The complication data source may still be specified
+         * as a default complication data source by watch faces.
          */
         // TODO(b/192233205): Migrate value to androidx.
         internal const val METADATA_KEY_HIDDEN: String =
@@ -788,8 +765,7 @@
         /**
          * Metadata key. Setting to "true" indicates to the system that this complication data
          * source with a PROVIDER_CONFIG_ACTION metadata tag is able to provide complication data
-         * before it is configured.
-         * See [METADATA_KEY_DATA_SOURCE_CONFIG_ACTION].
+         * before it is configured. See [METADATA_KEY_DATA_SOURCE_CONFIG_ACTION].
          */
         public const val METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED: String =
             "androidx.watchface.complications.datasource.DEFAULT_CONFIG_SUPPORTED"
diff --git a/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceUpdateRequester.kt b/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceUpdateRequester.kt
index 4bd9991..a5da4a2 100644
--- a/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceUpdateRequester.kt
+++ b/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceUpdateRequester.kt
@@ -47,14 +47,15 @@
      * as are complications configured to use a different complication data source.
      *
      * @param complicationInstanceIds The system's IDs for the complications to be updated as
-     * provided to [ComplicationDataSourceService.onComplicationActivated] and
-     * [ComplicationDataSourceService.onComplicationRequest].
+     *   provided to [ComplicationDataSourceService.onComplicationActivated] and
+     *   [ComplicationDataSourceService.onComplicationRequest].
      */
     public fun requestUpdate(vararg complicationInstanceIds: Int)
 
     public companion object {
         /**
          * The package of the service that accepts complication data source requests.
+         *
          * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -65,7 +66,7 @@
          *
          * @param context The [ComplicationDataSourceService]'s [Context]
          * @param complicationDataSourceComponent The [ComponentName] of the
-         * [ComplicationDataSourceService] to reload.
+         *   [ComplicationDataSourceService] to reload.
          * @return The constructed [ComplicationDataSourceUpdateRequester].
          */
         @JvmStatic
@@ -100,7 +101,7 @@
 /**
  * @param context The [ComplicationDataSourceService]'s [Context]
  * @param complicationDataSourceComponent The [ComponentName] of the ComplicationDataSourceService]
- * to reload.
+ *   to reload.
  */
 private class ComplicationDataSourceUpdateRequesterImpl(
     private val context: Context,
@@ -117,12 +118,7 @@
         // Add a placeholder PendingIntent to allow the UID to be checked.
         intent.putExtra(
             ComplicationDataSourceUpdateRequesterConstants.EXTRA_PENDING_INTENT,
-            PendingIntent.getActivity(
-                context,
-                0,
-                Intent(""),
-                PendingIntent.FLAG_IMMUTABLE
-            )
+            PendingIntent.getActivity(context, 0, Intent(""), PendingIntent.FLAG_IMMUTABLE)
         )
         context.sendBroadcast(intent)
     }
@@ -141,12 +137,7 @@
         // Add a placeholder PendingIntent to allow the UID to be checked.
         intent.putExtra(
             ComplicationDataSourceUpdateRequesterConstants.EXTRA_PENDING_INTENT,
-            PendingIntent.getActivity(
-                context,
-                0,
-                Intent(""),
-                PendingIntent.FLAG_IMMUTABLE
-            )
+            PendingIntent.getActivity(context, 0, Intent(""), PendingIntent.FLAG_IMMUTABLE)
         )
         context.sendBroadcast(intent)
     }
diff --git a/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataTimeline.kt b/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataTimeline.kt
index 68018b6..53d5646 100644
--- a/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataTimeline.kt
+++ b/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataTimeline.kt
@@ -27,10 +27,7 @@
  * @param start The [Instant] when this TimeInterval becomes valid
  * @param end The [Instant] when this TimeInterval becomes invalid, must be after [start]
  */
-public class TimeInterval(
-    public var start: Instant,
-    public var end: Instant
-) {
+public class TimeInterval(public var start: Instant, public var end: Instant) {
     init {
         require(start < end) { "start must be before end" }
     }
@@ -100,7 +97,7 @@
  *
  * In the case where the validity periods of TimelineEntry items overlap, the item with the
  * *shortest* validity period will be shown. If none are valid then the [defaultComplicationData]
- * will be shown.  This allows a complication datasource to show a "default", and override it at set
+ * will be shown. This allows a complication datasource to show a "default", and override it at set
  * points without having to explicitly insert the default [ComplicationData] between the each
  * "override".
  *
@@ -123,17 +120,16 @@
         for (entry in timelineEntries) {
             val complicationData = entry.complicationData
             if (complicationData is NoDataComplicationData) {
-                require(complicationData.placeholder == null ||
-                    complicationData.placeholder!!.type == defaultComplicationData.type
+                require(
+                    complicationData.placeholder == null ||
+                        complicationData.placeholder!!.type == defaultComplicationData.type
                 ) {
                     "TimelineEntry's placeholder types must match the defaultComplicationData. " +
                         "Found ${complicationData.placeholder!!.type} expected " +
                         "${defaultComplicationData.type}."
                 }
             } else {
-                require(
-                    complicationData.type == defaultComplicationData.type
-                ) {
+                require(complicationData.type == defaultComplicationData.type) {
                     "TimelineEntry's complicationData must have the same type as the " +
                         "defaultComplicationData or be NoDataComplicationData. Found " +
                         "${complicationData.type} expected ${defaultComplicationData.type}."
@@ -148,12 +144,13 @@
     }
 
     internal fun asWireComplicationData(): WireComplicationData {
-        val wireTimelineEntries = timelineEntries.map { timelineEntry ->
-            timelineEntry.complicationData.asWireComplicationData().apply {
-                timelineStartEpochSecond = timelineEntry.validity.start.epochSecond
-                timelineEndEpochSecond = timelineEntry.validity.end.epochSecond
+        val wireTimelineEntries =
+            timelineEntries.map { timelineEntry ->
+                timelineEntry.complicationData.asWireComplicationData().apply {
+                    timelineStartEpochSecond = timelineEntry.validity.start.epochSecond
+                    timelineEndEpochSecond = timelineEntry.validity.end.epochSecond
+                }
             }
-        }
         return defaultComplicationData.asWireComplicationData().apply {
             setTimelineEntryCollection(wireTimelineEntries)
         }
@@ -181,4 +178,4 @@
         return "ComplicationDataTimeline(defaultComplicationData=$defaultComplicationData, " +
             "timelineEntries=$timelineEntries)"
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceServiceTest.kt b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceServiceTest.kt
index d099715..a568b67 100644
--- a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceServiceTest.kt
+++ b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceServiceTest.kt
@@ -15,13 +15,13 @@
  */
 package androidx.wear.watchface.complications.datasource
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.content.Intent
 import android.content.res.Resources
 import android.os.Build
 import android.os.Handler
 import android.os.HandlerThread
 import android.os.RemoteException
+import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.support.wearable.complications.IComplicationManager
 import android.support.wearable.complications.IComplicationProvider
 import android.util.Log
@@ -62,20 +62,23 @@
 @RunWith(ComplicationsTestRunner::class)
 @DoNotInstrument
 class ComplicationDataSourceServiceTest {
-    @get:Rule
-    val expect = Expect.create()
+    @get:Rule val expect = Expect.create()
 
     private var mPretendMainThread = HandlerThread("testThread")
     private lateinit var mPretendMainThreadHandler: Handler
 
     private val mRemoteManager = mock<IComplicationManager>()
     private val mUpdateComplicationDataLatch = CountDownLatch(1)
-    private val mLocalManager: IComplicationManager.Stub = object : IComplicationManager.Stub() {
-        override fun updateComplicationData(complicationSlotId: Int, data: WireComplicationData?) {
-            mRemoteManager.updateComplicationData(complicationSlotId, data)
-            mUpdateComplicationDataLatch.countDown()
+    private val mLocalManager: IComplicationManager.Stub =
+        object : IComplicationManager.Stub() {
+            override fun updateComplicationData(
+                complicationSlotId: Int,
+                data: WireComplicationData?
+            ) {
+                mRemoteManager.updateComplicationData(complicationSlotId, data)
+                mUpdateComplicationDataLatch.countDown()
+            }
         }
-    }
     private lateinit var mProvider: IComplicationProvider.Stub
 
     /**
@@ -136,9 +139,10 @@
     @Before
     fun setUp() {
         ShadowLog.setLoggable("ComplicationData", Log.DEBUG)
-        mProvider = mService.onBind(
-            Intent(ComplicationDataSourceService.ACTION_COMPLICATION_UPDATE_REQUEST)
-        ) as IComplicationProvider.Stub
+        mProvider =
+            mService.onBind(
+                Intent(ComplicationDataSourceService.ACTION_COMPLICATION_UPDATE_REQUEST)
+            ) as IComplicationProvider.Stub
 
         mPretendMainThread.start()
         mPretendMainThreadHandler = Handler(mPretendMainThread.looper)
@@ -151,10 +155,12 @@
 
     @Test
     fun testOnComplicationRequest() {
-        mService.responseData = LongTextComplicationData.Builder(
-            PlainComplicationText.Builder("hello").build(),
-            ComplicationText.EMPTY
-        ).build()
+        mService.responseData =
+            LongTextComplicationData.Builder(
+                    PlainComplicationText.Builder("hello").build(),
+                    ComplicationText.EMPTY
+                )
+                .build()
         val id = 123
         mProvider.onUpdate(id, ComplicationType.LONG_TEXT.toWireComplicationType(), mLocalManager)
         assertThat(mUpdateComplicationDataLatch.await(1000, TimeUnit.MILLISECONDS)).isTrue()
@@ -168,14 +174,15 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.TIRAMISU])
     fun testOnComplicationRequestWithExpression_doesNotEvaluateExpression() {
-        mService.responseData = LongTextComplicationData.Builder(
-            ComplicationTextExpression(
-                DynamicBuilders.DynamicString.constant("hello").concat(
-                    DynamicBuilders.DynamicString.constant(" world")
+        mService.responseData =
+            LongTextComplicationData.Builder(
+                    ComplicationTextExpression(
+                        DynamicBuilders.DynamicString.constant("hello")
+                            .concat(DynamicBuilders.DynamicString.constant(" world"))
+                    ),
+                    ComplicationText.EMPTY
                 )
-            ),
-            ComplicationText.EMPTY
-        ).build()
+                .build()
         mProvider.onUpdate(
             /* complicationInstanceId = */ 123,
             ComplicationType.LONG_TEXT.toWireComplicationType(),
@@ -183,32 +190,35 @@
         )
 
         assertThat(mUpdateComplicationDataLatch.await(1000, TimeUnit.MILLISECONDS)).isTrue()
-        verify(mRemoteManager).updateComplicationData(
-            eq(123),
-            eq(
-                LongTextComplicationData.Builder(
-                    ComplicationTextExpression(
-                        DynamicBuilders.DynamicString.constant("hello").concat(
-                            DynamicBuilders.DynamicString.constant(" world")
+        verify(mRemoteManager)
+            .updateComplicationData(
+                eq(123),
+                eq(
+                    LongTextComplicationData.Builder(
+                            ComplicationTextExpression(
+                                DynamicBuilders.DynamicString.constant("hello")
+                                    .concat(DynamicBuilders.DynamicString.constant(" world"))
+                            ),
+                            ComplicationText.EMPTY
                         )
-                    ),
-                    ComplicationText.EMPTY
-                ).build().asWireComplicationData()
+                        .build()
+                        .asWireComplicationData()
+                )
             )
-        )
     }
 
     @Test
     @Config(sdk = [Build.VERSION_CODES.S])
     fun testOnComplicationRequestWithExpressionPreT_evaluatesExpression() {
-        mService.responseData = LongTextComplicationData.Builder(
-            ComplicationTextExpression(
-                DynamicBuilders.DynamicString.constant("hello").concat(
-                    DynamicBuilders.DynamicString.constant(" world")
+        mService.responseData =
+            LongTextComplicationData.Builder(
+                    ComplicationTextExpression(
+                        DynamicBuilders.DynamicString.constant("hello")
+                            .concat(DynamicBuilders.DynamicString.constant(" world"))
+                    ),
+                    ComplicationText.EMPTY
                 )
-            ),
-            ComplicationText.EMPTY
-        ).build()
+                .build()
 
         mProvider.onUpdate(
             /* complicationInstanceId = */ 123,
@@ -217,19 +227,23 @@
         )
 
         runUiThreadTasksWhileAwaitingDataLatch(1000)
-        verify(mRemoteManager).updateComplicationData(
-            eq(123),
-            argThat { data ->
-                data.longText!!.getTextAt(Resources.getSystem(), 0) == "hello world"
-            })
+        verify(mRemoteManager)
+            .updateComplicationData(
+                eq(123),
+                argThat { data ->
+                    data.longText!!.getTextAt(Resources.getSystem(), 0) == "hello world"
+                }
+            )
     }
 
     @Test
     fun testOnComplicationRequestWrongType() {
-        mService.responseData = LongTextComplicationData.Builder(
-            PlainComplicationText.Builder("hello").build(),
-            ComplicationText.EMPTY
-        ).build()
+        mService.responseData =
+            LongTextComplicationData.Builder(
+                    PlainComplicationText.Builder("hello").build(),
+                    ComplicationText.EMPTY
+                )
+                .build()
         val id = 123
         val exception = AtomicReference<Throwable>()
         val exceptionLatch = CountDownLatch(1)
@@ -260,58 +274,70 @@
 
     @Test
     fun testGetComplicationPreviewData() {
-        mService.previewData = LongTextComplicationData.Builder(
-            PlainComplicationText.Builder("hello preview").build(),
-            ComplicationText.EMPTY
-        ).build()
+        mService.previewData =
+            LongTextComplicationData.Builder(
+                    PlainComplicationText.Builder("hello preview").build(),
+                    ComplicationText.EMPTY
+                )
+                .build()
 
         assertThat(
-            mProvider.getComplicationPreviewData(
-                ComplicationType.LONG_TEXT.toWireComplicationType()
-            ).longText!!.getTextAt(Resources.getSystem(), 0)
-        ).isEqualTo("hello preview")
+                mProvider
+                    .getComplicationPreviewData(ComplicationType.LONG_TEXT.toWireComplicationType())
+                    .longText!!
+                    .getTextAt(Resources.getSystem(), 0)
+            )
+            .isEqualTo("hello preview")
     }
 
     enum class DataWithExpressionScenario(val data: ComplicationData) {
         RANGED_VALUE(
             RangedValueComplicationData.Builder(
-                valueExpression = DynamicFloat.constant(1f),
-                min = 0f,
-                max = 10f,
-                contentDescription = ComplicationText.EMPTY
-            ).setText(ComplicationText.EMPTY).build()
+                    valueExpression = DynamicFloat.constant(1f),
+                    min = 0f,
+                    max = 10f,
+                    contentDescription = ComplicationText.EMPTY
+                )
+                .setText(ComplicationText.EMPTY)
+                .build()
         ),
         LONG_TEXT(
             LongTextComplicationData.Builder(
-                text = ComplicationTextExpression(DynamicString.constant("Long Text")),
-                contentDescription = ComplicationText.EMPTY
-            ).build()
+                    text = ComplicationTextExpression(DynamicString.constant("Long Text")),
+                    contentDescription = ComplicationText.EMPTY
+                )
+                .build()
         ),
         LONG_TITLE(
             LongTextComplicationData.Builder(
-                text = ComplicationText.EMPTY,
-                contentDescription = ComplicationText.EMPTY
-            ).setTitle(ComplicationTextExpression(DynamicString.constant("Long Title"))).build()
+                    text = ComplicationText.EMPTY,
+                    contentDescription = ComplicationText.EMPTY
+                )
+                .setTitle(ComplicationTextExpression(DynamicString.constant("Long Title")))
+                .build()
         ),
         SHORT_TEXT(
             ShortTextComplicationData.Builder(
-                text = ComplicationTextExpression(DynamicString.constant("Short Text")),
-                contentDescription = ComplicationText.EMPTY
-            ).build()
+                    text = ComplicationTextExpression(DynamicString.constant("Short Text")),
+                    contentDescription = ComplicationText.EMPTY
+                )
+                .build()
         ),
         SHORT_TITLE(
             ShortTextComplicationData.Builder(
-                text = ComplicationText.EMPTY,
-                contentDescription = ComplicationText.EMPTY
-            ).setTitle(ComplicationTextExpression(DynamicString.constant("Short Title"))).build()
+                    text = ComplicationText.EMPTY,
+                    contentDescription = ComplicationText.EMPTY
+                )
+                .setTitle(ComplicationTextExpression(DynamicString.constant("Short Title")))
+                .build()
         ),
         CONTENT_DESCRIPTION(
             LongTextComplicationData.Builder(
-                text = ComplicationText.EMPTY,
-                contentDescription = ComplicationTextExpression(
-                    DynamicString.constant("Long Text")
-                ),
-            ).build()
+                    text = ComplicationText.EMPTY,
+                    contentDescription =
+                        ComplicationTextExpression(DynamicString.constant("Long Text")),
+                )
+                .build()
         ),
     }
 
@@ -320,11 +346,15 @@
         for (scenario in DataWithExpressionScenario.values()) {
             mService.previewData = scenario.data
 
-            val exception = assertFailsWith<IllegalArgumentException> {
-                mProvider.getComplicationPreviewData(scenario.data.type.toWireComplicationType())
-            }
+            val exception =
+                assertFailsWith<IllegalArgumentException> {
+                    mProvider.getComplicationPreviewData(
+                        scenario.data.type.toWireComplicationType()
+                    )
+                }
 
-            expect.withMessage(scenario.name)
+            expect
+                .withMessage(scenario.name)
                 .that(exception)
                 .hasMessageThat()
                 .isEqualTo("Preview data must not have expressions.")
@@ -339,34 +369,37 @@
             TimelineEntry(
                 TimeInterval(Instant.ofEpochSecond(1000), Instant.ofEpochSecond(4000)),
                 LongTextComplicationData.Builder(
-                    PlainComplicationText.Builder("A").build(),
-                    ComplicationText.EMPTY
-                ).build()
+                        PlainComplicationText.Builder("A").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .build()
             )
         )
         timeline.add(
             TimelineEntry(
                 TimeInterval(Instant.ofEpochSecond(6000), Instant.ofEpochSecond(8000)),
                 LongTextComplicationData.Builder(
-                    PlainComplicationText.Builder("B").build(),
-                    ComplicationText.EMPTY
-                ).build()
+                        PlainComplicationText.Builder("B").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .build()
             )
         )
-        mService.responseDataTimeline = ComplicationDataTimeline(
-            LongTextComplicationData.Builder(
-                PlainComplicationText.Builder("default").build(),
-                ComplicationText.EMPTY
-            ).build(),
-            timeline
-        )
+        mService.responseDataTimeline =
+            ComplicationDataTimeline(
+                LongTextComplicationData.Builder(
+                        PlainComplicationText.Builder("default").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .build(),
+                timeline
+            )
 
         val id = 123
         mProvider.onUpdate(id, ComplicationType.LONG_TEXT.toWireComplicationType(), mLocalManager)
         assertThat(mUpdateComplicationDataLatch.await(1000, TimeUnit.MILLISECONDS)).isTrue()
         val data = argumentCaptor<WireComplicationData>()
-        verify(mRemoteManager)
-            .updateComplicationData(eq(id), data.capture())
+        verify(mRemoteManager).updateComplicationData(eq(id), data.capture())
         assertThat(data.firstValue.longText!!.getTextAt(Resources.getSystem(), 0))
             .isEqualTo("default")
         val timeLineEntries: List<WireComplicationData?> = data.firstValue.timelineEntries!!
@@ -384,10 +417,12 @@
 
     @Test
     fun testImmediateRequest() {
-        mService.responseData = LongTextComplicationData.Builder(
-            PlainComplicationText.Builder("hello").build(),
-            ComplicationText.EMPTY
-        ).build()
+        mService.responseData =
+            LongTextComplicationData.Builder(
+                    PlainComplicationText.Builder("hello").build(),
+                    ComplicationText.EMPTY
+                )
+                .build()
         val thread = HandlerThread("testThread")
 
         try {
@@ -430,4 +465,4 @@
     companion object {
         private const val TAG = "ComplicationDataSourceServiceTest"
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataTimelineTest.java b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataTimelineTest.java
index 8ea484e..5463ef96 100644
--- a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataTimelineTest.java
+++ b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataTimelineTest.java
@@ -50,61 +50,69 @@
 public class ComplicationDataTimelineTest {
     private static final ComplicationDataTimeline TIMELINE_A =
             new ComplicationDataTimeline(
-                    new ShortTextComplicationData.Builder(new PlainComplicationText.Builder(
-                            "Hello").build(), ComplicationText.EMPTY).build(),
+                    new ShortTextComplicationData.Builder(
+                                    new PlainComplicationText.Builder("Hello").build(),
+                                    ComplicationText.EMPTY)
+                            .build(),
                     ImmutableList.of(
                             new TimelineEntry(
-                                    new TimeInterval(Instant.ofEpochMilli(100000000),
+                                    new TimeInterval(
+                                            Instant.ofEpochMilli(100000000),
                                             Instant.ofEpochMilli(200000000)),
                                     new ShortTextComplicationData.Builder(
-                                            new PlainComplicationText.Builder(
-                                                    "Updated").build(),
-                                            ComplicationText.EMPTY).build()
-                            )
-                    ));
+                                                    new PlainComplicationText.Builder("Updated")
+                                                            .build(),
+                                                    ComplicationText.EMPTY)
+                                            .build())));
     private static final ComplicationDataTimeline TIMELINE_A2 =
             new ComplicationDataTimeline(
-                    new ShortTextComplicationData.Builder(new PlainComplicationText.Builder(
-                            "Hello").build(), ComplicationText.EMPTY).build(),
+                    new ShortTextComplicationData.Builder(
+                                    new PlainComplicationText.Builder("Hello").build(),
+                                    ComplicationText.EMPTY)
+                            .build(),
                     ImmutableList.of(
                             new TimelineEntry(
-                                    new TimeInterval(Instant.ofEpochMilli(100000000),
+                                    new TimeInterval(
+                                            Instant.ofEpochMilli(100000000),
                                             Instant.ofEpochMilli(200000000)),
                                     new ShortTextComplicationData.Builder(
-                                            new PlainComplicationText.Builder(
-                                                    "Updated").build(),
-                                            ComplicationText.EMPTY).build()
-                            )
-                    ));
+                                                    new PlainComplicationText.Builder("Updated")
+                                                            .build(),
+                                                    ComplicationText.EMPTY)
+                                            .build())));
 
     private static final ComplicationDataTimeline TIMELINE_B =
             new ComplicationDataTimeline(
-                    new ShortTextComplicationData.Builder(new PlainComplicationText.Builder(
-                            "World").build(), ComplicationText.EMPTY).build(),
+                    new ShortTextComplicationData.Builder(
+                                    new PlainComplicationText.Builder("World").build(),
+                                    ComplicationText.EMPTY)
+                            .build(),
                     ImmutableList.of(
                             new TimelineEntry(
-                                    new TimeInterval(Instant.ofEpochMilli(120000000),
+                                    new TimeInterval(
+                                            Instant.ofEpochMilli(120000000),
                                             Instant.ofEpochMilli(220000000)),
                                     new ShortTextComplicationData.Builder(
-                                            new PlainComplicationText.Builder(
-                                                    "Updated").build(),
-                                            ComplicationText.EMPTY).build()
-                            )
-                    ));
+                                                    new PlainComplicationText.Builder("Updated")
+                                                            .build(),
+                                                    ComplicationText.EMPTY)
+                                            .build())));
     private static final ComplicationDataTimeline TIMELINE_B2 =
             new ComplicationDataTimeline(
-                    new ShortTextComplicationData.Builder(new PlainComplicationText.Builder(
-                            "World").build(), ComplicationText.EMPTY).build(),
+                    new ShortTextComplicationData.Builder(
+                                    new PlainComplicationText.Builder("World").build(),
+                                    ComplicationText.EMPTY)
+                            .build(),
                     ImmutableList.of(
                             new TimelineEntry(
-                                    new TimeInterval(Instant.ofEpochMilli(120000000),
+                                    new TimeInterval(
+                                            Instant.ofEpochMilli(120000000),
                                             Instant.ofEpochMilli(220000000)),
                                     new ShortTextComplicationData.Builder(
-                                            new PlainComplicationText.Builder(
-                                                    "Updated").build(),
-                                            ComplicationText.EMPTY).build()
-                            )
-                    ));
+                                                    new PlainComplicationText.Builder("Updated")
+                                                            .build(),
+                                                    ComplicationText.EMPTY)
+                                            .build())));
 
     @Before
     public void setup() {
@@ -129,50 +137,53 @@
 
     @Test
     public void timeEntryToString() {
-        assertThat(TIMELINE_A.toString()).isEqualTo(
-                "ComplicationDataTimeline(defaultComplicationData=ShortTextComplicationData("
-                        + "text=ComplicationText{mSurroundingText=Hello, mTimeDependentText=null, "
-                        + "mExpression=null}, title=null, monochromaticImage=null, "
-                        + "smallImage=null, contentDescription=ComplicationText{"
-                        + "mSurroundingText=, mTimeDependentText=null, mExpression=null}, "
-                        + "tapActionLostDueToSerialization=false, tapAction=null, "
-                        + "validTimeRange=TimeRange(startDateTimeMillis="
-                        + "-1000000000-01-01T00:00:00Z, endDateTimeMillis="
-                        + "+1000000000-12-31T23:59:59.999999999Z), dataSource=null, "
-                        + "persistencePolicy=0, displayPolicy=0), timelineEntries=["
-                        + "TimelineEntry(validity=TimeInterval(start=1970-01-02T03:46:40Z, "
-                        + "end=1970-01-03T07:33:20Z), complicationData=ShortTextComplicationData("
-                        + "text=ComplicationText{mSurroundingText=Updated, "
-                        + "mTimeDependentText=null, mExpression=null}, title=null, "
-                        + "monochromaticImage=null, smallImage=null, "
-                        + "contentDescription=ComplicationText{mSurroundingText=, "
-                        + "mTimeDependentText=null, mExpression=null}, "
-                        + "tapActionLostDueToSerialization=false, tapAction=null, "
-                        + "validTimeRange=TimeRange(startDateTimeMillis="
-                        + "-1000000000-01-01T00:00:00Z, endDateTimeMillis="
-                        + "+1000000000-12-31T23:59:59.999999999Z), dataSource=null, "
-                        + "persistencePolicy=0, displayPolicy=0))])"
-        );
+        assertThat(TIMELINE_A.toString())
+                .isEqualTo(
+                        "ComplicationDataTimeline("
+                                + "defaultComplicationData=ShortTextComplicationData("
+                                + "text=ComplicationText{mSurroundingText=Hello,"
+                                + " mTimeDependentText=null, mExpression=null}, title=null,"
+                                + " monochromaticImage=null, smallImage=null,"
+                                + " contentDescription=ComplicationText{mSurroundingText=,"
+                                + " mTimeDependentText=null, mExpression=null},"
+                                + " tapActionLostDueToSerialization=false, tapAction=null, "
+                                + "validTimeRange=TimeRange("
+                                + "startDateTimeMillis=-1000000000-01-01T00:00:00Z,"
+                                + " endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z),"
+                                + " dataSource=null, persistencePolicy=0, displayPolicy=0),"
+                                + " timelineEntries=["
+                                + "TimelineEntry(validity=TimeInterval(start=1970-01-02T03:46:40Z,"
+                                + " end=1970-01-03T07:33:20Z),"
+                                + " complicationData=ShortTextComplicationData("
+                                + "text=ComplicationText{mSurroundingText=Updated,"
+                                + " mTimeDependentText=null, mExpression=null}, title=null,"
+                                + " monochromaticImage=null, smallImage=null,"
+                                + " contentDescription=ComplicationText{mSurroundingText=,"
+                                + " mTimeDependentText=null, mExpression=null},"
+                                + " tapActionLostDueToSerialization=false, tapAction=null, "
+                                + "validTimeRange=TimeRange("
+                                + "startDateTimeMillis=-1000000000-01-01T00:00:00Z,"
+                                + " endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z),"
+                                + " dataSource=null, persistencePolicy=0, displayPolicy=0))])");
     }
 
     @Test
     public void noDataTimelineEntryRoundTrip() {
         ComplicationDataTimeline timeline =
                 new ComplicationDataTimeline(
-                        new ShortTextComplicationData.Builder(new PlainComplicationText.Builder(
-                                "World").build(), ComplicationText.EMPTY).build(),
+                        new ShortTextComplicationData.Builder(
+                                        new PlainComplicationText.Builder("World").build(),
+                                        ComplicationText.EMPTY)
+                                .build(),
                         ImmutableList.of(
                                 new TimelineEntry(
-                                        new TimeInterval(Instant.ofEpochMilli(120000000),
+                                        new TimeInterval(
+                                                Instant.ofEpochMilli(120000000),
                                                 Instant.ofEpochMilli(220000000)),
-                                        new NoDataComplicationData()
-                                )
-                        ));
+                                        new NoDataComplicationData())));
 
-        @SuppressWarnings("KotlinInternal")
-        ComplicationData complicationData = DataKt.toApiComplicationData(
-                timeline.asWireComplicationData$watchface_complications_data_source_debug()
-        );
+        ComplicationData complicationData =
+                DataKt.toApiComplicationData(asWireComplicationData(timeline));
 
         assertThat(complicationData.asWireComplicationData().getTimelineEntries().get(0).getType())
                 .isEqualTo(ComplicationType.NO_DATA.toWireComplicationType());
@@ -182,24 +193,23 @@
     public void cachedLongTextPlaceholder() throws IOException, ClassNotFoundException {
         ComplicationDataTimeline timeline =
                 new ComplicationDataTimeline(
-                        new LongTextComplicationData.Builder(new PlainComplicationText.Builder(
-                                "Hello").build(), ComplicationText.EMPTY).build(),
+                        new LongTextComplicationData.Builder(
+                                        new PlainComplicationText.Builder("Hello").build(),
+                                        ComplicationText.EMPTY)
+                                .build(),
                         ImmutableList.of(
                                 new TimelineEntry(
-                                        new TimeInterval(Instant.ofEpochMilli(100000000),
+                                        new TimeInterval(
+                                                Instant.ofEpochMilli(100000000),
                                                 Instant.ofEpochMilli(200000000)),
                                         new NoDataComplicationData(
                                                 new LongTextComplicationData.Builder(
-                                                        ComplicationText.PLACEHOLDER,
-                                                        ComplicationText.EMPTY).build()
-                                        )
-                                )
-                        ));
+                                                                ComplicationText.PLACEHOLDER,
+                                                                ComplicationText.EMPTY)
+                                                        .build()))));
 
-        @SuppressWarnings("KotlinInternal")
-        ComplicationData complicationData = DataKt.toApiComplicationData(
-                timeline.asWireComplicationData$watchface_complications_data_source_debug()
-        );
+        ComplicationData complicationData =
+                DataKt.toApiComplicationData(asWireComplicationData(timeline));
 
         // Simulate caching by a round trip conversion to byteArray.
         ByteArrayOutputStream stream = new ByteArrayOutputStream();
@@ -224,7 +234,8 @@
 
         ComplicationData timeLineEntry =
                 DataKt.toApiComplicationData(
-                        longText.asWireComplicationData().getTimelineEntries().stream().findFirst()
+                        longText.asWireComplicationData().getTimelineEntries().stream()
+                                .findFirst()
                                 .get());
 
         assertThat(timeLineEntry.getType()).isEqualTo(ComplicationType.NO_DATA);
@@ -236,4 +247,10 @@
         LongTextComplicationData longTextPlaceholder = (LongTextComplicationData) placeholder;
         assertThat(longTextPlaceholder.getText().isPlaceholder()).isTrue();
     }
+
+    @SuppressWarnings("KotlinInternal")
+    private android.support.wearable.complications.ComplicationData asWireComplicationData(
+            ComplicationDataTimeline timeline) {
+        return timeline.asWireComplicationData$watchface_complications_data_source_debug();
+    }
 }
diff --git a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/JavaCompatTest.java b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/JavaCompatTest.java
index 156d273..dca99c7 100644
--- a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/JavaCompatTest.java
+++ b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/JavaCompatTest.java
@@ -23,12 +23,11 @@
 
 /** Tests that Java interfaces implementing kotlin interfaces with defaults compile. */
 public class JavaCompatTest {
-    class ComplicationRequestListenerImpl implements
-            ComplicationDataSourceService.ComplicationRequestListener {
+    class ComplicationRequestListenerImpl
+            implements ComplicationDataSourceService.ComplicationRequestListener {
 
         @Override
-        public void onComplicationData(
-                @Nullable ComplicationData complicationData) throws RemoteException {
-        }
+        public void onComplicationData(@Nullable ComplicationData complicationData)
+                throws RemoteException {}
     }
 }
diff --git a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/TimeIntervalTest.java b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/TimeIntervalTest.java
index 005141a..307d1406 100644
--- a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/TimeIntervalTest.java
+++ b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/TimeIntervalTest.java
@@ -55,8 +55,7 @@
 
     @Test
     public void timeIntervalToString() {
-        assertThat(INTERVAL_A.toString()).isEqualTo(
-                "TimeInterval(start=1970-01-02T03:46:40Z, end=1970-01-03T07:33:20Z)"
-        );
+        assertThat(INTERVAL_A.toString())
+                .isEqualTo("TimeInterval(start=1970-01-02T03:46:40Z, end=1970-01-03T07:33:20Z)");
     }
 }
diff --git a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/TimelineEntryTest.java b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/TimelineEntryTest.java
index 94a6ed9..b53e9d2 100644
--- a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/TimelineEntryTest.java
+++ b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/TimelineEntryTest.java
@@ -36,28 +36,24 @@
 public class TimelineEntryTest {
     private static final TimelineEntry TIMELINE_ENTRY_A =
             new TimelineEntry(
-                    new TimeInterval(Instant.ofEpochMilli(100000000),
-                            Instant.ofEpochMilli(200000000)),
-                    new NoDataComplicationData()
-            );
+                    new TimeInterval(
+                            Instant.ofEpochMilli(100000000), Instant.ofEpochMilli(200000000)),
+                    new NoDataComplicationData());
     private static final TimelineEntry TIMELINE_ENTRY_A2 =
             new TimelineEntry(
-                    new TimeInterval(Instant.ofEpochMilli(100000000),
-                            Instant.ofEpochMilli(200000000)),
-                    new NoDataComplicationData()
-            );
+                    new TimeInterval(
+                            Instant.ofEpochMilli(100000000), Instant.ofEpochMilli(200000000)),
+                    new NoDataComplicationData());
     private static final TimelineEntry TIMELINE_ENTRY_B =
             new TimelineEntry(
-                    new TimeInterval(Instant.ofEpochMilli(110000000),
-                            Instant.ofEpochMilli(210000000)),
-                    new NoDataComplicationData()
-            );
+                    new TimeInterval(
+                            Instant.ofEpochMilli(110000000), Instant.ofEpochMilli(210000000)),
+                    new NoDataComplicationData());
     private static final TimelineEntry TIMELINE_ENTRY_B2 =
             new TimelineEntry(
-                    new TimeInterval(Instant.ofEpochMilli(110000000),
-                            Instant.ofEpochMilli(210000000)),
-                    new NoDataComplicationData()
-            );
+                    new TimeInterval(
+                            Instant.ofEpochMilli(110000000), Instant.ofEpochMilli(210000000)),
+                    new NoDataComplicationData());
 
     @Before
     public void setup() {
@@ -82,14 +78,15 @@
 
     @Test
     public void timeEntryToString() {
-        assertThat(TIMELINE_ENTRY_A.toString()).isEqualTo(
-                "TimelineEntry(validity=TimeInterval(start=1970-01-02T03:46:40Z, "
-                        + "end=1970-01-03T07:33:20Z), complicationData=NoDataComplicationData("
-                        + "placeholder=null, "
-                        + "tapActionLostDueToSerialization=false, tapAction=null, "
-                        + "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00"
-                        + ":00Z, endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), "
-                        + "persistencePolicy=0, displayPolicy=0))"
-        );
+        assertThat(TIMELINE_ENTRY_A.toString())
+                .isEqualTo(
+                        "TimelineEntry(validity=TimeInterval(start=1970-01-02T03:46:40Z,"
+                                + " end=1970-01-03T07:33:20Z),"
+                                + " complicationData=NoDataComplicationData(placeholder=null,"
+                                + " tapActionLostDueToSerialization=false, tapAction=null, "
+                                + "validTimeRange=TimeRange("
+                                + "startDateTimeMillis=-1000000000-01-01T00:00:00Z,"
+                                + " endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z),"
+                                + " persistencePolicy=0, displayPolicy=0))");
     }
 }
diff --git a/wear/watchface/watchface-complications-data/api/current.ignore b/wear/watchface/watchface-complications-data/api/current.ignore
new file mode 100644
index 0000000..123515f
--- /dev/null
+++ b/wear/watchface/watchface-complications-data/api/current.ignore
@@ -0,0 +1,13 @@
+// Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.complications.data.DataKt:
+    Removed class androidx.wear.watchface.complications.data.DataKt
+RemovedClass: androidx.wear.watchface.complications.data.ImageKt:
+    Removed class androidx.wear.watchface.complications.data.ImageKt
+RemovedClass: androidx.wear.watchface.complications.data.TextKt:
+    Removed class androidx.wear.watchface.complications.data.TextKt
+RemovedClass: androidx.wear.watchface.complications.data.TypeKt:
+    Removed class androidx.wear.watchface.complications.data.TypeKt
+
+
+RemovedPackage: androidx.wear.watchface.utility:
+    Removed package androidx.wear.watchface.utility
diff --git a/wear/watchface/watchface-complications-data/api/current.txt b/wear/watchface/watchface-complications-data/api/current.txt
index d3d5f95..4a04d64 100644
--- a/wear/watchface/watchface-complications-data/api/current.txt
+++ b/wear/watchface/watchface-complications-data/api/current.txt
@@ -83,9 +83,6 @@
     property public final java.time.Instant instant;
   }
 
-  public final class DataKt {
-  }
-
   public final class EmptyComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     ctor public EmptyComplicationData();
     field public static final androidx.wear.watchface.complications.data.ComplicationType TYPE;
@@ -127,9 +124,6 @@
     method public androidx.wear.watchface.complications.data.GoalProgressComplicationData.Builder setValidTimeRange(androidx.wear.watchface.complications.data.TimeRange? validTimeRange);
   }
 
-  public final class ImageKt {
-  }
-
   public final class LongTextComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public androidx.wear.watchface.complications.data.MonochromaticImage? getMonochromaticImage();
@@ -372,9 +366,6 @@
     enum_constant public static final androidx.wear.watchface.complications.data.SmallImageType PHOTO;
   }
 
-  public final class TextKt {
-  }
-
   public final class TimeDifferenceComplicationText implements androidx.wear.watchface.complications.data.ComplicationText {
     method public java.util.concurrent.TimeUnit? getMinimumTimeUnit();
     method public java.time.Instant getNextChangeTime(java.time.Instant afterInstant);
@@ -444,9 +435,6 @@
     method public androidx.wear.watchface.complications.data.TimeRange between(java.time.Instant startInstant, java.time.Instant endInstant);
   }
 
-  public final class TypeKt {
-  }
-
   @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public final class WeightedElementsComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public int getElementBackgroundColor();
@@ -497,10 +485,3 @@
 
 }
 
-package androidx.wear.watchface.utility {
-
-  public final class TraceEventKt {
-  }
-
-}
-
diff --git a/wear/watchface/watchface-complications-data/api/public_plus_experimental_current.txt b/wear/watchface/watchface-complications-data/api/public_plus_experimental_current.txt
index 0ffb4b9..ec88ca3 100644
--- a/wear/watchface/watchface-complications-data/api/public_plus_experimental_current.txt
+++ b/wear/watchface/watchface-complications-data/api/public_plus_experimental_current.txt
@@ -86,9 +86,6 @@
     property public final java.time.Instant instant;
   }
 
-  public final class DataKt {
-  }
-
   public final class EmptyComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     ctor public EmptyComplicationData();
     field public static final androidx.wear.watchface.complications.data.ComplicationType TYPE;
@@ -130,9 +127,6 @@
     method public androidx.wear.watchface.complications.data.GoalProgressComplicationData.Builder setValidTimeRange(androidx.wear.watchface.complications.data.TimeRange? validTimeRange);
   }
 
-  public final class ImageKt {
-  }
-
   public final class LongTextComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public androidx.wear.watchface.complications.data.MonochromaticImage? getMonochromaticImage();
@@ -375,9 +369,6 @@
     enum_constant public static final androidx.wear.watchface.complications.data.SmallImageType PHOTO;
   }
 
-  public final class TextKt {
-  }
-
   public final class TimeDifferenceComplicationText implements androidx.wear.watchface.complications.data.ComplicationText {
     method public java.util.concurrent.TimeUnit? getMinimumTimeUnit();
     method public java.time.Instant getNextChangeTime(java.time.Instant afterInstant);
@@ -447,9 +438,6 @@
     method public androidx.wear.watchface.complications.data.TimeRange between(java.time.Instant startInstant, java.time.Instant endInstant);
   }
 
-  public final class TypeKt {
-  }
-
   @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public final class WeightedElementsComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public int getElementBackgroundColor();
@@ -500,10 +488,3 @@
 
 }
 
-package androidx.wear.watchface.utility {
-
-  public final class TraceEventKt {
-  }
-
-}
-
diff --git a/wear/watchface/watchface-complications-data/api/restricted_current.ignore b/wear/watchface/watchface-complications-data/api/restricted_current.ignore
index 6d9ba01..d3ed8b1 100644
--- a/wear/watchface/watchface-complications-data/api/restricted_current.ignore
+++ b/wear/watchface/watchface-complications-data/api/restricted_current.ignore
@@ -1,3 +1,15 @@
 // Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.complications.data.DataKt:
+    Removed class androidx.wear.watchface.complications.data.DataKt
 RemovedClass: androidx.wear.watchface.complications.data.DefaultComplicationDataSourcePolicyWireFormat:
     Removed class androidx.wear.watchface.complications.data.DefaultComplicationDataSourcePolicyWireFormat
+RemovedClass: androidx.wear.watchface.complications.data.ImageKt:
+    Removed class androidx.wear.watchface.complications.data.ImageKt
+RemovedClass: androidx.wear.watchface.complications.data.TextKt:
+    Removed class androidx.wear.watchface.complications.data.TextKt
+RemovedClass: androidx.wear.watchface.complications.data.TypeKt:
+    Removed class androidx.wear.watchface.complications.data.TypeKt
+
+
+RemovedPackage: androidx.wear.watchface.utility:
+    Removed package androidx.wear.watchface.utility
diff --git a/wear/watchface/watchface-complications-data/api/restricted_current.txt b/wear/watchface/watchface-complications-data/api/restricted_current.txt
index 1b752c6..dccc614 100644
--- a/wear/watchface/watchface-complications-data/api/restricted_current.txt
+++ b/wear/watchface/watchface-complications-data/api/restricted_current.txt
@@ -83,9 +83,6 @@
     property public final java.time.Instant instant;
   }
 
-  public final class DataKt {
-  }
-
   public final class EmptyComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     ctor public EmptyComplicationData();
     field public static final androidx.wear.watchface.complications.data.ComplicationType TYPE;
@@ -127,9 +124,6 @@
     method public androidx.wear.watchface.complications.data.GoalProgressComplicationData.Builder setValidTimeRange(androidx.wear.watchface.complications.data.TimeRange? validTimeRange);
   }
 
-  public final class ImageKt {
-  }
-
   public final class LongTextComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public androidx.wear.watchface.complications.data.MonochromaticImage? getMonochromaticImage();
@@ -373,9 +367,6 @@
     enum_constant public static final androidx.wear.watchface.complications.data.SmallImageType PHOTO;
   }
 
-  public final class TextKt {
-  }
-
   public final class TimeDifferenceComplicationText implements androidx.wear.watchface.complications.data.ComplicationText {
     method public java.util.concurrent.TimeUnit? getMinimumTimeUnit();
     method public java.time.Instant getNextChangeTime(java.time.Instant afterInstant);
@@ -447,9 +438,6 @@
     method public androidx.wear.watchface.complications.data.TimeRange between(java.time.Instant startInstant, java.time.Instant endInstant);
   }
 
-  public final class TypeKt {
-  }
-
   @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public final class WeightedElementsComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public int getElementBackgroundColor();
@@ -500,10 +488,3 @@
 
 }
 
-package androidx.wear.watchface.utility {
-
-  public final class TraceEventKt {
-  }
-
-}
-
diff --git a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/CharSequenceSerializableHelper.java b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/CharSequenceSerializableHelper.java
index d276c09..b2fe56e 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/CharSequenceSerializableHelper.java
+++ b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/CharSequenceSerializableHelper.java
@@ -30,17 +30,19 @@
     private CharSequenceSerializableHelper() {}
 
     @SuppressWarnings("ParameterNotNullable") // Error prone is wrong about charSequence.length()
-    public static void writeToStream(@Nullable CharSequence charSequence,
-            @NonNull ObjectOutputStream stream) throws IOException {
+    public static void writeToStream(
+            @Nullable CharSequence charSequence, @NonNull ObjectOutputStream stream)
+            throws IOException {
         Boolean isNull = charSequence == null;
         stream.writeBoolean(isNull);
         if (!isNull) {
             Boolean isSpannable = charSequence instanceof SpannableString;
             stream.writeBoolean(isSpannable);
             if (isSpannable) {
-                stream.writeUTF(HtmlCompat.toHtml(
-                        (SpannableString) charSequence,
-                        HtmlCompat.TO_HTML_PARAGRAPH_LINES_CONSECUTIVE));
+                stream.writeUTF(
+                        HtmlCompat.toHtml(
+                                (SpannableString) charSequence,
+                                HtmlCompat.TO_HTML_PARAGRAPH_LINES_CONSECUTIVE));
             } else {
                 // We don't rely on CharSequence having implemented toString().
                 StringBuilder builder = new StringBuilder(charSequence.length());
diff --git a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.kt b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.kt
index 813758c..495d2a7 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.kt
@@ -48,11 +48,9 @@
 /**
  * Container for complication data of all types.
  *
- * A [androidx.wear.watchface.complications.ComplicationProviderService] should create
- * instances of
- * this class using [ComplicationData.Builder] and send them to the complication system in
- * response to
- * [androidx.wear.watchface.complications.ComplicationProviderService.onComplicationRequest].
+ * A [androidx.wear.watchface.complications.ComplicationProviderService] should create instances of
+ * this class using [ComplicationData.Builder] and send them to the complication system in response
+ * to [androidx.wear.watchface.complications.ComplicationProviderService.onComplicationRequest].
  * Depending on the type of complication data, some fields will be required and some will be
  * optional - see the documentation for each type, and for the builder's set methods, for details.
  *
@@ -95,8 +93,7 @@
     annotation class ImageStyle
 
     /** Returns the type of this complication data. */
-    @ComplicationType
-    val type: Int
+    @ComplicationType val type: Int
 
     private val fields: Bundle
 
@@ -113,18 +110,18 @@
 
     internal constructor(input: Parcel) {
         type = input.readInt()
-        fields = input.readBundle(javaClass.classLoader) ?: run {
-            Log.w(TAG, "ComplicationData parcel input has null bundle.")
-            Bundle()
-        }
+        fields =
+            input.readBundle(javaClass.classLoader)
+                ?: run {
+                    Log.w(TAG, "ComplicationData parcel input has null bundle.")
+                    Bundle()
+                }
     }
 
     @RequiresApi(api = Build.VERSION_CODES.P)
     private class SerializedForm
     @JvmOverloads
-    constructor(
-        private var complicationData: ComplicationData? = null
-    ) : Serializable {
+    constructor(private var complicationData: ComplicationData? = null) : Serializable {
 
         @Throws(IOException::class)
         private fun writeObject(oos: ObjectOutputStream) {
@@ -163,9 +160,7 @@
             }
             if (isFieldValidForType(FIELD_SMALL_IMAGE_BURN_IN_PROTECTION, type)) {
                 oos.writeObject(
-                    IconSerializableHelper.create(
-                        complicationData.burnInProtectionSmallImage
-                    )
+                    IconSerializableHelper.create(complicationData.burnInProtectionSmallImage)
                 )
             }
             if (isFieldValidForType(FIELD_IMAGE_STYLE, type)) {
@@ -286,7 +281,8 @@
             }
             if (isFieldValidForType(FIELD_CONTENT_DESCRIPTION, type)) {
                 putIfNotNull(
-                    fields, FIELD_CONTENT_DESCRIPTION,
+                    fields,
+                    FIELD_CONTENT_DESCRIPTION,
                     ois.readObject() as ComplicationText?
                 )
             }
@@ -295,7 +291,8 @@
             }
             if (isFieldValidForType(FIELD_ICON_BURN_IN_PROTECTION, type)) {
                 putIfNotNull(
-                    fields, FIELD_ICON_BURN_IN_PROTECTION,
+                    fields,
+                    FIELD_ICON_BURN_IN_PROTECTION,
                     IconSerializableHelper.read(ois)
                 )
             }
@@ -305,7 +302,8 @@
             if (isFieldValidForType(FIELD_SMALL_IMAGE_BURN_IN_PROTECTION, type)) {
                 putIfNotNull(
                     fields,
-                    FIELD_SMALL_IMAGE_BURN_IN_PROTECTION, IconSerializableHelper.read(ois)
+                    FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
+                    IconSerializableHelper.read(ois)
                 )
             }
             if (isFieldValidForType(FIELD_IMAGE_STYLE, type)) {
@@ -318,9 +316,8 @@
                 fields.putFloat(FIELD_VALUE, ois.readFloat())
             }
             if (isFieldValidForType(FIELD_VALUE_EXPRESSION, type)) {
-                ois.readNullable { ois.readByteArray() }?.let {
-                    fields.putByteArray(FIELD_VALUE_EXPRESSION, it)
-                }
+                ois.readNullable { ois.readByteArray() }
+                    ?.let { fields.putByteArray(FIELD_VALUE_EXPRESSION, it) }
             }
             if (isFieldValidForType(FIELD_VALUE_TYPE, type)) {
                 fields.putInt(FIELD_VALUE_TYPE, ois.readInt())
@@ -335,24 +332,20 @@
                 fields.putFloat(FIELD_TARGET_VALUE, ois.readFloat())
             }
             if (isFieldValidForType(FIELD_COLOR_RAMP, type)) {
-                ois.readNullable { ois.readIntArray() }?.let {
-                    fields.putIntArray(FIELD_COLOR_RAMP, it)
-                }
+                ois.readNullable { ois.readIntArray() }
+                    ?.let { fields.putIntArray(FIELD_COLOR_RAMP, it) }
             }
             if (isFieldValidForType(FIELD_COLOR_RAMP_INTERPOLATED, type)) {
-                ois.readNullable { ois.readBoolean() }?.let {
-                    fields.putBoolean(FIELD_COLOR_RAMP_INTERPOLATED, it)
-                }
+                ois.readNullable { ois.readBoolean() }
+                    ?.let { fields.putBoolean(FIELD_COLOR_RAMP_INTERPOLATED, it) }
             }
             if (isFieldValidForType(FIELD_ELEMENT_WEIGHTS, type)) {
-                ois.readNullable { ois.readFloatArray() }?.let {
-                    fields.putFloatArray(FIELD_ELEMENT_WEIGHTS, it)
-                }
+                ois.readNullable { ois.readFloatArray() }
+                    ?.let { fields.putFloatArray(FIELD_ELEMENT_WEIGHTS, it) }
             }
             if (isFieldValidForType(FIELD_ELEMENT_COLORS, type)) {
-                ois.readNullable { ois.readIntArray() }?.let {
-                    fields.putIntArray(FIELD_ELEMENT_COLORS, it)
-                }
+                ois.readNullable { ois.readIntArray() }
+                    ?.let { fields.putIntArray(FIELD_ELEMENT_COLORS, it) }
             }
             if (isFieldValidForType(FIELD_ELEMENT_BACKGROUND_COLOR, type)) {
                 fields.putInt(FIELD_ELEMENT_BACKGROUND_COLOR, ois.readInt())
@@ -400,7 +393,8 @@
                     fields.remove(FIELD_DATA_SOURCE)
                 } else {
                     fields.putParcelable(
-                        FIELD_DATA_SOURCE, ComponentName.unflattenFromString(componentName)
+                        FIELD_DATA_SOURCE,
+                        ComponentName.unflattenFromString(componentName)
                     )
                 }
             }
@@ -424,17 +418,16 @@
                 .takeIf { it.isNotEmpty() }
                 ?.let { fields.putParcelableArray(EXP_FIELD_LIST_ENTRIES, it.toTypedArray()) }
             if (isFieldValidForType(FIELD_PLACEHOLDER_FIELDS, type)) {
-                ois.readNullable { SerializedForm().apply { readObject(ois) } }?.let {
-                    fields.putInt(FIELD_PLACEHOLDER_TYPE, it.complicationData!!.type)
-                    fields.putBundle(FIELD_PLACEHOLDER_FIELDS, it.complicationData!!.fields)
-                }
+                ois.readNullable { SerializedForm().apply { readObject(ois) } }
+                    ?.let {
+                        fields.putInt(FIELD_PLACEHOLDER_TYPE, it.complicationData!!.type)
+                        fields.putBundle(FIELD_PLACEHOLDER_FIELDS, it.complicationData!!.fields)
+                    }
             }
             ois.readList { SerializedForm().apply { readObject(ois) } }
                 .map { it.complicationData!!.fields }
                 .takeIf { it.isNotEmpty() }
-                ?.let {
-                    fields.putParcelableArray(FIELD_TIMELINE_ENTRIES, it.toTypedArray())
-                }
+                ?.let { fields.putParcelableArray(FIELD_TIMELINE_ENTRIES, it.toTypedArray()) }
             complicationData = ComplicationData(type, fields)
         }
 
@@ -450,8 +443,7 @@
         }
     }
 
-    @RequiresApi(api = Build.VERSION_CODES.P)
-    fun writeReplace(): Any = SerializedForm(this)
+    @RequiresApi(api = Build.VERSION_CODES.P) fun writeReplace(): Any = SerializedForm(this)
 
     @Throws(InvalidObjectException::class)
     private fun readObject(@Suppress("UNUSED_PARAMETER") stream: ObjectInputStream) {
@@ -528,8 +520,8 @@
     /** The list of [ComplicationData] timeline entries. */
     val timelineEntries: List<ComplicationData>?
         @Suppress("DEPRECATION")
-        get() = fields.getParcelableArray(FIELD_TIMELINE_ENTRIES)
-            ?.map { parcelable ->
+        get() =
+            fields.getParcelableArray(FIELD_TIMELINE_ENTRIES)?.map { parcelable ->
                 val bundle = parcelable as Bundle
                 bundle.classLoader = javaClass.classLoader
                 // Use the serialized FIELD_TIMELINE_ENTRY_TYPE or the outer type if it's not there.
@@ -546,11 +538,13 @@
         } else {
             fields.putParcelableArray(
                 FIELD_TIMELINE_ENTRIES,
-                timelineEntries.map {
-                    // This supports timeline entry of NoDataComplicationData.
-                    it.fields.putInt(FIELD_TIMELINE_ENTRY_TYPE, it.type)
-                    it.fields
-                }.toTypedArray()
+                timelineEntries
+                    .map {
+                        // This supports timeline entry of NoDataComplicationData.
+                        it.fields.putInt(FIELD_TIMELINE_ENTRY_TYPE, it.type)
+                        it.fields
+                    }
+                    .toTypedArray()
             )
         }
     }
@@ -558,8 +552,8 @@
     /** The list of [ComplicationData] entries for a ListComplicationData. */
     val listEntries: List<ComplicationData>?
         @Suppress("deprecation")
-        get() = fields.getParcelableArray(EXP_FIELD_LIST_ENTRIES)
-            ?.map { parcelable ->
+        get() =
+            fields.getParcelableArray(EXP_FIELD_LIST_ENTRIES)?.map { parcelable ->
                 val bundle = parcelable as Bundle
                 bundle.classLoader = javaClass.classLoader
                 ComplicationData(bundle.getInt(EXP_FIELD_LIST_ENTRY_TYPE), bundle)
@@ -610,8 +604,9 @@
     val rangedValueExpression: DynamicFloat?
         get() {
             checkFieldValidForTypeWithoutThrowingException(FIELD_VALUE_EXPRESSION, type)
-            return fields.getByteArray(FIELD_VALUE_EXPRESSION)
-                ?.let { DynamicFloat.fromByteArray(it) }
+            return fields.getByteArray(FIELD_VALUE_EXPRESSION)?.let {
+                DynamicFloat.fromByteArray(it)
+            }
         }
 
     /**
@@ -705,8 +700,8 @@
 
     /**
      * Returns either a boolean where: true means the color ramp colors should be smoothly
-     * interpolated; false means the color ramp should be rendered in equal sized blocks of
-     * solid color; null means this value wasn't set, i.e. the complication is not of type
+     * interpolated; false means the color ramp should be rendered in equal sized blocks of solid
+     * color; null means this value wasn't set, i.e. the complication is not of type
      * [TYPE_RANGED_VALUE] or [TYPE_GOAL_PROGRESS].
      *
      * Valid only if the type of this complication data is [TYPE_RANGED_VALUE] or
@@ -723,24 +718,24 @@
         }
 
     /**
-     * Returns true if the ComplicationData contains a short title. I.e. if [shortTitle]
-     * can succeed.
+     * Returns true if the ComplicationData contains a short title. I.e. if [shortTitle] can
+     * succeed.
      */
     fun hasShortTitle(): Boolean =
         isFieldValidForType(FIELD_SHORT_TITLE, type) && hasParcelableField(FIELD_SHORT_TITLE)
 
     /**
-     * Returns the *short title* field for this complication, or `null` if no value was
-     * provided for the field.
+     * Returns the *short title* field for this complication, or `null` if no value was provided for
+     * the field.
      *
-     * The value is provided as a [ComplicationText] object, from which the text to display
-     * can be obtained for a given point in time.
+     * The value is provided as a [ComplicationText] object, from which the text to display can be
+     * obtained for a given point in time.
      *
-     * The length of the text, including any time-dependent values at any valid time, is expected
-     * to not exceed seven characters. When using this text, the watch face should be able to
-     * display any string of up to seven characters (reducing the text size appropriately if the
-     * string is very wide). Although not expected, it is possible that strings of more than seven
-     * characters might be seen, in which case they may be truncated.
+     * The length of the text, including any time-dependent values at any valid time, is expected to
+     * not exceed seven characters. When using this text, the watch face should be able to display
+     * any string of up to seven characters (reducing the text size appropriately if the string is
+     * very wide). Although not expected, it is possible that strings of more than seven characters
+     * might be seen, in which case they may be truncated.
      *
      * Valid only if the type of this complication data is [TYPE_SHORT_TEXT], [TYPE_RANGED_VALUE],
      * or [TYPE_NO_PERMISSION], otherwise returns null.
@@ -758,17 +753,17 @@
         isFieldValidForType(FIELD_SHORT_TEXT, type) && hasParcelableField(FIELD_SHORT_TEXT)
 
     /**
-     * Returns the *short text* field for this complication, or `null` if no value was
-     * provided for the field.
+     * Returns the *short text* field for this complication, or `null` if no value was provided for
+     * the field.
      *
-     * The value is provided as a [ComplicationText] object, from which the text to display
-     * can be obtained for a given point in time.
+     * The value is provided as a [ComplicationText] object, from which the text to display can be
+     * obtained for a given point in time.
      *
-     * The length of the text, including any time-dependent values at any valid time, is expected
-     * to not exceed seven characters. When using this text, the watch face should be able to
-     * display any string of up to seven characters (reducing the text size appropriately if the
-     * string is very wide). Although not expected, it is possible that strings of more than seven
-     * characters might be seen, in which case they may be truncated.
+     * The length of the text, including any time-dependent values at any valid time, is expected to
+     * not exceed seven characters. When using this text, the watch face should be able to display
+     * any string of up to seven characters (reducing the text size appropriately if the string is
+     * very wide). Although not expected, it is possible that strings of more than seven characters
+     * might be seen, in which case they may be truncated.
      *
      * Valid only if the type of this complication data is [TYPE_SHORT_TEXT], [TYPE_RANGED_VALUE],
      * or [TYPE_NO_PERMISSION], otherwise returns null.
@@ -780,18 +775,17 @@
         }
 
     /**
-     * Returns true if the ComplicationData contains a long title. I.e. if [longTitle]
-     * can succeed.
+     * Returns true if the ComplicationData contains a long title. I.e. if [longTitle] can succeed.
      */
     fun hasLongTitle(): Boolean =
         isFieldValidForType(FIELD_LONG_TITLE, type) && hasParcelableField(FIELD_LONG_TITLE)
 
     /**
-     * Returns the *long title* field for this complication, or `null` if no value was
-     * provided for the field.
+     * Returns the *long title* field for this complication, or `null` if no value was provided for
+     * the field.
      *
-     * The value is provided as a [ComplicationText] object, from which the text to display
-     * can be obtained for a given point in time.
+     * The value is provided as a [ComplicationText] object, from which the text to display can be
+     * obtained for a given point in time.
      *
      * Valid only if the type of this complication data is [TYPE_LONG_TEXT], otherwise returns null.
      */
@@ -801,18 +795,15 @@
             return getParcelableFieldOrWarn<ComplicationText>(FIELD_LONG_TITLE)
         }
 
-    /**
-     * Returns true if the ComplicationData contains long text. I.e. if [longText] can
-     * succeed.
-     */
+    /** Returns true if the ComplicationData contains long text. I.e. if [longText] can succeed. */
     fun hasLongText(): Boolean =
         isFieldValidForType(FIELD_LONG_TEXT, type) && hasParcelableField(FIELD_LONG_TEXT)
 
     /**
      * Returns the *long text* field for this complication.
      *
-     * The value is provided as a [ComplicationText] object, from which the text to display
-     * can be obtained for a given point in time.
+     * The value is provided as a [ComplicationText] object, from which the text to display can be
+     * obtained for a given point in time.
      *
      * Valid only if the type of this complication data is [TYPE_LONG_TEXT], otherwise returns null.
      */
@@ -823,14 +814,13 @@
         }
 
     /** Returns true if the ComplicationData contains an Icon. I.e. if [icon] can succeed. */
-    fun hasIcon(): Boolean =
-        isFieldValidForType(FIELD_ICON, type) && hasParcelableField(FIELD_ICON)
+    fun hasIcon(): Boolean = isFieldValidForType(FIELD_ICON, type) && hasParcelableField(FIELD_ICON)
 
     /**
-     * Returns the *icon* field for this complication, or `null` if no value was provided
-     * for the field. The image returned is expected to be single-color and so may be tinted to
-     * whatever color the watch face requires (but note that
-     * [android.graphics.drawable.Drawable.mutate] should be called before drawables are tinted).
+     * Returns the *icon* field for this complication, or `null` if no value was provided for the
+     * field. The image returned is expected to be single-color and so may be tinted to whatever
+     * color the watch face requires (but note that [android.graphics.drawable.Drawable.mutate]
+     * should be called before drawables are tinted).
      *
      * If the device is in ambient mode, and utilises burn-in protection, then the result of
      * [burnInProtectionIcon] must be used instead of this.
@@ -853,13 +843,12 @@
             hasParcelableField(FIELD_ICON_BURN_IN_PROTECTION)
 
     /**
-     * Returns the burn-in protection version of the *icon* field for this complication, or
-     * `null` if no such icon was provided. The image returned is expected to be an outline
-     * image suitable for use in ambient mode on screens with burn-in protection. The image is also
-     * expected to be single-color and so may be tinted to whatever color the watch face requires
-     * (but note that [android.graphics.drawable.Drawable.mutate] should be called before drawables
-     * are tinted, and that the color used should be suitable for ambient mode with burn-in
-     * protection).
+     * Returns the burn-in protection version of the *icon* field for this complication, or `null`
+     * if no such icon was provided. The image returned is expected to be an outline image suitable
+     * for use in ambient mode on screens with burn-in protection. The image is also expected to be
+     * single-color and so may be tinted to whatever color the watch face requires (but note that
+     * [android.graphics.drawable.Drawable.mutate] should be called before drawables are tinted, and
+     * that the color used should be suitable for ambient mode with burn-in protection).
      *
      * If the device is in ambient mode, and utilises burn-in protection, then the result of this
      * method must be used instead of the result of [icon].
@@ -874,27 +863,25 @@
         }
 
     /**
-     * Returns true if the ComplicationData contains a small image. I.e. if [smallImage]
-     * can succeed.
+     * Returns true if the ComplicationData contains a small image. I.e. if [smallImage] can
+     * succeed.
      */
     fun hasSmallImage(): Boolean =
         isFieldValidForType(FIELD_SMALL_IMAGE, type) && hasParcelableField(FIELD_SMALL_IMAGE)
 
     /**
-     * Returns the *small image* field for this complication, or `null` if no value was
-     * provided for the field.
+     * Returns the *small image* field for this complication, or `null` if no value was provided for
+     * the field.
      *
-     * This may be either a [IMAGE_STYLE_PHOTO] image, which is expected to
-     * fill the space available, or an [IMAGE_STYLE_ICON] image, which should be
-     * drawn entirely within the space available. Use [smallImageStyle] to determine which
-     * of these applies.
+     * This may be either a [IMAGE_STYLE_PHOTO] image, which is expected to fill the space
+     * available, or an [IMAGE_STYLE_ICON] image, which should be drawn entirely within the space
+     * available. Use [smallImageStyle] to determine which of these applies.
      *
      * As this may be any image, it is unlikely to be suitable for display in ambient mode when
      * burn-in protection is enabled, or in low-bit ambient mode, and should not be rendered under
      * these circumstances.
      *
-     * Valid for the types [TYPE_LONG_TEXT] and [TYPE_SMALL_IMAGE].
-     * Otherwise returns null.
+     * Valid for the types [TYPE_LONG_TEXT] and [TYPE_SMALL_IMAGE]. Otherwise returns null.
      */
     val smallImage: Icon?
         get() {
@@ -913,9 +900,9 @@
             hasParcelableField(FIELD_SMALL_IMAGE_BURN_IN_PROTECTION)
 
     /**
-     * Returns the burn-in protection version of the *small image* field for this complication,
-     * or `null` if no such icon was provided. The image returned is expected to be an outline
-     * image suitable for use in ambient mode on screens with burn-in protection. The image is also
+     * Returns the burn-in protection version of the *small image* field for this complication, or
+     * `null` if no such icon was provided. The image returned is expected to be an outline image
+     * suitable for use in ambient mode on screens with burn-in protection. The image is also
      * expected to be single-color and so may be tinted to whatever color the watch face requires
      * (but note that [android.graphics.drawable.Drawable.mutate] should be called before drawables
      * are tinted, and that the color used should be suitable for ambient mode with burn-in
@@ -924,8 +911,7 @@
      * If the device is in ambient mode, and utilises burn-in protection, then the result of this
      * method must be used instead of the result of [smallImage].
      *
-     * Valid for the types [TYPE_LONG_TEXT] and [TYPE_SMALL_IMAGE].
-     * Otherwise returns null.
+     * Valid for the types [TYPE_LONG_TEXT] and [TYPE_SMALL_IMAGE]. Otherwise returns null.
      */
     val burnInProtectionSmallImage: Icon?
         get() {
@@ -956,8 +942,8 @@
         }
 
     /**
-     * Returns true if the ComplicationData contains a large image. I.e. if [largeImage]
-     * can succeed.
+     * Returns true if the ComplicationData contains a large image. I.e. if [largeImage] can
+     * succeed.
      */
     fun hasLargeImage(): Boolean =
         isFieldValidForType(FIELD_LARGE_IMAGE, type) && hasParcelableField(FIELD_LARGE_IMAGE)
@@ -970,8 +956,8 @@
      * burn-in protection is enabled, or in low-bit ambient mode, and should not be rendered under
      * these circumstances.
      *
-     * Valid only if the type of this complication data is [TYPE_LARGE_IMAGE].
-     * Otherwise returns null.
+     * Valid only if the type of this complication data is [TYPE_LARGE_IMAGE]. Otherwise returns
+     * null.
      */
     val largeImage: Icon?
         get() {
@@ -980,8 +966,7 @@
         }
 
     /**
-     * Returns true if the ComplicationData contains a tap action. I.e. if [tapAction]
-     * can succeed.
+     * Returns true if the ComplicationData contains a tap action. I.e. if [tapAction] can succeed.
      */
     fun hasTapAction(): Boolean =
         isFieldValidForType(FIELD_TAP_ACTION, type) && hasParcelableField(FIELD_TAP_ACTION)
@@ -1022,8 +1007,8 @@
     /**
      * Returns the element weights for this complication.
      *
-     * Valid only if the type of this complication data is [TYPE_WEIGHTED_ELEMENTS].
-     * Otherwise returns null.
+     * Valid only if the type of this complication data is [TYPE_WEIGHTED_ELEMENTS]. Otherwise
+     * returns null.
      */
     val elementWeights: FloatArray?
         get() {
@@ -1034,8 +1019,8 @@
     /**
      * Returns the element colors for this complication.
      *
-     * Valid only if the type of this complication data is [TYPE_WEIGHTED_ELEMENTS].
-     * Otherwise returns null.
+     * Valid only if the type of this complication data is [TYPE_WEIGHTED_ELEMENTS]. Otherwise
+     * returns null.
      */
     val elementColors: IntArray?
         get() {
@@ -1046,8 +1031,8 @@
     /**
      * Returns the background color to use between elements for this complication.
      *
-     * Valid only if the type of this complication data is [TYPE_WEIGHTED_ELEMENTS].
-     * Otherwise returns 0.
+     * Valid only if the type of this complication data is [TYPE_WEIGHTED_ELEMENTS]. Otherwise
+     * returns 0.
      */
     @get:ColorInt
     val elementBackgroundColor: Int
@@ -1063,7 +1048,7 @@
             checkFieldValidForType(FIELD_PLACEHOLDER_TYPE, type)
             return if (
                 !fields.containsKey(FIELD_PLACEHOLDER_FIELDS) ||
-                !fields.containsKey(FIELD_PLACEHOLDER_TYPE)
+                    !fields.containsKey(FIELD_PLACEHOLDER_TYPE)
             ) {
                 null
             } else {
@@ -1081,8 +1066,7 @@
     /**
      * Returns the list style hint.
      *
-     * Valid only if the type of this complication data is [EXP_TYPE_LIST]. Otherwise
-     * returns zero.
+     * Valid only if the type of this complication data is [EXP_TYPE_LIST]. Otherwise returns zero.
      */
     val listStyleHint: Int
         get() {
@@ -1104,7 +1088,8 @@
         get() {
             checkFieldValidForTypeWithoutThrowingException(FIELD_PERSISTENCE_POLICY, type)
             return fields.getInt(
-                FIELD_PERSISTENCE_POLICY, ComplicationPersistencePolicies.CACHING_ALLOWED
+                FIELD_PERSISTENCE_POLICY,
+                ComplicationPersistencePolicies.CACHING_ALLOWED
             )
         }
 
@@ -1117,8 +1102,8 @@
         }
 
     /**
-     * Returns the start time for this complication data (i.e. the first time at which it should
-     * be considered active and displayed), this may be 0. See also [isActiveAt].
+     * Returns the start time for this complication data (i.e. the first time at which it should be
+     * considered active and displayed), this may be 0. See also [isActiveAt].
      */
     val startDateTimeMillis: Long
         get() = fields.getLong(FIELD_START_TIME, 0)
@@ -1135,10 +1120,11 @@
      * change based on the current time.
      */
     val isTimeDependent: Boolean
-        get() = isTimeDependentField(FIELD_SHORT_TEXT) ||
-            isTimeDependentField(FIELD_SHORT_TITLE) ||
-            isTimeDependentField(FIELD_LONG_TEXT) ||
-            isTimeDependentField(FIELD_LONG_TITLE)
+        get() =
+            isTimeDependentField(FIELD_SHORT_TEXT) ||
+                isTimeDependentField(FIELD_SHORT_TITLE) ||
+                isTimeDependentField(FIELD_LONG_TEXT) ||
+                isTimeDependentField(FIELD_LONG_TITLE)
 
     private fun isTimeDependentField(field: String): Boolean {
         val text = getParcelableFieldOrWarn<ComplicationText>(field)
@@ -1147,8 +1133,7 @@
 
     private fun <T : Parcelable?> getParcelableField(field: String): T? =
         try {
-            @Suppress("deprecation")
-            fields.getParcelable<T>(field)
+            @Suppress("deprecation") fields.getParcelable<T>(field)
         } catch (e: BadParcelableException) {
             null
         }
@@ -1157,8 +1142,7 @@
 
     private fun <T : Parcelable?> getParcelableFieldOrWarn(field: String): T? =
         try {
-            @Suppress("deprecation")
-            fields.getParcelable<T>(field)
+            @Suppress("deprecation") fields.getParcelable<T>(field)
         } catch (e: BadParcelableException) {
             Log.w(
                 TAG,
@@ -1176,8 +1160,7 @@
             toStringNoRedaction()
         }
 
-    /** @hide
-     */
+    /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     fun toStringNoRedaction() = "ComplicationData{mType=$type, mFields=$fields}"
 
@@ -1187,7 +1170,7 @@
             (!isFieldValidForType(FIELD_VALUE, type) || rangedValue == other.rangedValue) &&
             (!isFieldValidForType(FIELD_VALUE_EXPRESSION, type) ||
                 rangedValueExpression?.toDynamicFloatByteArray() contentEquals
-                other.rangedValueExpression?.toDynamicFloatByteArray()) &&
+                    other.rangedValueExpression?.toDynamicFloatByteArray()) &&
             (!isFieldValidForType(FIELD_SHORT_TITLE, type) || shortTitle == other.shortTitle) &&
             (!isFieldValidForType(FIELD_SHORT_TEXT, type) || shortText == other.shortText) &&
             (!isFieldValidForType(FIELD_LONG_TITLE, type) || longTitle == other.longTitle) &&
@@ -1232,8 +1215,8 @@
     }
 
     private fun equalsWithoutExpressions(other: ComplicationData): Boolean =
-        this === other || (
-            type == other.type &&
+        this === other ||
+            (type == other.type &&
                 (!isFieldValidForType(FIELD_TAP_ACTION_LOST, type) ||
                     tapActionLostDueToSerialization == other.tapActionLostDueToSerialization) &&
                 (!isFieldValidForType(FIELD_TIMELINE_START_TIME, type) ||
@@ -1244,8 +1227,7 @@
                     timelineEntries == other.timelineEntries) &&
                 (!isFieldValidForType(EXP_FIELD_LIST_ENTRIES, type) ||
                     listEntries == other.listEntries) &&
-                (!isFieldValidForType(FIELD_DATA_SOURCE, type) ||
-                    dataSource == other.dataSource) &&
+                (!isFieldValidForType(FIELD_DATA_SOURCE, type) || dataSource == other.dataSource) &&
                 (!isFieldValidForType(FIELD_VALUE_TYPE, type) ||
                     rangedValueType == other.rangedValueType) &&
                 (!isFieldValidForType(FIELD_MIN_VALUE, type) ||
@@ -1291,103 +1273,103 @@
                 (!isFieldValidForType(FIELD_START_TIME, type) ||
                     startDateTimeMillis == other.startDateTimeMillis) &&
                 (!isFieldValidForType(FIELD_END_TIME, type) ||
-                    endDateTimeMillis == other.endDateTimeMillis)
-            )
+                    endDateTimeMillis == other.endDateTimeMillis))
 
-    override fun hashCode(): Int = Objects.hash(
-        type,
-        if (isFieldValidForType(FIELD_TAP_ACTION_LOST, type)) {
-            tapActionLostDueToSerialization
-        } else {
-            null
-        },
-        if (isFieldValidForType(FIELD_TIMELINE_START_TIME, type)) {
-            timelineStartEpochSecond
-        } else {
-            null
-        },
-        if (isFieldValidForType(FIELD_TIMELINE_END_TIME, type)) timelineEndEpochSecond else null,
-        if (isFieldValidForType(FIELD_TIMELINE_ENTRIES, type)) timelineEntries else null,
-        if (isFieldValidForType(EXP_FIELD_LIST_ENTRIES, type)) listEntries else null,
-        if (isFieldValidForType(FIELD_DATA_SOURCE, type)) dataSource else null,
-        if (isFieldValidForType(FIELD_VALUE, type)) rangedValue else null,
-        if (isFieldValidForType(FIELD_VALUE_EXPRESSION, type)) {
-            Arrays.hashCode(rangedValueExpression?.toDynamicFloatByteArray())
-        } else {
-            null
-        },
-        if (isFieldValidForType(FIELD_VALUE_TYPE, type)) rangedValueType else null,
-        if (isFieldValidForType(FIELD_MIN_VALUE, type)) rangedMinValue else null,
-        if (isFieldValidForType(FIELD_MAX_VALUE, type)) rangedMaxValue else null,
-        if (isFieldValidForType(FIELD_TARGET_VALUE, type)) targetValue else null,
-        if (isFieldValidForType(FIELD_COLOR_RAMP, type)) colorRamp.contentHashCode() else null,
-        if (isFieldValidForType(FIELD_COLOR_RAMP_INTERPOLATED, type)) {
-            isColorRampInterpolated
-        } else {
-            null
-        },
-        if (isFieldValidForType(FIELD_SHORT_TITLE, type)) shortTitle else null,
-        if (isFieldValidForType(FIELD_SHORT_TEXT, type)) shortText else null,
-        if (isFieldValidForType(FIELD_LONG_TITLE, type)) longTitle else null,
-        if (isFieldValidForType(FIELD_LONG_TEXT, type)) longText else null,
-        if (isFieldValidForType(FIELD_ICON, type)) icon?.iconHashCode() else null,
-        if (isFieldValidForType(FIELD_ICON_BURN_IN_PROTECTION, type)) {
-            burnInProtectionIcon?.iconHashCode()
-        } else {
-            null
-        },
-        if (isFieldValidForType(FIELD_SMALL_IMAGE, type)) smallImage?.iconHashCode() else null,
-        if (isFieldValidForType(FIELD_SMALL_IMAGE_BURN_IN_PROTECTION, type)) {
-            burnInProtectionSmallImage?.iconHashCode()
-        } else {
-            null
-        },
-        if (isFieldValidForType(FIELD_IMAGE_STYLE, type)) smallImageStyle else null,
-        if (isFieldValidForType(FIELD_LARGE_IMAGE, type)) largeImage?.iconHashCode() else null,
-        if (isFieldValidForType(FIELD_TAP_ACTION, type)) tapAction else null,
-        if (isFieldValidForType(FIELD_CONTENT_DESCRIPTION, type)) contentDescription else null,
-        if (isFieldValidForType(FIELD_ELEMENT_WEIGHTS, type)) {
-            elementWeights.contentHashCode()
-        } else {
-            null
-        },
-        if (isFieldValidForType(FIELD_ELEMENT_COLORS, type)) {
-            elementColors.contentHashCode()
-        } else {
-            null
-        },
-        if (isFieldValidForType(FIELD_ELEMENT_BACKGROUND_COLOR, type)) {
-            elementBackgroundColor
-        } else {
-            null
-        },
-        if (isFieldValidForType(FIELD_PLACEHOLDER_TYPE, type)) placeholder else null,
-        if (isFieldValidForType(EXP_FIELD_PROTO_LAYOUT_INTERACTIVE, type)) {
-            interactiveLayout.contentHashCode()
-        } else {
-            null
-        },
-        if (isFieldValidForType(EXP_FIELD_LIST_STYLE_HINT, type)) listStyleHint else null,
-        if (isFieldValidForType(EXP_FIELD_PROTO_LAYOUT_AMBIENT, type)) {
-            ambientLayout.contentHashCode()
-        } else {
-            null
-        },
-        if (isFieldValidForType(EXP_FIELD_PROTO_LAYOUT_RESOURCES, type)) {
-            layoutResources.contentHashCode()
-        } else {
-            null
-        },
-        if (isFieldValidForType(FIELD_PERSISTENCE_POLICY, type)) persistencePolicy else null,
-        if (isFieldValidForType(FIELD_DISPLAY_POLICY, type)) displayPolicy else null,
-        if (isFieldValidForType(FIELD_START_TIME, type)) startDateTimeMillis else null,
-        if (isFieldValidForType(FIELD_END_TIME, type)) endDateTimeMillis else null,
-    )
+    override fun hashCode(): Int =
+        Objects.hash(
+            type,
+            if (isFieldValidForType(FIELD_TAP_ACTION_LOST, type)) {
+                tapActionLostDueToSerialization
+            } else {
+                null
+            },
+            if (isFieldValidForType(FIELD_TIMELINE_START_TIME, type)) {
+                timelineStartEpochSecond
+            } else {
+                null
+            },
+            if (isFieldValidForType(FIELD_TIMELINE_END_TIME, type)) timelineEndEpochSecond
+            else null,
+            if (isFieldValidForType(FIELD_TIMELINE_ENTRIES, type)) timelineEntries else null,
+            if (isFieldValidForType(EXP_FIELD_LIST_ENTRIES, type)) listEntries else null,
+            if (isFieldValidForType(FIELD_DATA_SOURCE, type)) dataSource else null,
+            if (isFieldValidForType(FIELD_VALUE, type)) rangedValue else null,
+            if (isFieldValidForType(FIELD_VALUE_EXPRESSION, type)) {
+                Arrays.hashCode(rangedValueExpression?.toDynamicFloatByteArray())
+            } else {
+                null
+            },
+            if (isFieldValidForType(FIELD_VALUE_TYPE, type)) rangedValueType else null,
+            if (isFieldValidForType(FIELD_MIN_VALUE, type)) rangedMinValue else null,
+            if (isFieldValidForType(FIELD_MAX_VALUE, type)) rangedMaxValue else null,
+            if (isFieldValidForType(FIELD_TARGET_VALUE, type)) targetValue else null,
+            if (isFieldValidForType(FIELD_COLOR_RAMP, type)) colorRamp.contentHashCode() else null,
+            if (isFieldValidForType(FIELD_COLOR_RAMP_INTERPOLATED, type)) {
+                isColorRampInterpolated
+            } else {
+                null
+            },
+            if (isFieldValidForType(FIELD_SHORT_TITLE, type)) shortTitle else null,
+            if (isFieldValidForType(FIELD_SHORT_TEXT, type)) shortText else null,
+            if (isFieldValidForType(FIELD_LONG_TITLE, type)) longTitle else null,
+            if (isFieldValidForType(FIELD_LONG_TEXT, type)) longText else null,
+            if (isFieldValidForType(FIELD_ICON, type)) icon?.iconHashCode() else null,
+            if (isFieldValidForType(FIELD_ICON_BURN_IN_PROTECTION, type)) {
+                burnInProtectionIcon?.iconHashCode()
+            } else {
+                null
+            },
+            if (isFieldValidForType(FIELD_SMALL_IMAGE, type)) smallImage?.iconHashCode() else null,
+            if (isFieldValidForType(FIELD_SMALL_IMAGE_BURN_IN_PROTECTION, type)) {
+                burnInProtectionSmallImage?.iconHashCode()
+            } else {
+                null
+            },
+            if (isFieldValidForType(FIELD_IMAGE_STYLE, type)) smallImageStyle else null,
+            if (isFieldValidForType(FIELD_LARGE_IMAGE, type)) largeImage?.iconHashCode() else null,
+            if (isFieldValidForType(FIELD_TAP_ACTION, type)) tapAction else null,
+            if (isFieldValidForType(FIELD_CONTENT_DESCRIPTION, type)) contentDescription else null,
+            if (isFieldValidForType(FIELD_ELEMENT_WEIGHTS, type)) {
+                elementWeights.contentHashCode()
+            } else {
+                null
+            },
+            if (isFieldValidForType(FIELD_ELEMENT_COLORS, type)) {
+                elementColors.contentHashCode()
+            } else {
+                null
+            },
+            if (isFieldValidForType(FIELD_ELEMENT_BACKGROUND_COLOR, type)) {
+                elementBackgroundColor
+            } else {
+                null
+            },
+            if (isFieldValidForType(FIELD_PLACEHOLDER_TYPE, type)) placeholder else null,
+            if (isFieldValidForType(EXP_FIELD_PROTO_LAYOUT_INTERACTIVE, type)) {
+                interactiveLayout.contentHashCode()
+            } else {
+                null
+            },
+            if (isFieldValidForType(EXP_FIELD_LIST_STYLE_HINT, type)) listStyleHint else null,
+            if (isFieldValidForType(EXP_FIELD_PROTO_LAYOUT_AMBIENT, type)) {
+                ambientLayout.contentHashCode()
+            } else {
+                null
+            },
+            if (isFieldValidForType(EXP_FIELD_PROTO_LAYOUT_RESOURCES, type)) {
+                layoutResources.contentHashCode()
+            } else {
+                null
+            },
+            if (isFieldValidForType(FIELD_PERSISTENCE_POLICY, type)) persistencePolicy else null,
+            if (isFieldValidForType(FIELD_DISPLAY_POLICY, type)) displayPolicy else null,
+            if (isFieldValidForType(FIELD_START_TIME, type)) startDateTimeMillis else null,
+            if (isFieldValidForType(FIELD_END_TIME, type)) endDateTimeMillis else null,
+        )
 
     /** Builder class for [ComplicationData]. */
     class Builder {
-        @ComplicationType
-        internal val type: Int
+        @ComplicationType internal val type: Int
 
         internal val fields: Bundle
 
@@ -1406,25 +1388,27 @@
         }
 
         /** Sets the complication's [ComplicationPersistencePolicy]. */
-        fun setPersistencePolicy(@ComplicationPersistencePolicy cachePolicy: Int) =
-            apply { fields.putInt(FIELD_PERSISTENCE_POLICY, cachePolicy) }
+        fun setPersistencePolicy(@ComplicationPersistencePolicy cachePolicy: Int) = apply {
+            fields.putInt(FIELD_PERSISTENCE_POLICY, cachePolicy)
+        }
 
         /** Sets the complication's [ComplicationDisplayPolicy]. */
-        fun setDisplayPolicy(@ComplicationDisplayPolicy displayPolicy: Int) =
-            apply { fields.putInt(FIELD_DISPLAY_POLICY, displayPolicy) }
+        fun setDisplayPolicy(@ComplicationDisplayPolicy displayPolicy: Int) = apply {
+            fields.putInt(FIELD_DISPLAY_POLICY, displayPolicy)
+        }
 
         /**
          * Sets the start time for this complication data. This is optional for any type.
          *
-         * The complication data will be considered inactive (i.e. should not be displayed) if
-         * the current time is less than the start time. If not specified, the data is considered
-         * active for all time up to the end time (or always active if end time is also not
-         * specified).
+         * The complication data will be considered inactive (i.e. should not be displayed) if the
+         * current time is less than the start time. If not specified, the data is considered active
+         * for all time up to the end time (or always active if end time is also not specified).
          *
          * Returns this Builder to allow chaining.
          */
-        fun setStartDateTimeMillis(startDateTimeMillis: Long) =
-            apply { fields.putLong(FIELD_START_TIME, startDateTimeMillis) }
+        fun setStartDateTimeMillis(startDateTimeMillis: Long) = apply {
+            fields.putLong(FIELD_START_TIME, startDateTimeMillis)
+        }
 
         /**
          * Removes the start time for this complication data.
@@ -1436,15 +1420,16 @@
         /**
          * Sets the end time for this complication data. This is optional for any type.
          *
-         * The complication data will be considered inactive (i.e. should not be displayed) if
-         * the current time is greater than the end time. If not specified, the data is considered
+         * The complication data will be considered inactive (i.e. should not be displayed) if the
+         * current time is greater than the end time. If not specified, the data is considered
          * active for all time after the start time (or always active if start time is also not
          * specified).
          *
          * Returns this Builder to allow chaining.
          */
-        fun setEndDateTimeMillis(endDateTimeMillis: Long) =
-            apply { fields.putLong(FIELD_END_TIME, endDateTimeMillis) }
+        fun setEndDateTimeMillis(endDateTimeMillis: Long) = apply {
+            fields.putLong(FIELD_END_TIME, endDateTimeMillis)
+        }
 
         /**
          * Removes the end time for this complication data.
@@ -1454,14 +1439,14 @@
         fun clearEndDateTime() = apply { fields.remove(FIELD_END_TIME) }
 
         /**
-         * Sets the *value* field. This is required for the [TYPE_RANGED_VALUE] type,
-         * and the [TYPE_GOAL_PROGRESS] type. For [TYPE_RANGED_VALUE] value must
-         * be in the range [min .. max] for [TYPE_GOAL_PROGRESS] value must be >= and may
-         * be greater than target value.
+         * Sets the *value* field. This is required for the [TYPE_RANGED_VALUE] type, and the
+         * [TYPE_GOAL_PROGRESS] type. For [TYPE_RANGED_VALUE] value must be in the range
+         * [min .. max] for [TYPE_GOAL_PROGRESS] value must be >= and may be greater than target
+         * value.
          *
-         * Both the [TYPE_RANGED_VALUE] complication and the
-         * [TYPE_GOAL_PROGRESS] complication visually present a single value, which is
-         * usually a percentage. E.g. you have completed 70% of today's  target of 10000 steps.
+         * Both the [TYPE_RANGED_VALUE] complication and the [TYPE_GOAL_PROGRESS] complication
+         * visually present a single value, which is usually a percentage. E.g. you have completed
+         * 70% of today's target of 10000 steps.
          *
          * Returns this Builder to allow chaining.
          *
@@ -1477,20 +1462,21 @@
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          */
-        fun setRangedValueExpression(value: DynamicFloat?) =
-            apply { putOrRemoveField(FIELD_VALUE_EXPRESSION, value?.toDynamicFloatByteArray()) }
+        fun setRangedValueExpression(value: DynamicFloat?) = apply {
+            putOrRemoveField(FIELD_VALUE_EXPRESSION, value?.toDynamicFloatByteArray())
+        }
 
         /**
-         * Sets the *value type* field which provides meta data about the value. This is
-         * optional for the [TYPE_RANGED_VALUE] type.
+         * Sets the *value type* field which provides meta data about the value. This is optional
+         * for the [TYPE_RANGED_VALUE] type.
          */
         fun setRangedValueType(valueType: Int) = apply { putIntField(FIELD_VALUE_TYPE, valueType) }
 
         /**
-         * Sets the *min value* field. This is required for the [TYPE_RANGED_VALUE]
-         * type, and is not valid for any other type. A [TYPE_RANGED_VALUE] complication
-         * visually presents a single value, which is usually a percentage. E.g. you have
-         * completed 70% of today's target of 10000 steps.
+         * Sets the *min value* field. This is required for the [TYPE_RANGED_VALUE] type, and is not
+         * valid for any other type. A [TYPE_RANGED_VALUE] complication visually presents a single
+         * value, which is usually a percentage. E.g. you have completed 70% of today's target of
+         * 10000 steps.
          *
          * Returns this Builder to allow chaining.
          *
@@ -1499,10 +1485,10 @@
         fun setRangedMinValue(minValue: Float) = apply { putFloatField(FIELD_MIN_VALUE, minValue) }
 
         /**
-         * Sets the *max value* field. This is required for the [TYPE_RANGED_VALUE]
-         * type, and is not valid for any other type. A [TYPE_RANGED_VALUE] complication
-         * visually presents a single value, which is usually a percentage. E.g. you have
-         * completed 70% of today's target of 10000 steps.
+         * Sets the *max value* field. This is required for the [TYPE_RANGED_VALUE] type, and is not
+         * valid for any other type. A [TYPE_RANGED_VALUE] complication visually presents a single
+         * value, which is usually a percentage. E.g. you have completed 70% of today's target of
+         * 10000 steps.
          *
          * Returns this Builder to allow chaining.
          *
@@ -1511,52 +1497,55 @@
         fun setRangedMaxValue(maxValue: Float) = apply { putFloatField(FIELD_MAX_VALUE, maxValue) }
 
         /**
-         * Sets the *targetValue* field. This is required for the
-         * [TYPE_GOAL_PROGRESS] type, and is not valid for any other type. A
-         * [TYPE_GOAL_PROGRESS] complication visually presents a single value, which
-         * is usually a percentage. E.g. you have completed 70% of today's target of 10000 steps.
+         * Sets the *targetValue* field. This is required for the [TYPE_GOAL_PROGRESS] type, and is
+         * not valid for any other type. A [TYPE_GOAL_PROGRESS] complication visually presents a
+         * single value, which is usually a percentage. E.g. you have completed 70% of today's
+         * target of 10000 steps.
          *
          * Returns this Builder to allow chaining.
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          */
-        fun setTargetValue(targetValue: Float) =
-            apply { putFloatField(FIELD_TARGET_VALUE, targetValue) }
+        fun setTargetValue(targetValue: Float) = apply {
+            putFloatField(FIELD_TARGET_VALUE, targetValue)
+        }
 
         /**
-         * Sets the *long title* field. This is optional for the [TYPE_LONG_TEXT] type,
-         * and is not valid for any other type.
+         * Sets the *long title* field. This is optional for the [TYPE_LONG_TEXT] type, and is not
+         * valid for any other type.
          *
-         * The value must be provided as a [ComplicationText] object, so that
-         * time-dependent values may be included.
+         * The value must be provided as a [ComplicationText] object, so that time-dependent values
+         * may be included.
          *
          * Returns this Builder to allow chaining.
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          */
-        fun setLongTitle(longTitle: ComplicationText?) =
-            apply { putOrRemoveField(FIELD_LONG_TITLE, longTitle) }
+        fun setLongTitle(longTitle: ComplicationText?) = apply {
+            putOrRemoveField(FIELD_LONG_TITLE, longTitle)
+        }
 
         /**
-         * Sets the *long text* field. This is required for the [TYPE_LONG_TEXT] type,
-         * and is not valid for any other type.
+         * Sets the *long text* field. This is required for the [TYPE_LONG_TEXT] type, and is not
+         * valid for any other type.
          *
-         * The value must be provided as a [ComplicationText] object, so that
-         * time-dependent values may be included.
+         * The value must be provided as a [ComplicationText] object, so that time-dependent values
+         * may be included.
          *
          * Returns this Builder to allow chaining.
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          */
-        fun setLongText(longText: ComplicationText?) =
-            apply { putOrRemoveField(FIELD_LONG_TEXT, longText) }
+        fun setLongText(longText: ComplicationText?) = apply {
+            putOrRemoveField(FIELD_LONG_TEXT, longText)
+        }
 
         /**
          * Sets the *short title* field. This is valid for the [TYPE_SHORT_TEXT],
          * [TYPE_RANGED_VALUE], and [TYPE_NO_PERMISSION] types, and is not valid for any other type.
          *
-         * The value must be provided as a [ComplicationText] object, so that
-         * time-dependent values may be included.
+         * The value must be provided as a [ComplicationText] object, so that time-dependent values
+         * may be included.
          *
          * The length of the text, including any time-dependent values, should not exceed seven
          * characters. If it does, the text may be truncated by the watch face or might not fit in
@@ -1566,16 +1555,17 @@
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          */
-        fun setShortTitle(shortTitle: ComplicationText?) =
-            apply { putOrRemoveField(FIELD_SHORT_TITLE, shortTitle) }
+        fun setShortTitle(shortTitle: ComplicationText?) = apply {
+            putOrRemoveField(FIELD_SHORT_TITLE, shortTitle)
+        }
 
         /**
-         * Sets the *short text* field. This is required for the [TYPE_SHORT_TEXT] type,
-         * is optional for the [TYPE_RANGED_VALUE] and [TYPE_NO_PERMISSION] types, and
-         * is not valid for any other type.
+         * Sets the *short text* field. This is required for the [TYPE_SHORT_TEXT] type, is optional
+         * for the [TYPE_RANGED_VALUE] and [TYPE_NO_PERMISSION] types, and is not valid for any
+         * other type.
          *
-         * The value must be provided as a [ComplicationText] object, so that
-         * time-dependent values may be included.
+         * The value must be provided as a [ComplicationText] object, so that time-dependent values
+         * may be included.
          *
          * The length of the text, including any time-dependent values, should not exceed seven
          * characters. If it does, the text may be truncated by the watch face or might not fit in
@@ -1585,13 +1575,13 @@
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          */
-        fun setShortText(shortText: ComplicationText?) =
-            apply { putOrRemoveField(FIELD_SHORT_TEXT, shortText) }
+        fun setShortText(shortText: ComplicationText?) = apply {
+            putOrRemoveField(FIELD_SHORT_TEXT, shortText)
+        }
 
         /**
-         * Sets the *icon* field. This is required for the [TYPE_ICON] type, and is
-         * optional for the [TYPE_SHORT_TEXT], [TYPE_LONG_TEXT], [TYPE_RANGED_VALUE], and
-         * [TYPE_NO_PERMISSION] types.
+         * Sets the *icon* field. This is required for the [TYPE_ICON] type, and is optional for the
+         * [TYPE_SHORT_TEXT], [TYPE_LONG_TEXT], [TYPE_RANGED_VALUE], and [TYPE_NO_PERMISSION] types.
          *
          * The provided image must be single-color, so that watch faces can tint it as required.
          *
@@ -1606,10 +1596,10 @@
         fun setIcon(icon: Icon?) = apply { putOrRemoveField(FIELD_ICON, icon) }
 
         /**
-         * Sets the burn-in protection version of the *icon* field. This should be provided if
-         * the *icon* field is provided, unless the main icon is already safe for use with
-         * burn-in protection.  This icon should have fewer lit pixels, and should use darker
-         * colors to prevent LCD burn in issues.
+         * Sets the burn-in protection version of the *icon* field. This should be provided if the
+         * *icon* field is provided, unless the main icon is already safe for use with burn-in
+         * protection. This icon should have fewer lit pixels, and should use darker colors to
+         * prevent LCD burn in issues.
          *
          * The provided image must be single-color, so that watch faces can tint it as required.
          *
@@ -1622,24 +1612,26 @@
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          */
-        fun setBurnInProtectionIcon(icon: Icon?) =
-            apply { putOrRemoveField(FIELD_ICON_BURN_IN_PROTECTION, icon) }
+        fun setBurnInProtectionIcon(icon: Icon?) = apply {
+            putOrRemoveField(FIELD_ICON_BURN_IN_PROTECTION, icon)
+        }
 
         /**
-         * Sets the *small image* field. This is required for the [TYPE_SMALL_IMAGE]
-         * type, and is optional for the [TYPE_LONG_TEXT] type.
+         * Sets the *small image* field. This is required for the [TYPE_SMALL_IMAGE] type, and is
+         * optional for the [TYPE_LONG_TEXT] type.
          *
          * Returns this Builder to allow chaining.
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          */
-        fun setSmallImage(smallImage: Icon?) =
-            apply { putOrRemoveField(FIELD_SMALL_IMAGE, smallImage) }
+        fun setSmallImage(smallImage: Icon?) = apply {
+            putOrRemoveField(FIELD_SMALL_IMAGE, smallImage)
+        }
 
         /**
-         * Sets the burn-in protection version of the *small image* field. This should be
-         * provided if the *small image* field is provided, unless the main small image is
-         * already safe for use with burn-in protection.
+         * Sets the burn-in protection version of the *small image* field. This should be provided
+         * if the *small image* field is provided, unless the main small image is already safe for
+         * use with burn-in protection.
          *
          * The provided image must not contain solid blocks of pixels - it should instead be
          * composed of outlines or lines only.
@@ -1650,8 +1642,9 @@
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          */
-        fun setBurnInProtectionSmallImage(smallImage: Icon?) =
-            apply { putOrRemoveField(FIELD_SMALL_IMAGE_BURN_IN_PROTECTION, smallImage) }
+        fun setBurnInProtectionSmallImage(smallImage: Icon?) = apply {
+            putOrRemoveField(FIELD_SMALL_IMAGE_BURN_IN_PROTECTION, smallImage)
+        }
 
         /**
          * Sets the display style for this complication data. This is valid only for types that
@@ -1663,15 +1656,15 @@
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          * @see .IMAGE_STYLE_PHOTO which can be cropped but not recolored.
-         *
          * @see .IMAGE_STYLE_ICON which can be recolored but not cropped.
          */
-        fun setSmallImageStyle(@ImageStyle imageStyle: Int) =
-            apply { putIntField(FIELD_IMAGE_STYLE, imageStyle) }
+        fun setSmallImageStyle(@ImageStyle imageStyle: Int) = apply {
+            putIntField(FIELD_IMAGE_STYLE, imageStyle)
+        }
 
         /**
-         * Sets the *large image* field. This is required for the [TYPE_LARGE_IMAGE]
-         * type, and is not valid for any other type.
+         * Sets the *large image* field. This is required for the [TYPE_LARGE_IMAGE] type, and is
+         * not valid for any other type.
          *
          * The provided image should be suitably sized to fill the screen of the watch.
          *
@@ -1679,38 +1672,40 @@
          *
          * @throws IllegalStateException if this field is not valid for the complication type
          */
-        fun setLargeImage(largeImage: Icon?) =
-            apply { putOrRemoveField(FIELD_LARGE_IMAGE, largeImage) }
+        fun setLargeImage(largeImage: Icon?) = apply {
+            putOrRemoveField(FIELD_LARGE_IMAGE, largeImage)
+        }
 
         /**
          * Sets the list style hint
          *
-         * Valid only if the type of this complication data is [EXP_TYPE_LIST]. Otherwise
-         * returns
+         * Valid only if the type of this complication data is [EXP_TYPE_LIST]. Otherwise returns
          * zero.
          */
-        fun setListStyleHint(listStyleHint: Int) =
-            apply { putIntField(EXP_FIELD_LIST_STYLE_HINT, listStyleHint) }
+        fun setListStyleHint(listStyleHint: Int) = apply {
+            putIntField(EXP_FIELD_LIST_STYLE_HINT, listStyleHint)
+        }
 
         /**
          * Sets the *tap action* field. This is optional for any non-empty type.
          *
-         * The provided [PendingIntent] may be fired if the complication is tapped on. Note
-         * that some complications might not be tappable, in which case this field will be ignored.
+         * The provided [PendingIntent] may be fired if the complication is tapped on. Note that
+         * some complications might not be tappable, in which case this field will be ignored.
          *
          * Returns this Builder to allow chaining.
          */
-        fun setTapAction(pendingIntent: PendingIntent?) =
-            apply { putOrRemoveField(FIELD_TAP_ACTION, pendingIntent) }
+        fun setTapAction(pendingIntent: PendingIntent?) = apply {
+            putOrRemoveField(FIELD_TAP_ACTION, pendingIntent)
+        }
 
         /**
          * Sets the *content description* field for accessibility. This is optional for any
-         * non-empty type. It is recommended to provide a content description whenever the
-         * data includes an image.
+         * non-empty type. It is recommended to provide a content description whenever the data
+         * includes an image.
          *
-         * The provided text will be read aloud by a Text-to-speech converter for users who may
-         * be vision-impaired. It will be read aloud in addition to any long, short, or range text
-         * in the complication.
+         * The provided text will be read aloud by a Text-to-speech converter for users who may be
+         * vision-impaired. It will be read aloud in addition to any long, short, or range text in
+         * the complication.
          *
          * If using to describe an image/icon that is purely stylistic and doesn't convey any
          * information to the user, you may set the image content description to an empty string
@@ -1718,8 +1713,9 @@
          *
          * Returns this Builder to allow chaining.
          */
-        fun setContentDescription(description: ComplicationText?) =
-            apply { putOrRemoveField(FIELD_CONTENT_DESCRIPTION, description) }
+        fun setContentDescription(description: ComplicationText?) = apply {
+            putOrRemoveField(FIELD_CONTENT_DESCRIPTION, description)
+        }
 
         /**
          * Sets whether or not this ComplicationData has been serialized.
@@ -1755,40 +1751,45 @@
          *
          * Returns this Builder to allow chaining.
          */
-        fun setDataSource(provider: ComponentName?) =
-            apply { putOrRemoveField(FIELD_DATA_SOURCE, provider) }
+        fun setDataSource(provider: ComponentName?) = apply {
+            putOrRemoveField(FIELD_DATA_SOURCE, provider)
+        }
 
         /**
          * Sets the ambient proto layout associated with this complication.
          *
          * Returns this Builder to allow chaining.
          */
-        fun setAmbientLayout(ambientProtoLayout: ByteArray) =
-            apply { putByteArrayField(EXP_FIELD_PROTO_LAYOUT_AMBIENT, ambientProtoLayout) }
+        fun setAmbientLayout(ambientProtoLayout: ByteArray) = apply {
+            putByteArrayField(EXP_FIELD_PROTO_LAYOUT_AMBIENT, ambientProtoLayout)
+        }
 
         /**
          * Sets the proto layout associated with this complication.
          *
          * Returns this Builder to allow chaining.
          */
-        fun setInteractiveLayout(protoLayout: ByteArray) =
-            apply { putByteArrayField(EXP_FIELD_PROTO_LAYOUT_INTERACTIVE, protoLayout) }
+        fun setInteractiveLayout(protoLayout: ByteArray) = apply {
+            putByteArrayField(EXP_FIELD_PROTO_LAYOUT_INTERACTIVE, protoLayout)
+        }
 
         /**
          * Sets the proto layout resources associated with this complication.
          *
          * Returns this Builder to allow chaining.
          */
-        fun setLayoutResources(resources: ByteArray) =
-            apply { putByteArrayField(EXP_FIELD_PROTO_LAYOUT_RESOURCES, resources) }
+        fun setLayoutResources(resources: ByteArray) = apply {
+            putByteArrayField(EXP_FIELD_PROTO_LAYOUT_RESOURCES, resources)
+        }
 
         /**
          * Optional. Sets the color the color ramp should be drawn with.
          *
          * Returns this Builder to allow chaining.
          */
-        fun setColorRamp(colorRamp: IntArray?) =
-            apply { putOrRemoveField(FIELD_COLOR_RAMP, colorRamp) }
+        fun setColorRamp(colorRamp: IntArray?) = apply {
+            putOrRemoveField(FIELD_COLOR_RAMP, colorRamp)
+        }
 
         /**
          * Optional. Sets whether or not the color ramp should be smoothly shaded or drawn with
@@ -1796,26 +1797,27 @@
          *
          * Returns this Builder to allow chaining.
          */
-        fun setColorRampIsSmoothShaded(isSmoothShaded: Boolean?) =
-            apply { putOrRemoveField(FIELD_COLOR_RAMP_INTERPOLATED, isSmoothShaded) }
+        fun setColorRampIsSmoothShaded(isSmoothShaded: Boolean?) = apply {
+            putOrRemoveField(FIELD_COLOR_RAMP_INTERPOLATED, isSmoothShaded)
+        }
 
         /**
          * Sets the list of [ComplicationData] timeline entries.
          *
          * Returns this Builder to allow chaining.
          */
-        fun setListEntryCollection(
-            timelineEntries: Collection<ComplicationData>?
-        ) = apply {
+        fun setListEntryCollection(timelineEntries: Collection<ComplicationData>?) = apply {
             if (timelineEntries == null) {
                 fields.remove(EXP_FIELD_LIST_ENTRIES)
             } else {
                 fields.putParcelableArray(
                     EXP_FIELD_LIST_ENTRIES,
-                    timelineEntries.map { data ->
-                        data.fields.putInt(EXP_FIELD_LIST_ENTRY_TYPE, data.type)
-                        data.fields
-                    }.toTypedArray()
+                    timelineEntries
+                        .map { data ->
+                            data.fields.putInt(EXP_FIELD_LIST_ENTRY_TYPE, data.type)
+                            data.fields
+                        }
+                        .toTypedArray()
                 )
             }
         }
@@ -1825,28 +1827,31 @@
          *
          * Returns this Builder to allow chaining.
          */
-        fun setElementWeights(elementWeights: FloatArray?) =
-            apply { putOrRemoveField(FIELD_ELEMENT_WEIGHTS, elementWeights) }
+        fun setElementWeights(elementWeights: FloatArray?) = apply {
+            putOrRemoveField(FIELD_ELEMENT_WEIGHTS, elementWeights)
+        }
 
         /**
          * Sets the element colors for this complication.
          *
          * Returns this Builder to allow chaining.
          */
-        fun setElementColors(elementColors: IntArray?) =
-            apply { putOrRemoveField(FIELD_ELEMENT_COLORS, elementColors) }
+        fun setElementColors(elementColors: IntArray?) = apply {
+            putOrRemoveField(FIELD_ELEMENT_COLORS, elementColors)
+        }
 
         /**
          * Sets the background color to use between elements for this complication.
          *
          * Returns this Builder to allow chaining.
          */
-        fun setElementBackgroundColor(@ColorInt elementBackgroundColor: Int) =
-            apply { putOrRemoveField(FIELD_ELEMENT_BACKGROUND_COLOR, elementBackgroundColor) }
+        fun setElementBackgroundColor(@ColorInt elementBackgroundColor: Int) = apply {
+            putOrRemoveField(FIELD_ELEMENT_BACKGROUND_COLOR, elementBackgroundColor)
+        }
 
         /**
-         * Constructs and returns [ComplicationData] with the provided fields. All required
-         * fields must be populated before this method is called.
+         * Constructs and returns [ComplicationData] with the provided fields. All required fields
+         * must be populated before this method is called.
          *
          * @throws IllegalStateException if the required fields have not been populated
          */
@@ -1952,12 +1957,11 @@
          * accompanied by an icon or a short title (or both, but if both are provided then a watch
          * face may choose to display only one).
          *
-         * The *short text* field is required for this type, and is expected to always be
-         * displayed.
+         * The *short text* field is required for this type, and is expected to always be displayed.
          *
-         * The *icon* (and *burnInProtectionIcon*) and *short title* fields are
-         * optional for this type. If only one of these is provided, it is expected that it will be
-         * displayed. If both are provided, it is expected that one of these will be displayed.
+         * The *icon* (and *burnInProtectionIcon*) and *short title* fields are optional for this
+         * type. If only one of these is provided, it is expected that it will be displayed. If both
+         * are provided, it is expected that one of these will be displayed.
          */
         const val TYPE_SHORT_TEXT = 3
 
@@ -1965,14 +1969,13 @@
          * Type used for complications where the primary piece of data is a piece of text. The text
          * may be accompanied by an icon and/or a title.
          *
-         * The *long text* field is required for this type, and is expected to always be
-         * displayed.
+         * The *long text* field is required for this type, and is expected to always be displayed.
          *
-         * The *long title* field is optional for this type. If provided, it is expected that
-         * this field will be displayed.
+         * The *long title* field is optional for this type. If provided, it is expected that this
+         * field will be displayed.
          *
-         * The *icon* (and *burnInProtectionIcon*) and *small image* fields are also
-         * optional for this type. If provided, at least one of these should be displayed.
+         * The *icon* (and *burnInProtectionIcon*) and *small image* fields are also optional for
+         * this type. If provided, at least one of these should be displayed.
          */
         const val TYPE_LONG_TEXT = 4
 
@@ -1980,12 +1983,12 @@
          * Type used for complications including a numerical value within a range, such as a
          * percentage. The value may be accompanied by an icon and/or short text and title.
          *
-         * The *value*, *min value*, and *max value* fields are required for this
-         * type, and the value within the range is expected to always be displayed.
+         * The *value*, *min value*, and *max value* fields are required for this type, and the
+         * value within the range is expected to always be displayed.
          *
-         * The *icon* (and *burnInProtectionIcon*), *short title*, and *short
-         * text* fields are optional for this type, but at least one must be defined. The watch face
-         * may choose which of these fields to display, if any.
+         * The *icon* (and *burnInProtectionIcon*), *short title*, and *short text* fields are
+         * optional for this type, but at least one must be defined. The watch face may choose which
+         * of these fields to display, if any.
          */
         const val TYPE_RANGED_VALUE = 5
 
@@ -2051,13 +2054,13 @@
          * Type used for complications which indicate progress towards a goal. The value may be
          * accompanied by an icon and/or short text and title.
          *
-         * The *value*, and *target value* fields are required for this type, and the
-         * value is expected to always be displayed. The value must be >= 0 and may be > target
-         * value. E.g. 15000 out of a target of 10000 steps.
+         * The *value*, and *target value* fields are required for this type, and the value is
+         * expected to always be displayed. The value must be >= 0 and may be > target value. E.g.
+         * 15000 out of a target of 10000 steps.
          *
-         * The *icon* (and *burnInProtectionIcon*), *short title*, and *short
-         * text* fields are optional for this type, but at least one must be defined. The watch face
-         * may choose which of these fields to display, if any.
+         * The *icon* (and *burnInProtectionIcon*), *short title*, and *short text* fields are
+         * optional for this type, but at least one must be defined. The watch face may choose which
+         * of these fields to display, if any.
          */
         const val TYPE_GOAL_PROGRESS = 13
 
@@ -2065,12 +2068,12 @@
          * Type used for complications to display a series of weighted values e.g. in a pie chart.
          * The weighted values may be accompanied by an icon and/or short text and title.
          *
-         * The *element weights* and *element colors* fields are required for this type,
-         * and the value within the range is expected to always be displayed.
+         * The *element weights* and *element colors* fields are required for this type, and the
+         * value within the range is expected to always be displayed.
          *
-         * The *icon* (and *burnInProtectionIcon*), *short title*, and *short
-         * text* fields are optional for this type, but at least one must be defined. The watch face
-         * may choose which of these fields to display, if any.
+         * The *icon* (and *burnInProtectionIcon*), *short title*, and *short text* fields are
+         * optional for this type, but at least one must be defined. The watch face may choose which
+         * of these fields to display, if any.
          */
         const val TYPE_WEIGHTED_ELEMENTS = 14
 
@@ -2144,212 +2147,232 @@
         private const val FIELD_CONTENT_DESCRIPTION = "IMAGE_CONTENT_DESCRIPTION"
 
         // The set of valid types.
-        private val VALID_TYPES: Set<Int> = setOf(
-            TYPE_NOT_CONFIGURED,
-            TYPE_EMPTY,
-            TYPE_SHORT_TEXT,
-            TYPE_LONG_TEXT,
-            TYPE_RANGED_VALUE,
-            TYPE_ICON,
-            TYPE_SMALL_IMAGE,
-            TYPE_LARGE_IMAGE,
-            TYPE_NO_PERMISSION,
-            TYPE_NO_DATA,
-            EXP_TYPE_PROTO_LAYOUT,
-            EXP_TYPE_LIST,
-            TYPE_GOAL_PROGRESS,
-            TYPE_WEIGHTED_ELEMENTS,
-        )
+        private val VALID_TYPES: Set<Int> =
+            setOf(
+                TYPE_NOT_CONFIGURED,
+                TYPE_EMPTY,
+                TYPE_SHORT_TEXT,
+                TYPE_LONG_TEXT,
+                TYPE_RANGED_VALUE,
+                TYPE_ICON,
+                TYPE_SMALL_IMAGE,
+                TYPE_LARGE_IMAGE,
+                TYPE_NO_PERMISSION,
+                TYPE_NO_DATA,
+                EXP_TYPE_PROTO_LAYOUT,
+                EXP_TYPE_LIST,
+                TYPE_GOAL_PROGRESS,
+                TYPE_WEIGHTED_ELEMENTS,
+            )
 
         // Used for validation. REQUIRED_FIELDS[i] is a list containing all the fields which must be
         // populated for @ComplicationType i.
-        private val REQUIRED_FIELDS: Map<Int, Set<String>> = mapOf(
-            TYPE_NOT_CONFIGURED to setOf(),
-            TYPE_EMPTY to setOf(),
-            TYPE_SHORT_TEXT to setOf(FIELD_SHORT_TEXT),
-            TYPE_LONG_TEXT to setOf(FIELD_LONG_TEXT),
-            TYPE_RANGED_VALUE to setOf(FIELD_MIN_VALUE, FIELD_MAX_VALUE),
-            TYPE_ICON to setOf(FIELD_ICON),
-            TYPE_SMALL_IMAGE to setOf(FIELD_SMALL_IMAGE, FIELD_IMAGE_STYLE),
-            TYPE_LARGE_IMAGE to setOf(FIELD_LARGE_IMAGE),
-            TYPE_NO_PERMISSION to setOf(),
-            TYPE_NO_DATA to setOf(),
-            EXP_TYPE_PROTO_LAYOUT to setOf(
-                EXP_FIELD_PROTO_LAYOUT_AMBIENT,
-                EXP_FIELD_PROTO_LAYOUT_INTERACTIVE,
-                EXP_FIELD_PROTO_LAYOUT_RESOURCES,
-            ),
-            EXP_TYPE_LIST to setOf(EXP_FIELD_LIST_ENTRIES),
-            TYPE_GOAL_PROGRESS to setOf(FIELD_TARGET_VALUE),
-            TYPE_WEIGHTED_ELEMENTS to setOf(
-                FIELD_ELEMENT_WEIGHTS,
-                FIELD_ELEMENT_COLORS,
-                FIELD_ELEMENT_BACKGROUND_COLOR,
-            ),
-        )
+        private val REQUIRED_FIELDS: Map<Int, Set<String>> =
+            mapOf(
+                TYPE_NOT_CONFIGURED to setOf(),
+                TYPE_EMPTY to setOf(),
+                TYPE_SHORT_TEXT to setOf(FIELD_SHORT_TEXT),
+                TYPE_LONG_TEXT to setOf(FIELD_LONG_TEXT),
+                TYPE_RANGED_VALUE to setOf(FIELD_MIN_VALUE, FIELD_MAX_VALUE),
+                TYPE_ICON to setOf(FIELD_ICON),
+                TYPE_SMALL_IMAGE to setOf(FIELD_SMALL_IMAGE, FIELD_IMAGE_STYLE),
+                TYPE_LARGE_IMAGE to setOf(FIELD_LARGE_IMAGE),
+                TYPE_NO_PERMISSION to setOf(),
+                TYPE_NO_DATA to setOf(),
+                EXP_TYPE_PROTO_LAYOUT to
+                    setOf(
+                        EXP_FIELD_PROTO_LAYOUT_AMBIENT,
+                        EXP_FIELD_PROTO_LAYOUT_INTERACTIVE,
+                        EXP_FIELD_PROTO_LAYOUT_RESOURCES,
+                    ),
+                EXP_TYPE_LIST to setOf(EXP_FIELD_LIST_ENTRIES),
+                TYPE_GOAL_PROGRESS to setOf(FIELD_TARGET_VALUE),
+                TYPE_WEIGHTED_ELEMENTS to
+                    setOf(
+                        FIELD_ELEMENT_WEIGHTS,
+                        FIELD_ELEMENT_COLORS,
+                        FIELD_ELEMENT_BACKGROUND_COLOR,
+                    ),
+            )
 
         // Used for validation. REQUIRED_ONE_OF_FIELDS[i] is a list of field groups of which at
         // least one field must be populated for @ComplicationType i.
         // If a field is also in REQUIRED_FIELDS[i], it is not required if another field in the one
         // of group is populated.
-        private val REQUIRED_ONE_OF_FIELDS: Map<Int, Set<Set<String>>> = mapOf(
-            TYPE_NOT_CONFIGURED to setOf(),
-            TYPE_EMPTY to setOf(),
-            TYPE_SHORT_TEXT to setOf(),
-            TYPE_LONG_TEXT to setOf(),
-            TYPE_RANGED_VALUE to setOf(setOf(FIELD_VALUE, FIELD_VALUE_EXPRESSION)),
-            TYPE_ICON to setOf(),
-            TYPE_SMALL_IMAGE to setOf(),
-            TYPE_LARGE_IMAGE to setOf(),
-            TYPE_NO_PERMISSION to setOf(),
-            TYPE_NO_DATA to setOf(),
-            EXP_TYPE_PROTO_LAYOUT to setOf(),
-            EXP_TYPE_LIST to setOf(),
-            TYPE_GOAL_PROGRESS to setOf(setOf(FIELD_VALUE, FIELD_VALUE_EXPRESSION)),
-            TYPE_WEIGHTED_ELEMENTS to setOf(),
-        )
+        private val REQUIRED_ONE_OF_FIELDS: Map<Int, Set<Set<String>>> =
+            mapOf(
+                TYPE_NOT_CONFIGURED to setOf(),
+                TYPE_EMPTY to setOf(),
+                TYPE_SHORT_TEXT to setOf(),
+                TYPE_LONG_TEXT to setOf(),
+                TYPE_RANGED_VALUE to setOf(setOf(FIELD_VALUE, FIELD_VALUE_EXPRESSION)),
+                TYPE_ICON to setOf(),
+                TYPE_SMALL_IMAGE to setOf(),
+                TYPE_LARGE_IMAGE to setOf(),
+                TYPE_NO_PERMISSION to setOf(),
+                TYPE_NO_DATA to setOf(),
+                EXP_TYPE_PROTO_LAYOUT to setOf(),
+                EXP_TYPE_LIST to setOf(),
+                TYPE_GOAL_PROGRESS to setOf(setOf(FIELD_VALUE, FIELD_VALUE_EXPRESSION)),
+                TYPE_WEIGHTED_ELEMENTS to setOf(),
+            )
 
-        private val COMMON_OPTIONAL_FIELDS: Array<String> = arrayOf(
-            FIELD_TAP_ACTION,
-            FIELD_CONTENT_DESCRIPTION,
-            FIELD_DATA_SOURCE,
-            FIELD_PERSISTENCE_POLICY,
-            FIELD_DISPLAY_POLICY,
-            FIELD_TIMELINE_START_TIME,
-            FIELD_TIMELINE_END_TIME,
-            FIELD_START_TIME,
-            FIELD_END_TIME,
-            FIELD_TIMELINE_ENTRIES,
-            FIELD_TIMELINE_ENTRY_TYPE,
-        )
+        private val COMMON_OPTIONAL_FIELDS: Array<String> =
+            arrayOf(
+                FIELD_TAP_ACTION,
+                FIELD_CONTENT_DESCRIPTION,
+                FIELD_DATA_SOURCE,
+                FIELD_PERSISTENCE_POLICY,
+                FIELD_DISPLAY_POLICY,
+                FIELD_TIMELINE_START_TIME,
+                FIELD_TIMELINE_END_TIME,
+                FIELD_START_TIME,
+                FIELD_END_TIME,
+                FIELD_TIMELINE_ENTRIES,
+                FIELD_TIMELINE_ENTRY_TYPE,
+            )
 
         // Used for validation. OPTIONAL_FIELDS[i] is a list containing all the fields which are
         // valid but not required for type i.
-        private val OPTIONAL_FIELDS: Map<Int, Set<String>> = mapOf(
-            TYPE_NOT_CONFIGURED to setOf(),
-            TYPE_EMPTY to setOf(),
-            TYPE_SHORT_TEXT to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-                FIELD_SHORT_TITLE,
-                FIELD_ICON,
-                FIELD_ICON_BURN_IN_PROTECTION,
-                FIELD_SMALL_IMAGE,
-                FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
-                FIELD_IMAGE_STYLE,
-            ),
-            TYPE_LONG_TEXT to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-                FIELD_LONG_TITLE,
-                FIELD_ICON,
-                FIELD_ICON_BURN_IN_PROTECTION,
-                FIELD_SMALL_IMAGE,
-                FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
-                FIELD_IMAGE_STYLE,
-            ),
-            TYPE_RANGED_VALUE to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-                FIELD_SHORT_TEXT,
-                FIELD_SHORT_TITLE,
-                FIELD_ICON,
-                FIELD_ICON_BURN_IN_PROTECTION,
-                FIELD_SMALL_IMAGE,
-                FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
-                FIELD_IMAGE_STYLE,
-                FIELD_COLOR_RAMP,
-                FIELD_COLOR_RAMP_INTERPOLATED,
-                FIELD_VALUE_TYPE,
-            ),
-            TYPE_ICON to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-                FIELD_ICON_BURN_IN_PROTECTION,
-            ),
-            TYPE_SMALL_IMAGE to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-                FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
-            ),
-            TYPE_LARGE_IMAGE to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-            ),
-            TYPE_NO_PERMISSION to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-                FIELD_SHORT_TEXT,
-                FIELD_SHORT_TITLE,
-                FIELD_ICON,
-                FIELD_ICON_BURN_IN_PROTECTION,
-                FIELD_SMALL_IMAGE,
-                FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
-                FIELD_IMAGE_STYLE,
-            ),
-            TYPE_NO_DATA to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-                FIELD_COLOR_RAMP,
-                FIELD_COLOR_RAMP_INTERPOLATED,
-                FIELD_ELEMENT_BACKGROUND_COLOR,
-                FIELD_ELEMENT_COLORS,
-                FIELD_ELEMENT_WEIGHTS,
-                FIELD_ICON,
-                FIELD_ICON_BURN_IN_PROTECTION,
-                FIELD_IMAGE_STYLE,
-                FIELD_LARGE_IMAGE,
-                FIELD_LONG_TITLE,
-                FIELD_LONG_TEXT,
-                FIELD_MAX_VALUE,
-                FIELD_MIN_VALUE,
-                FIELD_PLACEHOLDER_FIELDS,
-                FIELD_PLACEHOLDER_TYPE,
-                FIELD_SMALL_IMAGE,
-                FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
-                FIELD_SHORT_TITLE,
-                FIELD_SHORT_TEXT,
-                FIELD_TAP_ACTION_LOST,
-                FIELD_TARGET_VALUE,
-                FIELD_VALUE,
-                FIELD_VALUE_EXPRESSION,
-                FIELD_VALUE_TYPE,
-                EXP_FIELD_LIST_ENTRIES,
-                EXP_FIELD_LIST_ENTRY_TYPE,
-                EXP_FIELD_LIST_STYLE_HINT,
-                EXP_FIELD_PROTO_LAYOUT_AMBIENT,
-                EXP_FIELD_PROTO_LAYOUT_INTERACTIVE,
-                EXP_FIELD_PROTO_LAYOUT_RESOURCES,
-            ),
-            EXP_TYPE_PROTO_LAYOUT to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-            ),
-            EXP_TYPE_LIST to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-                EXP_FIELD_LIST_STYLE_HINT,
-            ),
-            TYPE_GOAL_PROGRESS to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-                FIELD_SHORT_TEXT,
-                FIELD_SHORT_TITLE,
-                FIELD_ICON,
-                FIELD_ICON_BURN_IN_PROTECTION,
-                FIELD_SMALL_IMAGE,
-                FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
-                FIELD_IMAGE_STYLE,
-                FIELD_COLOR_RAMP,
-                FIELD_COLOR_RAMP_INTERPOLATED,
-            ),
-            TYPE_WEIGHTED_ELEMENTS to setOf(
-                *COMMON_OPTIONAL_FIELDS,
-                FIELD_SHORT_TEXT,
-                FIELD_SHORT_TITLE,
-                FIELD_ICON,
-                FIELD_ICON_BURN_IN_PROTECTION,
-                FIELD_SMALL_IMAGE,
-                FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
-                FIELD_IMAGE_STYLE,
-            ),
-        )
+        private val OPTIONAL_FIELDS: Map<Int, Set<String>> =
+            mapOf(
+                TYPE_NOT_CONFIGURED to setOf(),
+                TYPE_EMPTY to setOf(),
+                TYPE_SHORT_TEXT to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                        FIELD_SHORT_TITLE,
+                        FIELD_ICON,
+                        FIELD_ICON_BURN_IN_PROTECTION,
+                        FIELD_SMALL_IMAGE,
+                        FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
+                        FIELD_IMAGE_STYLE,
+                    ),
+                TYPE_LONG_TEXT to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                        FIELD_LONG_TITLE,
+                        FIELD_ICON,
+                        FIELD_ICON_BURN_IN_PROTECTION,
+                        FIELD_SMALL_IMAGE,
+                        FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
+                        FIELD_IMAGE_STYLE,
+                    ),
+                TYPE_RANGED_VALUE to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                        FIELD_SHORT_TEXT,
+                        FIELD_SHORT_TITLE,
+                        FIELD_ICON,
+                        FIELD_ICON_BURN_IN_PROTECTION,
+                        FIELD_SMALL_IMAGE,
+                        FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
+                        FIELD_IMAGE_STYLE,
+                        FIELD_COLOR_RAMP,
+                        FIELD_COLOR_RAMP_INTERPOLATED,
+                        FIELD_VALUE_TYPE,
+                    ),
+                TYPE_ICON to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                        FIELD_ICON_BURN_IN_PROTECTION,
+                    ),
+                TYPE_SMALL_IMAGE to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                        FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
+                    ),
+                TYPE_LARGE_IMAGE to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                    ),
+                TYPE_NO_PERMISSION to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                        FIELD_SHORT_TEXT,
+                        FIELD_SHORT_TITLE,
+                        FIELD_ICON,
+                        FIELD_ICON_BURN_IN_PROTECTION,
+                        FIELD_SMALL_IMAGE,
+                        FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
+                        FIELD_IMAGE_STYLE,
+                    ),
+                TYPE_NO_DATA to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                        FIELD_COLOR_RAMP,
+                        FIELD_COLOR_RAMP_INTERPOLATED,
+                        FIELD_ELEMENT_BACKGROUND_COLOR,
+                        FIELD_ELEMENT_COLORS,
+                        FIELD_ELEMENT_WEIGHTS,
+                        FIELD_ICON,
+                        FIELD_ICON_BURN_IN_PROTECTION,
+                        FIELD_IMAGE_STYLE,
+                        FIELD_LARGE_IMAGE,
+                        FIELD_LONG_TITLE,
+                        FIELD_LONG_TEXT,
+                        FIELD_MAX_VALUE,
+                        FIELD_MIN_VALUE,
+                        FIELD_PLACEHOLDER_FIELDS,
+                        FIELD_PLACEHOLDER_TYPE,
+                        FIELD_SMALL_IMAGE,
+                        FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
+                        FIELD_SHORT_TITLE,
+                        FIELD_SHORT_TEXT,
+                        FIELD_TAP_ACTION_LOST,
+                        FIELD_TARGET_VALUE,
+                        FIELD_VALUE,
+                        FIELD_VALUE_EXPRESSION,
+                        FIELD_VALUE_TYPE,
+                        EXP_FIELD_LIST_ENTRIES,
+                        EXP_FIELD_LIST_ENTRY_TYPE,
+                        EXP_FIELD_LIST_STYLE_HINT,
+                        EXP_FIELD_PROTO_LAYOUT_AMBIENT,
+                        EXP_FIELD_PROTO_LAYOUT_INTERACTIVE,
+                        EXP_FIELD_PROTO_LAYOUT_RESOURCES,
+                    ),
+                EXP_TYPE_PROTO_LAYOUT to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                    ),
+                EXP_TYPE_LIST to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                        EXP_FIELD_LIST_STYLE_HINT,
+                    ),
+                TYPE_GOAL_PROGRESS to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                        FIELD_SHORT_TEXT,
+                        FIELD_SHORT_TITLE,
+                        FIELD_ICON,
+                        FIELD_ICON_BURN_IN_PROTECTION,
+                        FIELD_SMALL_IMAGE,
+                        FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
+                        FIELD_IMAGE_STYLE,
+                        FIELD_COLOR_RAMP,
+                        FIELD_COLOR_RAMP_INTERPOLATED,
+                    ),
+                TYPE_WEIGHTED_ELEMENTS to
+                    setOf(
+                        *COMMON_OPTIONAL_FIELDS,
+                        FIELD_SHORT_TEXT,
+                        FIELD_SHORT_TITLE,
+                        FIELD_ICON,
+                        FIELD_ICON_BURN_IN_PROTECTION,
+                        FIELD_SMALL_IMAGE,
+                        FIELD_SMALL_IMAGE_BURN_IN_PROTECTION,
+                        FIELD_IMAGE_STYLE,
+                    ),
+            )
 
         @JvmField
-        val CREATOR = object : Parcelable.Creator<ComplicationData> {
-            override fun createFromParcel(source: Parcel) = ComplicationData(source)
+        val CREATOR =
+            object : Parcelable.Creator<ComplicationData> {
+                override fun createFromParcel(source: Parcel) = ComplicationData(source)
 
-            override fun newArray(size: Int): Array<ComplicationData?> = Array(size) { null }
-        }
+                override fun newArray(size: Int): Array<ComplicationData?> = Array(size) { null }
+            }
 
         fun isFieldValidForType(field: String, @ComplicationType type: Int): Boolean {
             return REQUIRED_FIELDS[type]!!.contains(field) ||
@@ -2360,9 +2383,8 @@
         private fun isTypeSupported(type: Int) = type in VALID_TYPES
 
         /**
-         * The unparceling logic needs to remain backward compatible.
-         * Validates that a value of the given field type can be assigned
-         * to the given complication type.
+         * The unparceling logic needs to remain backward compatible. Validates that a value of the
+         * given field type can be assigned to the given complication type.
          */
         internal fun checkFieldValidForTypeWithoutThrowingException(
             fieldType: String,
@@ -2385,18 +2407,15 @@
         }
 
         /** Returns whether or not we should redact complication data in toString(). */
-        @JvmStatic
-        fun shouldRedact() = !Log.isLoggable(TAG, Log.DEBUG)
+        @JvmStatic fun shouldRedact() = !Log.isLoggable(TAG, Log.DEBUG)
 
         @JvmStatic
         fun maybeRedact(unredacted: CharSequence?): String =
-            if (unredacted == null) "(null)"
-            else maybeRedact(unredacted.toString())
+            if (unredacted == null) "(null)" else maybeRedact(unredacted.toString())
 
         @JvmSynthetic
         private fun maybeRedact(unredacted: String): String =
-            if (!shouldRedact() || unredacted == PLACEHOLDER_STRING) unredacted
-            else "REDACTED"
+            if (!shouldRedact() || unredacted == PLACEHOLDER_STRING) unredacted else "REDACTED"
     }
 }
 
@@ -2416,9 +2435,8 @@
 }
 
 /** Reads an [IntArray] written with [writeIntArray]. */
-internal fun ObjectInputStream.readIntArray() = IntArray(readInt()).also {
-    for (i in it.indices) it[i] = readInt()
-}
+internal fun ObjectInputStream.readIntArray() =
+    IntArray(readInt()).also { for (i in it.indices) it[i] = readInt() }
 
 /** Writes a [FloatArray] by writing the size, then the bytes. To be used with [readFloatArray]. */
 internal fun ObjectOutputStream.writeFloatArray(value: FloatArray) {
@@ -2427,9 +2445,8 @@
 }
 
 /** Reads a [FloatArray] written with [writeFloatArray]. */
-internal fun ObjectInputStream.readFloatArray() = FloatArray(readInt()).also {
-    for (i in it.indices) it[i] = readFloat()
-}
+internal fun ObjectInputStream.readFloatArray() =
+    FloatArray(readInt()).also { for (i in it.indices) it[i] = readFloat() }
 
 /** Writes a generic [List] by writing the size, then the objects. To be used with [readList]. */
 internal fun <T> ObjectOutputStream.writeList(value: List<T>, writer: (T) -> Unit) {
diff --git a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationProviderInfo.java b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationProviderInfo.java
index 6c7eea8..03ed7f6 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationProviderInfo.java
+++ b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationProviderInfo.java
@@ -29,9 +29,9 @@
 
 /**
  * Holder of details of a complication provider, for use by watch faces (for example, to show the
- * current provider in settings). A
- * {@link androidx.wear.watchface.complications.ComplicationDataSourceInfoRetriever} can be used to
- * obtain instances of this class for each of a watch face's complications.
+ * current provider in settings). A {@link
+ * androidx.wear.watchface.complications.ComplicationDataSourceInfoRetriever} can be used to obtain
+ * instances of this class for each of a watch face's complications.
  *
  * @hide
  */
@@ -78,7 +78,9 @@
      * @param providerComponentName The component name of the complication provider
      */
     public ComplicationProviderInfo(
-            @NonNull String appName, @NonNull String providerName, @NonNull Icon providerIcon,
+            @NonNull String appName,
+            @NonNull String providerName,
+            @NonNull Icon providerIcon,
             @ComplicationData.ComplicationType int complicationType,
             @Nullable ComponentName providerComponentName) {
         this.mAppName = appName;
@@ -88,9 +90,7 @@
         this.mProviderComponentName = providerComponentName;
     }
 
-    /**
-     * Constructs a {@link ComplicationProviderInfo} from details stored in a {@link Parcel}.
-     */
+    /** Constructs a {@link ComplicationProviderInfo} from details stored in a {@link Parcel}. */
     @SuppressWarnings({"ParcelConstructor", "deprecation"})
     public ComplicationProviderInfo(@NonNull Parcel in) {
         Bundle bundle = in.readBundle(getClass().getClassLoader());
@@ -135,7 +135,7 @@
         return mProviderName;
     }
 
-    /** Sets the  name of the complication provider */
+    /** Sets the name of the complication provider */
     public void setProviderName(@NonNull String providerName) {
         mProviderName = providerName;
     }
diff --git a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationText.java b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationText.java
index cefbd65..7020a81 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationText.java
+++ b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationText.java
@@ -59,7 +59,7 @@
  * <p>Instances of this class should be obtained either by calling {@link #plainText}, or by using
  * one of the provided builders: {@link TimeDifferenceBuilder} or {@link TimeFormatBuilder}.
  *
- * <p>Note this class is not thread safe.</p>
+ * <p>Note this class is not thread safe.
  *
  * @hide
  */
@@ -83,10 +83,9 @@
         } else {
             if (that.mExpression == null) {
                 return false;
-            } else if (
-                    !Arrays.equals(mExpression.toDynamicStringByteArray(),
-                            that.mExpression.toDynamicStringByteArray())
-            ) {
+            } else if (!Arrays.equals(
+                    mExpression.toDynamicStringByteArray(),
+                    that.mExpression.toDynamicStringByteArray())) {
                 return false;
             }
         }
@@ -112,31 +111,35 @@
         return Objects.hash(
                 mSurroundingText,
                 mTimeDependentText,
-                mExpression == null ?
-                        null : Arrays.hashCode(mExpression.toDynamicStringByteArray()));
+                mExpression == null
+                        ? null
+                        : Arrays.hashCode(mExpression.toDynamicStringByteArray()));
     }
 
     @NonNull
     @Override
     public String toString() {
         return "ComplicationText{"
-                + "mSurroundingText=" + ComplicationData.maybeRedact(mSurroundingText)
-                + ", mTimeDependentText=" + mTimeDependentText
-                + ", mExpression=" + mExpression + "}";
+                + "mSurroundingText="
+                + ComplicationData.maybeRedact(mSurroundingText)
+                + ", mTimeDependentText="
+                + mTimeDependentText
+                + ", mExpression="
+                + mExpression
+                + "}";
     }
 
     /** @hide */
     @IntDef({
-            DIFFERENCE_STYLE_STOPWATCH,
-            DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT
+        DIFFERENCE_STYLE_STOPWATCH,
+        DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+        DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+        DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+        DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT
     })
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     @Retention(RetentionPolicy.SOURCE)
-    public @interface TimeDifferenceStyle {
-    }
+    public @interface TimeDifferenceStyle {}
 
     /**
      * Style for time differences shown in a numeric fashion like a timer.
@@ -235,8 +238,7 @@
     @IntDef({FORMAT_STYLE_DEFAULT, FORMAT_STYLE_UPPER_CASE, FORMAT_STYLE_LOWER_CASE})
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     @Retention(RetentionPolicy.SOURCE)
-    public @interface TimeFormatStyle {
-    }
+    public @interface TimeFormatStyle {}
 
     /** Style where the formatted date/time should be shown unchanged. */
     public static final int FORMAT_STYLE_DEFAULT = 1;
@@ -282,24 +284,21 @@
      * #mTimeDependentText} is not null, getText will return this text with {@code ^1} replaced by
      * the time-dependent string.
      */
-    @Nullable
-    private final CharSequence mSurroundingText;
+    @Nullable private final CharSequence mSurroundingText;
 
     /**
      * The time-dependent part of the complication text. If {@link #mSurroundingText} is null, this
      * must be not null and {@link #getTextAt} will return just the time-dependent value relative to
      * the given time.
      */
-    @Nullable
-    private final TimeDependentText mTimeDependentText;
+    @Nullable private final TimeDependentText mTimeDependentText;
 
     /** A {@link DynamicString} which will be evaluated by the system on the WatchFace's behalf. */
-    @Nullable
-    private final DynamicString mExpression;
+    @Nullable private final DynamicString mExpression;
 
     /** Used to replace occurrences of ^1 with time dependent text and ignore ^[2-9]. */
     private final CharSequence[] mTemplateValues =
-            new CharSequence[]{"", "^2", "^3", "^4", "^5", "^6", "^7", "^8", "^9"};
+            new CharSequence[] {"", "^2", "^3", "^4", "^5", "^6", "^7", "^8", "^9"};
 
     /** The timestamp of the stored TimeDependentText in the cache. */
     private long mDependentTextCacheTime;
@@ -317,21 +316,21 @@
     }
 
     public ComplicationText(@NonNull CharSequence surroundingText) {
-        this(surroundingText, /* timeDependentText = */ null, /* expression = */ null);
+        this(surroundingText, /* timeDependentText= */ null, /* expression= */ null);
     }
 
     public ComplicationText(
             @NonNull CharSequence surroundingText, @NonNull TimeDependentText timeDependentText) {
-        this(surroundingText, timeDependentText, /* expression = */ null);
+        this(surroundingText, timeDependentText, /* expression= */ null);
     }
 
     public ComplicationText(
             @NonNull CharSequence surroundingText, @NonNull DynamicString expression) {
-        this(surroundingText, /* timeDependentText = */ null, expression);
+        this(surroundingText, /* timeDependentText= */ null, expression);
     }
 
     public ComplicationText(@NonNull DynamicString expression) {
-        this(/* surroundingText = */ null, /* timeDependentText = */ null, expression);
+        this(/* surroundingText= */ null, /* timeDependentText= */ null, expression);
     }
 
     private ComplicationText(@NonNull Parcel in) {
@@ -376,7 +375,8 @@
         TimeDependentText mTimeDependentText;
         DynamicString mExpression;
 
-        SerializedForm(@Nullable CharSequence surroundingText,
+        SerializedForm(
+                @Nullable CharSequence surroundingText,
                 @Nullable TimeDependentText timeDependentText,
                 @Nullable DynamicString expression) {
             mSurroundingText = surroundingText;
@@ -449,7 +449,7 @@
     /**
      * Writes this {@link ComplicationProviderInfo} to a {@link Parcel}.
      *
-     * @param out   The {@link Parcel} to write to
+     * @param out The {@link Parcel} to write to
      * @param flags Flags for writing the {@link Parcel}
      */
     @Override
@@ -469,8 +469,8 @@
                 bundle.putInt(KEY_DIFFERENCE_STYLE, timeDiffText.getStyle());
                 bundle.putBoolean(KEY_DIFFERENCE_SHOW_NOW_TEXT, timeDiffText.shouldShowNowText());
                 if (timeDiffText.getMinimumUnit() != null) {
-                    bundle.putString(KEY_DIFFERENCE_MINIMUM_UNIT,
-                            timeDiffText.getMinimumUnit().name());
+                    bundle.putString(
+                            KEY_DIFFERENCE_MINIMUM_UNIT, timeDiffText.getMinimumUnit().name());
                 }
             } else if (mTimeDependentText instanceof TimeFormatText) {
                 TimeFormatText timeFormatText = (TimeFormatText) mTimeDependentText;
@@ -495,8 +495,8 @@
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public TimeDependentText getTimeDependentText() {
         if (mExpression != null) {
-            throw new UnsupportedOperationException("getTimeDependentText not supported for "
-                    + "StringExpressions");
+            throw new UnsupportedOperationException(
+                    "getTimeDependentText not supported for " + "StringExpressions");
         }
         assert mTimeDependentText != null;
         return mTimeDependentText;
@@ -505,13 +505,13 @@
     /**
      * Note if this ComplicationText contains a TimeDifference text and the {@code dateTimeMillis}
      * is between {@code referencePeriodStart} and {@code referencePeriodEnd}, then the text
-     * returned will be "now" (localised to the default locale).  If the time is before
-     * {@code referencePeriodStart} then the text returned will represent the time difference
-     * between {@code referencePeriodStart} and {@code dateTimeMillis}. If the time is after
-     * {@code referencePeriodEnd} then the text returned will represent the time difference
-     * between {@code referencePeriodStart} and {@code dateTimeMillis}.
+     * returned will be "now" (localised to the default locale). If the time is before {@code
+     * referencePeriodStart} then the text returned will represent the time difference between
+     * {@code referencePeriodStart} and {@code dateTimeMillis}. If the time is after {@code
+     * referencePeriodEnd} then the text returned will represent the time difference between {@code
+     * referencePeriodStart} and {@code dateTimeMillis}.
      *
-     * @param resources      {@link Resources} from the current {@link Context}
+     * @param resources {@link Resources} from the current {@link Context}
      * @param dateTimeMillis milliseconds since epoch, e.g. from {@link System#currentTimeMillis}
      * @return Text appropriate for the given date time.
      */
@@ -519,8 +519,8 @@
     @Override
     public CharSequence getTextAt(@NonNull Resources resources, long dateTimeMillis) {
         if (mExpression != null && mTimeDependentText == null && mSurroundingText == null) {
-            throw new UnsupportedOperationException("getTextAt not supported for "
-                    + "StringExpressions");
+            throw new UnsupportedOperationException(
+                    "getTextAt not supported for " + "StringExpressions");
         }
 
         if (mTimeDependentText == null) {
@@ -609,9 +609,9 @@
      * Returns a ComplicationText object that will display the given {@code text} for any input
      * time.
      *
-     * <p>If the text contains spans, some of them may not be rendered by
-     * {@link androidx.wear.watchface.complications.rendering.ComplicationDrawable}. Supported spans
-     * are {@link ForegroundColorSpan}, {@link LocaleSpan}, {@link SubscriptSpan}, {@link
+     * <p>If the text contains spans, some of them may not be rendered by {@link
+     * androidx.wear.watchface.complications.rendering.ComplicationDrawable}. Supported spans are
+     * {@link ForegroundColorSpan}, {@link LocaleSpan}, {@link SubscriptSpan}, {@link
      * SuperscriptSpan}, {@link StyleSpan}, {@link StrikethroughSpan}, {@link TypefaceSpan} and
      * {@link UnderlineSpan}.
      *
@@ -649,27 +649,21 @@
 
         private long mReferencePeriodStartMillis = NO_PERIOD_START;
         private long mReferencePeriodEndMillis = NO_PERIOD_END;
-        @TimeDifferenceStyle
-        private int mStyle = ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT;
+        @TimeDifferenceStyle private int mStyle = ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT;
         private CharSequence mSurroundingText;
         private Boolean mShowNowText;
         private TimeUnit mMinimumUnit;
 
-        public TimeDifferenceBuilder() {
-        }
+        public TimeDifferenceBuilder() {}
 
         /**
          * @param referencePeriodStartMillis The start of the reference period (in milliseconds
-         *                                   since the epoch) from which the time difference will
-         *                                   be calculated.
-         * @param referencePeriodEndMillis   The end of the reference period (in milliseconds since
-         *                                   the epoch) from which the time difference will be
-         *                                   calculated.
+         *     since the epoch) from which the time difference will be calculated.
+         * @param referencePeriodEndMillis The end of the reference period (in milliseconds since
+         *     the epoch) from which the time difference will be calculated.
          */
         public TimeDifferenceBuilder(
-                long referencePeriodStartMillis,
-                long referencePeriodEndMillis
-        ) {
+                long referencePeriodStartMillis, long referencePeriodEndMillis) {
             mReferencePeriodStartMillis = referencePeriodStartMillis;
             mReferencePeriodEndMillis = referencePeriodEndMillis;
         }
@@ -679,7 +673,7 @@
          * Defaults to 0, effectively making the period unbounded at the start.
          *
          * @param refPeriodStartMillis the end of the reference period, given as UTC milliseconds
-         *                             since the epoch.
+         *     since the epoch.
          * @return this builder for chaining.
          */
         @NonNull
@@ -696,7 +690,7 @@
          * Defaults to {@code Long.MAX_VALUE}, effectively making the period unbounded at the end.
          *
          * @param refPeriodEndMillis the end of the reference period, given as UTC milliseconds
-         *                           since the epoch.
+         *     since the epoch.
          * @return this builder for chaining.
          */
         @NonNull
@@ -740,7 +734,7 @@
          * {@link UnderlineSpan}.
          *
          * @param surroundingText text within which the time difference value will be displayed,
-         *                        with {@code ^1} in place of the time difference.
+         *     with {@code ^1} in place of the time difference.
          * @return this builder for chaining.
          */
         @NonNull
@@ -815,8 +809,7 @@
      */
     public static final class TimeFormatBuilder {
         private String mFormat;
-        @TimeFormatStyle
-        private int mStyle = ComplicationText.FORMAT_STYLE_DEFAULT;
+        @TimeFormatStyle private int mStyle = ComplicationText.FORMAT_STYLE_DEFAULT;
         private CharSequence mSurroundingText;
         private TimeZone mTimeZone;
 
@@ -848,20 +841,20 @@
         /**
          * Sets the string within which the time difference will be displayed. This is optional.
          *
-         * <p>Within the text, {@code ^1} will be replaced with the time format, so for example
-         * to show a result like {@code "10:00: meeting"} the surrounding text would be {@code "^1:
+         * <p>Within the text, {@code ^1} will be replaced with the time format, so for example to
+         * show a result like {@code "10:00: meeting"} the surrounding text would be {@code "^1:
          * meeting"}.
          *
          * <p>To use the {@code ^} character within the text, escape it as {@code ^^}.
          *
-         * <p>If the text contains spans, some of them may not be rendered by
-         * {@link androidx.wear.watchface.complications.rendering.ComplicationDrawable}. Supported
-         * spans are {@link ForegroundColorSpan}, {@link LocaleSpan}, {@link SubscriptSpan}, {@link
+         * <p>If the text contains spans, some of them may not be rendered by {@link
+         * androidx.wear.watchface.complications.rendering.ComplicationDrawable}. Supported spans
+         * are {@link ForegroundColorSpan}, {@link LocaleSpan}, {@link SubscriptSpan}, {@link
          * SuperscriptSpan}, {@link StyleSpan}, {@link StrikethroughSpan}, {@link TypefaceSpan} and
          * {@link UnderlineSpan}.
          *
          * @param surroundingText string within which the time difference value will be displayed,
-         *                        with {@code ^1} in place of the time difference.
+         *     with {@code ^1} in place of the time difference.
          * @return this builder for chaining.
          */
         @NonNull
diff --git a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationTextTemplate.java b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationTextTemplate.java
index 27a3827..f4376a6 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationTextTemplate.java
+++ b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationTextTemplate.java
@@ -81,8 +81,7 @@
     private final ComplicationText[] mComplicationTexts;
 
     ComplicationTextTemplate(
-            @Nullable CharSequence surroundingText,
-            @NonNull ComplicationText[] complicationTexts) {
+            @Nullable CharSequence surroundingText, @NonNull ComplicationText[] complicationTexts) {
         mSurroundingText = surroundingText;
         mComplicationTexts = complicationTexts;
         checkFields();
@@ -225,10 +224,10 @@
          *
          * <p>If not specified, the texts will be concatenated together, separated by spaces.
          *
-         * <p>If the text contains spans, some of them may not be rendered by
-         * {@link ComplicationDrawable}. Supported spans are {@link ForegroundColorSpan},
-         * {@link LocaleSpan}, {@link SubscriptSpan}, {@link SuperscriptSpan}, {@link StyleSpan},
-         * {@link StrikethroughSpan}, {@link TypefaceSpan} and {@link UnderlineSpan}.
+         * <p>If the text contains spans, some of them may not be rendered by {@link
+         * ComplicationDrawable}. Supported spans are {@link ForegroundColorSpan}, {@link
+         * LocaleSpan}, {@link SubscriptSpan}, {@link SuperscriptSpan}, {@link StyleSpan}, {@link
+         * StrikethroughSpan}, {@link TypefaceSpan} and {@link UnderlineSpan}.
          *
          * @param surroundingText string template
          * @return this builder for chaining
diff --git a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/IconSerializableHelper.java b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/IconSerializableHelper.java
index 4dea811..acb56d7 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/IconSerializableHelper.java
+++ b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/IconSerializableHelper.java
@@ -105,8 +105,8 @@
 
             case Icon.TYPE_BITMAP:
             case Icon.TYPE_ADAPTIVE_BITMAP:
-                return Icon.createWithBitmap(BitmapFactory.decodeByteArray(mBitmap, 0,
-                        mBitmap.length));
+                return Icon.createWithBitmap(
+                        BitmapFactory.decodeByteArray(mBitmap, 0, mBitmap.length));
 
             default:
                 return null;
diff --git a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/TimeDifferenceText.java b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/TimeDifferenceText.java
index 5284261..37d751b 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/TimeDifferenceText.java
+++ b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/TimeDifferenceText.java
@@ -51,13 +51,11 @@
     private final long mReferencePeriodStart;
     private final long mReferencePeriodEnd;
 
-    @ComplicationText.TimeDifferenceStyle
-    private final int mStyle;
+    @ComplicationText.TimeDifferenceStyle private final int mStyle;
 
     private final boolean mShowNowText;
 
-    @Nullable
-    private final TimeUnit mMinimumUnit;
+    @Nullable private final TimeUnit mMinimumUnit;
 
     public TimeDifferenceText(
             long referencePeriodStart,
@@ -78,14 +76,16 @@
         if (o == null || getClass() != o.getClass()) return false;
         TimeDifferenceText that = (TimeDifferenceText) o;
         return mReferencePeriodStart == that.mReferencePeriodStart
-                && mReferencePeriodEnd == that.mReferencePeriodEnd && mStyle == that.mStyle
-                && mShowNowText == that.mShowNowText && mMinimumUnit == that.mMinimumUnit;
+                && mReferencePeriodEnd == that.mReferencePeriodEnd
+                && mStyle == that.mStyle
+                && mShowNowText == that.mShowNowText
+                && mMinimumUnit == that.mMinimumUnit;
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mReferencePeriodStart, mReferencePeriodEnd, mStyle, mShowNowText,
-                mMinimumUnit);
+        return Objects.hash(
+                mReferencePeriodStart, mReferencePeriodEnd, mStyle, mShowNowText, mMinimumUnit);
     }
 
     @NonNull
@@ -94,23 +94,28 @@
         if (ComplicationData.shouldRedact()) {
             return "TimeDifferenceText{Redacted}";
         }
-        return "TimeDifferenceText{mReferencePeriodStart=" + mReferencePeriodStart
-                + ", mReferencePeriodEnd=" + mReferencePeriodEnd
-                + ", mStyle=" + mStyle  + ", mShowNowText=" + mShowNowText
-                + ", mMinimumUnit=" + mMinimumUnit + '}';
+        return "TimeDifferenceText{mReferencePeriodStart="
+                + mReferencePeriodStart
+                + ", mReferencePeriodEnd="
+                + mReferencePeriodEnd
+                + ", mStyle="
+                + mStyle
+                + ", mShowNowText="
+                + mShowNowText
+                + ", mMinimumUnit="
+                + mMinimumUnit
+                + '}';
     }
 
     private static class SerializedForm implements Serializable {
         long mReferencePeriodStart;
         long mReferencePeriodEnd;
 
-        @ComplicationText.TimeDifferenceStyle
-        int mStyle;
+        @ComplicationText.TimeDifferenceStyle int mStyle;
 
         boolean mShowNowText;
 
-        @Nullable
-        TimeUnit mMinimumUnit;
+        @Nullable TimeUnit mMinimumUnit;
 
         SerializedForm(
                 long referencePeriodStart,
@@ -126,14 +131,14 @@
         }
 
         Object readResolve() {
-            return new TimeDifferenceText(mReferencePeriodStart, mReferencePeriodEnd, mStyle,
-                    mShowNowText, mMinimumUnit);
+            return new TimeDifferenceText(
+                    mReferencePeriodStart, mReferencePeriodEnd, mStyle, mShowNowText, mMinimumUnit);
         }
     }
 
     Object writeReplace() {
-        return new SerializedForm(mReferencePeriodStart, mReferencePeriodEnd, mStyle,
-                mShowNowText, mMinimumUnit);
+        return new SerializedForm(
+                mReferencePeriodStart, mReferencePeriodEnd, mStyle, mShowNowText, mMinimumUnit);
     }
 
     private void readObject(ObjectInputStream stream) throws InvalidObjectException {
@@ -179,9 +184,7 @@
         return divRoundingUp(fromTime, precision) * precision + 1;
     }
 
-    /**
-     * Returns the time precision in milliseconds.
-     */
+    /** Returns the time precision in milliseconds. */
     public long getPrecision() {
         long defaultPrecision;
         switch (mStyle) {
diff --git a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/TimeFormatText.java b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/TimeFormatText.java
index 20d958f..c448b66 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/TimeFormatText.java
+++ b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/TimeFormatText.java
@@ -46,9 +46,10 @@
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
         TimeFormatText that = (TimeFormatText) o;
-        return mStyle == that.mStyle && mTimePrecision == that.mTimePrecision
-                && Objects.equals(mDateFormat, that.mDateFormat) && Objects.equals(
-                mTimeZone, that.mTimeZone)
+        return mStyle == that.mStyle
+                && mTimePrecision == that.mTimePrecision
+                && Objects.equals(mDateFormat, that.mDateFormat)
+                && Objects.equals(mTimeZone, that.mTimeZone)
                 && Objects.equals(mDate.toString(), that.mDate.toString());
     }
 
@@ -63,9 +64,17 @@
         if (ComplicationData.shouldRedact()) {
             return "TimeFormatText{Redacted}";
         }
-        return "TimeFormatText{mDateFormat=" + mDateFormat
-                + ", mStyle=" + mStyle + ", mTimeZone=" + mTimeZone + ", mDate=" + mDate
-                + ", mTimePrecision=" + mTimePrecision + '}';
+        return "TimeFormatText{mDateFormat="
+                + mDateFormat
+                + ", mStyle="
+                + mStyle
+                + ", mTimeZone="
+                + mTimeZone
+                + ", mDate="
+                + mDate
+                + ", mTimePrecision="
+                + mTimePrecision
+                + '}';
     }
 
     private static class DateTimeFormat {
@@ -79,23 +88,23 @@
     }
 
     private static final DateTimeFormat[] DATE_TIME_FORMATS = {
-            new DateTimeFormat(new String[]{"S", "s"}, TimeUnit.SECONDS.toMillis(1)),
-            new DateTimeFormat(new String[]{"m"}, TimeUnit.MINUTES.toMillis(1)),
-            new DateTimeFormat(new String[]{"H", "K", "h", "k", "j", "J", "C"},
-                    TimeUnit.HOURS.toMillis(1)),
-            new DateTimeFormat(new String[]{"a", "b", "B"}, TimeUnit.HOURS.toMillis(12)),
+        new DateTimeFormat(new String[] {"S", "s"}, TimeUnit.SECONDS.toMillis(1)),
+        new DateTimeFormat(new String[] {"m"}, TimeUnit.MINUTES.toMillis(1)),
+        new DateTimeFormat(
+                new String[] {"H", "K", "h", "k", "j", "J", "C"}, TimeUnit.HOURS.toMillis(1)),
+        new DateTimeFormat(new String[] {"a", "b", "B"}, TimeUnit.HOURS.toMillis(12)),
     };
 
     private final SimpleDateFormat mDateFormat;
 
-    @ComplicationText.TimeFormatStyle
-    private final int mStyle;
+    @ComplicationText.TimeFormatStyle private final int mStyle;
     private final TimeZone mTimeZone;
     private final Date mDate;
     private long mTimePrecision;
 
     public TimeFormatText(
-            @NonNull String format, @ComplicationText.TimeFormatStyle int style,
+            @NonNull String format,
+            @ComplicationText.TimeFormatStyle int style,
             @Nullable TimeZone timeZone) {
         if (format == null) {
             throw new IllegalArgumentException("Format must be specified.");
@@ -112,7 +121,8 @@
         mDate = new Date();
     }
 
-    TimeFormatText(SimpleDateFormat dateFormat,
+    TimeFormatText(
+            SimpleDateFormat dateFormat,
             @ComplicationText.TimeFormatStyle int style,
             TimeZone timeZone,
             long timePrecision) {
@@ -125,13 +135,14 @@
 
     private static class SerializedForm implements Serializable {
         SimpleDateFormat mDateFormat;
-        @ComplicationText.TimeFormatStyle
-        int mStyle;
+        @ComplicationText.TimeFormatStyle int mStyle;
         TimeZone mTimeZone;
         long mTimePrecision;
 
-        SerializedForm(@NonNull SimpleDateFormat dateFormat,
-                @ComplicationText.TimeFormatStyle int style, @Nullable TimeZone timeZone,
+        SerializedForm(
+                @NonNull SimpleDateFormat dateFormat,
+                @ComplicationText.TimeFormatStyle int style,
+                @Nullable TimeZone timeZone,
                 long timePrecision) {
             mDateFormat = dateFormat;
             mStyle = style;
diff --git a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/package-info.java b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/package-info.java
index 7aa7905..7ccf319 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/package-info.java
+++ b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/package-info.java
@@ -14,9 +14,7 @@
  * limitations under the License.
  */
 
-/**
- * @hide
- */
+/** @hide */
 @RestrictTo(LIBRARY_GROUP)
 package android.support.wearable.complications;
 
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt
index cafdea4e..44aa387 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt
@@ -16,9 +16,9 @@
 
 package androidx.wear.watchface.complications.data
 
+import android.icu.util.ULocale
 import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.support.wearable.complications.ComplicationText as WireComplicationText
-import android.icu.util.ULocale
 import androidx.annotation.RestrictTo
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat
 import androidx.wear.protolayout.expression.pipeline.BoundDynamicType
@@ -120,7 +120,8 @@
         val receivers = mutableSetOf<ComplicationEvaluationResultReceiver<out Any>>()
 
         if (unevaluatedData.hasRangedValueExpression()) {
-            unevaluatedData.rangedValueExpression?.buildReceiver { setRangedValue(it) }
+            unevaluatedData.rangedValueExpression
+                ?.buildReceiver { setRangedValue(it) }
                 ?.let { receivers += it }
         }
         if (unevaluatedData.hasLongText()) {
@@ -136,7 +137,8 @@
             unevaluatedData.shortTitle?.buildReceiver { setShortTitle(it) }?.let { receivers += it }
         }
         if (unevaluatedData.hasContentDescription()) {
-            unevaluatedData.contentDescription?.buildReceiver { setContentDescription(it) }
+            unevaluatedData.contentDescription
+                ?.buildReceiver { setContentDescription(it) }
                 ?.let { receivers += it }
         }
 
@@ -145,40 +147,45 @@
 
     private fun DynamicFloat.buildReceiver(
         setter: WireComplicationData.Builder.(Float) -> WireComplicationData.Builder
-    ) = ComplicationEvaluationResultReceiver(
-        setter,
-        binder = { receiver -> evaluator.bind(this@buildReceiver, receiver) },
-    )
+    ) =
+        ComplicationEvaluationResultReceiver(
+            setter,
+            binder = { receiver -> evaluator.bind(this@buildReceiver, receiver) },
+        )
 
     private fun WireComplicationText.buildReceiver(
         setter: WireComplicationData.Builder.(WireComplicationText) -> WireComplicationData.Builder
-    ) = stringExpression?.let { stringExpression ->
-        ComplicationEvaluationResultReceiver<String>(
-            setter = { setter(WireComplicationText(it, stringExpression)) },
-            binder = { receiver ->
-                evaluator.bind(stringExpression, ULocale.getDefault(), receiver)
-            },
-        )
-    }
+    ) =
+        stringExpression?.let { stringExpression ->
+            ComplicationEvaluationResultReceiver<String>(
+                setter = { setter(WireComplicationText(it, stringExpression)) },
+                binder = { receiver ->
+                    evaluator.bind(stringExpression, ULocale.getDefault(), receiver)
+                },
+            )
+        }
 
     /** Initializes the internal [DynamicTypeEvaluator] if there are pending receivers. */
     private fun initEvaluator() {
         if (state.value.pending.isEmpty()) return
-        evaluator = DynamicTypeEvaluator(
-            /* platformDataSourcesInitiallyEnabled = */ true,
-            sensorGateway,
-            stateStore,
-        )
+        evaluator =
+            DynamicTypeEvaluator(
+                /* platformDataSourcesInitiallyEnabled = */ true,
+                sensorGateway,
+                stateStore,
+            )
         for (receiver in state.value.pending) receiver.bind()
         evaluator.enablePlatformDataSources()
     }
 
     /** Monitors [state] changes and updates [data]. */
     private fun monitorState() {
-        state.onEach {
-            if (it.invalid.isNotEmpty()) _data.value = INVALID_DATA
-            else if (it.pending.isEmpty()) _data.value = it.data
-        }.launchIn(CoroutineScope(Dispatchers.Main))
+        state
+            .onEach {
+                if (it.invalid.isNotEmpty()) _data.value = INVALID_DATA
+                else if (it.pending.isEmpty()) _data.value = it.data
+            }
+            .launchIn(CoroutineScope(Dispatchers.Main))
     }
 
     /**
@@ -222,7 +229,8 @@
         override fun onData(newData: T) {
             state.update {
                 it.withComplete(
-                    setter(WireComplicationData.Builder(it.data), newData).build(), this
+                    setter(WireComplicationData.Builder(it.data), newData).build(),
+                    this
                 )
             }
         }
@@ -235,13 +243,14 @@
     companion object {
         val INVALID_DATA: WireComplicationData = NoDataComplicationData().asWireComplicationData()
 
-        fun hasExpression(data: WireComplicationData): Boolean = data.run {
-            (hasRangedValueExpression() && rangedValueExpression != null) ||
-                (hasLongText() && longText?.stringExpression != null) ||
-                (hasLongTitle() && longTitle?.stringExpression != null) ||
-                (hasShortText() && shortText?.stringExpression != null) ||
-                (hasShortTitle() && shortTitle?.stringExpression != null) ||
-                (hasContentDescription() && contentDescription?.stringExpression != null)
-        }
+        fun hasExpression(data: WireComplicationData): Boolean =
+            data.run {
+                (hasRangedValueExpression() && rangedValueExpression != null) ||
+                    (hasLongText() && longText?.stringExpression != null) ||
+                    (hasLongTitle() && longTitle?.stringExpression != null) ||
+                    (hasShortText() && shortText?.stringExpression != null) ||
+                    (hasShortTitle() && shortTitle?.stringExpression != null) ||
+                    (hasContentDescription() && contentDescription?.stringExpression != null)
+            }
     }
 }
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationExperimental.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationExperimental.kt
index 81942d7..ed792d6 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationExperimental.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationExperimental.kt
@@ -16,8 +16,6 @@
 
 package androidx.wear.watchface.complications.data
 
-@RequiresOptIn(
-    "This is an experimental API that may change or be removed without warning."
-)
+@RequiresOptIn("This is an experimental API that may change or be removed without warning.")
 @Retention(AnnotationRetention.BINARY)
 annotation class ComplicationExperimental
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Data.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Data.kt
index 444a7d1..f9c57aa 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Data.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Data.kt
@@ -18,13 +18,13 @@
 
 package androidx.wear.watchface.complications.data
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
-import android.support.wearable.complications.ComplicationData.Builder as WireComplicationDataBuilder
 import android.app.PendingIntent
 import android.content.ComponentName
 import android.graphics.Color
 import android.graphics.drawable.Icon
 import android.os.Build
+import android.support.wearable.complications.ComplicationData as WireComplicationData
+import android.support.wearable.complications.ComplicationData.Builder as WireComplicationDataBuilder
 import android.util.Log
 import androidx.annotation.ColorInt
 import androidx.annotation.FloatRange
@@ -42,9 +42,7 @@
 
 internal const val TAG = "Data.kt"
 
-/**
- * The policies that control complication persistence.
- */
+/** The policies that control complication persistence. */
 public object ComplicationPersistencePolicies {
     /** The default policy is that persistence/caching is allowed. */
     public const val CACHING_ALLOWED: Int = 0
@@ -59,16 +57,15 @@
 /** @hide */
 @IntDef(
     flag = true, // This is a flag to allow for future expansion.
-    value = [
-        ComplicationPersistencePolicies.CACHING_ALLOWED,
-        ComplicationPersistencePolicies.DO_NOT_PERSIST
-    ]
+    value =
+        [
+            ComplicationPersistencePolicies.CACHING_ALLOWED,
+            ComplicationPersistencePolicies.DO_NOT_PERSIST
+        ]
 )
 public annotation class ComplicationPersistencePolicy
 
-/**
- * The policies that control when complications should be displayed.
- */
+/** The policies that control when complications should be displayed. */
 public object ComplicationDisplayPolicies {
     /** The default policy is that the complication should always be shown. */
     public const val ALWAYS_DISPLAY: Int = 0
@@ -80,10 +77,11 @@
 /** @hide */
 @IntDef(
     flag = true, // This is a flag to allow for future expansion.
-    value = [
-        ComplicationDisplayPolicies.ALWAYS_DISPLAY,
-        ComplicationDisplayPolicies.DO_NOT_SHOW_WHEN_DEVICE_LOCKED
-    ]
+    value =
+        [
+            ComplicationDisplayPolicies.ALWAYS_DISPLAY,
+            ComplicationDisplayPolicies.DO_NOT_SHOW_WHEN_DEVICE_LOCKED
+        ]
 )
 public annotation class ComplicationDisplayPolicy
 
@@ -93,23 +91,24 @@
  * Please note to aid unit testing of ComplicationDataSourceServices, [equals], [hashCode] and
  * [toString] have been overridden for all the types of ComplicationData, however due to the
  * embedded [Icon] class we have to fall back to reference equality and hashing below API 28 and
- * also for the [Icon]s that don't use either a resource or a uri (these should be rare but they
- * can exist).
+ * also for the [Icon]s that don't use either a resource or a uri (these should be rare but they can
+ * exist).
  *
  * @property type The [ComplicationType] of this complication data.
  * @property tapAction The [PendingIntent] to send when the complication is tapped on.
  * @property validTimeRange The [TimeRange] within which the complication should be displayed.
- * Whether the complication is active and should be displayed at the given time should be
- * checked with [TimeRange.contains].
+ *   Whether the complication is active and should be displayed at the given time should be checked
+ *   with [TimeRange.contains].
  * @property dataSource The [ComponentName] of the
- * [androidx.wear.watchface.complications.datasource.ComplicationDataSourceService] that provided
- * the ComplicationData. This may be `null` when run on old systems.
+ *   [androidx.wear.watchface.complications.datasource.ComplicationDataSourceService] that provided
+ *   the ComplicationData. This may be `null` when run on old systems.
  * @property persistencePolicy The [ComplicationPersistencePolicy] for this complication. This
- * requires the watchface to be built with a compatible library to work.
+ *   requires the watchface to be built with a compatible library to work.
  * @property displayPolicy The [ComplicationDisplayPolicy] for this complication. This requires the
- * watchface to be built with a compatible library to work.
+ *   watchface to be built with a compatible library to work.
  */
-public sealed class ComplicationData constructor(
+public sealed class ComplicationData
+constructor(
     public val type: ComplicationType,
     public val tapAction: PendingIntent?,
     internal var cachedWireComplicationData: WireComplicationData?,
@@ -138,7 +137,9 @@
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public fun asWireComplicationData(): WireComplicationData {
-        cachedWireComplicationData?.let { return it }
+        cachedWireComplicationData?.let {
+            return it
+        }
         return createWireComplicationDataBuilder()
             .apply { fillWireComplicationDataBuilder(this) }
             .build()
@@ -146,9 +147,8 @@
     }
 
     internal fun createWireComplicationDataBuilder(): WireComplicationDataBuilder =
-        cachedWireComplicationData?.let {
-            WireComplicationDataBuilder(it)
-        } ?: WireComplicationDataBuilder(type.toWireComplicationType())
+        cachedWireComplicationData?.let { WireComplicationDataBuilder(it) }
+            ?: WireComplicationDataBuilder(type.toWireComplicationType())
 
     internal open fun fillWireComplicationDataBuilder(builder: WireComplicationDataBuilder) {
         builder.setDataSource(dataSource)
@@ -175,11 +175,11 @@
     public open fun getNextChangeInstant(afterInstant: Instant): Instant = Instant.MAX
 
     override fun equals(other: Any?): Boolean =
-        other is ComplicationData &&
-            asWireComplicationData() == other.asWireComplicationData()
+        other is ComplicationData && asWireComplicationData() == other.asWireComplicationData()
 
     /**
      * Similar to [equals], but avoids comparing evaluated fields (if expressions exist).
+     *
      * @hide
      */
     infix fun equalsUnevaluated(other: ComplicationData): Boolean =
@@ -189,6 +189,7 @@
 
     /**
      * Builder for properties in common for most Complication Types.
+     *
      * @hide
      */
     public abstract class BaseBuilder<T : BaseBuilder<T, ReturnT>, ReturnT> {
@@ -226,9 +227,7 @@
             return this as T
         }
 
-        /**
-         * Sets the complication's [ComplicationPersistencePolicy].
-         */
+        /** Sets the complication's [ComplicationPersistencePolicy]. */
         @Suppress("UNCHECKED_CAST", "SetterReturnsThis")
         @RequiresApi(Build.VERSION_CODES.TIRAMISU)
         public fun setPersistencePolicy(@ComplicationPersistencePolicy persistencePolicy: Int): T {
@@ -236,9 +235,7 @@
             return this as T
         }
 
-        /**
-         * Sets the complication's [ComplicationDisplayPolicy].
-         */
+        /** Sets the complication's [ComplicationDisplayPolicy]. */
         @Suppress("UNCHECKED_CAST", "SetterReturnsThis")
         @RequiresApi(Build.VERSION_CODES.TIRAMISU)
         public fun setDisplayPolicy(@ComplicationDisplayPolicy displayPolicy: Int): T {
@@ -260,27 +257,29 @@
  * watch face renders the placeholder elements (text, title, smallImage, etc...) using solid grey
  * blocks. Any non-placeholder elements included in [placeholder] must be rendered normally.
  *
- * Some watchfaces may not support placeholders and in that case the NoDataComplicationData will
- * be treated as being empty.
+ * Some watchfaces may not support placeholders and in that case the NoDataComplicationData will be
+ * treated as being empty.
  *
  * @property placeholder An optional [ComplicationData] which may contain placeholder fields (see
- * [hasPlaceholderFields]). The type of the placeholder must match the type of the ComplicationData
- * that would have otherwise been sent. The placeholder is expected to be rendered if the watch
- * face has been built with a compatible library, older libraries which don't support placeholders
- * will ignore this field.
+ *   [hasPlaceholderFields]). The type of the placeholder must match the type of the
+ *   ComplicationData that would have otherwise been sent. The placeholder is expected to be
+ *   rendered if the watch face has been built with a compatible library, older libraries which
+ *   don't support placeholders will ignore this field.
  */
-public class NoDataComplicationData internal constructor(
+public class NoDataComplicationData
+internal constructor(
     public val placeholder: ComplicationData?,
     cachedWireComplicationData: WireComplicationData?
-) : ComplicationData(
-    TYPE,
-    placeholder?.tapAction,
-    cachedWireComplicationData,
-    dataSource = null,
-    persistencePolicy =
-    placeholder?.persistencePolicy ?: ComplicationPersistencePolicies.CACHING_ALLOWED,
-    displayPolicy = placeholder?.displayPolicy ?: ComplicationDisplayPolicies.ALWAYS_DISPLAY
-) {
+) :
+    ComplicationData(
+        TYPE,
+        placeholder?.tapAction,
+        cachedWireComplicationData,
+        dataSource = null,
+        persistencePolicy = placeholder?.persistencePolicy
+                ?: ComplicationPersistencePolicies.CACHING_ALLOWED,
+        displayPolicy = placeholder?.displayPolicy ?: ComplicationDisplayPolicies.ALWAYS_DISPLAY
+    ) {
 
     /** Constructs a NoDataComplicationData without a [placeholder]. */
     constructor() : this(null, null)
@@ -290,10 +289,7 @@
      * to contain placeholder fields (see [hasPlaceholderFields]) which must be drawn to look like
      * placeholders. E.g. with grey boxes / arcs.
      */
-    constructor(placeholder: ComplicationData) : this(
-        placeholder,
-        null
-    )
+    constructor(placeholder: ComplicationData) : this(placeholder, null)
 
     val contentDescription: ComplicationText? =
         when (placeholder) {
@@ -330,8 +326,7 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.NO_DATA
+        @JvmField public val TYPE: ComplicationType = ComplicationType.NO_DATA
     }
 }
 
@@ -340,14 +335,15 @@
  * data source, i.e. when the user has chosen "Empty" in the complication data source chooser.
  * Complication data sources cannot send data of this type.
  */
-public class EmptyComplicationData : ComplicationData(
-    TYPE,
-    tapAction = null,
-    cachedWireComplicationData = null,
-    dataSource = null,
-    persistencePolicy = ComplicationPersistencePolicies.CACHING_ALLOWED,
-    displayPolicy = ComplicationDisplayPolicies.ALWAYS_DISPLAY
-) {
+public class EmptyComplicationData :
+    ComplicationData(
+        TYPE,
+        tapAction = null,
+        cachedWireComplicationData = null,
+        dataSource = null,
+        persistencePolicy = ComplicationPersistencePolicies.CACHING_ALLOWED,
+        displayPolicy = ComplicationDisplayPolicies.ALWAYS_DISPLAY
+    ) {
     // Always empty.
     override fun fillWireComplicationDataBuilder(builder: WireComplicationDataBuilder) {}
 
@@ -358,8 +354,7 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.EMPTY
+        @JvmField public val TYPE: ComplicationType = ComplicationType.EMPTY
     }
 }
 
@@ -369,14 +364,15 @@
  * source for an active complication, and the watch face has not set a default complication data
  * source. Complication data sources cannot send data of this type.
  */
-public class NotConfiguredComplicationData : ComplicationData(
-    TYPE,
-    tapAction = null,
-    cachedWireComplicationData = null,
-    dataSource = null,
-    persistencePolicy = ComplicationPersistencePolicies.CACHING_ALLOWED,
-    displayPolicy = ComplicationDisplayPolicies.ALWAYS_DISPLAY
-) {
+public class NotConfiguredComplicationData :
+    ComplicationData(
+        TYPE,
+        tapAction = null,
+        cachedWireComplicationData = null,
+        dataSource = null,
+        persistencePolicy = ComplicationPersistencePolicies.CACHING_ALLOWED,
+        displayPolicy = ComplicationDisplayPolicies.ALWAYS_DISPLAY
+    ) {
     // Always empty.
     override fun fillWireComplicationDataBuilder(builder: WireComplicationDataBuilder) {}
 
@@ -387,18 +383,17 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.NOT_CONFIGURED
+        @JvmField public val TYPE: ComplicationType = ComplicationType.NOT_CONFIGURED
     }
 }
 
 /**
- * Type used for complications where the primary piece of data is a short piece of text
- * (expected to be no more than seven characters in length). The text may be accompanied
- * by an icon or a title or both.
+ * Type used for complications where the primary piece of data is a short piece of text (expected to
+ * be no more than seven characters in length). The text may be accompanied by an icon or a title or
+ * both.
  *
- * If only one of icon and title is provided, it is expected that it will be displayed. If both
- * are provided, it is expected that at least one of these will be displayed.
+ * If only one of icon and title is provided, it is expected that it will be displayed. If both are
+ * provided, it is expected that at least one of these will be displayed.
  *
  * If a [monochromaticImage] and a [smallImage] are both specified then only one should be
  * displayed. If the complication is drawn with a single color it's recommended to choose
@@ -407,33 +402,34 @@
  * specify both a [monochromaticImage] and a [smallImage].
  *
  * @property text The body [ComplicationText] of the complication. The length of the text, including
- * any time-dependent values at any valid time, is expected to not exceed seven characters. When
- * using this text, the watch face should be able to display any string of up to seven characters
- * (reducing the text size appropriately if the string is very wide). Although not expected, it is
- * possible that strings of more than seven characters might be seen, in which case they may be
- * truncated. If the text is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it
- * as a placeholder rather than rendering normally, its suggested it should be rendered as a light
- * grey box.
- * @property title The optional title [ComplicationText]. The length of the text, including
- * any time-dependent values at any valid time, is expected to not exceed seven characters. When
- * using this text, the watch face should be able to display any string of up to seven characters
- * (reducing the text size appropriately if the string is very wide). Although not expected, it is
- * possible that strings of more than seven characters might be seen, in which case they may be
- * truncated. If the title is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it
- * as a placeholder rather than rendering normally, its suggested it should be rendered as a light
- * grey box.
+ *   any time-dependent values at any valid time, is expected to not exceed seven characters. When
+ *   using this text, the watch face should be able to display any string of up to seven characters
+ *   (reducing the text size appropriately if the string is very wide). Although not expected, it is
+ *   possible that strings of more than seven characters might be seen, in which case they may be
+ *   truncated. If the text is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it as
+ *   a placeholder rather than rendering normally, its suggested it should be rendered as a light
+ *   grey box.
+ * @property title The optional title [ComplicationText]. The length of the text, including any
+ *   time-dependent values at any valid time, is expected to not exceed seven characters. When using
+ *   this text, the watch face should be able to display any string of up to seven characters
+ *   (reducing the text size appropriately if the string is very wide). Although not expected, it is
+ *   possible that strings of more than seven characters might be seen, in which case they may be
+ *   truncated. If the title is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it
+ *   as a placeholder rather than rendering normally, its suggested it should be rendered as a light
+ *   grey box.
  * @property monochromaticImage A simple [MonochromaticImage] image that can be tinted by the watch
- * face. If the monochromaticImage is equal to [MonochromaticImage.PLACEHOLDER] the renderer must
- * treat it as a placeholder rather than rendering normally, its suggested it should be rendered as
- * a light grey box.
+ *   face. If the monochromaticImage is equal to [MonochromaticImage.PLACEHOLDER] the renderer must
+ *   treat it as a placeholder rather than rendering normally, its suggested it should be rendered
+ *   as a light grey box.
  * @property smallImage A [SmallImage] that is expected to cover a small fraction of a watch face
- * occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
- * renderer must treat it as a placeholder rather than rendering normally, its suggested it should
- * be rendered as a light grey box.
+ *   occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
+ *   renderer must treat it as a placeholder rather than rendering normally, its suggested it should
+ *   be rendered as a light grey box.
  * @property contentDescription The content description field for accessibility. Please do not
- * include the word 'complication' in the description.
+ *   include the word 'complication' in the description.
  */
-public class ShortTextComplicationData internal constructor(
+public class ShortTextComplicationData
+internal constructor(
     public val text: ComplicationText,
     public val title: ComplicationText?,
     public val monochromaticImage: MonochromaticImage?,
@@ -445,15 +441,16 @@
     dataSource: ComponentName?,
     @ComplicationPersistencePolicy persistencePolicy: Int,
     @ComplicationDisplayPolicy displayPolicy: Int
-) : ComplicationData(
-    TYPE,
-    tapAction = tapAction,
-    cachedWireComplicationData = cachedWireComplicationData,
-    validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
-    dataSource = dataSource,
-    persistencePolicy = persistencePolicy,
-    displayPolicy = displayPolicy
-) {
+) :
+    ComplicationData(
+        TYPE,
+        tapAction = tapAction,
+        cachedWireComplicationData = cachedWireComplicationData,
+        validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
+        dataSource = dataSource,
+        persistencePolicy = persistencePolicy,
+        displayPolicy = displayPolicy
+    ) {
     /**
      * Builder for [ShortTextComplicationData].
      *
@@ -461,7 +458,7 @@
      *
      * @param text The main localized [ComplicationText]. This must be less than 7 characters long
      * @param contentDescription Localized description for use by screen readers. Please do not
-     * include the word 'complication' in the description.
+     *   include the word 'complication' in the description.
      */
     public class Builder(
         private val text: ComplicationText,
@@ -485,9 +482,7 @@
         }
 
         /** Sets optional title associated with the complication data. */
-        public fun setTitle(title: ComplicationText?): Builder = apply {
-            this.title = title
-        }
+        public fun setTitle(title: ComplicationText?): Builder = apply { this.title = title }
 
         /** Sets optional icon associated with the complication data. */
         public fun setMonochromaticImage(monochromaticImage: MonochromaticImage?): Builder = apply {
@@ -542,8 +537,11 @@
             "persistencePolicy=$persistencePolicy, displayPolicy=$displayPolicy)"
     }
 
-    override fun hasPlaceholderFields() = text.isPlaceholder() || title?.isPlaceholder() == true ||
-        monochromaticImage?.isPlaceholder() == true || smallImage?.isPlaceholder() == true
+    override fun hasPlaceholderFields() =
+        text.isPlaceholder() ||
+            title?.isPlaceholder() == true ||
+            monochromaticImage?.isPlaceholder() == true ||
+            smallImage?.isPlaceholder() == true
 
     override fun getNextChangeInstant(afterInstant: Instant): Instant {
         if (title != null) {
@@ -562,18 +560,16 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.SHORT_TEXT
+        @JvmField public val TYPE: ComplicationType = ComplicationType.SHORT_TEXT
 
         /** The maximum length of [ShortTextComplicationData.text] in characters. */
-        @JvmField
-        public val MAX_TEXT_LENGTH = 7
+        @JvmField public val MAX_TEXT_LENGTH = 7
     }
 }
 
 /**
- * Type used for complications where the primary piece of data is a piece of text. The text may
- * be accompanied by an icon and/or a title.
+ * Type used for complications where the primary piece of data is a piece of text. The text may be
+ * accompanied by an icon and/or a title.
  *
  * The text is expected to always be displayed.
  *
@@ -586,23 +582,24 @@
  * specify both a [monochromaticImage] and a [smallImage].
  *
  * @property text The body [ComplicationText] of the complication. If the text is equal to
- * [ComplicationText.PLACEHOLDER] the renderer must treat it as a placeholder rather than rendering
- * normally, its suggested it should be rendered as a light grey box.
+ *   [ComplicationText.PLACEHOLDER] the renderer must treat it as a placeholder rather than
+ *   rendering normally, its suggested it should be rendered as a light grey box.
  * @property title The optional title [ComplicationText]. If the title is equal to
- * [ComplicationText.PLACEHOLDER] the renderer must treat it as a placeholder rather than rendering
- * normally, its suggested it should be rendered as a light grey box.
+ *   [ComplicationText.PLACEHOLDER] the renderer must treat it as a placeholder rather than
+ *   rendering normally, its suggested it should be rendered as a light grey box.
  * @property monochromaticImage A simple [MonochromaticImage] image that can be tinted by the watch
- * face. If the monochromaticImage is equal to [MonochromaticImage.PLACEHOLDER] the renderer must
- * treat it as a placeholder rather than rendering normally, its suggested it should be rendered as
- * a light grey box.
+ *   face. If the monochromaticImage is equal to [MonochromaticImage.PLACEHOLDER] the renderer must
+ *   treat it as a placeholder rather than rendering normally, its suggested it should be rendered
+ *   as a light grey box.
  * @property smallImage A [SmallImage] that is expected to cover a small fraction of a watch face
- * occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
- * renderer must treat it as a placeholder rather than rendering normally, its suggested it should
- * be rendered as a light grey box.
+ *   occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
+ *   renderer must treat it as a placeholder rather than rendering normally, its suggested it should
+ *   be rendered as a light grey box.
  * @property contentDescription The content description field for accessibility. Please do not
- * include the word 'complication' in the description.
+ *   include the word 'complication' in the description.
  */
-public class LongTextComplicationData internal constructor(
+public class LongTextComplicationData
+internal constructor(
     public val text: ComplicationText,
     public val title: ComplicationText?,
     public val monochromaticImage: MonochromaticImage?,
@@ -614,25 +611,25 @@
     dataSource: ComponentName?,
     @ComplicationPersistencePolicy persistencePolicy: Int,
     @ComplicationDisplayPolicy displayPolicy: Int
-) : ComplicationData(
-    TYPE,
-    tapAction = tapAction,
-    cachedWireComplicationData = cachedWireComplicationData,
-    validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
-    dataSource = dataSource,
-    persistencePolicy = persistencePolicy,
-    displayPolicy = displayPolicy
-
-) {
+) :
+    ComplicationData(
+        TYPE,
+        tapAction = tapAction,
+        cachedWireComplicationData = cachedWireComplicationData,
+        validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
+        dataSource = dataSource,
+        persistencePolicy = persistencePolicy,
+        displayPolicy = displayPolicy
+    ) {
     /**
      * Builder for [LongTextComplicationData].
      *
      * You must at a minimum set the [text] and [contentDescription] fields.
      *
-     * @param text Localized main [ComplicationText] to display within the complication. There
-     * isn't an explicit character limit but text may be truncated if too long
+     * @param text Localized main [ComplicationText] to display within the complication. There isn't
+     *   an explicit character limit but text may be truncated if too long
      * @param contentDescription Localized description for use by screen readers. Please do not
-     * include the word 'complication' in the description.
+     *   include the word 'complication' in the description.
      */
     public class Builder(
         private val text: ComplicationText,
@@ -656,9 +653,7 @@
         }
 
         /** Sets optional title associated with the complication data. */
-        public fun setTitle(title: ComplicationText?): Builder = apply {
-            this.title = title
-        }
+        public fun setTitle(title: ComplicationText?): Builder = apply { this.title = title }
 
         /** Sets optional image associated with the complication data. */
         public fun setMonochromaticImage(icon: MonochromaticImage?): Builder = apply {
@@ -713,8 +708,11 @@
             "persistencePolicy=$persistencePolicy, displayPolicy=$displayPolicy)"
     }
 
-    override fun hasPlaceholderFields() = text.isPlaceholder() || title?.isPlaceholder() == true ||
-        monochromaticImage?.isPlaceholder() == true || smallImage?.isPlaceholder() == true
+    override fun hasPlaceholderFields() =
+        text.isPlaceholder() ||
+            title?.isPlaceholder() == true ||
+            monochromaticImage?.isPlaceholder() == true ||
+            smallImage?.isPlaceholder() == true
 
     override fun getNextChangeInstant(afterInstant: Instant): Instant {
         if (title != null) {
@@ -733,8 +731,7 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.LONG_TEXT
+        @JvmField public val TYPE: ComplicationType = ComplicationType.LONG_TEXT
     }
 }
 
@@ -748,24 +745,21 @@
  * coordinates for the ramp are not known to the complication data source.
  *
  * @property colors The colors to render the progress bar with. For [RangedValueComplicationData]
- * the first color corresponds to [RangedValueComplicationData.min] and the last color to
- * [RangedValueComplicationData.max]. For [GoalProgressComplicationData] the first color corresponds
- * to zero and the last color to [GoalProgressComplicationData.targetValue]. A maximum of 7 colors
- * may be specified. When rendered the colors must be evenly spread along the progress bar. The
- * colors must be meaningful to the user, e.g. blue = cold, red/yellow = warm.
+ *   the first color corresponds to [RangedValueComplicationData.min] and the last color to
+ *   [RangedValueComplicationData.max]. For [GoalProgressComplicationData] the first color
+ *   corresponds to zero and the last color to [GoalProgressComplicationData.targetValue]. A maximum
+ *   of 7 colors may be specified. When rendered the colors must be evenly spread along the progress
+ *   bar. The colors must be meaningful to the user, e.g. blue = cold, red/yellow = warm.
  * @property interpolated If `true` then the colors should be smoothly interpolated when rendering
- * the progress bar. If `false` the colors should be rendered as equal sized regions of solid color,
- * resulting in a noticeable step between each color.
+ *   the progress bar. If `false` the colors should be rendered as equal sized regions of solid
+ *   color, resulting in a noticeable step between each color.
  */
 public class ColorRamp(
     @ColorInt val colors: IntArray,
-    @get:JvmName("isInterpolated")
-    val interpolated: Boolean
+    @get:JvmName("isInterpolated") val interpolated: Boolean
 ) {
     init {
-        require(colors.size <= 7) {
-            "colors can have no more than seven entries"
-        }
+        require(colors.size <= 7) { "colors can have no more than seven entries" }
     }
 
     override fun toString(): String {
@@ -792,14 +786,14 @@
 }
 
 /**
- * Type used for complications including a numerical value within a range, such as a percentage.
- * The value may be accompanied by an icon and/or short text and title.
+ * Type used for complications including a numerical value within a range, such as a percentage. The
+ * value may be accompanied by an icon and/or short text and title.
  *
  * The [min] and [max] fields are required for this type, as well as one of [value] or
  * [valueExpression]. The value within the range is expected to always be displayed.
  *
- * The icon, title, and text fields are optional and the watch face may choose which of these
- * fields to display, if any.
+ * The icon, title, and text fields are optional and the watch face may choose which of these fields
+ * to display, if any.
  *
  * If a [monochromaticImage] and a [smallImage] are both specified then only one should be
  * displayed. If the complication is drawn with a single color it's recommended to choose
@@ -808,47 +802,47 @@
  * specify both a [monochromaticImage] and a [smallImage].
  *
  * @property value The [Float] value of this complication which is >= [min] and <= [max] or equal to
- * [PLACEHOLDER]. If it's equal to [PLACEHOLDER] the renderer must treat it as a placeholder rather
- * than rendering normally, its suggested to be drawn as a grey arc with a percentage value selected
- * by the renderer. The semantic meaning of value is described by [valueType].
+ *   [PLACEHOLDER]. If it's equal to [PLACEHOLDER] the renderer must treat it as a placeholder
+ *   rather than rendering normally, its suggested to be drawn as a grey arc with a percentage value
+ *   selected by the renderer. The semantic meaning of value is described by [valueType].
  * @property min The minimum [Float] value for this complication.
  * @property max The maximum [Float] value for this complication.
  * @property monochromaticImage A simple [MonochromaticImage] image that can be tinted by the watch
- * face. If the monochromaticImage is equal to [MonochromaticImage.PLACEHOLDER] the renderer must
- * treat it as a placeholder rather than rendering normally, its suggested it should be rendered as
- * a light grey box.
+ *   face. If the monochromaticImage is equal to [MonochromaticImage.PLACEHOLDER] the renderer must
+ *   treat it as a placeholder rather than rendering normally, its suggested it should be rendered
+ *   as a light grey box.
  * @property smallImage A [SmallImage] that is expected to cover a small fraction of a watch face
- * occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
- * renderer must treat it as a placeholder rather than rendering normally, its suggested it should
- * be rendered as a light grey box.
- * @property title The optional title [ComplicationText]. The length of the title, including
- * any time-dependent values at any valid time, is expected to not exceed seven characters. When
- * using this text, the watch face should be able to display any string of up to seven characters
- * (reducing the text size appropriately if the string is very wide). Although not expected, it is
- * possible that strings of more than seven characters might be seen, in which case they may be
- * truncated. If the title is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it as
- * a placeholder rather than rendering normally, its suggested it should be rendered as a light grey
- * box.
+ *   occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
+ *   renderer must treat it as a placeholder rather than rendering normally, its suggested it should
+ *   be rendered as a light grey box.
+ * @property title The optional title [ComplicationText]. The length of the title, including any
+ *   time-dependent values at any valid time, is expected to not exceed seven characters. When using
+ *   this text, the watch face should be able to display any string of up to seven characters
+ *   (reducing the text size appropriately if the string is very wide). Although not expected, it is
+ *   possible that strings of more than seven characters might be seen, in which case they may be
+ *   truncated. If the title is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it
+ *   as a placeholder rather than rendering normally, its suggested it should be rendered as a light
+ *   grey box.
  * @property text The body [ComplicationText] of the complication. The length of the text, including
- * any time-dependent values at any valid time, is expected to not exceed seven characters. When
- * using this text, the watch face should be able to display any string of up to seven characters
- * (reducing the text size appropriately if the string is very wide). Although not expected, it is
- * possible that strings of more than seven characters might be seen, in which case they may be
- * truncated. If the text is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it as a
- * placeholder rather than rendering normally, its suggested it should be rendered as a light grey
- * box.
+ *   any time-dependent values at any valid time, is expected to not exceed seven characters. When
+ *   using this text, the watch face should be able to display any string of up to seven characters
+ *   (reducing the text size appropriately if the string is very wide). Although not expected, it is
+ *   possible that strings of more than seven characters might be seen, in which case they may be
+ *   truncated. If the text is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it as
+ *   a placeholder rather than rendering normally, its suggested it should be rendered as a light
+ *   grey box.
  * @property contentDescription The content description field for accessibility. Please do not
- * include the word 'complication' in the description.
+ *   include the word 'complication' in the description.
  * @property colorRamp Optional hint to render the value with the specified [ColorRamp]. When
- * present the renderer may choose to use the ColorRamp when rendering the progress bar.
+ *   present the renderer may choose to use the ColorRamp when rendering the progress bar.
  * @property valueType The semantic meaning of [value]. The complication renderer may choose to
- * visually differentiate between the different types, for example rendering a dot on a line/arc to
- * indicate the value for a [TYPE_RATING].
+ *   visually differentiate between the different types, for example rendering a dot on a line/arc
+ *   to indicate the value for a [TYPE_RATING].
  */
-public class RangedValueComplicationData internal constructor(
+public class RangedValueComplicationData
+internal constructor(
     public val value: Float,
-    @Suppress("OPT_IN_MARKER_ON_WRONG_TARGET")
-    valueExpression: DynamicFloat?,
+    @Suppress("OPT_IN_MARKER_ON_WRONG_TARGET") valueExpression: DynamicFloat?,
     public val min: Float,
     public val max: Float,
     public val monochromaticImage: MonochromaticImage?,
@@ -864,19 +858,20 @@
     @RangedValueType public val valueType: Int,
     @ComplicationPersistencePolicy persistencePolicy: Int,
     @ComplicationDisplayPolicy displayPolicy: Int
-) : ComplicationData(
-    TYPE,
-    tapAction = tapAction,
-    cachedWireComplicationData = cachedWireComplicationData,
-    validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
-    dataSource = dataSource,
-    persistencePolicy = persistencePolicy,
-    displayPolicy = displayPolicy
-) {
+) :
+    ComplicationData(
+        TYPE,
+        tapAction = tapAction,
+        cachedWireComplicationData = cachedWireComplicationData,
+        validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
+        dataSource = dataSource,
+        persistencePolicy = persistencePolicy,
+        displayPolicy = displayPolicy
+    ) {
     /**
-     * The [DynamicFloat] optionally set by the data source. If present the system will
-     * dynamically evaluate this and store the result in [value]. Watch faces can typically ignore
-     * this field.
+     * The [DynamicFloat] optionally set by the data source. If present the system will dynamically
+     * evaluate this and store the result in [value]. Watch faces can typically ignore this field.
+     *
      * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -906,12 +901,12 @@
          * Creates a [Builder] for a [RangedValueComplicationData] with a [Float] value.
          *
          * @param value The value of the ranged complication which should be in the range [[min]] ..
-         * [[max]]. The semantic meaning of value can be specified via [setValueType].
+         *   [[max]]. The semantic meaning of value can be specified via [setValueType].
          * @param min The minimum value. For [TYPE_PERCENTAGE] this must be 0f.
          * @param max The maximum value. This must be less than [Float.MAX_VALUE]. For
-         * [TYPE_PERCENTAGE] this must be 0f.
+         *   [TYPE_PERCENTAGE] this must be 0f.
          * @param contentDescription Localized description for use by screen readers. Please do not
-         * include the word 'complication' in the description.
+         *   include the word 'complication' in the description.
          */
         public constructor(
             value: Float,
@@ -924,13 +919,13 @@
          * Creates a [Builder] for a [RangedValueComplicationData] with a [DynamicFloat] value.
          *
          * @param valueExpression The [DynamicFloat] of the ranged complication which will be
-         * evaluated into a value dynamically, and should be in the range [[min]] .. [[max]]. The
-         * semantic meaning of value can be specified via [setValueType].
+         *   evaluated into a value dynamically, and should be in the range [[min]] .. [[max]]. The
+         *   semantic meaning of value can be specified via [setValueType].
          * @param min The minimum value. For [TYPE_PERCENTAGE] this must be 0f.
          * @param max The maximum value. This must be less than [Float.MAX_VALUE]. For
-         * [TYPE_PERCENTAGE] this must be 0f.
+         *   [TYPE_PERCENTAGE] this must be 0f.
          * @param contentDescription Localized description for use by screen readers. Please do not
-         * include the word 'complication' in the description.
+         *   include the word 'complication' in the description.
          * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -949,8 +944,7 @@
         private var text: ComplicationText? = null
         private var colorRamp: ColorRamp? = null
 
-        @RangedValueType
-        private var valueType: Int = TYPE_UNDEFINED
+        @RangedValueType private var valueType: Int = TYPE_UNDEFINED
 
         init {
             require(min <= max) { "min must be lower than or equal to max" }
@@ -984,14 +978,10 @@
         }
 
         /** Sets optional title associated with the complication data. */
-        public fun setTitle(title: ComplicationText?): Builder = apply {
-            this.title = title
-        }
+        public fun setTitle(title: ComplicationText?): Builder = apply { this.title = title }
 
         /** Sets optional text associated with the complication data. */
-        public fun setText(text: ComplicationText?): Builder = apply {
-            this.text = text
-        }
+        public fun setText(text: ComplicationText?): Builder = apply { this.text = text }
 
         /**
          * Sets an optional hint that the renderer should draw the progress bar using the
@@ -1070,16 +1060,18 @@
     }
 
     override fun toString(): String {
-        val valueString = if (WireComplicationData.shouldRedact()) {
-            "REDACTED"
-        } else {
-            value.toString()
-        }
-        val valueExpressionString = if (WireComplicationData.shouldRedact()) {
-            "REDACTED"
-        } else {
-            valueExpression.toString()
-        }
+        val valueString =
+            if (WireComplicationData.shouldRedact()) {
+                "REDACTED"
+            } else {
+                value.toString()
+            }
+        val valueExpressionString =
+            if (WireComplicationData.shouldRedact()) {
+                "REDACTED"
+            } else {
+                valueExpression.toString()
+            }
         return "RangedValueComplicationData(value=$valueString, " +
             "valueExpression=$valueExpressionString, valueType=$valueType, min=$min, " +
             "max=$max, monochromaticImage=$monochromaticImage, smallImage=$smallImage, " +
@@ -1090,9 +1082,12 @@
             "displayPolicy=$displayPolicy)"
     }
 
-    override fun hasPlaceholderFields() = value == PLACEHOLDER || text?.isPlaceholder() == true ||
-        title?.isPlaceholder() == true || monochromaticImage?.isPlaceholder() == true ||
-        smallImage?.isPlaceholder() == true
+    override fun hasPlaceholderFields() =
+        value == PLACEHOLDER ||
+            text?.isPlaceholder() == true ||
+            title?.isPlaceholder() == true ||
+            monochromaticImage?.isPlaceholder() == true ||
+            smallImage?.isPlaceholder() == true
 
     override fun getNextChangeInstant(afterInstant: Instant): Instant {
         val titleChangeInstant = title?.getNextChangeTime(afterInstant) ?: Instant.MAX
@@ -1107,8 +1102,7 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.RANGED_VALUE
+        @JvmField public val TYPE: ComplicationType = ComplicationType.RANGED_VALUE
 
         /**
          * Used to signal the range should be rendered as a placeholder. It's suggested that a
@@ -1118,8 +1112,7 @@
          * Note a placeholder may only be used in the context of
          * [NoDataComplicationData.placeholder].
          */
-        @JvmField
-        public val PLACEHOLDER = Float.MAX_VALUE
+        @JvmField public val PLACEHOLDER = Float.MAX_VALUE
 
         /**
          * The ranged value's semantic hasn't been explicitly defined, most commonly it's a
@@ -1128,14 +1121,12 @@
         const val TYPE_UNDEFINED = 0
 
         /**
-         * The ranged value represents a rating or score for something unrelated to the user,
-         * e.g. the air quality index or the UV index.
+         * The ranged value represents a rating or score for something unrelated to the user, e.g.
+         * the air quality index or the UV index.
          */
         const val TYPE_RATING = 1
 
-        /**
-         * The ranged value represents a percentage in the range [0..100]. E.g. Battery charge.
-         */
+        /** The ranged value represents a percentage in the range [0..100]. E.g. Battery charge. */
         const val TYPE_PERCENTAGE = 2
     }
 }
@@ -1151,8 +1142,8 @@
  * The [targetValue] field is required for this type, as well as one of [value] or
  * [valueExpression]. The progress is expected to always be displayed.
  *
- * The icon, title, and text fields are optional and the watch face may choose which of these
- * fields to display, if any.
+ * The icon, title, and text fields are optional and the watch face may choose which of these fields
+ * to display, if any.
  *
  * If a [monochromaticImage] and a [smallImage] are both specified then only one should be
  * displayed. If the complication is drawn with a single color it's recommended to choose
@@ -1166,45 +1157,44 @@
  * [RangedValueComplicationData.Builder.setValueType].
  *
  * @property value The [Float] value of this complication which is >= 0f, this value may be larger
- * than [targetValue]. If it's equal to [PLACEHOLDER] the renderer must treat it as a placeholder
- * rather than rendering normally, its suggested to be drawn as a grey arc with a percentage value
- * selected by the renderer.
+ *   than [targetValue]. If it's equal to [PLACEHOLDER] the renderer must treat it as a placeholder
+ *   rather than rendering normally, its suggested to be drawn as a grey arc with a percentage value
+ *   selected by the renderer.
  * @property targetValue The target [Float] value for this complication.
  * @property monochromaticImage A simple [MonochromaticImage] image that can be tinted by the watch
- * face. If the monochromaticImage is equal to [MonochromaticImage.PLACEHOLDER] the renderer must
- * treat it as a placeholder rather than rendering normally, its suggested it should be rendered as
- * a light grey box.
+ *   face. If the monochromaticImage is equal to [MonochromaticImage.PLACEHOLDER] the renderer must
+ *   treat it as a placeholder rather than rendering normally, its suggested it should be rendered
+ *   as a light grey box.
  * @property smallImage A [SmallImage] that is expected to cover a small fraction of a watch face
- * occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
- * renderer must treat it as a placeholder rather than rendering normally, its suggested it should
- * be rendered as a light grey box.
- * @property title The optional title [ComplicationText]. The length of the title, including
- * any time-dependent values at any valid time, is expected to not exceed seven characters. When
- * using this text, the watch face should be able to display any string of up to seven characters
- * (reducing the text size appropriately if the string is very wide). Although not expected, it is
- * possible that strings of more than seven characters might be seen, in which case they may be
- * truncated. If the title is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it as
- * a placeholder rather than rendering normally, its suggested it should be rendered as a light grey
- * box.
+ *   occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
+ *   renderer must treat it as a placeholder rather than rendering normally, its suggested it should
+ *   be rendered as a light grey box.
+ * @property title The optional title [ComplicationText]. The length of the title, including any
+ *   time-dependent values at any valid time, is expected to not exceed seven characters. When using
+ *   this text, the watch face should be able to display any string of up to seven characters
+ *   (reducing the text size appropriately if the string is very wide). Although not expected, it is
+ *   possible that strings of more than seven characters might be seen, in which case they may be
+ *   truncated. If the title is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it
+ *   as a placeholder rather than rendering normally, its suggested it should be rendered as a light
+ *   grey box.
  * @property text The body [ComplicationText] of the complication. The length of the text, including
- * any time-dependent values at any valid time, is expected to not exceed seven characters. When
- * using this text, the watch face should be able to display any string of up to seven characters
- * (reducing the text size appropriately if the string is very wide). Although not expected, it is
- * possible that strings of more than seven characters might be seen, in which case they may be
- * truncated. If the text is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it as a
- * placeholder rather than rendering normally, its suggested it should be rendered as a light grey
- * box.
+ *   any time-dependent values at any valid time, is expected to not exceed seven characters. When
+ *   using this text, the watch face should be able to display any string of up to seven characters
+ *   (reducing the text size appropriately if the string is very wide). Although not expected, it is
+ *   possible that strings of more than seven characters might be seen, in which case they may be
+ *   truncated. If the text is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it as
+ *   a placeholder rather than rendering normally, its suggested it should be rendered as a light
+ *   grey box.
  * @property contentDescription The content description field for accessibility. Please do not
- * include the word 'complication' in the description.
+ *   include the word 'complication' in the description.
  * @property colorRamp Optional hint to render the progress bar representing [value] with the
- * specified [ColorRamp].
+ *   specified [ColorRamp].
  */
 @RequiresApi(Build.VERSION_CODES.TIRAMISU)
 public class GoalProgressComplicationData
 internal constructor(
     public val value: Float,
-    @Suppress("OPT_IN_MARKER_ON_WRONG_TARGET")
-    valueExpression: DynamicFloat?,
+    @Suppress("OPT_IN_MARKER_ON_WRONG_TARGET") valueExpression: DynamicFloat?,
     public val targetValue: Float,
     public val monochromaticImage: MonochromaticImage?,
     public val smallImage: SmallImage?,
@@ -1218,19 +1208,20 @@
     public val colorRamp: ColorRamp?,
     @ComplicationPersistencePolicy persistencePolicy: Int,
     @ComplicationDisplayPolicy displayPolicy: Int
-) : ComplicationData(
-    TYPE,
-    tapAction = tapAction,
-    cachedWireComplicationData = cachedWireComplicationData,
-    validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
-    dataSource = dataSource,
-    persistencePolicy = persistencePolicy,
-    displayPolicy = displayPolicy
-) {
+) :
+    ComplicationData(
+        TYPE,
+        tapAction = tapAction,
+        cachedWireComplicationData = cachedWireComplicationData,
+        validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
+        dataSource = dataSource,
+        persistencePolicy = persistencePolicy,
+        displayPolicy = displayPolicy
+    ) {
     /**
-     * The [DynamicFloat] optionally set by the data source. If present the system will
-     * dynamically evaluate this and store the result in [value]. Watch faces can typically ignore
-     * this field.
+     * The [DynamicFloat] optionally set by the data source. If present the system will dynamically
+     * evaluate this and store the result in [value]. Watch faces can typically ignore this field.
+     *
      * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -1258,7 +1249,7 @@
          * @param value The value of the goal complication which should be >= 0.
          * @param targetValue The target value. This must be less than [Float.MAX_VALUE].
          * @param contentDescription Localized description for use by screen readers. Please do not
-         * include the word 'complication' in the description.
+         *   include the word 'complication' in the description.
          */
         public constructor(
             value: Float,
@@ -1270,10 +1261,10 @@
          * Creates a [Builder] for a [GoalProgressComplicationData] with a [DynamicFloat] value.
          *
          * @param valueExpression The [DynamicFloat] of the goal complication which will be
-         * evaluated into a value dynamically, and should be >= 0.
+         *   evaluated into a value dynamically, and should be >= 0.
          * @param targetValue The target value. This must be less than [Float.MAX_VALUE].
          * @param contentDescription Localized description for use by screen readers. Please do not
-         * include the word 'complication' in the description.
+         *   include the word 'complication' in the description.
          * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -1324,14 +1315,10 @@
         }
 
         /** Sets optional title associated with the complication data. */
-        public fun setTitle(title: ComplicationText?): Builder = apply {
-            this.title = title
-        }
+        public fun setTitle(title: ComplicationText?): Builder = apply { this.title = title }
 
         /** Sets optional text associated with the complication data. */
-        public fun setText(text: ComplicationText?): Builder = apply {
-            this.text = text
-        }
+        public fun setText(text: ComplicationText?): Builder = apply { this.text = text }
 
         /**
          * Sets an optional hint which suggests the renderer draws the complication using a
@@ -1393,16 +1380,18 @@
     }
 
     override fun toString(): String {
-        val valueString = if (WireComplicationData.shouldRedact()) {
-            "REDACTED"
-        } else {
-            value.toString()
-        }
-        val valueExpressionString = if (WireComplicationData.shouldRedact()) {
-            "REDACTED"
-        } else {
-            valueExpression.toString()
-        }
+        val valueString =
+            if (WireComplicationData.shouldRedact()) {
+                "REDACTED"
+            } else {
+                value.toString()
+            }
+        val valueExpressionString =
+            if (WireComplicationData.shouldRedact()) {
+                "REDACTED"
+            } else {
+                valueExpression.toString()
+            }
         return "GoalProgressComplicationData(value=$valueString, " +
             "valueExpression=$valueExpressionString, targetValue=$targetValue, " +
             "monochromaticImage=$monochromaticImage, smallImage=$smallImage, title=$title, " +
@@ -1413,9 +1402,12 @@
             "displayPolicy=$displayPolicy)"
     }
 
-    override fun hasPlaceholderFields() = value == PLACEHOLDER || text?.isPlaceholder() == true ||
-        title?.isPlaceholder() == true || monochromaticImage?.isPlaceholder() == true ||
-        smallImage?.isPlaceholder() == true
+    override fun hasPlaceholderFields() =
+        value == PLACEHOLDER ||
+            text?.isPlaceholder() == true ||
+            title?.isPlaceholder() == true ||
+            monochromaticImage?.isPlaceholder() == true ||
+            smallImage?.isPlaceholder() == true
 
     override fun getNextChangeInstant(afterInstant: Instant): Instant {
         val titleChangeInstant = title?.getNextChangeTime(afterInstant) ?: Instant.MAX
@@ -1430,8 +1422,7 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.GOAL_PROGRESS
+        @JvmField public val TYPE: ComplicationType = ComplicationType.GOAL_PROGRESS
 
         /**
          * Used to signal the range should be rendered as a placeholder. It's suggested that a
@@ -1441,8 +1432,7 @@
          * Note a placeholder may only be used in the context of
          * [NoDataComplicationData.placeholder].
          */
-        @JvmField
-        public val PLACEHOLDER = Float.MAX_VALUE
+        @JvmField public val PLACEHOLDER = Float.MAX_VALUE
     }
 }
 
@@ -1463,40 +1453,40 @@
  * specify both a [monochromaticImage] and a [smallImage].
  *
  * @property elements The breakdown of the subject into various [Element]s (e.g. the proportion of
- * calories consumed which were carbohydrates, fats, etc.). The colors need to be meaningful to the
- * user (e.g. blue is cold, yellow/red is worm), and should be consistent with the experience
- * launched by tapping on the complication. If this is equal to [PLACEHOLDER] then the renderer must
- * display this in a visually distinct way to suggest to the user that it's placeholder data.  E.g.
- * each element is rendered in light grey. The maximum valid size of this list is provided by
- * [getMaxElements] and it will be truncated if its larger.
+ *   calories consumed which were carbohydrates, fats, etc.). The colors need to be meaningful to
+ *   the user (e.g. blue is cold, yellow/red is worm), and should be consistent with the experience
+ *   launched by tapping on the complication. If this is equal to [PLACEHOLDER] then the renderer
+ *   must display this in a visually distinct way to suggest to the user that it's placeholder data.
+ *   E.g. each element is rendered in light grey. The maximum valid size of this list is provided by
+ *   [getMaxElements] and it will be truncated if its larger.
  * @property elementBackgroundColor If elements are draw as segments then this is the background
- * color to use in between them.
+ *   color to use in between them.
  * @property monochromaticImage A simple [MonochromaticImage] image that can be tinted by the watch
- * face. If the monochromaticImage is equal to [MonochromaticImage.PLACEHOLDER] the renderer must
- * treat it as a placeholder rather than rendering normally, its suggested it should be rendered as
- * a light grey box.
+ *   face. If the monochromaticImage is equal to [MonochromaticImage.PLACEHOLDER] the renderer must
+ *   treat it as a placeholder rather than rendering normally, its suggested it should be rendered
+ *   as a light grey box.
  * @property smallImage A [SmallImage] that is expected to cover a small fraction of a watch face
- * occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
- * renderer must treat it as a placeholder rather than rendering normally, its suggested it should
- * be rendered as a light grey box.
- * @property title The optional title [ComplicationText]. The length of the title, including
- * any time-dependent values at any valid time, is expected to not exceed seven characters. When
- * using this text, the watch face should be able to display any string of up to seven characters
- * (reducing the text size appropriately if the string is very wide). Although not expected, it is
- * possible that strings of more than seven characters might be seen, in which case they may be
- * truncated. If the title is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it as
- * a placeholder rather than rendering normally, its suggested it should be rendered as a light grey
- * box.
+ *   occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
+ *   renderer must treat it as a placeholder rather than rendering normally, its suggested it should
+ *   be rendered as a light grey box.
+ * @property title The optional title [ComplicationText]. The length of the title, including any
+ *   time-dependent values at any valid time, is expected to not exceed seven characters. When using
+ *   this text, the watch face should be able to display any string of up to seven characters
+ *   (reducing the text size appropriately if the string is very wide). Although not expected, it is
+ *   possible that strings of more than seven characters might be seen, in which case they may be
+ *   truncated. If the title is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it
+ *   as a placeholder rather than rendering normally, its suggested it should be rendered as a light
+ *   grey box.
  * @property text The body [ComplicationText] of the complication. The length of the text, including
- * any time-dependent values at any valid time, is expected to not exceed seven characters. When
- * using this text, the watch face should be able to display any string of up to seven characters
- * (reducing the text size appropriately if the string is very wide). Although not expected, it is
- * possible that strings of more than seven characters might be seen, in which case they may be
- * truncated. If the text is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it as a
- * placeholder rather than rendering normally, its suggested it should be rendered as a light grey
- * box.
+ *   any time-dependent values at any valid time, is expected to not exceed seven characters. When
+ *   using this text, the watch face should be able to display any string of up to seven characters
+ *   (reducing the text size appropriately if the string is very wide). Although not expected, it is
+ *   possible that strings of more than seven characters might be seen, in which case they may be
+ *   truncated. If the text is equal to [ComplicationText.PLACEHOLDER] the renderer must treat it as
+ *   a placeholder rather than rendering normally, its suggested it should be rendered as a light
+ *   grey box.
  * @property contentDescription The content description field for accessibility. Please do not
- * include the word 'complication' in the description.
+ *   include the word 'complication' in the description.
  */
 @RequiresApi(Build.VERSION_CODES.TIRAMISU)
 public class WeightedElementsComplicationData
@@ -1514,26 +1504,27 @@
     dataSource: ComponentName?,
     @ComplicationPersistencePolicy persistencePolicy: Int,
     @ComplicationDisplayPolicy displayPolicy: Int
-) : ComplicationData(
-    TYPE,
-    tapAction = tapAction,
-    cachedWireComplicationData = cachedWireComplicationData,
-    validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
-    dataSource = dataSource,
-    persistencePolicy = persistencePolicy,
-    displayPolicy = displayPolicy
-) {
+) :
+    ComplicationData(
+        TYPE,
+        tapAction = tapAction,
+        cachedWireComplicationData = cachedWireComplicationData,
+        validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
+        dataSource = dataSource,
+        persistencePolicy = persistencePolicy,
+        displayPolicy = displayPolicy
+    ) {
     /**
      * Describes a single value within a [WeightedElementsComplicationData].
      *
      * @property weight The weight of the Element which must be > zero. The size of the element when
-     * rendered should be proportional to its weight. Weights are not required to sum to any
-     * particular value.
+     *   rendered should be proportional to its weight. Weights are not required to sum to any
+     *   particular value.
      * @property color The color of the Element, which must be used instead of the watch face's
-     * colors. This color needs to be meaningful to the user in conjunction with the other fields
-     * (e.g. blue is cold, red/yellow is warm). Tapping on the complication should launch an
-     * experience where the data is presented in more detail. Care must be taken to ensure the
-     * colors used are consistent with the launched experience.
+     *   colors. This color needs to be meaningful to the user in conjunction with the other fields
+     *   (e.g. blue is cold, red/yellow is warm). Tapping on the complication should launch an
+     *   experience where the data is presented in more detail. Care must be taken to ensure the
+     *   colors used are consistent with the launched experience.
      */
     class Element(
         @FloatRange(from = 0.0, fromInclusive = false) val weight: Float,
@@ -1573,19 +1564,18 @@
      * [smallImage], [text] or [title].
      *
      * @param elements The breakdown of the subject into various [Element]s. E.g. the proportion of
-     * calories consumed which were carbohydrates, fats etc... The [tapAction] must take the user to
-     * an experience where the color key becomes obvious. The maximum valid size of this list is
-     * provided by [getMaxElements].
+     *   calories consumed which were carbohydrates, fats etc... The [tapAction] must take the user
+     *   to an experience where the color key becomes obvious. The maximum valid size of this list
+     *   is provided by [getMaxElements].
      * @param contentDescription Localized description for use by screen readers. Please do not
-     * include the word 'complication' in the description.
+     *   include the word 'complication' in the description.
      */
     @RequiresApi(Build.VERSION_CODES.TIRAMISU)
     public class Builder(
         elements: List<Element>,
         private var contentDescription: ComplicationText
     ) : BaseBuilder<Builder, WeightedElementsComplicationData>() {
-        @ColorInt
-        private var elementBackgroundColor: Int = Color.TRANSPARENT
+        @ColorInt private var elementBackgroundColor: Int = Color.TRANSPARENT
         private var tapAction: PendingIntent? = null
         private var validTimeRange: TimeRange? = null
         private var monochromaticImage: MonochromaticImage? = null
@@ -1603,21 +1593,21 @@
             }
         }
 
-        private val elements: List<Element> = if (elements.size > getMaxElements()) {
-            elements.subList(0, getMaxElements()) // NB the second parameter is exclusive!
-        } else {
-            elements
-        }
+        private val elements: List<Element> =
+            if (elements.size > getMaxElements()) {
+                elements.subList(0, getMaxElements()) // NB the second parameter is exclusive!
+            } else {
+                elements
+            }
 
         /**
          * Sets the background color to use between the [elements] if they are drawn segmented.
          * Defaults to [Color.TRANSPARENT] if not set.
          */
-        public fun setElementBackgroundColor(
-            @ColorInt elementBackgroundColor: Int
-        ): Builder = apply {
-            this.elementBackgroundColor = elementBackgroundColor
-        }
+        public fun setElementBackgroundColor(@ColorInt elementBackgroundColor: Int): Builder =
+            apply {
+                this.elementBackgroundColor = elementBackgroundColor
+            }
 
         /** Sets optional pending intent to be invoked when the complication is tapped. */
         public fun setTapAction(tapAction: PendingIntent?): Builder = apply {
@@ -1641,14 +1631,10 @@
         }
 
         /** Sets optional title associated with the complication data. */
-        public fun setTitle(title: ComplicationText?): Builder = apply {
-            this.title = title
-        }
+        public fun setTitle(title: ComplicationText?): Builder = apply { this.title = title }
 
         /** Sets optional text associated with the complication data. */
-        public fun setText(text: ComplicationText?): Builder = apply {
-            this.text = text
-        }
+        public fun setText(text: ComplicationText?): Builder = apply { this.text = text }
 
         /** Builds the [GoalProgressComplicationData]. */
         public override fun build(): WeightedElementsComplicationData {
@@ -1706,11 +1692,12 @@
     }
 
     override fun toString(): String {
-        val elementsString = if (WireComplicationData.shouldRedact()) {
-            "REDACTED"
-        } else {
-            elements.joinToString()
-        }
+        val elementsString =
+            if (WireComplicationData.shouldRedact()) {
+                "REDACTED"
+            } else {
+                elements.joinToString()
+            }
         return "WeightedElementsComplicationData(elements=$elementsString, " +
             "elementBackgroundColor=$elementBackgroundColor, " +
             "monochromaticImage=$monochromaticImage, smallImage=$smallImage, title=$title, " +
@@ -1720,14 +1707,16 @@
             "persistencePolicy=$persistencePolicy, displayPolicy=$displayPolicy)"
     }
 
-    override fun hasPlaceholderFields() = elements == PLACEHOLDER ||
-        text?.isPlaceholder() == true || title?.isPlaceholder() == true ||
-        monochromaticImage?.isPlaceholder() == true || smallImage?.isPlaceholder() == true
+    override fun hasPlaceholderFields() =
+        elements == PLACEHOLDER ||
+            text?.isPlaceholder() == true ||
+            title?.isPlaceholder() == true ||
+            monochromaticImage?.isPlaceholder() == true ||
+            smallImage?.isPlaceholder() == true
 
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.WEIGHTED_ELEMENTS
+        @JvmField public val TYPE: ComplicationType = ComplicationType.WEIGHTED_ELEMENTS
 
         /**
          * Used to signal the range should be rendered as a placeholder. It's suggested that a
@@ -1737,15 +1726,14 @@
          * Note a placeholder may only be used in the context of
          * [NoDataComplicationData.placeholder].
          */
-        @JvmField
-        public val PLACEHOLDER = emptyList<Element>()
+        @JvmField public val PLACEHOLDER = emptyList<Element>()
 
         /**
          * Returns the maximum size for [elements]. Complications are small and if we have a very
-         * large  number of elements we likely won't be able to render them properly because the
-         * individual elements will be too small on screen. */
-        @JvmStatic
-        public fun getMaxElements() = 7
+         * large number of elements we likely won't be able to render them properly because the
+         * individual elements will be too small on screen.
+         */
+        @JvmStatic public fun getMaxElements() = 7
     }
 }
 
@@ -1755,16 +1743,17 @@
  * The image is expected to always be displayed.
  *
  * @property monochromaticImage A simple [MonochromaticImage] image that can be tinted by the watch
- * face (typically with SRC_IN). If the monochromaticImage is equal to
- * [MonochromaticImage.PLACEHOLDER] the renderer must treat it as a placeholder rather than
- * rendering normally, it's suggested it should be rendered as a light grey box.
+ *   face (typically with SRC_IN). If the monochromaticImage is equal to
+ *   [MonochromaticImage.PLACEHOLDER] the renderer must treat it as a placeholder rather than
+ *   rendering normally, it's suggested it should be rendered as a light grey box.
  * @property contentDescription The content description field for accessibility and is used to
- * describe what data the icon represents. If the icon is purely stylistic, and does not convey any
- * information to the user, then provide an empty content description. If no content description is
- * provided, a generic content description will be used instead. Please do not include the word
- * 'complication' in the description.
+ *   describe what data the icon represents. If the icon is purely stylistic, and does not convey
+ *   any information to the user, then provide an empty content description. If no content
+ *   description is provided, a generic content description will be used instead. Please do not
+ *   include the word 'complication' in the description.
  */
-public class MonochromaticImageComplicationData internal constructor(
+public class MonochromaticImageComplicationData
+internal constructor(
     public val monochromaticImage: MonochromaticImage,
     public val contentDescription: ComplicationText?,
     tapAction: PendingIntent?,
@@ -1773,15 +1762,16 @@
     dataSource: ComponentName?,
     @ComplicationPersistencePolicy persistencePolicy: Int,
     @ComplicationDisplayPolicy displayPolicy: Int
-) : ComplicationData(
-    TYPE,
-    tapAction = tapAction,
-    cachedWireComplicationData = cachedWireComplicationData,
-    validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
-    dataSource = dataSource,
-    persistencePolicy = persistencePolicy,
-    displayPolicy = displayPolicy
-) {
+) :
+    ComplicationData(
+        TYPE,
+        tapAction = tapAction,
+        cachedWireComplicationData = cachedWireComplicationData,
+        validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
+        dataSource = dataSource,
+        persistencePolicy = persistencePolicy,
+        displayPolicy = displayPolicy
+    ) {
     /**
      * Builder for [MonochromaticImageComplicationData].
      *
@@ -1789,7 +1779,7 @@
      *
      * @param monochromaticImage The [MonochromaticImage] to be displayed
      * @param contentDescription Localized description for use by screen readers. Please do not
-     * include the word 'complication' in the description.
+     *   include the word 'complication' in the description.
      */
     public class Builder(
         private val monochromaticImage: MonochromaticImage,
@@ -1850,8 +1840,7 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.MONOCHROMATIC_IMAGE
+        @JvmField public val TYPE: ComplicationType = ComplicationType.MONOCHROMATIC_IMAGE
     }
 }
 
@@ -1861,16 +1850,17 @@
  * The image is expected to always be displayed.
  *
  * @property smallImage The [SmallImage] that is expected to cover a small fraction of a watch face
- * occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
- * renderer must treat it as a placeholder rather than rendering normally, its suggested it should
- * be rendered as a light grey box.
+ *   occupied by a single complication. If the smallImage is equal to [SmallImage.PLACEHOLDER] the
+ *   renderer must treat it as a placeholder rather than rendering normally, its suggested it should
+ *   be rendered as a light grey box.
  * @property contentDescription The content description field for accessibility and is used to
- * describe what data the image represents. If the image is purely stylistic, and does not convey
- * any information to the user, then provide an empty content description. If no content description
- * is provided, a generic content description will be used instead. Please do not include the word
- * 'complication' in the description.
+ *   describe what data the image represents. If the image is purely stylistic, and does not convey
+ *   any information to the user, then provide an empty content description. If no content
+ *   description is provided, a generic content description will be used instead. Please do not
+ *   include the word 'complication' in the description.
  */
-public class SmallImageComplicationData internal constructor(
+public class SmallImageComplicationData
+internal constructor(
     public val smallImage: SmallImage,
     public val contentDescription: ComplicationText?,
     tapAction: PendingIntent?,
@@ -1879,15 +1869,16 @@
     dataSource: ComponentName?,
     @ComplicationPersistencePolicy persistencePolicy: Int,
     @ComplicationDisplayPolicy displayPolicy: Int
-) : ComplicationData(
-    TYPE,
-    tapAction = tapAction,
-    cachedWireComplicationData = cachedWireComplicationData,
-    validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
-    dataSource = dataSource,
-    persistencePolicy = persistencePolicy,
-    displayPolicy = displayPolicy
-) {
+) :
+    ComplicationData(
+        TYPE,
+        tapAction = tapAction,
+        cachedWireComplicationData = cachedWireComplicationData,
+        validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
+        dataSource = dataSource,
+        persistencePolicy = persistencePolicy,
+        displayPolicy = displayPolicy
+    ) {
     /**
      * Builder for [SmallImageComplicationData].
      *
@@ -1895,7 +1886,7 @@
      *
      * @param smallImage The [SmallImage] to be displayed
      * @param contentDescription Localized description for use by screen readers. Please do not
-     * include the word 'complication' in the description.
+     *   include the word 'complication' in the description.
      */
     public class Builder(
         private val smallImage: SmallImage,
@@ -1956,8 +1947,7 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.SMALL_IMAGE
+        @JvmField public val TYPE: ComplicationType = ComplicationType.SMALL_IMAGE
     }
 }
 
@@ -1966,22 +1956,23 @@
  * of the watch face, large enough to be shown as either a background or as part of a high
  * resolution complication.
  *
- * The image is expected to always be displayed. The image may be shown as the background, any
- * other part of the watch face or within a complication. The image is large enough to be cover
- * the entire screen. The image may be cropped to fit the watch face or complication.
+ * The image is expected to always be displayed. The image may be shown as the background, any other
+ * part of the watch face or within a complication. The image is large enough to be cover the entire
+ * screen. The image may be cropped to fit the watch face or complication.
  *
  * @property photoImage The [Icon] that is expected to fill a large part of the watch face, large
- * enough to be shown as either a background or as part of a high resolution complication. This must
- * not be tinted. If the photoImage is equal to [PhotoImageComplicationData.PLACEHOLDER] the
- * renderer must treat it as a placeholder rather than rendering normally, its suggested it should
- * be rendered as a light grey box.
+ *   enough to be shown as either a background or as part of a high resolution complication. This
+ *   must not be tinted. If the photoImage is equal to [PhotoImageComplicationData.PLACEHOLDER] the
+ *   renderer must treat it as a placeholder rather than rendering normally, its suggested it should
+ *   be rendered as a light grey box.
  * @property contentDescription The content description field for accessibility and is used to
- * describe what data the image represents. If the image is purely stylistic, and does not convey
- * any information to the user, then provide an empty content description. If no content description
- * is provided, a generic content description will be used instead. Please do not include the word
- * 'complication' in the description.
+ *   describe what data the image represents. If the image is purely stylistic, and does not convey
+ *   any information to the user, then provide an empty content description. If no content
+ *   description is provided, a generic content description will be used instead. Please do not
+ *   include the word 'complication' in the description.
  */
-public class PhotoImageComplicationData internal constructor(
+public class PhotoImageComplicationData
+internal constructor(
     public val photoImage: Icon,
     public val contentDescription: ComplicationText?,
     tapAction: PendingIntent?,
@@ -1990,15 +1981,16 @@
     dataSource: ComponentName?,
     @ComplicationPersistencePolicy persistencePolicy: Int,
     @ComplicationDisplayPolicy displayPolicy: Int
-) : ComplicationData(
-    TYPE,
-    tapAction = tapAction,
-    cachedWireComplicationData = cachedWireComplicationData,
-    validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
-    dataSource = dataSource,
-    persistencePolicy = persistencePolicy,
-    displayPolicy = displayPolicy
-) {
+) :
+    ComplicationData(
+        TYPE,
+        tapAction = tapAction,
+        cachedWireComplicationData = cachedWireComplicationData,
+        validTimeRange = validTimeRange ?: TimeRange.ALWAYS,
+        dataSource = dataSource,
+        persistencePolicy = persistencePolicy,
+        displayPolicy = displayPolicy
+    ) {
     /**
      * Builder for [PhotoImageComplicationData].
      *
@@ -2006,7 +1998,7 @@
      *
      * @param photoImage The [Icon] to be displayed
      * @param contentDescription Localized description for use by screen readers. Please do not
-     * include the word 'complication' in the description.
+     *   include the word 'complication' in the description.
      */
     public class Builder(
         private val photoImage: Icon,
@@ -2068,8 +2060,7 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.PHOTO_IMAGE
+        @JvmField public val TYPE: ComplicationType = ComplicationType.PHOTO_IMAGE
 
         /**
          * Used to signal the photo image should be rendered as a placeholder. It's suggested that a
@@ -2079,8 +2070,7 @@
          * Note a placeholder may only be used in the context of
          * [NoDataComplicationData.placeholder].
          */
-        @JvmField
-        public val PLACEHOLDER: Icon = createPlaceholderIcon()
+        @JvmField public val PLACEHOLDER: Icon = createPlaceholderIcon()
     }
 }
 
@@ -2090,28 +2080,29 @@
  *
  * The text, title, and icon may be displayed by watch faces, but this is not required.
  *
- * It is recommended that, where possible, tapping on the complication when in this state
- * should trigger a permission request. Note this is done by
+ * It is recommended that, where possible, tapping on the complication when in this state should
+ * trigger a permission request. Note this is done by
  * [androidx.wear.watchface.ComplicationSlotsManager] for androidx watch faces.
  *
  * @property text The body [ComplicationText] of the complication. The length of the text, including
- * any time-dependent values at any valid time, is expected to not exceed seven characters. When
- * using this text, the watch face should be able to display any string of up to seven characters
- * (reducing the text size appropriately if the string is very wide). Although not expected, it is
- * possible that strings of more than seven characters might be seen, in which case they may be
- * truncated.
- * @property title The optional title [ComplicationText]. The length of the text, including
- * any time-dependent values at any valid time, is expected to not exceed seven characters. When
- * using this text, the watch face should be able to display any string of up to seven characters
- * (reducing the text size appropriately if the string is very wide). Although not expected, it is
- * possible that strings of more than seven characters might be seen, in which case they may be
- * truncated.
+ *   any time-dependent values at any valid time, is expected to not exceed seven characters. When
+ *   using this text, the watch face should be able to display any string of up to seven characters
+ *   (reducing the text size appropriately if the string is very wide). Although not expected, it is
+ *   possible that strings of more than seven characters might be seen, in which case they may be
+ *   truncated.
+ * @property title The optional title [ComplicationText]. The length of the text, including any
+ *   time-dependent values at any valid time, is expected to not exceed seven characters. When using
+ *   this text, the watch face should be able to display any string of up to seven characters
+ *   (reducing the text size appropriately if the string is very wide). Although not expected, it is
+ *   possible that strings of more than seven characters might be seen, in which case they may be
+ *   truncated.
  * @property monochromaticImage A simple [MonochromaticImage] image that can be tinted by the watch
- * face.
+ *   face.
  * @property smallImage A [SmallImage] that is expected to cover a small fraction of a watch face
- * occupied by a single complication
+ *   occupied by a single complication
  */
-public class NoPermissionComplicationData internal constructor(
+public class NoPermissionComplicationData
+internal constructor(
     public val text: ComplicationText?,
     public val title: ComplicationText?,
     public val monochromaticImage: MonochromaticImage?,
@@ -2120,17 +2111,16 @@
     dataSource: ComponentName?,
     @ComplicationPersistencePolicy persistencePolicy: Int,
     @ComplicationDisplayPolicy displayPolicy: Int
-) : ComplicationData(
-    TYPE,
-    tapAction = null,
-    cachedWireComplicationData = cachedWireComplicationData,
-    dataSource = dataSource,
-    persistencePolicy = persistencePolicy,
-    displayPolicy = displayPolicy
-) {
-    /**
-     * Builder for [NoPermissionComplicationData].
-     */
+) :
+    ComplicationData(
+        TYPE,
+        tapAction = null,
+        cachedWireComplicationData = cachedWireComplicationData,
+        dataSource = dataSource,
+        persistencePolicy = persistencePolicy,
+        displayPolicy = displayPolicy
+    ) {
+    /** Builder for [NoPermissionComplicationData]. */
     public class Builder : BaseBuilder<Builder, NoPermissionComplicationData>() {
         private var text: ComplicationText? = null
         private var title: ComplicationText? = null
@@ -2138,14 +2128,10 @@
         private var smallImage: SmallImage? = null
 
         /** Sets optional text associated with the complication data. */
-        public fun setText(text: ComplicationText?): Builder = apply {
-            this.text = text
-        }
+        public fun setText(text: ComplicationText?): Builder = apply { this.text = text }
 
         /** Sets optional title associated with the complication data. */
-        public fun setTitle(title: ComplicationText?): Builder = apply {
-            this.title = title
-        }
+        public fun setTitle(title: ComplicationText?): Builder = apply { this.title = title }
 
         /** Sets optional icon associated with the complication data. */
         public fun setMonochromaticImage(monochromaticImage: MonochromaticImage?): Builder = apply {
@@ -2200,8 +2186,7 @@
     /** @hide */
     public companion object {
         /** The [ComplicationType] corresponding to objects of this type. */
-        @JvmField
-        public val TYPE: ComplicationType = ComplicationType.NO_PERMISSION
+        @JvmField public val TYPE: ComplicationType = ComplicationType.NO_PERMISSION
     }
 }
 
@@ -2214,62 +2199,62 @@
         val displayPolicyCopy = displayPolicy
         return when (type) {
             NoDataComplicationData.TYPE.toWireComplicationType() -> null
-
             ShortTextComplicationData.TYPE.toWireComplicationType() -> {
                 ShortTextComplicationData.Builder(
-                    shortText!!.toApiComplicationTextPlaceholderAware(),
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                    setMonochromaticImage(parseIconPlaceholderAware())
-                    setSmallImage(parseSmallImagePlaceholderAware())
-                    setTitle(shortTitle?.toApiComplicationTextPlaceholderAware())
-                    setDataSource(dataSourceCopy)
-                    setPersistencePolicy(persistencePolicyCopy)
-                    setDisplayPolicy(displayPolicyCopy)
-                }.build()
+                        shortText!!.toApiComplicationTextPlaceholderAware(),
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                        setMonochromaticImage(parseIconPlaceholderAware())
+                        setSmallImage(parseSmallImagePlaceholderAware())
+                        setTitle(shortTitle?.toApiComplicationTextPlaceholderAware())
+                        setDataSource(dataSourceCopy)
+                        setPersistencePolicy(persistencePolicyCopy)
+                        setDisplayPolicy(displayPolicyCopy)
+                    }
+                    .build()
             }
-
             LongTextComplicationData.TYPE.toWireComplicationType() -> {
                 LongTextComplicationData.Builder(
-                    longText!!.toApiComplicationTextPlaceholderAware(),
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                    setMonochromaticImage(parseIconPlaceholderAware())
-                    setSmallImage(parseSmallImagePlaceholderAware())
-                    setTitle(longTitle?.toApiComplicationTextPlaceholderAware())
-                    setDataSource(dataSourceCopy)
-                    setPersistencePolicy(persistencePolicyCopy)
-                    setDisplayPolicy(displayPolicyCopy)
-                }.build()
+                        longText!!.toApiComplicationTextPlaceholderAware(),
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                        setMonochromaticImage(parseIconPlaceholderAware())
+                        setSmallImage(parseSmallImagePlaceholderAware())
+                        setTitle(longTitle?.toApiComplicationTextPlaceholderAware())
+                        setDataSource(dataSourceCopy)
+                        setPersistencePolicy(persistencePolicyCopy)
+                        setDisplayPolicy(displayPolicyCopy)
+                    }
+                    .build()
             }
-
             RangedValueComplicationData.TYPE.toWireComplicationType() ->
                 RangedValueComplicationData.Builder(
-                    value = rangedValue,
-                    valueExpression = rangedValueExpression,
-                    min = rangedMinValue,
-                    max = rangedMaxValue,
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                    setMonochromaticImage(parseIconPlaceholderAware())
-                    setSmallImage(parseSmallImagePlaceholderAware())
-                    setTitle(shortTitle?.toApiComplicationTextPlaceholderAware())
-                    setText(shortText?.toApiComplicationTextPlaceholderAware())
-                    setDataSource(dataSourceCopy)
-                    colorRamp?.let {
-                        setColorRamp(ColorRamp(it, isColorRampInterpolated!!))
+                        value = rangedValue,
+                        valueExpression = rangedValueExpression,
+                        min = rangedMinValue,
+                        max = rangedMaxValue,
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                        setMonochromaticImage(parseIconPlaceholderAware())
+                        setSmallImage(parseSmallImagePlaceholderAware())
+                        setTitle(shortTitle?.toApiComplicationTextPlaceholderAware())
+                        setText(shortText?.toApiComplicationTextPlaceholderAware())
+                        setDataSource(dataSourceCopy)
+                        colorRamp?.let { setColorRamp(ColorRamp(it, isColorRampInterpolated!!)) }
+                        setPersistencePolicy(persistencePolicyCopy)
+                        setDisplayPolicy(displayPolicyCopy)
+                        setValueType(rangedValueType)
                     }
-                    setPersistencePolicy(persistencePolicyCopy)
-                    setDisplayPolicy(displayPolicyCopy)
-                    setValueType(rangedValueType)
-                }.build()
-
+                    .build()
             MonochromaticImageComplicationData.TYPE.toWireComplicationType() ->
                 MonochromaticImageComplicationData(
                     parseIconPlaceholderAware()!!,
@@ -2281,7 +2266,6 @@
                     persistencePolicyCopy,
                     displayPolicyCopy
                 )
-
             SmallImageComplicationData.TYPE.toWireComplicationType() ->
                 SmallImageComplicationData(
                     parseSmallImagePlaceholderAware()!!,
@@ -2293,7 +2277,6 @@
                     persistencePolicyCopy,
                     displayPolicyCopy
                 )
-
             PhotoImageComplicationData.TYPE.toWireComplicationType() ->
                 PhotoImageComplicationData(
                     parseLargeImagePlaceholderAware()!!,
@@ -2305,56 +2288,61 @@
                     persistencePolicyCopy,
                     displayPolicyCopy
                 )
-
             GoalProgressComplicationData.TYPE.toWireComplicationType() ->
                 GoalProgressComplicationData.Builder(
-                    value = rangedValue,
-                    valueExpression = rangedValueExpression,
-                    targetValue = targetValue,
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                    setMonochromaticImage(parseIconPlaceholderAware())
-                    setSmallImage(parseSmallImagePlaceholderAware())
-                    setTitle(shortTitle?.toApiComplicationTextPlaceholderAware())
-                    setText(shortText?.toApiComplicationTextPlaceholderAware())
-                    setDataSource(dataSourceCopy)
-                    colorRamp?.let {
-                        setColorRamp(ColorRamp(it, isColorRampInterpolated!!))
+                        value = rangedValue,
+                        valueExpression = rangedValueExpression,
+                        targetValue = targetValue,
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                        setMonochromaticImage(parseIconPlaceholderAware())
+                        setSmallImage(parseSmallImagePlaceholderAware())
+                        setTitle(shortTitle?.toApiComplicationTextPlaceholderAware())
+                        setText(shortText?.toApiComplicationTextPlaceholderAware())
+                        setDataSource(dataSourceCopy)
+                        colorRamp?.let { setColorRamp(ColorRamp(it, isColorRampInterpolated!!)) }
+                        setPersistencePolicy(persistencePolicyCopy)
+                        setDisplayPolicy(displayPolicyCopy)
                     }
-                    setPersistencePolicy(persistencePolicyCopy)
-                    setDisplayPolicy(displayPolicyCopy)
-                }.build()
-
+                    .build()
             WeightedElementsComplicationData.TYPE.toWireComplicationType() ->
                 WeightedElementsComplicationData.Builder(
-                    elements = if (elementWeights!!.isEmpty()) {
-                        WeightedElementsComplicationData.PLACEHOLDER
-                    } else {
-                        val elementWeights = this.elementWeights!!
-                        val elementColors = this.elementColors!!
-                        require(elementWeights.size == elementColors.size) {
-                            "elementWeights and elementColors must have the same size"
-                        }
-                        elementWeights.mapIndexed { index, weight ->
-                            WeightedElementsComplicationData.Element(weight, elementColors[index])
-                        }.toList()
-                    },
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setElementBackgroundColor(elementBackgroundColor)
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                    setMonochromaticImage(parseIconPlaceholderAware())
-                    setSmallImage(parseSmallImagePlaceholderAware())
-                    setTitle(shortTitle?.toApiComplicationTextPlaceholderAware())
-                    setText(shortText?.toApiComplicationTextPlaceholderAware())
-                    setDataSource(dataSourceCopy)
-                    setPersistencePolicy(persistencePolicyCopy)
-                    setDisplayPolicy(displayPolicyCopy)
-                }.build()
-
+                        elements =
+                            if (elementWeights!!.isEmpty()) {
+                                WeightedElementsComplicationData.PLACEHOLDER
+                            } else {
+                                val elementWeights = this.elementWeights!!
+                                val elementColors = this.elementColors!!
+                                require(elementWeights.size == elementColors.size) {
+                                    "elementWeights and elementColors must have the same size"
+                                }
+                                elementWeights
+                                    .mapIndexed { index, weight ->
+                                        WeightedElementsComplicationData.Element(
+                                            weight,
+                                            elementColors[index]
+                                        )
+                                    }
+                                    .toList()
+                            },
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setElementBackgroundColor(elementBackgroundColor)
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                        setMonochromaticImage(parseIconPlaceholderAware())
+                        setSmallImage(parseSmallImagePlaceholderAware())
+                        setTitle(shortTitle?.toApiComplicationTextPlaceholderAware())
+                        setText(shortText?.toApiComplicationTextPlaceholderAware())
+                        setDataSource(dataSourceCopy)
+                        setPersistencePolicy(persistencePolicyCopy)
+                        setDisplayPolicy(displayPolicyCopy)
+                    }
+                    .build()
             else -> null
         }
     } catch (e: Exception) {
@@ -2368,9 +2356,7 @@
     }
 }
 
-/**
- * @hide
- */
+/** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @Suppress("NewApi")
 public fun WireComplicationData.toApiComplicationData(): ComplicationData {
@@ -2379,121 +2365,123 @@
             NoDataComplicationData.TYPE.toWireComplicationType() -> {
                 placeholder?.toPlaceholderComplicationData()?.let {
                     NoDataComplicationData(it, this@toApiComplicationData)
-                } ?: NoDataComplicationData(null, this@toApiComplicationData)
+                }
+                    ?: NoDataComplicationData(null, this@toApiComplicationData)
             }
-
             EmptyComplicationData.TYPE.toWireComplicationType() -> EmptyComplicationData()
-
             NotConfiguredComplicationData.TYPE.toWireComplicationType() ->
                 NotConfiguredComplicationData()
-
             ShortTextComplicationData.TYPE.toWireComplicationType() ->
                 ShortTextComplicationData.Builder(
-                    shortText!!.toApiComplicationText(),
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setCommon(this@toApiComplicationData)
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                    setTitle(shortTitle?.toApiComplicationText())
-                    setMonochromaticImage(parseIcon())
-                    setSmallImage(parseSmallImage())
-                }.build()
-
+                        shortText!!.toApiComplicationText(),
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setCommon(this@toApiComplicationData)
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                        setTitle(shortTitle?.toApiComplicationText())
+                        setMonochromaticImage(parseIcon())
+                        setSmallImage(parseSmallImage())
+                    }
+                    .build()
             LongTextComplicationData.TYPE.toWireComplicationType() ->
                 LongTextComplicationData.Builder(
-                    longText!!.toApiComplicationText(),
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setCommon(this@toApiComplicationData)
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                    setTitle(longTitle?.toApiComplicationText())
-                    setMonochromaticImage(parseIcon())
-                    setSmallImage(parseSmallImage())
-                }.build()
-
+                        longText!!.toApiComplicationText(),
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setCommon(this@toApiComplicationData)
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                        setTitle(longTitle?.toApiComplicationText())
+                        setMonochromaticImage(parseIcon())
+                        setSmallImage(parseSmallImage())
+                    }
+                    .build()
             RangedValueComplicationData.TYPE.toWireComplicationType() ->
                 RangedValueComplicationData.Builder(
-                    value = rangedValue,
-                    valueExpression = rangedValueExpression,
-                    min = rangedMinValue,
-                    max = rangedMaxValue,
-                    contentDescription = contentDescription?.toApiComplicationText()
-                        ?: ComplicationText.EMPTY
-                ).apply {
-                    setCommon(this@toApiComplicationData)
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                    setMonochromaticImage(parseIcon())
-                    setSmallImage(parseSmallImage())
-                    setTitle(shortTitle?.toApiComplicationText())
-                    setText(shortText?.toApiComplicationText())
-                    colorRamp?.let {
-                        setColorRamp(ColorRamp(it, isColorRampInterpolated!!))
+                        value = rangedValue,
+                        valueExpression = rangedValueExpression,
+                        min = rangedMinValue,
+                        max = rangedMaxValue,
+                        contentDescription = contentDescription?.toApiComplicationText()
+                                ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setCommon(this@toApiComplicationData)
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                        setMonochromaticImage(parseIcon())
+                        setSmallImage(parseSmallImage())
+                        setTitle(shortTitle?.toApiComplicationText())
+                        setText(shortText?.toApiComplicationText())
+                        colorRamp?.let { setColorRamp(ColorRamp(it, isColorRampInterpolated!!)) }
+                        setValueType(rangedValueType)
                     }
-                    setValueType(rangedValueType)
-                }.build()
-
+                    .build()
             MonochromaticImageComplicationData.TYPE.toWireComplicationType() ->
                 MonochromaticImageComplicationData.Builder(
-                    parseIcon()!!,
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setCommon(this@toApiComplicationData)
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                }.build()
-
+                        parseIcon()!!,
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setCommon(this@toApiComplicationData)
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                    }
+                    .build()
             SmallImageComplicationData.TYPE.toWireComplicationType() ->
                 SmallImageComplicationData.Builder(
-                    parseSmallImage()!!,
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setCommon(this@toApiComplicationData)
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                }.build()
-
+                        parseSmallImage()!!,
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setCommon(this@toApiComplicationData)
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                    }
+                    .build()
             PhotoImageComplicationData.TYPE.toWireComplicationType() ->
                 PhotoImageComplicationData.Builder(
-                    largeImage!!,
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setCommon(this@toApiComplicationData)
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                }.build()
-
+                        largeImage!!,
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setCommon(this@toApiComplicationData)
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                    }
+                    .build()
             NoPermissionComplicationData.TYPE.toWireComplicationType() ->
-                NoPermissionComplicationData.Builder().apply {
-                    setCommon(this@toApiComplicationData)
-                    setMonochromaticImage(parseIcon())
-                    setSmallImage(parseSmallImage())
-                    setTitle(shortTitle?.toApiComplicationText())
-                    setText(shortText?.toApiComplicationText())
-                }.build()
-
+                NoPermissionComplicationData.Builder()
+                    .apply {
+                        setCommon(this@toApiComplicationData)
+                        setMonochromaticImage(parseIcon())
+                        setSmallImage(parseSmallImage())
+                        setTitle(shortTitle?.toApiComplicationText())
+                        setText(shortText?.toApiComplicationText())
+                    }
+                    .build()
             GoalProgressComplicationData.TYPE.toWireComplicationType() ->
                 GoalProgressComplicationData.Builder(
-                    value = rangedValue,
-                    valueExpression = rangedValueExpression,
-                    targetValue = targetValue,
-                    contentDescription = contentDescription?.toApiComplicationText()
-                        ?: ComplicationText.EMPTY
-                ).apply {
-                    setCommon(this@toApiComplicationData)
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                    setMonochromaticImage(parseIcon())
-                    setSmallImage(parseSmallImage())
-                    setTitle(shortTitle?.toApiComplicationText())
-                    setText(shortText?.toApiComplicationText())
-                    colorRamp?.let {
-                        setColorRamp(ColorRamp(it, isColorRampInterpolated!!))
+                        value = rangedValue,
+                        valueExpression = rangedValueExpression,
+                        targetValue = targetValue,
+                        contentDescription = contentDescription?.toApiComplicationText()
+                                ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setCommon(this@toApiComplicationData)
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                        setMonochromaticImage(parseIcon())
+                        setSmallImage(parseSmallImage())
+                        setTitle(shortTitle?.toApiComplicationText())
+                        setText(shortText?.toApiComplicationText())
+                        colorRamp?.let { setColorRamp(ColorRamp(it, isColorRampInterpolated!!)) }
                     }
-                }.build()
-
+                    .build()
             WeightedElementsComplicationData.TYPE.toWireComplicationType() -> {
                 val elementWeights = this.elementWeights!!
                 val elementColors = this.elementColors!!
@@ -2501,22 +2489,29 @@
                     "elementWeights and elementColors must have the same size"
                 }
                 WeightedElementsComplicationData.Builder(
-                    elements = elementWeights.mapIndexed { index, weight ->
-                        WeightedElementsComplicationData.Element(weight, elementColors[index])
-                    }.toList(),
-                    contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
-                ).apply {
-                    setCommon(this@toApiComplicationData)
-                    setElementBackgroundColor(elementBackgroundColor)
-                    setTapAction(tapAction)
-                    setValidTimeRange(parseTimeRange())
-                    setMonochromaticImage(parseIcon())
-                    setSmallImage(parseSmallImage())
-                    setTitle(shortTitle?.toApiComplicationText())
-                    setText(shortText?.toApiComplicationText())
-                }.build()
+                        elements =
+                            elementWeights
+                                .mapIndexed { index, weight ->
+                                    WeightedElementsComplicationData.Element(
+                                        weight,
+                                        elementColors[index]
+                                    )
+                                }
+                                .toList(),
+                        contentDescription?.toApiComplicationText() ?: ComplicationText.EMPTY
+                    )
+                    .apply {
+                        setCommon(this@toApiComplicationData)
+                        setElementBackgroundColor(elementBackgroundColor)
+                        setTapAction(tapAction)
+                        setValidTimeRange(parseTimeRange())
+                        setMonochromaticImage(parseIcon())
+                        setSmallImage(parseSmallImage())
+                        setTitle(shortTitle?.toApiComplicationText())
+                        setText(shortText?.toApiComplicationText())
+                    }
+                    .build()
             }
-
             else -> NoDataComplicationData()
         }
     } catch (e: Exception) {
@@ -2541,9 +2536,7 @@
 
 private fun WireComplicationData.parseIcon() =
     icon?.let {
-        MonochromaticImage.Builder(it).apply {
-            setAmbientImage(burnInProtectionIcon)
-        }.build()
+        MonochromaticImage.Builder(it).apply { setAmbientImage(burnInProtectionIcon) }.build()
     }
 
 private fun WireComplicationData.parseIconPlaceholderAware() =
@@ -2551,22 +2544,21 @@
         if (it.isPlaceholder()) {
             MonochromaticImage.PLACEHOLDER
         } else {
-            MonochromaticImage.Builder(it).apply {
-                setAmbientImage(burnInProtectionIcon)
-            }.build()
+            MonochromaticImage.Builder(it).apply { setAmbientImage(burnInProtectionIcon) }.build()
         }
     }
 
 private fun WireComplicationData.parseSmallImage() =
     smallImage?.let {
-        val imageStyle = when (smallImageStyle) {
-            WireComplicationData.IMAGE_STYLE_ICON -> SmallImageType.ICON
-            WireComplicationData.IMAGE_STYLE_PHOTO -> SmallImageType.PHOTO
-            else -> SmallImageType.PHOTO
-        }
-        SmallImage.Builder(it, imageStyle).apply {
-            setAmbientImage(burnInProtectionSmallImage)
-        }.build()
+        val imageStyle =
+            when (smallImageStyle) {
+                WireComplicationData.IMAGE_STYLE_ICON -> SmallImageType.ICON
+                WireComplicationData.IMAGE_STYLE_PHOTO -> SmallImageType.PHOTO
+                else -> SmallImageType.PHOTO
+            }
+        SmallImage.Builder(it, imageStyle)
+            .apply { setAmbientImage(burnInProtectionSmallImage) }
+            .build()
     }
 
 private fun WireComplicationData.parseSmallImagePlaceholderAware() =
@@ -2574,14 +2566,15 @@
         if (it.isPlaceholder()) {
             SmallImage.PLACEHOLDER
         } else {
-            val imageStyle = when (smallImageStyle) {
-                WireComplicationData.IMAGE_STYLE_ICON -> SmallImageType.ICON
-                WireComplicationData.IMAGE_STYLE_PHOTO -> SmallImageType.PHOTO
-                else -> SmallImageType.PHOTO
-            }
-            SmallImage.Builder(it, imageStyle).apply {
-                setAmbientImage(burnInProtectionSmallImage)
-            }.build()
+            val imageStyle =
+                when (smallImageStyle) {
+                    WireComplicationData.IMAGE_STYLE_ICON -> SmallImageType.ICON
+                    WireComplicationData.IMAGE_STYLE_PHOTO -> SmallImageType.PHOTO
+                    else -> SmallImageType.PHOTO
+                }
+            SmallImage.Builder(it, imageStyle)
+                .apply { setAmbientImage(burnInProtectionSmallImage) }
+                .build()
         }
     }
 
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/DefaultComplicationDataSourcePolicyWireFormat.java b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/DefaultComplicationDataSourcePolicyWireFormat.java
index 7f78b06..9f5dbb2 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/DefaultComplicationDataSourcePolicyWireFormat.java
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/DefaultComplicationDataSourcePolicyWireFormat.java
@@ -57,8 +57,7 @@
     @ComplicationData.ComplicationType
     public int mSecondaryDataSourceDefaultType;
 
-    DefaultComplicationDataSourcePolicyWireFormat() {
-    }
+    DefaultComplicationDataSourcePolicyWireFormat() {}
 
     public DefaultComplicationDataSourcePolicyWireFormat(
             @NonNull List<ComponentName> defaultDataSourcesToTry,
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Image.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Image.kt
index 35bda85..15cb0c5 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Image.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Image.kt
@@ -16,9 +16,9 @@
 
 package androidx.wear.watchface.complications.data
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.graphics.drawable.Icon
 import android.os.Build
+import android.support.wearable.complications.ComplicationData as WireComplicationData
 import androidx.annotation.RequiresApi
 import androidx.annotation.RestrictTo
 import androidx.wear.watchface.utility.iconEquals
@@ -37,17 +37,15 @@
  * with the provider / brand with the expectation that the watch face may recolor it (typically
  * using a SRC_IN filter).
  *
- * An ambient alternative is provided that may be shown instead of the regular image while the
- * watch is not active.
+ * An ambient alternative is provided that may be shown instead of the regular image while the watch
+ * is not active.
  *
  * @property [image] The image itself
  * @property [ambientImage] The image to be shown when the device is in ambient mode to save power
- * or avoid burn in
+ *   or avoid burn in
  */
-public class MonochromaticImage internal constructor(
-    public val image: Icon,
-    public val ambientImage: Icon?
-) {
+public class MonochromaticImage
+internal constructor(public val image: Icon, public val ambientImage: Icon?) {
     /**
      * Builder for [MonochromaticImage].
      *
@@ -57,9 +55,9 @@
         private var ambientImage: Icon? = null
 
         /**
-         * Sets a different image for when the device is ambient mode to save power and prevent
-         * burn in. If no ambient variant is provided, the watch face may not show anything while
-         * in ambient mode.
+         * Sets a different image for when the device is ambient mode to save power and prevent burn
+         * in. If no ambient variant is provided, the watch face may not show anything while in
+         * ambient mode.
          */
         public fun setAmbientImage(ambientImage: Icon?): Builder = apply {
             this.ambientImage = ambientImage
@@ -70,10 +68,11 @@
     }
 
     /** Adds a [MonochromaticImage] to a builder for [WireComplicationData]. */
-    internal fun addToWireComplicationData(builder: WireComplicationData.Builder) = builder.apply {
-        setIcon(image)
-        setBurnInProtectionIcon(ambientImage)
-    }
+    internal fun addToWireComplicationData(builder: WireComplicationData.Builder) =
+        builder.apply {
+            setIcon(image)
+            setBurnInProtectionIcon(ambientImage)
+        }
 
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
@@ -94,8 +93,7 @@
     }
 
     /** @hide */
-    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    fun isPlaceholder() = image.isPlaceholder()
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) fun isPlaceholder() = image.isPlaceholder()
 
     /** @hide */
     public companion object {
@@ -120,16 +118,16 @@
  */
 public enum class SmallImageType {
     /**
-     * Type for images that have a transparent background and are expected to be drawn
-     * entirely within the space available, such as a launcher image. Watch faces may add padding
-     * when drawing these images, but should never crop these images. Icons must not be recolored.
+     * Type for images that have a transparent background and are expected to be drawn entirely
+     * within the space available, such as a launcher image. Watch faces may add padding when
+     * drawing these images, but should never crop these images. Icons must not be recolored.
      */
     ICON,
 
     /**
-     * Type for images which are photos that are expected to fill the space available. Images
-     * of this style may be cropped to fit the shape of the complication - in particular, the image
-     * may be cropped to a circle. Photos must not be recolored.
+     * Type for images which are photos that are expected to fill the space available. Images of
+     * this style may be cropped to fit the shape of the complication - in particular, the image may
+     * be cropped to a circle. Photos must not be recolored.
      */
     PHOTO
 }
@@ -138,15 +136,16 @@
  * An image that is expected to cover a small fraction of a watch face occupied by a single
  * complication. A SmallImage must not be tinted.
  *
- * An ambient alternative is provided that may be shown instead of the regular image while the
- * watch is not active.
+ * An ambient alternative is provided that may be shown instead of the regular image while the watch
+ * is not active.
  *
  * @property [image] The image itself
  * @property [type] The style of the image provided, to guide how it should be displayed
  * @property [ambientImage] The image to be shown when the device is in ambient mode to save power
- * or avoid burn in
+ *   or avoid burn in
  */
-public class SmallImage internal constructor(
+public class SmallImage
+internal constructor(
     public val image: Icon,
     public val type: SmallImageType,
     public val ambientImage: Icon?
@@ -161,9 +160,9 @@
         private var ambientImage: Icon? = null
 
         /**
-         * Sets a different image for when the device is ambient mode to save power and prevent
-         * burn in. If no ambient variant is provided, the watch face may not show anything while
-         * in ambient mode.
+         * Sets a different image for when the device is ambient mode to save power and prevent burn
+         * in. If no ambient variant is provided, the watch face may not show anything while in
+         * ambient mode.
          */
         public fun setAmbientImage(ambientImage: Icon?): Builder = apply {
             this.ambientImage = ambientImage
@@ -174,16 +173,17 @@
     }
 
     /** Adds a [SmallImage] to a builder for [WireComplicationData]. */
-    internal fun addToWireComplicationData(builder: WireComplicationData.Builder) = builder.apply {
-        setSmallImage(image)
-        setSmallImageStyle(
-            when (this@SmallImage.type) {
-                SmallImageType.ICON -> WireComplicationData.IMAGE_STYLE_ICON
-                SmallImageType.PHOTO -> WireComplicationData.IMAGE_STYLE_PHOTO
-            }
-        )
-        setBurnInProtectionSmallImage(ambientImage)
-    }
+    internal fun addToWireComplicationData(builder: WireComplicationData.Builder) =
+        builder.apply {
+            setSmallImage(image)
+            setSmallImageStyle(
+                when (this@SmallImage.type) {
+                    SmallImageType.ICON -> WireComplicationData.IMAGE_STYLE_ICON
+                    SmallImageType.PHOTO -> WireComplicationData.IMAGE_STYLE_PHOTO
+                }
+            )
+            setBurnInProtectionSmallImage(ambientImage)
+        }
 
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
@@ -208,8 +208,8 @@
     /** @hide */
     public companion object {
         /**
-         * For use when the real data isn't available yet, this [SmallImage] should be rendered
-         * as a placeholder. It is suggested that it should be rendered with a light grey box.
+         * For use when the real data isn't available yet, this [SmallImage] should be rendered as a
+         * placeholder. It is suggested that it should be rendered with a light grey box.
          *
          * Note a placeholder may only be used in the context of
          * [NoDataComplicationData.placeholder].
@@ -220,17 +220,17 @@
     }
 
     /** @hide */
-    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    fun isPlaceholder() = image.isPlaceholder()
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) fun isPlaceholder() = image.isPlaceholder()
 }
 
 /** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-fun Icon.isPlaceholder() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
-    IconP.isPlaceholder(this)
-} else {
-    false
-}
+fun Icon.isPlaceholder() =
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+        IconP.isPlaceholder(this)
+    } else {
+        false
+    }
 
 @RequiresApi(Build.VERSION_CODES.P)
 private object IconP {
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt
index 72da694..0f77bd0 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt
@@ -16,13 +16,13 @@
 
 package androidx.wear.watchface.complications.data
 
+import android.content.res.Resources
+import android.icu.util.TimeZone
 import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.support.wearable.complications.ComplicationText.TimeDifferenceBuilder as WireComplicationTextTimeDifferenceBuilder
 import android.support.wearable.complications.ComplicationText.TimeFormatBuilder as WireComplicationTextTimeFormatBuilder
 import android.support.wearable.complications.TimeDependentText as WireTimeDependentText
-import android.content.res.Resources
-import android.icu.util.TimeZone
 import android.support.wearable.complications.TimeDependentText
 import android.support.wearable.complications.TimeDifferenceText
 import android.text.style.ForegroundColorSpan
@@ -42,8 +42,8 @@
  * The text within a complication.
  *
  * This text may change over time and this interface provides both a way to determine the current
- * text to show with [getTextAt] but also a way to know whether the text needs to be
- * re-rendered, by means of [returnsSameText], [getNextChangeTime], and [isAlwaysEmpty].
+ * text to show with [getTextAt] but also a way to know whether the text needs to be re-rendered, by
+ * means of [returnsSameText], [getNextChangeTime], and [isAlwaysEmpty].
  */
 @JvmDefaultWithCompatibility
 public interface ComplicationText {
@@ -53,10 +53,7 @@
      * @param resources [Resources] from the current context
      * @param instant The [Instant] at which to sample the text
      */
-    public fun getTextAt(
-        resources: Resources,
-        instant: Instant
-    ): CharSequence
+    public fun getTextAt(resources: Resources, instant: Instant): CharSequence
 
     /**
      * Returns true if the result of [getTextAt] will be the same for both [firstInstant] and
@@ -64,22 +61,16 @@
      */
     public fun returnsSameText(firstInstant: Instant, secondInstant: Instant): Boolean
 
-    /** Returns the next time after [afterInstant] at which the text may change.  */
+    /** Returns the next time after [afterInstant] at which the text may change. */
     public fun getNextChangeTime(afterInstant: Instant): Instant
 
     public fun isAlwaysEmpty(): Boolean
 
-    /**
-     * @hide
-     */
-    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    public fun isPlaceholder(): Boolean = false
+    /** @hide */
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) public fun isPlaceholder(): Boolean = false
 
-    /**
-     * @hide
-     */
-    @RestrictTo(RestrictTo.Scope.SUBCLASSES)
-    public fun getTimeDependentText(): TimeDependentText
+    /** @hide */
+    @RestrictTo(RestrictTo.Scope.SUBCLASSES) public fun getTimeDependentText(): TimeDependentText
 
     /**
      * Converts this value to [WireComplicationText] object used for serialization.
@@ -90,8 +81,7 @@
     public fun toWireComplicationText(): WireComplicationText
 
     public companion object {
-        @JvmField
-        public val EMPTY: ComplicationText = PlainComplicationText.Builder("").build()
+        @JvmField public val EMPTY: ComplicationText = PlainComplicationText.Builder("").build()
 
         /**
          * For use when the real data isn't available yet, this [ComplicationText] should be
@@ -108,9 +98,8 @@
 }
 
 /** A [ComplicationText] that contains plain text. */
-public class PlainComplicationText internal constructor(
-    delegate: WireComplicationText
-) : ComplicationText {
+public class PlainComplicationText internal constructor(delegate: WireComplicationText) :
+    ComplicationText {
     private val delegate = DelegatingComplicationText(delegate)
 
     override fun getTextAt(resources: Resources, instant: Instant) =
@@ -175,11 +164,11 @@
      * If `t < 1 hour`, the value will be shown as minutes and seconds, such as `02:35` for 2
      * minutes and 35 seconds.
      *
-     * If `1 hour <= t < 1 day`, the value will be shown as hours and minutes, such as
-     * `4:02` for 4 hours and 2 minutes, or as `12:02` for 12 hours and 2 minutes.
+     * If `1 hour <= t < 1 day`, the value will be shown as hours and minutes, such as `4:02` for 4
+     * hours and 2 minutes, or as `12:02` for 12 hours and 2 minutes.
      *
-     * If `1 day <= t < 10 days`, the value will be shown as days and hours, such as `3d 4h` for
-     * 3 days 4 hours.
+     * If `1 day <= t < 10 days`, the value will be shown as days and hours, such as `3d 4h` for 3
+     * days 4 hours.
      *
      * If `10 days <= t`, the value will be shown as just days, such as `13d` for 13 days.
      *
@@ -193,8 +182,8 @@
      *
      * For time difference `t`:
      *
-     * If `t < 1 hour`, the value will be shown as a number of minutes, such as `2m` for 2 minutes
-     * . Seconds are not displayed.
+     * If `t < 1 hour`, the value will be shown as a number of minutes, such as `2m` for 2 minutes .
+     * Seconds are not displayed.
      *
      * If `1 hour <= t < 1 day`, the value will be shown as a number of hours, such as `4h` for 4
      * hours.
@@ -211,20 +200,19 @@
      *
      * For time difference `t`:
      *
-     * If `t < 1 hour`, the value will be shown as a number of minutes, such as `2m`
-     * for 2 minutes. Seconds are not displayed.
+     * If `t < 1 hour`, the value will be shown as a number of minutes, such as `2m` for 2 minutes.
+     * Seconds are not displayed.
      *
-     * If `1 hour <= t < 1 day`, the value will be shown as hours and minutes, such as
-     * `4h 2m` for 4 hours and 2 minutes.
+     * If `1 hour <= t < 1 day`, the value will be shown as hours and minutes, such as `4h 2m` for 4
+     * hours and 2 minutes.
      *
-     * If `1 day <= t < 10 days`, the value will be shown as days and hours, such as `3d 4h` for
-     * 3 days 4 hours.
+     * If `1 day <= t < 10 days`, the value will be shown as days and hours, such as `3d 4h` for 3
+     * days 4 hours.
      *
-     * If `10 days <= t`, the value will be shown as a number of days, such as `13d`
-     * for 13 days.
+     * If `10 days <= t`, the value will be shown as a number of days, such as `13d` for 13 days.
      *
-     * The characters used will be localised to match the default locale. If the representation
-     * of the time difference with two units would be too long in the default locale, just a single
+     * The characters used will be localised to match the default locale. If the representation of
+     * the time difference with two units would be too long in the default locale, just a single
      * unit may be shown instead.
      */
     SHORT_DUAL_UNIT(WireComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT),
@@ -235,14 +223,14 @@
      *
      * For time difference `t`:
      *
-     * If `t < 1 hour`, the value will be shown as a number of minutes, such as `1 min` for 1
-     * minute or `2 mins` for 2 minutes. Seconds are not displayed.
+     * If `t < 1 hour`, the value will be shown as a number of minutes, such as `1 min` for 1 minute
+     * or `2 mins` for 2 minutes. Seconds are not displayed.
      *
-     * If `1 hour <= t < 1 day`, the value will be shown as a number of hours, such as
-     * `1 hour` for 1 hour or `4 hours` for 4 hours.
+     * If `1 hour <= t < 1 day`, the value will be shown as a number of hours, such as `1 hour` for
+     * 1 hour or `4 hours` for 4 hours.
      *
-     * If `1 days <= t`, the value will be shown as a number of days, such as `1 day`
-     * for 1 day or `13 days` for 13 days.
+     * If `1 days <= t`, the value will be shown as a number of days, such as `1 day` for 1 day or
+     * `13 days` for 13 days.
      *
      * The words used will be localised to match the default locale.
      */
@@ -252,17 +240,16 @@
      * Style for time differences shown using (possibly abbreviated) words, with only the most
      * significant unit included, that should fit within the character limit for a short text field.
      *
-     * The output will be the same as for [WORDS_SINGLE_UNIT], except that if the text does not
-     * fit into the seven character limit then a shorter form will be used instead, e.g. `1356d`
-     * instead of `1356 days`.
+     * The output will be the same as for [WORDS_SINGLE_UNIT], except that if the text does not fit
+     * into the seven character limit then a shorter form will be used instead, e.g. `1356d` instead
+     * of `1356 days`.
      */
-    SHORT_WORDS_SINGLE_UNIT(WireComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT);
+    SHORT_WORDS_SINGLE_UNIT(WireComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT)
 }
 
 /** A [ComplicationText] that represents a time difference. */
-public class TimeDifferenceComplicationText internal constructor(
-    delegate: WireComplicationText
-) : ComplicationText by DelegatingComplicationText(delegate) {
+public class TimeDifferenceComplicationText internal constructor(delegate: WireComplicationText) :
+    ComplicationText by DelegatingComplicationText(delegate) {
     private val delegate = DelegatingComplicationText(delegate)
 
     /**
@@ -315,7 +302,8 @@
      *
      * Requires setting a [TimeDifferenceStyle].
      */
-    public class Builder private constructor(
+    public class Builder
+    private constructor(
         private val style: TimeDifferenceStyle,
         private val startInstant: Instant?,
         private val endInstant: Instant?
@@ -351,13 +339,13 @@
         /**
          * Sets the text within which the time difference will be displayed.
          *
-         * Within the text, `^1` will be replaced with the time difference, so for example
-         * to show a result like `"2 mins: meeting"` the text would be `"^1: meeting"`
+         * Within the text, `^1` will be replaced with the time difference, so for example to show a
+         * result like `"2 mins: meeting"` the text would be `"^1: meeting"`
          *
          * To use the `^` character within the text, escape it as `^^`.
          *
-         * The text may contain spans, but the watch face is not required to respect them. The
-         * watch face is allowed to treat [ForegroundColorSpan] as a hint that it should render the
+         * The text may contain spans, but the watch face is not required to respect them. The watch
+         * face is allowed to treat [ForegroundColorSpan] as a hint that it should render the
          * affected text with an alternative color of its choosing.
          *
          * The allowed spans are [ForegroundColorSpan], [LocaleSpan], [SubscriptSpan],
@@ -366,48 +354,49 @@
         public fun setText(text: CharSequence?): Builder = apply { this.text = text }
 
         /**
-         * Sets whether time difference should be displayed as "now" (appropriately localized)
-         * when the given time is within the reference period. If false, then text representing zero
+         * Sets whether time difference should be displayed as "now" (appropriately localized) when
+         * the given time is within the reference period. If false, then text representing zero
          * (e.g. `0 mins` or `00:00`) will be shown instead.
          *
          * The default is true for all styles except for [TimeDifferenceStyle.STOPWATCH].
          */
-        public fun setDisplayAsNow(displayAsNow: Boolean): Builder =
-            apply { this.displayAsNow = displayAsNow }
+        public fun setDisplayAsNow(displayAsNow: Boolean): Builder = apply {
+            this.displayAsNow = displayAsNow
+        }
 
         /**
          * Sets the smallest unit that may be shown in the time difference text. If specified, units
          * smaller than this minimum will not be included.
          *
          * For example, if this is set to [TimeUnit.HOURS], and the style is
-         * [TimeDifferenceStyle.SHORT_SINGLE_UNIT] then `12d` or `5h` would be shown as normal,
-         * but `35m` would be shown as `1h`.
+         * [TimeDifferenceStyle.SHORT_SINGLE_UNIT] then `12d` or `5h` would be shown as normal, but
+         * `35m` would be shown as `1h`.
          *
          * If not specified the style will determine the smallest unit that will be shown.
          *
-         * If the specified minimum is smaller than the smallest unit supported by the style,
-         * then the minimum will be ignored. For example, if the style is
+         * If the specified minimum is smaller than the smallest unit supported by the style, then
+         * the minimum will be ignored. For example, if the style is
          * [TimeDifferenceStyle.SHORT_SINGLE_UNIT], then a minimum unit of [TimeUnit.SECONDS] will
          * have no effect.
          */
-        public fun setMinimumTimeUnit(minimumUnit: TimeUnit?): Builder =
-            apply { this.minimumUnit = minimumUnit }
+        public fun setMinimumTimeUnit(minimumUnit: TimeUnit?): Builder = apply {
+            this.minimumUnit = minimumUnit
+        }
 
         /** Builds a [TimeDifferenceComplicationText]. */
-        public fun build(): TimeDifferenceComplicationText = TimeDifferenceComplicationText(
-            WireComplicationTextTimeDifferenceBuilder().apply {
-                setStyle(style.wireStyle)
-                setSurroundingText(text)
-                startInstant?.let {
-                    setReferencePeriodStartMillis(it.toEpochMilli())
-                }
-                endInstant?.let {
-                    setReferencePeriodEndMillis(it.toEpochMilli())
-                }
-                displayAsNow?.let { setShowNowText(it) }
-                setMinimumUnit(minimumUnit)
-            }.build()
-        )
+        public fun build(): TimeDifferenceComplicationText =
+            TimeDifferenceComplicationText(
+                WireComplicationTextTimeDifferenceBuilder()
+                    .apply {
+                        setStyle(style.wireStyle)
+                        setSurroundingText(text)
+                        startInstant?.let { setReferencePeriodStartMillis(it.toEpochMilli()) }
+                        endInstant?.let { setReferencePeriodEndMillis(it.toEpochMilli()) }
+                        displayAsNow?.let { setShowNowText(it) }
+                        setMinimumUnit(minimumUnit)
+                    }
+                    .build()
+            )
     }
 }
 
@@ -415,13 +404,12 @@
 public enum class TimeFormatStyle(internal val wireStyle: Int) {
     DEFAULT(WireComplicationText.FORMAT_STYLE_DEFAULT),
     UPPER_CASE(WireComplicationText.FORMAT_STYLE_UPPER_CASE),
-    LOWER_CASE(WireComplicationText.FORMAT_STYLE_LOWER_CASE);
+    LOWER_CASE(WireComplicationText.FORMAT_STYLE_LOWER_CASE)
 }
 
 /** A [ComplicationText] that shows a formatted time. */
-public class TimeFormatComplicationText internal constructor(
-    delegate: WireComplicationText
-) : ComplicationText by DelegatingComplicationText(delegate) {
+public class TimeFormatComplicationText internal constructor(delegate: WireComplicationText) :
+    ComplicationText by DelegatingComplicationText(delegate) {
     private val delegate = DelegatingComplicationText(delegate)
 
     override fun getTextAt(resources: Resources, instant: Instant) =
@@ -463,8 +451,8 @@
     /**
      * A builder for [TimeFormatComplicationText].
      *
-     * @param[format] the format in which the time should be displayed. This should be a pattern
-     * as used by [java.text.SimpleDateFormat].
+     * @param[format] the format in which the time should be displayed. This should be a pattern as
+     *   used by [java.text.SimpleDateFormat].
      */
     public class Builder(private var format: String) {
         private var style: TimeFormatStyle? = null
@@ -482,8 +470,8 @@
         /**
          * Sets the text within which the time difference will be displayed.
          *
-         * Within the text, `^1` will be replaced with the time difference, so for example
-         * to show a result like `"2 mins: meeting"` the text would be `"^1: meeting"`
+         * Within the text, `^1` will be replaced with the time difference, so for example to show a
+         * result like `"2 mins: meeting"` the text would be `"^1: meeting"`
          *
          * To use the `^` character within the text, escape it as `^^`.
          *
@@ -501,21 +489,23 @@
         public fun setTimeZone(timeZone: TimeZone): Builder = apply { this.timeZone = timeZone }
 
         /** Builds a [TimeFormatComplicationText]. */
-        public fun build(): TimeFormatComplicationText = TimeFormatComplicationText(
-            WireComplicationTextTimeFormatBuilder().apply {
-                setFormat(format)
-                setStyle(style?.wireStyle ?: WireComplicationText.FORMAT_STYLE_DEFAULT)
-                setSurroundingText(text)
-                setTimeZone(timeZone?.asJavaTimeZone())
-            }.build()
-        )
+        public fun build(): TimeFormatComplicationText =
+            TimeFormatComplicationText(
+                WireComplicationTextTimeFormatBuilder()
+                    .apply {
+                        setFormat(format)
+                        setStyle(style?.wireStyle ?: WireComplicationText.FORMAT_STYLE_DEFAULT)
+                        setSurroundingText(text)
+                        setTimeZone(timeZone?.asJavaTimeZone())
+                    }
+                    .build()
+            )
     }
 }
 
 /** [ComplicationText] implementation that delegates to a [WireComplicationText] instance. */
-private class DelegatingComplicationText(
-    private val delegate: WireComplicationText
-) : ComplicationText {
+private class DelegatingComplicationText(private val delegate: WireComplicationText) :
+    ComplicationText {
     override fun getTextAt(resources: Resources, instant: Instant) =
         delegate.getTextAt(resources, instant.toEpochMilli())
 
@@ -525,7 +515,7 @@
     override fun getNextChangeTime(afterInstant: Instant): Instant {
         val nextChangeTime = delegate.getNextChangeTime(afterInstant.toEpochMilli())
         return if (nextChangeTime == Long.MAX_VALUE) {
-             Instant.MAX
+            Instant.MAX
         } else {
             Instant.ofEpochMilli(nextChangeTime)
         }
@@ -539,8 +529,7 @@
     override fun getTimeDependentText(): TimeDependentText = delegate.timeDependentText
 
     /** @hide */
-    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    override fun toWireComplicationText() = delegate
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) override fun toWireComplicationText() = delegate
 
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
@@ -572,16 +561,18 @@
 
 /** Converts a [WireComplicationText] into an equivalent [ComplicationText] instead. */
 internal fun WireComplicationText.toApiComplicationTextPlaceholderAware(): ComplicationText =
-    if (isPlaceholder) { ComplicationText.PLACEHOLDER } else { DelegatingComplicationText(this) }
+    if (isPlaceholder) {
+        ComplicationText.PLACEHOLDER
+    } else {
+        DelegatingComplicationText(this)
+    }
 
 /** Converts a [TimeZone] into an equivalent [java.util.TimeZone]. */
-internal fun TimeZone.asJavaTimeZone(): java.util.TimeZone =
-    java.util.TimeZone.getTimeZone(this.id)
+internal fun TimeZone.asJavaTimeZone(): java.util.TimeZone = java.util.TimeZone.getTimeZone(this.id)
 
 /** [ComplicationText] implementation that delegates to a [WireTimeDependentText] instance. */
-private class DelegatingTimeDependentText(
-    private val delegate: WireTimeDependentText
-) : ComplicationText {
+private class DelegatingTimeDependentText(private val delegate: WireTimeDependentText) :
+    ComplicationText {
     override fun getTextAt(resources: Resources, instant: Instant) =
         delegate.getTextAt(resources, instant.toEpochMilli())
 
@@ -631,16 +622,14 @@
     DelegatingTimeDependentText(this)
 
 /**
- * A [ComplicationText] where the system evaluates a [DynamicString] on behalf of the watch face.
- * By the time this reaches the watch face's Renderer, it'll have been converted to a plain
+ * A [ComplicationText] where the system evaluates a [DynamicString] on behalf of the watch face. By
+ * the time this reaches the watch face's Renderer, it'll have been converted to a plain
  * ComplicationText.
  *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-public class ComplicationTextExpression(
-    public val expression: DynamicString
-) : ComplicationText {
+public class ComplicationTextExpression(public val expression: DynamicString) : ComplicationText {
     private val delegate = DelegatingComplicationText(WireComplicationText(expression))
 
     override fun getTextAt(resources: Resources, instant: Instant) =
@@ -680,4 +669,4 @@
     override fun hashCode() = delegate.hashCode()
 
     override fun toString() = delegate.toString()
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Time.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Time.kt
index c402f16..5167948 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Time.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Time.kt
@@ -20,7 +20,8 @@
 import java.time.Instant
 
 /** A range of time, that may be unbounded on either side. */
-public class TimeRange internal constructor(
+public class TimeRange
+internal constructor(
     public val startDateTimeMillis: Instant,
     public val endDateTimeMillis: Instant
 ) {
@@ -56,20 +57,18 @@
 
     public companion object {
         /** The [TimeRange] that includes every point in time. */
-        @JvmField
-        public val ALWAYS: TimeRange = TimeRange(Instant.MIN, Instant.MAX)
+        @JvmField public val ALWAYS: TimeRange = TimeRange(Instant.MIN, Instant.MAX)
 
         /** Constructs a time range after a given point in time. */
         @JvmStatic
-        public fun after(startInstant: Instant): TimeRange =
-            TimeRange(startInstant, Instant.MAX)
+        public fun after(startInstant: Instant): TimeRange = TimeRange(startInstant, Instant.MAX)
 
         /** Constructs a time range until a given point in time. */
         @JvmStatic
         public fun before(endInstant: Instant): TimeRange = TimeRange(Instant.MIN, endInstant)
 
-        /** Constructs a time range between two points in time, inclusive of the points
-         * themselves.
+        /**
+         * Constructs a time range between two points in time, inclusive of the points themselves.
          */
         @JvmStatic
         public fun between(startInstant: Instant, endInstant: Instant): TimeRange =
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Type.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Type.kt
index f4dfa77..ab013b5 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Type.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Type.kt
@@ -16,8 +16,8 @@
 
 package androidx.wear.watchface.complications.data
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.os.Build
+import android.support.wearable.complications.ComplicationData as WireComplicationData
 import androidx.annotation.RequiresApi
 import androidx.annotation.RestrictTo
 
@@ -25,8 +25,8 @@
  * The possible complication data types.
  *
  * See also wear/watchface/watchface-complications-data/src/main/res/values/attrs.xml for the XML
- * definition. And supportedTypes in wear/watchface/watchface/src/main/res/values/attrs.xml.
- * And wear/watchface/watchface/src/main/res/values/attrs.xml which defines a subset.
+ * definition. And supportedTypes in wear/watchface/watchface/src/main/res/values/attrs.xml. And
+ * wear/watchface/watchface/src/main/res/values/attrs.xml which defines a subset.
  */
 public enum class ComplicationType(private val wireType: Int) {
     NO_DATA(WireComplicationData.TYPE_NO_DATA),
@@ -51,8 +51,7 @@
      *
      * @hide
      */
-    @RestrictTo(RestrictTo.Scope.LIBRARY)
-    public fun toWireComplicationType(): Int = wireType
+    @RestrictTo(RestrictTo.Scope.LIBRARY) public fun toWireComplicationType(): Int = wireType
 
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -115,8 +114,8 @@
             types.toApiComplicationTypes()
 
         /**
-         * Converts an array of integer values used for serialization into the corresponding list
-         * of [ComplicationType].
+         * Converts an array of integer values used for serialization into the corresponding list of
+         * [ComplicationType].
          *
          * @hide
          */
@@ -128,8 +127,8 @@
 }
 
 /**
- * Converts an array of [ComplicationType] to an array of integers with the corresponding
- * wire types.
+ * Converts an array of [ComplicationType] to an array of integers with the corresponding wire
+ * types.
  *
  * This is only needed internally to convert to the underlying communication protocol.
  *
@@ -140,8 +139,8 @@
     this.map { it.toWireComplicationType() }.toIntArray()
 
 /**
- * Converts an array of integer values uses for serialization into the corresponding array
- * of [ComplicationType] to .
+ * Converts an array of integer values uses for serialization into the corresponding array of
+ * [ComplicationType] to .
  *
  * This is only needed internally to convert to the underlying communication protocol.
  *
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/IconKt.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/IconKt.kt
index 3c16333..2eb80e8 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/IconKt.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/IconKt.kt
@@ -58,7 +58,6 @@
                 when (icon.type) {
                     Icon.TYPE_RESOURCE ->
                         icon.resId == other.resId && icon.resPackage == other.resPackage
-
                     Icon.TYPE_URI -> icon.uri == other.uri
                     else -> icon == other
                 })
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/TraceEvent.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/TraceEvent.kt
index 8730f90..89ce5a9 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/TraceEvent.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/TraceEvent.kt
@@ -21,10 +21,10 @@
 import androidx.annotation.DoNotInline
 import androidx.annotation.RequiresApi
 import androidx.annotation.RestrictTo
+import java.io.Closeable
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.launch
-import java.io.Closeable
 
 /**
  * Wrapper around [Trace.beginSection] and [Trace.endSection] which helps reduce boilerplate by
@@ -48,7 +48,7 @@
  * RAII like [Trace.endAsyncSection] in a try block, and by dealing with API version support.
  *
  * @hide
- **/
+ */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class AsyncTraceEvent(private val traceName: String) : Closeable {
     internal companion object {
@@ -90,14 +90,11 @@
 
 /**
  * Wrapper around [CoroutineScope.launch] with an async trace event.
+ *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public fun CoroutineScope.launchWithTracing(
     traceEventName: String,
     block: suspend CoroutineScope.() -> Unit
-): Job = launch {
-    TraceEvent(traceEventName).use {
-        block.invoke(this)
-    }
-}
+): Job = launch { TraceEvent(traceEventName).use { block.invoke(this) } }
diff --git a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationDataEqualityTest.kt b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationDataEqualityTest.kt
index 9dd28c8..29611f1 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationDataEqualityTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationDataEqualityTest.kt
@@ -40,8 +40,7 @@
 
 @RunWith(SharedRobolectricTestRunner::class)
 class ComplicationDataEqualityTest {
-    @get:Rule
-    val expect = Expect.create()
+    @get:Rule val expect = Expect.create()
 
     @Before
     fun setup() {
diff --git a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationDataTest.kt b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationDataTest.kt
index 617d51a..3f25f2a 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationDataTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationDataTest.kt
@@ -1074,4 +1074,4 @@
         const val TEST_LONG_TITLE = "what a long title such a long title"
         const val TEST_LONG_TEXT = "such long text so much text omg"
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationTextTemplateTest.kt b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationTextTemplateTest.kt
index 1ceb670..4b5be1e 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationTextTemplateTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationTextTemplateTest.kt
@@ -22,11 +22,11 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.wear.watchface.complications.data.SharedRobolectricTestRunner
 import com.google.common.truth.Truth
+import java.util.GregorianCalendar
+import java.util.concurrent.TimeUnit
 import org.junit.Assert
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.GregorianCalendar
-import java.util.concurrent.TimeUnit
 
 @RunWith(SharedRobolectricTestRunner::class)
 public class ComplicationTextTemplateTest {
@@ -37,11 +37,12 @@
         val hello = ComplicationText.plainText(TEST_TEXT1)
         val there = ComplicationText.plainText(TEST_TEXT2)
         val friend = ComplicationText.plainText(TEST_TEXT3)
-        val complicationTextTemplate = ComplicationTextTemplate.Builder()
-            .addComplicationText(hello)
-            .addComplicationText(there)
-            .addComplicationText(friend)
-            .build()
+        val complicationTextTemplate =
+            ComplicationTextTemplate.Builder()
+                .addComplicationText(hello)
+                .addComplicationText(there)
+                .addComplicationText(friend)
+                .build()
         Assert.assertEquals(
             "$TEST_TEXT1 $TEST_TEXT2 $TEST_TEXT3",
             complicationTextTemplate.getTextAt(mResources, 132456789).toString()
@@ -53,12 +54,13 @@
         val hello = ComplicationText.plainText(TEST_TEXT1)
         val there = ComplicationText.plainText(TEST_TEXT2)
         val friend = ComplicationText.plainText(TEST_TEXT3)
-        val complicationTextTemplate = ComplicationTextTemplate.Builder()
-            .addComplicationText(hello)
-            .addComplicationText(there)
-            .addComplicationText(friend)
-            .setSurroundingText("^1, ^2 my ^3.")
-            .build()
+        val complicationTextTemplate =
+            ComplicationTextTemplate.Builder()
+                .addComplicationText(hello)
+                .addComplicationText(there)
+                .addComplicationText(friend)
+                .setSurroundingText("^1, ^2 my ^3.")
+                .build()
         Assert.assertEquals(
             "$TEST_TEXT1, $TEST_TEXT2 my $TEST_TEXT3.",
             complicationTextTemplate.getTextAt(mResources, 132456789).toString()
@@ -69,11 +71,12 @@
     public fun testTemplateEscapeCharacter() {
         val hello = ComplicationText.plainText(TEST_TEXT1)
         val there = ComplicationText.plainText(TEST_TEXT2)
-        val complicationTextTemplate = ComplicationTextTemplate.Builder()
-            .addComplicationText(hello)
-            .addComplicationText(there)
-            .setSurroundingText("^1 ^^2 ^2")
-            .build()
+        val complicationTextTemplate =
+            ComplicationTextTemplate.Builder()
+                .addComplicationText(hello)
+                .addComplicationText(there)
+                .setSurroundingText("^1 ^^2 ^2")
+                .build()
         Assert.assertEquals(
             "$TEST_TEXT1 ^2 $TEST_TEXT2",
             complicationTextTemplate.getTextAt(mResources, 132456789).toString()
@@ -95,43 +98,28 @@
                 .setReferencePeriodEndMillis(refTime)
                 .setStyle(ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT)
                 .build()
-        val template = ComplicationTextTemplate.Builder()
-            .addComplicationText(complicationText)
-            .addComplicationText(complicationText2)
-            .setSurroundingText("^1 : ^2")
-            .build()
+        val template =
+            ComplicationTextTemplate.Builder()
+                .addComplicationText(complicationText)
+                .addComplicationText(complicationText2)
+                .setSurroundingText("^1 : ^2")
+                .build()
 
         // "2h 35m" should be rounded to "3h".
-        var testTime =
-            refTime + TimeUnit.MINUTES.toMillis(35) + TimeUnit.HOURS.toMillis(2)
-        Assert.assertEquals(
-            "3h : 2h 35m",
-            template.getTextAt(mResources, testTime).toString()
-        )
+        var testTime = refTime + TimeUnit.MINUTES.toMillis(35) + TimeUnit.HOURS.toMillis(2)
+        Assert.assertEquals("3h : 2h 35m", template.getTextAt(mResources, testTime).toString())
 
         // "23h 59m" should be rounded to "1d".
-        testTime =
-            refTime + TimeUnit.MINUTES.toMillis(59) + TimeUnit.HOURS.toMillis(23)
-        Assert.assertEquals(
-            "1d : 23h 59m",
-            template.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.MINUTES.toMillis(59) + TimeUnit.HOURS.toMillis(23)
+        Assert.assertEquals("1d : 23h 59m", template.getTextAt(mResources, testTime).toString())
 
         // "10m 10s" should be rounded to "11m".
-        testTime =
-            refTime + TimeUnit.SECONDS.toMillis(10) + TimeUnit.MINUTES.toMillis(10)
-        Assert.assertEquals(
-            "11m : 11m",
-            template.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.SECONDS.toMillis(10) + TimeUnit.MINUTES.toMillis(10)
+        Assert.assertEquals("11m : 11m", template.getTextAt(mResources, testTime).toString())
 
         // "23h 15m" should be rounded to "1d".
-        testTime =
-            refTime + TimeUnit.MINUTES.toMillis(15) + TimeUnit.HOURS.toMillis(23)
-        Assert.assertEquals(
-            "1d : 23h 15m",
-            template.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.MINUTES.toMillis(15) + TimeUnit.HOURS.toMillis(23)
+        Assert.assertEquals("1d : 23h 15m", template.getTextAt(mResources, testTime).toString())
     }
 
     @Test
@@ -142,30 +130,26 @@
                 .setStyle(ComplicationText.FORMAT_STYLE_UPPER_CASE)
                 .build()
         val longText = ComplicationText.plainText(TEST_TEXT_LONG)
-        val template = ComplicationTextTemplate.Builder()
-            .addComplicationText(complicationText)
-            .addComplicationText(longText)
-            .setSurroundingText("^1 *** ^2")
-            .build()
-        val result = template.getTextAt(
-            mResources,
-            GregorianCalendar(2016, 2, 4).timeInMillis
-        )
-        Assert.assertEquals(
-            "FRI THE 4 MAR *** $TEST_TEXT_LONG",
-            result.toString()
-        )
+        val template =
+            ComplicationTextTemplate.Builder()
+                .addComplicationText(complicationText)
+                .addComplicationText(longText)
+                .setSurroundingText("^1 *** ^2")
+                .build()
+        val result = template.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
+        Assert.assertEquals("FRI THE 4 MAR *** $TEST_TEXT_LONG", result.toString())
     }
 
     @Test
     public fun testParcelPlainText() {
         val text1 = ComplicationText.plainText(TEST_TEXT1)
         val longText = ComplicationText.plainText(TEST_TEXT_LONG)
-        val template = ComplicationTextTemplate.Builder()
-            .addComplicationText(text1)
-            .addComplicationText(longText)
-            .setSurroundingText("^1 : ^2")
-            .build()
+        val template =
+            ComplicationTextTemplate.Builder()
+                .addComplicationText(text1)
+                .addComplicationText(longText)
+                .setSurroundingText("^1 : ^2")
+                .build()
         val newText = template.roundTripParcelable()!!
 
         Assert.assertEquals(
@@ -186,14 +170,14 @@
                 .setShowNowText(false)
                 .build()
         val longText = ComplicationText.plainText(TEST_TEXT_LONG)
-        val template = ComplicationTextTemplate.Builder()
-            .addComplicationText(originalText)
-            .addComplicationText(longText)
-            .setSurroundingText("^1 : ^2")
-            .build()
+        val template =
+            ComplicationTextTemplate.Builder()
+                .addComplicationText(originalText)
+                .addComplicationText(longText)
+                .setSurroundingText("^1 : ^2")
+                .build()
         val newText = template.roundTripParcelable()!!
-        val testTime =
-            refTime + TimeUnit.HOURS.toMillis(2) + TimeUnit.MINUTES.toMillis(35)
+        val testTime = refTime + TimeUnit.HOURS.toMillis(2) + TimeUnit.MINUTES.toMillis(35)
         Assert.assertEquals(
             "hello 3h time : $TEST_TEXT_LONG",
             newText.getTextAt(mResources, testTime).toString()
@@ -217,15 +201,15 @@
                 .setFormat("EEE 'the' d LLL HH")
                 .setStyle(ComplicationText.FORMAT_STYLE_LOWER_CASE)
                 .build()
-        val template = ComplicationTextTemplate.Builder()
-            .addComplicationText(diffText)
-            .addComplicationText(formatText)
-            .setSurroundingText("^1 : ^2")
-            .build()
+        val template =
+            ComplicationTextTemplate.Builder()
+                .addComplicationText(diffText)
+                .addComplicationText(formatText)
+                .setSurroundingText("^1 : ^2")
+                .build()
 
         // Next change comes from the time difference, so is next minute boundary + 1ms.
-        Truth.assertThat(template.getNextChangeTime(60000000123L))
-            .isEqualTo(60000060001L)
+        Truth.assertThat(template.getNextChangeTime(60000000123L)).isEqualTo(60000060001L)
     }
 
     @Test
@@ -236,15 +220,14 @@
                 .setReferencePeriodEndMillis(0)
                 .setStyle(ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT)
                 .build()
-        val plainText =
-            ComplicationText.plainText("hello")
-        val template = ComplicationTextTemplate.Builder()
-            .addComplicationText(diffText)
-            .addComplicationText(plainText)
-            .setSurroundingText("^1 : ^2")
-            .build()
-        Truth.assertThat(template.getNextChangeTime(60000000123L))
-            .isEqualTo(60000060001L)
+        val plainText = ComplicationText.plainText("hello")
+        val template =
+            ComplicationTextTemplate.Builder()
+                .addComplicationText(diffText)
+                .addComplicationText(plainText)
+                .setSurroundingText("^1 : ^2")
+                .build()
+        Truth.assertThat(template.getNextChangeTime(60000000123L)).isEqualTo(60000060001L)
     }
 
     @Test
@@ -254,15 +237,14 @@
                 .setFormat("EEE 'the' d LLL HH:mm")
                 .setStyle(ComplicationText.FORMAT_STYLE_LOWER_CASE)
                 .build()
-        val plainText =
-            ComplicationText.plainText("hello")
-        val template = ComplicationTextTemplate.Builder()
-            .addComplicationText(plainText)
-            .addComplicationText(formatText)
-            .setSurroundingText("^1 : ^2")
-            .build()
-        Truth.assertThat(template.getNextChangeTime(60000000123L))
-            .isEqualTo(60000060000L)
+        val plainText = ComplicationText.plainText("hello")
+        val template =
+            ComplicationTextTemplate.Builder()
+                .addComplicationText(plainText)
+                .addComplicationText(formatText)
+                .setSurroundingText("^1 : ^2")
+                .build()
+        Truth.assertThat(template.getNextChangeTime(60000000123L)).isEqualTo(60000060000L)
     }
 
     private companion object {
diff --git a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationTextTest.kt b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationTextTest.kt
index 331b996..4a4d1dc 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationTextTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/ComplicationTextTest.kt
@@ -26,12 +26,12 @@
 import androidx.wear.watchface.complications.data.SharedRobolectricTestRunner
 import com.google.common.testing.EqualsTester
 import com.google.common.truth.Truth
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.GregorianCalendar
 import java.util.TimeZone
 import java.util.concurrent.TimeUnit
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @RunWith(SharedRobolectricTestRunner::class)
 public class ComplicationTextTest {
@@ -67,15 +67,11 @@
     @Test
     public fun testPlainText() {
         // GIVEN ComplicationText of the plain string type
-        val complicationText =
-            ComplicationText.plainText("hello")
+        val complicationText = ComplicationText.plainText("hello")
 
         // WHEN getText is called
         // THEN the plain string is returned.
-        Assert.assertEquals(
-            "hello",
-            complicationText.getTextAt(mResources, 132456789).toString()
-        )
+        Assert.assertEquals("hello", complicationText.getTextAt(mResources, 132456789).toString())
     }
 
     @Test
@@ -91,109 +87,61 @@
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "2h 35m" should be rounded to "3h".
-        var testTime = refTime +
-            TimeUnit.MINUTES.toMillis(35) +
-            TimeUnit.HOURS.toMillis(2)
-        Assert.assertEquals(
-            "3h",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        var testTime = refTime + TimeUnit.MINUTES.toMillis(35) + TimeUnit.HOURS.toMillis(2)
+        Assert.assertEquals("3h", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "23h 59m 10s" should be rounded to "1d".
-        testTime = refTime +
-            TimeUnit.SECONDS.toMillis(10) +
-            TimeUnit.MINUTES.toMillis(59) +
-            TimeUnit.HOURS.toMillis(23)
-        Assert.assertEquals(
-            "1d",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime =
+            refTime +
+                TimeUnit.SECONDS.toMillis(10) +
+                TimeUnit.MINUTES.toMillis(59) +
+                TimeUnit.HOURS.toMillis(23)
+        Assert.assertEquals("1d", complicationText.getTextAt(mResources, testTime).toString())
 
         // THEN the time difference text is returned, and "10m 10s" should be rounded to "11m".
-        testTime = refTime +
-            TimeUnit.SECONDS.toMillis(10) +
-            TimeUnit.MINUTES.toMillis(10)
-        Assert.assertEquals(
-            "11m",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.SECONDS.toMillis(10) + TimeUnit.MINUTES.toMillis(10)
+        Assert.assertEquals("11m", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "23h 15m" should be rounded to "1d".
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(15) +
-            TimeUnit.HOURS.toMillis(23)
-        Assert.assertEquals(
-            "1d",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.MINUTES.toMillis(15) + TimeUnit.HOURS.toMillis(23)
+        Assert.assertEquals("1d", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "23h 0m" should be round to "23h".
         testTime = refTime + TimeUnit.HOURS.toMillis(23)
-        Assert.assertEquals(
-            "23h",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        Assert.assertEquals("23h", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "23h 10m" should be round to "1d".
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(10) +
-            TimeUnit.HOURS.toMillis(23)
-        Assert.assertEquals(
-            "1d",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.MINUTES.toMillis(10) + TimeUnit.HOURS.toMillis(23)
+        Assert.assertEquals("1d", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "22h 10m" should be round to "23h".
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(10) +
-            TimeUnit.HOURS.toMillis(22)
-        Assert.assertEquals(
-            "23h",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.MINUTES.toMillis(10) + TimeUnit.HOURS.toMillis(22)
+        Assert.assertEquals("23h", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "1d 10h" should be round to "2d".
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(10) +
-            TimeUnit.DAYS.toMillis(1)
-        Assert.assertEquals(
-            "2d",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.HOURS.toMillis(10) + TimeUnit.DAYS.toMillis(1)
+        Assert.assertEquals("2d", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "22h 10m" should be round to "23h".
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(10) +
-            TimeUnit.HOURS.toMillis(22)
-        Assert.assertEquals(
-            "23h",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.MINUTES.toMillis(10) + TimeUnit.HOURS.toMillis(22)
+        Assert.assertEquals("23h", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "59m 30s" should be round to "1h".
-        testTime = refTime +
-            TimeUnit.SECONDS.toMillis(30) +
-            TimeUnit.MINUTES.toMillis(59)
-        Assert.assertEquals(
-            "1h",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.SECONDS.toMillis(30) + TimeUnit.MINUTES.toMillis(59)
+        Assert.assertEquals("1h", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "59m 00s" should be displayed as "59m".
         testTime = refTime + TimeUnit.MINUTES.toMillis(59)
-        Assert.assertEquals(
-            "59m",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        Assert.assertEquals("59m", complicationText.getTextAt(mResources, testTime).toString())
     }
 
     @Test
@@ -209,64 +157,45 @@
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "2h 35m 10s" should be rounded to "2h 36m".
-        var testTime = refTime +
-            TimeUnit.SECONDS.toMillis(10) +
-            TimeUnit.MINUTES.toMillis(35) +
-            TimeUnit.HOURS.toMillis(
-                2
-            )
-        Assert.assertEquals(
-            "2h 36m",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        var testTime =
+            refTime +
+                TimeUnit.SECONDS.toMillis(10) +
+                TimeUnit.MINUTES.toMillis(35) +
+                TimeUnit.HOURS.toMillis(2)
+        Assert.assertEquals("2h 36m", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "2h 35m" should be rounded to "2h 35m".
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(35) +
-            TimeUnit.HOURS.toMillis(2)
-        Assert.assertEquals(
-            "2h 35m",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.MINUTES.toMillis(35) + TimeUnit.HOURS.toMillis(2)
+        Assert.assertEquals("2h 35m", complicationText.getTextAt(mResources, testTime).toString())
 
         // THEN the time difference text is returned
         // and "9d 23h 58m 10s" should be rounded to "10d".
-        testTime = refTime +
-            TimeUnit.SECONDS.toMillis(10) +
-            TimeUnit.MINUTES.toMillis(58) +
-            TimeUnit.HOURS.toMillis(23) +
-            TimeUnit.DAYS.toMillis(9)
-        Assert.assertEquals(
-            "10d",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime =
+            refTime +
+                TimeUnit.SECONDS.toMillis(10) +
+                TimeUnit.MINUTES.toMillis(58) +
+                TimeUnit.HOURS.toMillis(23) +
+                TimeUnit.DAYS.toMillis(9)
+        Assert.assertEquals("10d", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "23h 59m 10s" should be rounded to "1d".
-        testTime = refTime +
-            TimeUnit.SECONDS.toMillis(10) +
-            TimeUnit.MINUTES.toMillis(59) +
-            TimeUnit.HOURS.toMillis(
-                23
-            )
-        Assert.assertEquals(
-            "1d",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime =
+            refTime +
+                TimeUnit.SECONDS.toMillis(10) +
+                TimeUnit.MINUTES.toMillis(59) +
+                TimeUnit.HOURS.toMillis(23)
+        Assert.assertEquals("1d", complicationText.getTextAt(mResources, testTime).toString())
 
         // THEN the time difference text is returned
         // and "23h 58m 10s" should be rounded to "23h 59m".
-        testTime = refTime +
-            TimeUnit.SECONDS.toMillis(10) +
-            TimeUnit.MINUTES.toMillis(58) +
-            TimeUnit.HOURS.toMillis(
-                23
-            )
-        Assert.assertEquals(
-            "23h 59m",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime =
+            refTime +
+                TimeUnit.SECONDS.toMillis(10) +
+                TimeUnit.MINUTES.toMillis(58) +
+                TimeUnit.HOURS.toMillis(23)
+        Assert.assertEquals("23h 59m", complicationText.getTextAt(mResources, testTime).toString())
     }
 
     @Test
@@ -282,36 +211,22 @@
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "23h 59m 10s" should be rounded to "1d".
-        var testTime = refTime +
-            TimeUnit.SECONDS.toMillis(10) +
-            TimeUnit.MINUTES.toMillis(59) +
-            TimeUnit.HOURS.toMillis(
-                23
-            )
-        Assert.assertEquals(
-            "1d",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        var testTime =
+            refTime +
+                TimeUnit.SECONDS.toMillis(10) +
+                TimeUnit.MINUTES.toMillis(59) +
+                TimeUnit.HOURS.toMillis(23)
+        Assert.assertEquals("1d", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned in stopwatch style with no rounding.
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(59) +
-            TimeUnit.HOURS.toMillis(23)
-        Assert.assertEquals(
-            "23:59",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.MINUTES.toMillis(59) + TimeUnit.HOURS.toMillis(23)
+        Assert.assertEquals("23:59", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for another time after the ref period
         // THEN the time difference text is returned in stopwatch style with no rounding.
-        testTime = refTime +
-            TimeUnit.SECONDS.toMillis(59) +
-            TimeUnit.MINUTES.toMillis(1)
-        Assert.assertEquals(
-            "01:59",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.SECONDS.toMillis(59) + TimeUnit.MINUTES.toMillis(1)
+        Assert.assertEquals("01:59", complicationText.getTextAt(mResources, testTime).toString())
     }
 
     @Test
@@ -328,12 +243,11 @@
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "23h 59m 10s" should be rounded to one day.
-        var testTime = refTime +
-            TimeUnit.HOURS.toMillis(23) +
-            TimeUnit.MINUTES.toMillis(59) +
-            TimeUnit.SECONDS.toMillis(
-                10
-            )
+        var testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(23) +
+                TimeUnit.MINUTES.toMillis(59) +
+                TimeUnit.SECONDS.toMillis(10)
         Assert.assertEquals(
             "just 1 day left",
             complicationText.getTextAt(mResources, testTime).toString()
@@ -342,9 +256,7 @@
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned in words, showing the bigger unit only, and
         // rounding up.
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(12) +
-            TimeUnit.MINUTES.toMillis(35)
+        testTime = refTime + TimeUnit.HOURS.toMillis(12) + TimeUnit.MINUTES.toMillis(35)
         Assert.assertEquals(
             "just 13 hours left",
             complicationText.getTextAt(mResources, testTime).toString()
@@ -353,9 +265,7 @@
         // WHEN getText is called for another time after the ref period
         // THEN the time difference text is returned in words, showing the bigger unit only, and
         // rounding up.
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(35) +
-            TimeUnit.SECONDS.toMillis(59)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(35) + TimeUnit.SECONDS.toMillis(59)
         Assert.assertEquals(
             "just 36 mins left",
             complicationText.getTextAt(mResources, testTime).toString()
@@ -396,10 +306,11 @@
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned with the time rounded up to the next day.
-        var testTime = refTime +
-            TimeUnit.DAYS.toMillis(7) +
-            TimeUnit.HOURS.toMillis(23) +
-            TimeUnit.MINUTES.toMillis(59)
+        var testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(7) +
+                TimeUnit.HOURS.toMillis(23) +
+                TimeUnit.MINUTES.toMillis(59)
         Assert.assertEquals(
             "just 8 days left",
             complicationText.getTextAt(mResources, testTime).toString()
@@ -408,9 +319,7 @@
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned in words with the time rounded up to the next
         // day.
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(12) +
-            TimeUnit.MINUTES.toMillis(35)
+        testTime = refTime + TimeUnit.HOURS.toMillis(12) + TimeUnit.MINUTES.toMillis(35)
         Assert.assertEquals(
             "just 1 day left",
             complicationText.getTextAt(mResources, testTime).toString()
@@ -419,9 +328,7 @@
         // WHEN getText is called for another time after the ref period
         // THEN the time difference text is returned in words with the time rounded up to the next
         // day.
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(35) +
-            TimeUnit.SECONDS.toMillis(59)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(35) + TimeUnit.SECONDS.toMillis(59)
         Assert.assertEquals(
             "just 1 day left",
             complicationText.getTextAt(mResources, testTime).toString()
@@ -441,44 +348,29 @@
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and "23h 59m 10s" should be rounded to one day.
-        var testTime = refTime +
-            TimeUnit.HOURS.toMillis(23) +
-            TimeUnit.MINUTES.toMillis(59) +
-            TimeUnit.SECONDS.toMillis(10)
-        Assert.assertEquals(
-            "1 day",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        var testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(23) +
+                TimeUnit.MINUTES.toMillis(59) +
+                TimeUnit.SECONDS.toMillis(10)
+        Assert.assertEquals("1 day", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned in words, showing the bigger unit only, and
         // rounding up.
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(1) +
-            TimeUnit.MINUTES.toMillis(35)
-        Assert.assertEquals(
-            "2 hours",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.HOURS.toMillis(1) + TimeUnit.MINUTES.toMillis(35)
+        Assert.assertEquals("2 hours", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for a double-digit number of hours after the ref period
         // THEN the time difference text is returned using the short style.
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(12) +
-            TimeUnit.MINUTES.toMillis(35)
-        Assert.assertEquals(
-            "13h",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        testTime = refTime + TimeUnit.HOURS.toMillis(12) + TimeUnit.MINUTES.toMillis(35)
+        Assert.assertEquals("13h", complicationText.getTextAt(mResources, testTime).toString())
 
         // WHEN getText is called for another time many days the ref period, such that more than 7
         // characters would be used if the unit was shown as a word
         // THEN the time difference text is returned using the short style.
         testTime = refTime + TimeUnit.DAYS.toMillis(120)
-        Assert.assertEquals(
-            "120d",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        Assert.assertEquals("120d", complicationText.getTextAt(mResources, testTime).toString())
     }
 
     @Test
@@ -495,19 +387,13 @@
 
         // WHEN getText is called for a time within the ref period
         // THEN the time difference text is returned and "Now" is shown.
-        Assert.assertEquals(
-            "Now",
-            complicationText.getTextAt(mResources, refTime - 100).toString()
-        )
+        Assert.assertEquals("Now", complicationText.getTextAt(mResources, refTime - 100).toString())
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned and the time difference is shown in stopwatch
         // style.
         val testTime = refTime + TimeUnit.SECONDS.toMillis(35)
-        Assert.assertEquals(
-            "00:35",
-            complicationText.getTextAt(mResources, testTime).toString()
-        )
+        Assert.assertEquals("00:35", complicationText.getTextAt(mResources, testTime).toString())
     }
 
     @Test
@@ -524,10 +410,7 @@
 
         // WHEN getText is called for a time within the ref period
         // THEN the time difference text is returned and "0m" is shown.
-        Assert.assertEquals(
-            "0m",
-            complicationText.getTextAt(mResources, refTime).toString()
-        )
+        Assert.assertEquals("0m", complicationText.getTextAt(mResources, refTime).toString())
     }
 
     @Test
@@ -544,9 +427,7 @@
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned within the format string
-        val testTime = refTime +
-            TimeUnit.MINUTES.toMillis(35) +
-            TimeUnit.HOURS.toMillis(2)
+        val testTime = refTime + TimeUnit.MINUTES.toMillis(35) + TimeUnit.HOURS.toMillis(2)
         Assert.assertEquals(
             "hello 3h time",
             complicationText.getTextAt(mResources, testTime).toString()
@@ -567,9 +448,7 @@
 
         // WHEN getText is called for a time after the ref period
         // THEN the time difference text is returned within the format string
-        val testTime = refTime +
-            TimeUnit.MINUTES.toMillis(35) +
-            TimeUnit.HOURS.toMillis(2)
+        val testTime = refTime + TimeUnit.MINUTES.toMillis(35) + TimeUnit.HOURS.toMillis(2)
         Assert.assertEquals(
             "sometext2h 35msomemoretext",
             complicationText.getTextAt(mResources, testTime).toString()
@@ -583,9 +462,8 @@
                 .setFormat("EEE 'the' d LLL")
                 .setStyle(ComplicationText.FORMAT_STYLE_UPPER_CASE)
                 .build()
-        val result = complicationText.getTextAt(
-            mResources, GregorianCalendar(2016, 2, 4).timeInMillis
-        )
+        val result =
+            complicationText.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
         Assert.assertEquals("FRI THE 4 MAR", result.toString())
     }
 
@@ -596,19 +474,16 @@
                 .setFormat("EEE 'the' d LLL")
                 .setStyle(ComplicationText.FORMAT_STYLE_LOWER_CASE)
                 .build()
-        val result = complicationText.getTextAt(
-            mResources, GregorianCalendar(2016, 2, 4).timeInMillis
-        )
+        val result =
+            complicationText.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
         Assert.assertEquals("fri the 4 mar", result.toString())
     }
 
     @Test
     public fun testTimeFormatNoStyle() {
-        val complicationText =
-            TimeFormatBuilder().setFormat("EEE 'the' d LLL").build()
-        val result = complicationText.getTextAt(
-            mResources, GregorianCalendar(2016, 2, 4).timeInMillis
-        )
+        val complicationText = TimeFormatBuilder().setFormat("EEE 'the' d LLL").build()
+        val result =
+            complicationText.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
         Assert.assertEquals("Fri the 4 Mar", result.toString())
     }
 
@@ -620,9 +495,8 @@
                 .setStyle(ComplicationText.FORMAT_STYLE_UPPER_CASE)
                 .setSurroundingText("sometext^1somemoretext")
                 .build()
-        val result = complicationText.getTextAt(
-            mResources, GregorianCalendar(2016, 2, 4).timeInMillis
-        )
+        val result =
+            complicationText.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
         Assert.assertEquals("sometextFRI THE 4 MARsomemoretext", result.toString())
     }
 
@@ -633,28 +507,22 @@
                 .setFormat("HH:mm")
                 .setTimeZone(TimeZone.getTimeZone("Asia/Seoul"))
                 .build()
-        val calendar =
-            GregorianCalendar(TimeZone.getTimeZone("GMT+0"))
+        val calendar = GregorianCalendar(TimeZone.getTimeZone("GMT+0"))
         calendar[2016, 2, 4, 18, 52] = 58
-        val result =
-            complicationText.getTextAt(mResources, calendar.timeInMillis)
+        val result = complicationText.getTextAt(mResources, calendar.timeInMillis)
         Assert.assertEquals("03:52", result.toString())
     }
 
     @Test
     public fun testParcelPlainText() {
         // GIVEN ComplicationText containing plain text
-        val originalText =
-            ComplicationText.plainText("hello how are you")
+        val originalText = ComplicationText.plainText("hello how are you")
 
         // WHEN the object is parcelled and unparcelled
         val newText = originalText.roundTripParcelable()!!
 
         // THEN the object behaves as expected.
-        Assert.assertEquals(
-            "hello how are you",
-            newText.getTextAt(mResources, 100000).toString()
-        )
+        Assert.assertEquals("hello how are you", newText.getTextAt(mResources, 100000).toString())
     }
 
     @Test
@@ -674,17 +542,9 @@
         val newText = originalText.roundTripParcelable()!!
 
         // THEN the object behaves as expected.
-        val testTime = refTime +
-            TimeUnit.HOURS.toMillis(2) +
-            TimeUnit.MINUTES.toMillis(35)
-        Assert.assertEquals(
-            "hello 3h time",
-            newText.getTextAt(mResources, testTime).toString()
-        )
-        Assert.assertEquals(
-            "hello 0m time",
-            newText.getTextAt(mResources, refTime).toString()
-        )
+        val testTime = refTime + TimeUnit.HOURS.toMillis(2) + TimeUnit.MINUTES.toMillis(35)
+        Assert.assertEquals("hello 3h time", newText.getTextAt(mResources, testTime).toString())
+        Assert.assertEquals("hello 0m time", newText.getTextAt(mResources, refTime).toString())
     }
 
     @Test
@@ -703,9 +563,7 @@
         val newText = originalText.roundTripParcelable()!!
 
         // THEN the object behaves as expected.
-        val testTime = refTime +
-            TimeUnit.HOURS.toMillis(2) +
-            TimeUnit.MINUTES.toMillis(35)
+        val testTime = refTime + TimeUnit.HOURS.toMillis(2) + TimeUnit.MINUTES.toMillis(35)
         Assert.assertEquals("3h", newText.getTextAt(mResources, testTime).toString())
     }
 
@@ -730,15 +588,10 @@
         parcelWithBadMinUnit.setDataPosition(0)
 
         // WHEN the object is unparcelled
-        val newText =
-            ComplicationText.CREATOR.createFromParcel(
-                parcelWithBadMinUnit
-            )
+        val newText = ComplicationText.CREATOR.createFromParcel(parcelWithBadMinUnit)
 
         // THEN the object is unparcelled successfully, and behaves as if no min unit was specified.
-        val testTime = refTime +
-            TimeUnit.HOURS.toMillis(2) +
-            TimeUnit.MINUTES.toMillis(35)
+        val testTime = refTime + TimeUnit.HOURS.toMillis(2) + TimeUnit.MINUTES.toMillis(35)
         Assert.assertEquals("2h 35m", newText.getTextAt(mResources, testTime).toString())
     }
 
@@ -755,8 +608,7 @@
         val newText = originalText.roundTripParcelable()!!
 
         // THEN the object behaves as expected.
-        val result =
-            newText.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
+        val result = newText.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
         Assert.assertEquals("fri the 4 mar", result.toString())
     }
 
@@ -774,8 +626,7 @@
         val newText = originalText.roundTripParcelable()!!
 
         // THEN the object behaves as expected.
-        val calendar =
-            GregorianCalendar(TimeZone.getTimeZone("GMT+0"))
+        val calendar = GregorianCalendar(TimeZone.getTimeZone("GMT+0"))
         calendar[2016, 2, 4, 18, 52] = 58
         val result = newText.getTextAt(mResources, calendar.timeInMillis)
         Assert.assertEquals("fri the 4 mar 23:52", result.toString())
@@ -799,35 +650,33 @@
 
     @Test
     public fun nextChangeTimeNotTimeDependent() {
-        val text =
-            ComplicationText.plainText("hello")
-        Truth.assertThat(text.getNextChangeTime(1000000))
-            .isEqualTo(Long.MAX_VALUE)
+        val text = ComplicationText.plainText("hello")
+        Truth.assertThat(text.getNextChangeTime(1000000)).isEqualTo(Long.MAX_VALUE)
     }
 
     @Test
     public fun nextChangeTimeTimeDifference() {
-        val text = TimeDifferenceBuilder()
-            .setReferencePeriodStartMillis(0)
-            .setReferencePeriodEndMillis(0)
-            .setStyle(ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT)
-            .build()
+        val text =
+            TimeDifferenceBuilder()
+                .setReferencePeriodStartMillis(0)
+                .setReferencePeriodEndMillis(0)
+                .setStyle(ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT)
+                .build()
 
         // Time difference rounds up, so the next change is 1ms after the next minute boundary.
-        Truth.assertThat(text.getNextChangeTime(600000123))
-            .isEqualTo(600060001)
+        Truth.assertThat(text.getNextChangeTime(600000123)).isEqualTo(600060001)
     }
 
     @Test
     public fun nextChangeTimeTimeFormat() {
-        val text = TimeFormatBuilder()
-            .setFormat("EEE 'the' d LLL HH:mm")
-            .setStyle(ComplicationText.FORMAT_STYLE_LOWER_CASE)
-            .build()
+        val text =
+            TimeFormatBuilder()
+                .setFormat("EEE 'the' d LLL HH:mm")
+                .setStyle(ComplicationText.FORMAT_STYLE_LOWER_CASE)
+                .build()
 
         // Time format rounds down, so the next change is at the next minute boundary.
-        Truth.assertThat(text.getNextChangeTime(600000123))
-            .isEqualTo(600060000)
+        Truth.assertThat(text.getNextChangeTime(600000123)).isEqualTo(600060000)
     }
 
     @Test
@@ -839,19 +688,15 @@
 
     @Test
     public fun getTextAt_ignoresStringExpressionIfSurroundingStringPresent() {
-        val text = ComplicationText(
-            "hello" as CharSequence,
-            DynamicString.constant("world")
-        )
+        val text = ComplicationText("hello" as CharSequence, DynamicString.constant("world"))
 
-        Truth.assertThat(text.getTextAt(mResources, 132456789).toString())
-            .isEqualTo("hello")
+        Truth.assertThat(text.getTextAt(mResources, 132456789).toString()).isEqualTo("hello")
     }
 }
 
 fun ComplicationText.toParcelRoundTrip(): ComplicationText {
     val parcel = Parcel.obtain()
-    writeToParcel(parcel, /* flags = */ 0)
+    writeToParcel(parcel, /* flags= */ 0)
     parcel.setDataPosition(0)
     return ComplicationText.CREATOR.createFromParcel(parcel)
 }
diff --git a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/Parcelables.kt b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/Parcelables.kt
index 58287e2..e793321 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/Parcelables.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/Parcelables.kt
@@ -19,7 +19,7 @@
 import android.os.Parcel
 import android.os.Parcelable
 
-/** Writes a [Parcelable] to a [Parcel] and reads it back, returning the result.  */
+/** Writes a [Parcelable] to a [Parcel] and reads it back, returning the result. */
 @Suppress("UNCHECKED_CAST")
 internal fun <T : Parcelable> T.roundTripParcelable(): T? {
     val parcel = Parcel.obtain()
@@ -29,5 +29,6 @@
         parcel.readValue(this.javaClass.classLoader)
     } finally {
         parcel.recycle()
-    } as T
+    }
+        as T
 }
diff --git a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/TimeDifferenceTextTest.kt b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/TimeDifferenceTextTest.kt
index ef1d1a0..2b3d0c6 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/TimeDifferenceTextTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/TimeDifferenceTextTest.kt
@@ -20,10 +20,10 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.wear.watchface.complications.data.SharedRobolectricTestRunner
 import com.google.common.truth.Truth
+import java.util.concurrent.TimeUnit
 import org.junit.Assert
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
 
 @RunWith(SharedRobolectricTestRunner::class)
 public class TimeDifferenceTextTest {
@@ -33,13 +33,14 @@
     public fun testShortSingleUnitAfterRefPeriod() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_SINGLE_UNIT
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style.
@@ -61,13 +62,14 @@
     public fun testShortDualUnitAfterRefPeriod() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_DUAL_UNIT
         val refTime: Long = 10000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style.
@@ -89,13 +91,8 @@
     public fun testStopwatchAfterRefPeriod() {
         // GIVEN TimeDifferenceText of STYLE_STOPWATCH
         val refTime = 70000000000L
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(0, refTime, ComplicationText.DIFFERENCE_STYLE_STOPWATCH, true, null)
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style.
@@ -117,13 +114,14 @@
     public fun testWordsSingleUnitAfterRefPeriod() {
         // GIVEN TimeDifferenceText of STYLE_WORDS_SINGLE_UNIT
         val refTime = 990000000000L
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style.
@@ -149,50 +147,52 @@
     public fun testShortWordsSingleUnitAfterRefPeriod() {
         // GIVEN TimeDifferenceText of STYLE_WORDS_SINGLE_UNIT
         val refTime = 990000000000L
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style.
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1 min", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(1) + TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(1) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("2 mins", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("13 mins", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(1) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(1) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("2 hours", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(9) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(9) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("10h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(23) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(
-                35
-            )
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(23) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1 day", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(1) +
-            TimeUnit.HOURS.toMillis(23) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(1) +
+                TimeUnit.HOURS.toMillis(23) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("2 days", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(11) +
-            TimeUnit.HOURS.toMillis(23) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(11) +
+                TimeUnit.HOURS.toMillis(23) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("12 days", tdt.getTextAt(mResources, testTime))
         testTime = refTime + TimeUnit.DAYS.toMillis(125)
         Assert.assertEquals("125d", tdt.getTextAt(mResources, testTime))
@@ -202,13 +202,14 @@
     public fun testShortSingleUnitBeforeRefPeriod() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_SINGLE_UNIT
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime,
-            123456789,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                123456789,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for times before the end of the ref period...
         // THEN the result is formatted according to the style.
@@ -230,13 +231,14 @@
     public fun testShortDualUnitBeforeRefPeriod() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_DUAL_UNIT
         val refTime: Long = 10000000
-        val tdt = TimeDifferenceText(
-            refTime,
-            refTime + 1000,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                refTime + 1000,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for times before the end of the ref period...
         // THEN the result is formatted according to the style.
@@ -258,13 +260,14 @@
     public fun testStopwatchBeforeRefPeriod() {
         // GIVEN TimeDifferenceText of STYLE_STOPWATCH
         val refTime = 70000000000L
-        val tdt = TimeDifferenceText(
-            refTime,
-            refTime + 1569456,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                refTime + 1569456,
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                true,
+                null
+            )
 
         // WHEN getText is called for times before the end of the ref period...
         // THEN the result is formatted according to the style.
@@ -286,13 +289,14 @@
     public fun testWordsSingleUnitBeforeRefPeriod() {
         // GIVEN TimeDifferenceText of STYLE_WORDS_SINGLE_UNIT
         val refTime = 990000000000L
-        val tdt = TimeDifferenceText(
-            refTime,
-            refTime + 654654,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                refTime + 654654,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for times before the end of the ref period...
         // THEN the result is formatted according to the style.
@@ -318,13 +322,14 @@
     public fun testDuringRefPeriodShowingNowText() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime,
-            refTime + 100000,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                refTime + 100000,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for a time within the ref period
         // THEN "Now" is returned.
@@ -335,13 +340,14 @@
     public fun testDuringRefPeriodNotShowingNowTextShortSingle() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime,
-            refTime + 100000,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            false,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                refTime + 100000,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                false,
+                null
+            )
 
         // WHEN getText is called for a time within the ref period
         // THEN a zero value is returned.
@@ -352,13 +358,14 @@
     public fun testDuringRefPeriodNotShowingNowTextShortDual() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime,
-            refTime + 100000,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            false,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                refTime + 100000,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                false,
+                null
+            )
 
         // WHEN getText is called for a time within the ref period
         // THEN a zero value is returned.
@@ -369,13 +376,14 @@
     public fun testDuringRefPeriodNotShowingNowTextWord() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime,
-            refTime + 100000,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            false,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                refTime + 100000,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                false,
+                null
+            )
 
         // WHEN getText is called for a time within the ref period
         // THEN a zero value is returned.
@@ -386,13 +394,14 @@
     public fun testDuringRefPeriodNotShowingNowTextStopwatch() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime,
-            refTime + 100000,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            false,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                refTime + 100000,
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                false,
+                null
+            )
 
         // WHEN getText is called for a time within the ref period
         // THEN a zero value is returned.
@@ -403,13 +412,14 @@
     public fun testDuringRefPeriodShowingNowTextStopwatch() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime,
-            refTime + 100000,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                refTime + 100000,
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                true,
+                null
+            )
 
         // WHEN getText is called for a time within the ref period
         // THEN "Now" is returned.
@@ -420,13 +430,14 @@
     public fun testAtRefPeriodStartTime() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime,
-            refTime + 100000,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime,
+                refTime + 100000,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for the ref period start time
         // THEN "Now" is returned.
@@ -437,13 +448,14 @@
     public fun testAtRefPeriodEndTime() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime - 100000,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime - 100000,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for the ref period end time
         // THEN "Now" is returned.
@@ -454,13 +466,14 @@
     public fun testReturnsSameTextWithStopwatchStyle() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime - 100000,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime - 100000,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                true,
+                null
+            )
 
         // WHEN we consider two times for which the text would differ.
         // THEN returnsSameText returns false.
@@ -479,13 +492,14 @@
     public fun testReturnsSameTextWithShortSingleStyle() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime - 100000,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime - 100000,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN we consider two times for which the text would differ.
         // THEN returnsSameText returns false.
@@ -495,10 +509,8 @@
 
         // WHEN we consider two times for which the text would be the same.
         // THEN returnsSameText returns true.
-        testTime1 = refTime +
-            TimeUnit.MINUTES.toMillis(10) + TimeUnit.SECONDS.toMillis(10)
-        testTime2 = refTime +
-            TimeUnit.MINUTES.toMillis(10) + TimeUnit.SECONDS.toMillis(15)
+        testTime1 = refTime + TimeUnit.MINUTES.toMillis(10) + TimeUnit.SECONDS.toMillis(10)
+        testTime2 = refTime + TimeUnit.MINUTES.toMillis(10) + TimeUnit.SECONDS.toMillis(15)
         Assert.assertTrue(tdt.returnsSameText(testTime1, testTime2))
     }
 
@@ -506,13 +518,14 @@
     public fun testReturnsSameTextShortDualStyle() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime - 100000,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime - 100000,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                true,
+                null
+            )
 
         // WHEN we consider two times for which the text would differ.
         // THEN returnsSameText returns false.
@@ -522,10 +535,8 @@
 
         // WHEN we consider two times for which the text would be the same.
         // THEN returnsSameText returns true.
-        testTime1 = refTime +
-            TimeUnit.MINUTES.toMillis(10) + TimeUnit.SECONDS.toMillis(10)
-        testTime2 = refTime +
-            TimeUnit.MINUTES.toMillis(10) + TimeUnit.SECONDS.toMillis(15)
+        testTime1 = refTime + TimeUnit.MINUTES.toMillis(10) + TimeUnit.SECONDS.toMillis(10)
+        testTime2 = refTime + TimeUnit.MINUTES.toMillis(10) + TimeUnit.SECONDS.toMillis(15)
         Assert.assertTrue(tdt.returnsSameText(testTime1, testTime2))
     }
 
@@ -533,13 +544,14 @@
     public fun testReturnsSameTextWordsSingleStyle() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime - 100000,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime - 100000,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN we consider two times for which the text would differ.
         // THEN returnsSameText returns false.
@@ -558,13 +570,14 @@
     public fun testReturnsSameTextWithStopwatchStyleMinuteMinimumUnit() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime - 100000,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            true,
-            TimeUnit.MINUTES
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime - 100000,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                true,
+                TimeUnit.MINUTES
+            )
 
         // WHEN we consider two times for which the text would differ without the minimum unit,
         // but now will not differ
@@ -584,13 +597,14 @@
     public fun testReturnsSameTextWithShortSingleStyleHourMinimumUnit() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime - 100000,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            TimeUnit.HOURS
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime - 100000,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                TimeUnit.HOURS
+            )
 
         // WHEN we consider two times for which the text would differ without the minimum unit,
         // but now will not differ
@@ -610,13 +624,14 @@
     public fun testReturnsSameTextWithShortDualStyleHourMinimumUnit() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime - 100000,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            true,
-            TimeUnit.HOURS
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime - 100000,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                true,
+                TimeUnit.HOURS
+            )
 
         // WHEN we consider two times for which the text would differ without the minimum unit,
         // but now will not differ
@@ -636,13 +651,14 @@
     public fun testReturnsSameTextWithShortSingleStyleDayMinimumUnit() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime - 100000,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            TimeUnit.DAYS
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime - 100000,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                TimeUnit.DAYS
+            )
 
         // WHEN we consider two times for which the text differs by a number of minutes
         // THEN returnsSameText returns true.
@@ -667,13 +683,14 @@
     public fun testReturnsSameTextWithWordStyleDayMinimumUnit() {
         // GIVEN TimeDifferenceText
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            refTime - 100000,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            true,
-            TimeUnit.DAYS
-        )
+        val tdt =
+            TimeDifferenceText(
+                refTime - 100000,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                true,
+                TimeUnit.DAYS
+            )
 
         // WHEN we consider two times for which the text differs by a number of minutes
         // THEN returnsSameText returns true.
@@ -698,35 +715,33 @@
     public fun testShortSingleUnitRoundingFromSmallUnit() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_SINGLE_UNIT
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for a time a few seconds more than a whole number of hours after
         // the
         // ref time
-        var testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) + TimeUnit.SECONDS.toMillis(35)
+        var testTime = refTime + TimeUnit.HOURS.toMillis(4) + TimeUnit.SECONDS.toMillis(35)
         // THEN the time is rounded up to the next hour
         Assert.assertEquals("5h", tdt.getTextAt(mResources, testTime))
 
         // WHEN getText is called for a time a few seconds more than a whole number of days after
         // the
         // ref time
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.DAYS.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         // THEN the text is rounded up to the next day
         Assert.assertEquals("13d", tdt.getTextAt(mResources, testTime))
 
         // WHEN getText is called for a time a few minutes more than a whole number of days after
         // the
         // ref time
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(12) + TimeUnit.MINUTES.toMillis(35)
+        testTime = refTime + TimeUnit.DAYS.toMillis(12) + TimeUnit.MINUTES.toMillis(35)
         // THEN the text is rounded up to the next day
         Assert.assertEquals("13d", tdt.getTextAt(mResources, testTime))
     }
@@ -735,13 +750,14 @@
     public fun testShortSingleUnitExactNumberOfUnits() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_SINGLE_UNIT
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for a time a whole number of minutes after the ref time
         var testTime = refTime + TimeUnit.MINUTES.toMillis(35)
@@ -785,13 +801,14 @@
     public fun testShortDualUnitDoesntShowZeroInSmallerUnit() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_DUAL_UNIT
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            true,
-            null
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                true,
+                null
+            )
 
         // WHEN getText is called for a time a whole number of hours after the ref time
         var testTime = refTime + TimeUnit.HOURS.toMillis(4)
@@ -808,42 +825,45 @@
     public fun testShortSingleUnitWithHourMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_SINGLE_UNIT
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            TimeUnit.HOURS
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                TimeUnit.HOURS
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, not including any units smaller than
         // an hour
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("5h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("15h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("4d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -851,42 +871,45 @@
     public fun testShortSingleUnitWithDayMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_SINGLE_UNIT
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            TimeUnit.DAYS
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                TimeUnit.DAYS
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, not including any units smaller than
         // an hour
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("4d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -894,42 +917,45 @@
     public fun testShortSingleUnitWithMinuteMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_SINGLE_UNIT
         val refTime: Long = 1000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            true,
-            TimeUnit.MINUTES
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                true,
+                TimeUnit.MINUTES
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, with no change due to the minimum
         // unit.
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1m", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("13m", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("5h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("15h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("4d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -937,42 +963,45 @@
     public fun testShortDualUnitWithHourMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_DUAL_UNIT
         val refTime: Long = 10000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            true,
-            TimeUnit.HOURS
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                true,
+                TimeUnit.HOURS
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, not including any units smaller than
         // an hour
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("5h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("15h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("3d 15h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -980,42 +1009,45 @@
     public fun testShortDualUnitWithDayMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_DUAL_UNIT
         val refTime: Long = 10000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            true,
-            TimeUnit.DAYS
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                true,
+                TimeUnit.DAYS
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, not including any units smaller than
         // a day
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("4d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -1023,42 +1055,45 @@
     public fun testShortDualUnitWithMinuteMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_DUAL_UNIT
         val refTime: Long = 10000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            true,
-            TimeUnit.MINUTES
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                true,
+                TimeUnit.MINUTES
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, with no change due to the minimum
         // unit.
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1m", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("13m", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("4h 13m", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("14h 13m", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("3d 15h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -1066,42 +1101,45 @@
     public fun testShortDualUnitWithSecondMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_SHORT_DUAL_UNIT
         val refTime: Long = 10000000
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            true,
-            TimeUnit.SECONDS
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                true,
+                TimeUnit.SECONDS
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, with no change due to the minimum
         // unit.
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1m", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("13m", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("4h 13m", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("14h 13m", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("3d 15h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -1109,42 +1147,45 @@
     public fun testStopwatchWithMinuteMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_STOPWATCH
         val refTime = 70000000000L
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            true,
-            TimeUnit.MINUTES
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                true,
+                TimeUnit.MINUTES
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, not including any units smaller than
         // a minute.
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("0:01", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("0:13", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("4:13", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("14:13", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("3d 15h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -1152,42 +1193,45 @@
     public fun testStopwatchWithHourMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_STOPWATCH
         val refTime = 70000000000L
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            true,
-            TimeUnit.HOURS
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                true,
+                TimeUnit.HOURS
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, not including any units smaller than
         // an hour (which means that the stopwatch-style format hh:mm cannot be used).
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("5h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("15h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("3d 15h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -1195,42 +1239,45 @@
     public fun testStopwatchWithDayMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_STOPWATCH
         val refTime = 70000000000L
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            true,
-            TimeUnit.DAYS
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                true,
+                TimeUnit.DAYS
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, not including any units smaller than
         // a day..
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("4d", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -1238,42 +1285,45 @@
     public fun testStopwatchWithSecondMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_STOPWATCH
         val refTime = 70000000000L
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            true,
-            TimeUnit.SECONDS
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                true,
+                TimeUnit.SECONDS
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, with no change due to the minimum
         // unit.
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("00:35", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("12:35", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("4:13", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("14:13", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("3d 15h", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14d", tdt.getTextAt(mResources, testTime))
     }
 
@@ -1281,42 +1331,45 @@
     public fun testWordsSingleUnitWithHourMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_WORDS_SINGLE_UNIT
         val refTime = 990000000000L
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            true,
-            TimeUnit.HOURS
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                true,
+                TimeUnit.HOURS
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, not including any units smaller than
         // an hour
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1 hour", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1 hour", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("5 hours", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("15 hours", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("4 days", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14 days", tdt.getTextAt(mResources, testTime))
     }
 
@@ -1324,42 +1377,45 @@
     public fun testWordsSingleUnitWithDayMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_WORDS_SINGLE_UNIT
         val refTime = 990000000000L
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            true,
-            TimeUnit.DAYS
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                true,
+                TimeUnit.DAYS
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, not including any units smaller than
         // an hour
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1 day", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1 day", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1 day", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1 day", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("4 days", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14 days", tdt.getTextAt(mResources, testTime))
     }
 
@@ -1367,172 +1423,142 @@
     public fun testWordsSingleUnitWithMinuteMinimumUnit() {
         // GIVEN TimeDifferenceText of STYLE_WORDS_SINGLE_UNIT
         val refTime = 990000000000L
-        val tdt = TimeDifferenceText(
-            0,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            true,
-            TimeUnit.MINUTES
-        )
+        val tdt =
+            TimeDifferenceText(
+                0,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                true,
+                TimeUnit.MINUTES
+            )
 
         // WHEN getText is called for times after the end of the ref period...
         // THEN the result is formatted according to the style, with no change due to the minimum
         // unit.
         var testTime = refTime + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("1 min", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime = refTime + TimeUnit.MINUTES.toMillis(12) + TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("13 mins", tdt.getTextAt(mResources, testTime))
-        testTime = refTime +
-            TimeUnit.HOURS.toMillis(4) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(4) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("5 hours", tdt.getTextAt(mResources, testTime))
-        testTime = refTime + TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12) +
-            TimeUnit.SECONDS.toMillis(35)
+        testTime =
+            refTime +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12) +
+                TimeUnit.SECONDS.toMillis(35)
         Assert.assertEquals("15 hours", tdt.getTextAt(mResources, testTime))
-        testTime = refTime + TimeUnit.DAYS.toMillis(3) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(3) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("4 days", tdt.getTextAt(mResources, testTime))
-        testTime = refTime + TimeUnit.DAYS.toMillis(13) +
-            TimeUnit.HOURS.toMillis(14) +
-            TimeUnit.MINUTES.toMillis(12)
+        testTime =
+            refTime +
+                TimeUnit.DAYS.toMillis(13) +
+                TimeUnit.HOURS.toMillis(14) +
+                TimeUnit.MINUTES.toMillis(12)
         Assert.assertEquals("14 days", tdt.getTextAt(mResources, testTime))
     }
 
     @Test
     public fun testTimeDifferenceGetNextChangeStopWatchNoMinimum() {
-        val text = TimeDifferenceText(
-            0,
-            1,
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            true,
-            null
-        )
-        Assert.assertEquals(
-            TimeUnit.SECONDS.toMillis(1),
-            text.precision
-        )
+        val text = TimeDifferenceText(0, 1, ComplicationText.DIFFERENCE_STYLE_STOPWATCH, true, null)
+        Assert.assertEquals(TimeUnit.SECONDS.toMillis(1), text.precision)
 
         // Time difference is rounded up, so the next change is 1ms after the next second boundary.
-        Truth.assertThat(text.getNextChangeTime(1000000000L))
-            .isEqualTo(1000000001L)
-        Truth.assertThat(text.getNextChangeTime(1000000001L))
-            .isEqualTo(1000001001L)
-        Truth.assertThat(text.getNextChangeTime(1000001234L))
-            .isEqualTo(1000002001L)
+        Truth.assertThat(text.getNextChangeTime(1000000000L)).isEqualTo(1000000001L)
+        Truth.assertThat(text.getNextChangeTime(1000000001L)).isEqualTo(1000001001L)
+        Truth.assertThat(text.getNextChangeTime(1000001234L)).isEqualTo(1000002001L)
     }
 
     @Test
     public fun testTimeDifferenceGetNextChangeNoMinimum() {
-        val styles = intArrayOf(
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT
-        )
+        val styles =
+            intArrayOf(
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT
+            )
         for (style in styles) {
             val text = TimeDifferenceText(0, 1, style, true, null)
-            Assert.assertEquals(
-                TimeUnit.MINUTES.toMillis(1),
-                text.precision
-            )
+            Assert.assertEquals(TimeUnit.MINUTES.toMillis(1), text.precision)
 
             // Time difference is rounded up, and precision for all of these is 1 minute, so the
             // next
             // change is 1ms after the next minute boundary.
-            Truth.assertThat(text.getNextChangeTime(60000000000L))
-                .isEqualTo(60000000001L)
-            Truth.assertThat(text.getNextChangeTime(60000000001L))
-                .isEqualTo(60000060001L)
-            Truth.assertThat(text.getNextChangeTime(60000060000L))
-                .isEqualTo(60000060001L)
+            Truth.assertThat(text.getNextChangeTime(60000000000L)).isEqualTo(60000000001L)
+            Truth.assertThat(text.getNextChangeTime(60000000001L)).isEqualTo(60000060001L)
+            Truth.assertThat(text.getNextChangeTime(60000060000L)).isEqualTo(60000060001L)
         }
     }
 
     @Test
     public fun testTimeDifferenceGetNextChangeMinuteMinimum() {
-        val styles = intArrayOf(
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT
-        )
-        for (style in styles) {
-            val text =
-                TimeDifferenceText(0, 1, style, true, TimeUnit.MINUTES)
-            Assert.assertEquals(
-                TimeUnit.MINUTES.toMillis(1),
-                text.precision
+        val styles =
+            intArrayOf(
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT
             )
+        for (style in styles) {
+            val text = TimeDifferenceText(0, 1, style, true, TimeUnit.MINUTES)
+            Assert.assertEquals(TimeUnit.MINUTES.toMillis(1), text.precision)
 
             // Next change is 1ms after the next minute boundary.
-            Truth.assertThat(text.getNextChangeTime(60000000000L))
-                .isEqualTo(60000000001L)
-            Truth.assertThat(text.getNextChangeTime(60000000001L))
-                .isEqualTo(60000060001L)
-            Truth.assertThat(text.getNextChangeTime(60000060000L))
-                .isEqualTo(60000060001L)
+            Truth.assertThat(text.getNextChangeTime(60000000000L)).isEqualTo(60000000001L)
+            Truth.assertThat(text.getNextChangeTime(60000000001L)).isEqualTo(60000060001L)
+            Truth.assertThat(text.getNextChangeTime(60000060000L)).isEqualTo(60000060001L)
         }
     }
 
     @Test
     public fun testTimeDifferenceGetNextChangeHourMinimum() {
-        val styles = intArrayOf(
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT
-        )
-        for (style in styles) {
-            val text =
-                TimeDifferenceText(0, 1, style, true, TimeUnit.HOURS)
-            Assert.assertEquals(
-                TimeUnit.HOURS.toMillis(1),
-                text.precision
+        val styles =
+            intArrayOf(
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT
             )
+        for (style in styles) {
+            val text = TimeDifferenceText(0, 1, style, true, TimeUnit.HOURS)
+            Assert.assertEquals(TimeUnit.HOURS.toMillis(1), text.precision)
 
             // Next change is 1ms after the next hour boundary.
-            Truth.assertThat(text.getNextChangeTime(36000035789L))
-                .isEqualTo(36003600001L)
-            Truth.assertThat(text.getNextChangeTime(36003600000L))
-                .isEqualTo(36003600001L)
-            Truth.assertThat(text.getNextChangeTime(36003600001L))
-                .isEqualTo(36007200001L)
-            Truth.assertThat(text.getNextChangeTime(36007199999L))
-                .isEqualTo(36007200001L)
+            Truth.assertThat(text.getNextChangeTime(36000035789L)).isEqualTo(36003600001L)
+            Truth.assertThat(text.getNextChangeTime(36003600000L)).isEqualTo(36003600001L)
+            Truth.assertThat(text.getNextChangeTime(36003600001L)).isEqualTo(36007200001L)
+            Truth.assertThat(text.getNextChangeTime(36007199999L)).isEqualTo(36007200001L)
         }
     }
 
     @Test
     public fun testTimeDifferenceGetPrecisionDayMinimum() {
-        val styles = intArrayOf(
-            ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT
-        )
-        for (style in styles) {
-            val text =
-                TimeDifferenceText(0, 1, style, true, TimeUnit.DAYS)
-            Assert.assertEquals(
-                TimeUnit.DAYS.toMillis(1),
-                text.precision
+        val styles =
+            intArrayOf(
+                ComplicationText.DIFFERENCE_STYLE_STOPWATCH,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_WORDS_SINGLE_UNIT,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_WORDS_SINGLE_UNIT
             )
+        for (style in styles) {
+            val text = TimeDifferenceText(0, 1, style, true, TimeUnit.DAYS)
+            Assert.assertEquals(TimeUnit.DAYS.toMillis(1), text.precision)
 
             // Next change is 1ms after the next day boundary.
-            Truth.assertThat(text.getNextChangeTime(8640000035789L))
-                .isEqualTo(8640086400001L)
-            Truth.assertThat(text.getNextChangeTime(8640086400000L))
-                .isEqualTo(8640086400001L)
-            Truth.assertThat(text.getNextChangeTime(8640086400001L))
-                .isEqualTo(8640172800001L)
+            Truth.assertThat(text.getNextChangeTime(8640000035789L)).isEqualTo(8640086400001L)
+            Truth.assertThat(text.getNextChangeTime(8640086400000L)).isEqualTo(8640086400001L)
+            Truth.assertThat(text.getNextChangeTime(8640086400001L)).isEqualTo(8640172800001L)
         }
     }
 
@@ -1540,21 +1566,20 @@
     public fun testParcelTimeDifferenceTextWithoutMinUnit() {
         // GIVEN TimeDifferenceText without min unit
         val refTime: Long = 10000000
-        val originalText = TimeDifferenceText(
-            refTime - 156561,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
-            false,
-            null
-        )
+        val originalText =
+            TimeDifferenceText(
+                refTime - 156561,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_SINGLE_UNIT,
+                false,
+                null
+            )
 
         // WHEN the object is parcelled and unparcelled
         val newText = originalText.roundTripParcelable()!!
 
         // THEN the object behaves as expected.
-        val testTime = refTime +
-            TimeUnit.HOURS.toMillis(2) +
-            TimeUnit.MINUTES.toMillis(35)
+        val testTime = refTime + TimeUnit.HOURS.toMillis(2) + TimeUnit.MINUTES.toMillis(35)
         Assert.assertEquals("3h", newText.getTextAt(mResources, testTime).toString())
         Assert.assertEquals("0m", newText.getTextAt(mResources, refTime).toString())
     }
@@ -1563,13 +1588,14 @@
     public fun testParcelTimeDifferenceTextWithMinUnit() {
         // GIVEN TimeDifferenceText with a minimum unit specified
         val refTime: Long = 10000000
-        val originalText = TimeDifferenceText(
-            refTime - 156561,
-            refTime,
-            ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
-            true,
-            TimeUnit.HOURS
-        )
+        val originalText =
+            TimeDifferenceText(
+                refTime - 156561,
+                refTime,
+                ComplicationText.DIFFERENCE_STYLE_SHORT_DUAL_UNIT,
+                true,
+                TimeUnit.HOURS
+            )
 
         // WHEN the object is parcelled and unparcelled
         val newText = originalText.roundTripParcelable()!!
@@ -1578,4 +1604,4 @@
         val testTime = refTime + TimeUnit.HOURS.toMillis(2) + TimeUnit.MINUTES.toMillis(35)
         Assert.assertEquals("3h", newText.getTextAt(mResources, testTime).toString())
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/TimeFormatTextTest.kt b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/TimeFormatTextTest.kt
index 16ec776..60ebcc8 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/TimeFormatTextTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/android/support/wearable/complications/TimeFormatTextTest.kt
@@ -20,13 +20,13 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.wear.watchface.complications.data.SharedRobolectricTestRunner
 import com.google.common.truth.Truth
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.Calendar
 import java.util.GregorianCalendar
 import java.util.TimeZone
 import java.util.concurrent.TimeUnit
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @RunWith(SharedRobolectricTestRunner::class)
 public class TimeFormatTextTest {
@@ -35,15 +35,10 @@
     @Test
     public fun testDefaultStyleFormat() {
         // GIVEN a TimeFormatText object using the default style
-        val tft = TimeFormatText(
-            "E 'in' LLL",
-            ComplicationText.FORMAT_STYLE_DEFAULT,
-            null
-        )
+        val tft = TimeFormatText("E 'in' LLL", ComplicationText.FORMAT_STYLE_DEFAULT, null)
 
         // WHEN getText is called for a given date
-        val result =
-            tft.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
+        val result = tft.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
 
         // THEN the results are in the default case.
         Assert.assertEquals("Fri in Mar", result)
@@ -52,15 +47,10 @@
     @Test
     public fun testUpperCaseStyleFormat() {
         // GIVEN a TimeFormatText object using the upper case style
-        val tft = TimeFormatText(
-            "E 'in' LLL",
-            ComplicationText.FORMAT_STYLE_UPPER_CASE,
-            null
-        )
+        val tft = TimeFormatText("E 'in' LLL", ComplicationText.FORMAT_STYLE_UPPER_CASE, null)
 
         // WHEN getText is called for a given date
-        val result =
-            tft.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
+        val result = tft.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
 
         // THEN the results are in upper case.
         Assert.assertEquals("FRI IN MAR", result)
@@ -69,15 +59,10 @@
     @Test
     public fun testLowerCaseStyleFormat() {
         // GIVEN a TimeFormatText object using the lower case style
-        val tft = TimeFormatText(
-            "E 'in' LLL",
-            ComplicationText.FORMAT_STYLE_LOWER_CASE,
-            null
-        )
+        val tft = TimeFormatText("E 'in' LLL", ComplicationText.FORMAT_STYLE_LOWER_CASE, null)
 
         // WHEN getText is called for a given date
-        val result =
-            tft.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
+        val result = tft.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
 
         // THEN the results are in lower case.
         Assert.assertEquals("fri in mar", result)
@@ -86,13 +71,13 @@
     @Test
     public fun testFormatWithTimeZone() {
         // GIVEN a TimeFormatText object using the default style and a time zone specified.
-        val tft = TimeFormatText(
-            "HH:mm",
-            ComplicationText.FORMAT_STYLE_DEFAULT,
-            TimeZone.getTimeZone("America/Los_Angeles")
-        )
-        val calendar =
-            GregorianCalendar(TimeZone.getTimeZone("GMT+0"))
+        val tft =
+            TimeFormatText(
+                "HH:mm",
+                ComplicationText.FORMAT_STYLE_DEFAULT,
+                TimeZone.getTimeZone("America/Los_Angeles")
+            )
+        val calendar = GregorianCalendar(TimeZone.getTimeZone("GMT+0"))
         calendar[2016, 2, 4, 15, 12] = 58
 
         // WHEN getText is called for a given date
@@ -105,23 +90,17 @@
     @Test
     public fun testReturnSameTime() {
         // GIVEN a TimeFormatText object using the lower case style
-        var tft = TimeFormatText(
-            "HH:mm",
-            ComplicationText.FORMAT_STYLE_LOWER_CASE,
-            null
-        )
+        var tft = TimeFormatText("HH:mm", ComplicationText.FORMAT_STYLE_LOWER_CASE, null)
 
         // WHEN returnsSameText is called for two time in the different period.
         // THEN the result of getText should be different.
-        var testTime1 =
-            TimeUnit.HOURS.toMillis(23) + TimeUnit.MINUTES.toMillis(10)
+        var testTime1 = TimeUnit.HOURS.toMillis(23) + TimeUnit.MINUTES.toMillis(10)
         var testTime2 = testTime1 + TimeUnit.MINUTES.toMillis(30)
         Assert.assertFalse(tft.returnsSameText(testTime1, testTime2))
 
         // WHEN returnsSameText is called for two time in the same period.
         // THEN the result of getText should be the same.
-        testTime1 =
-            TimeUnit.HOURS.toMillis(23) + TimeUnit.MINUTES.toMillis(10)
+        testTime1 = TimeUnit.HOURS.toMillis(23) + TimeUnit.MINUTES.toMillis(10)
         testTime2 = testTime1 + TimeUnit.SECONDS.toMillis(30)
         Assert.assertTrue(tft.returnsSameText(testTime1, testTime2))
 
@@ -142,45 +121,41 @@
 
     @Test
     public fun testTimeFormatWithTimeZone() {
-        val complicationText = TimeFormatText(
-            "HH:mm",
-            ComplicationText.FORMAT_STYLE_DEFAULT,
-            TimeZone.getTimeZone("Asia/Seoul")
-        )
-        val calendar =
-            GregorianCalendar(TimeZone.getTimeZone("GMT+0"))
+        val complicationText =
+            TimeFormatText(
+                "HH:mm",
+                ComplicationText.FORMAT_STYLE_DEFAULT,
+                TimeZone.getTimeZone("Asia/Seoul")
+            )
+        val calendar = GregorianCalendar(TimeZone.getTimeZone("GMT+0"))
         calendar[2016, 2, 4, 18, 52] = 58
-        val result =
-            complicationText.getTextAt(mResources, calendar.timeInMillis)
+        val result = complicationText.getTextAt(mResources, calendar.timeInMillis)
         Assert.assertEquals("03:52", result.toString())
     }
 
     @Test
     public fun testParcelTimeFormatTextWithoutTimeZone() {
         // GIVEN TimeFormatText with no time zone
-        val originalText = TimeFormatText(
-            "EEE 'the' d LLL",
-            ComplicationText.FORMAT_STYLE_LOWER_CASE,
-            null
-        )
+        val originalText =
+            TimeFormatText("EEE 'the' d LLL", ComplicationText.FORMAT_STYLE_LOWER_CASE, null)
 
         // WHEN the object is parcelled and unparcelled
         val newText = originalText.roundTripParcelable()!!
 
         // THEN the object behaves as expected.
-        val result =
-            newText.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
+        val result = newText.getTextAt(mResources, GregorianCalendar(2016, 2, 4).timeInMillis)
         Assert.assertEquals("fri the 4 mar", result.toString())
     }
 
     @Test
     public fun testParcelTimeFormatTextWithTimeZone() {
         // GIVEN TimeFormatText with a time zone specified
-        val originalText = TimeFormatText(
-            "EEE 'the' d LLL HH:mm",
-            ComplicationText.FORMAT_STYLE_LOWER_CASE,
-            TimeZone.getTimeZone("GMT+5")
-        )
+        val originalText =
+            TimeFormatText(
+                "EEE 'the' d LLL HH:mm",
+                ComplicationText.FORMAT_STYLE_LOWER_CASE,
+                TimeZone.getTimeZone("GMT+5")
+            )
 
         // WHEN the object is parcelled and unparcelled
         val newText = originalText.roundTripParcelable()!!
@@ -194,87 +169,68 @@
 
     @Test
     public fun nextChangeTimeSeconds() {
-        val timeFormatText = TimeFormatText(
-            "HH:mm:ss",
-            ComplicationText.FORMAT_STYLE_DEFAULT,
-            TimeZone.getDefault()
-        )
+        val timeFormatText =
+            TimeFormatText("HH:mm:ss", ComplicationText.FORMAT_STYLE_DEFAULT, TimeZone.getDefault())
 
         // Next change is at the next second boundary.
-        Truth.assertThat(timeFormatText.getNextChangeTime(1000035789L))
-            .isEqualTo(1000036000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(7000060000L))
-            .isEqualTo(7000061000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(1900000001L))
-            .isEqualTo(1900001000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(1111100999L))
-            .isEqualTo(1111101000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(1000035789L)).isEqualTo(1000036000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(7000060000L)).isEqualTo(7000061000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(1900000001L)).isEqualTo(1900001000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(1111100999L)).isEqualTo(1111101000L)
     }
 
     @Test
     public fun nextChangeTimeMinutely() {
-        val timeFormatText = TimeFormatText(
-            "HH:mm",
-            ComplicationText.FORMAT_STYLE_DEFAULT,
-            TimeZone.getTimeZone("Asia/Seoul")
-        )
+        val timeFormatText =
+            TimeFormatText(
+                "HH:mm",
+                ComplicationText.FORMAT_STYLE_DEFAULT,
+                TimeZone.getTimeZone("Asia/Seoul")
+            )
 
         // Next change is at the next minute boundary.
-        Truth.assertThat(timeFormatText.getNextChangeTime(6000035789L))
-            .isEqualTo(6000060000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(6000060000L))
-            .isEqualTo(6000120000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(6000060001L))
-            .isEqualTo(6000120000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(6000059999L))
-            .isEqualTo(6000060000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(6000035789L)).isEqualTo(6000060000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(6000060000L)).isEqualTo(6000120000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(6000060001L)).isEqualTo(6000120000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(6000059999L)).isEqualTo(6000060000L)
     }
 
     @Test
     public fun nextChangeTimeHourly() {
-        val timeFormatText = TimeFormatText(
-            "d LLL HH",
-            ComplicationText.FORMAT_STYLE_DEFAULT,
-            TimeZone.getDefault()
-        )
+        val timeFormatText =
+            TimeFormatText("d LLL HH", ComplicationText.FORMAT_STYLE_DEFAULT, TimeZone.getDefault())
 
         // Next change is at the next hour boundary.
-        Truth.assertThat(timeFormatText.getNextChangeTime(36000035789L))
-            .isEqualTo(36003600000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(36000600000L))
-            .isEqualTo(36003600000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(36003600000L))
-            .isEqualTo(36007200000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(36007199999L))
-            .isEqualTo(36007200000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(36000035789L)).isEqualTo(36003600000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(36000600000L)).isEqualTo(36003600000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(36003600000L)).isEqualTo(36007200000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(36007199999L)).isEqualTo(36007200000L)
     }
 
     @Test
     public fun nextChangeTimeDailyUtc() {
-        val timeFormatText = TimeFormatText(
-            "d LLL",
-            ComplicationText.FORMAT_STYLE_DEFAULT,
-            TimeZone.getTimeZone("UTC")
-        )
+        val timeFormatText =
+            TimeFormatText(
+                "d LLL",
+                ComplicationText.FORMAT_STYLE_DEFAULT,
+                TimeZone.getTimeZone("UTC")
+            )
 
         // Next change is at the next day boundary.
-        Truth.assertThat(timeFormatText.getNextChangeTime(8640000035789L))
-            .isEqualTo(8640086400000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(8640086399999L))
-            .isEqualTo(8640086400000L)
-        Truth.assertThat(timeFormatText.getNextChangeTime(8640086400000L))
-            .isEqualTo(8640172800000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(8640000035789L)).isEqualTo(8640086400000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(8640086399999L)).isEqualTo(8640086400000L)
+        Truth.assertThat(timeFormatText.getNextChangeTime(8640086400000L)).isEqualTo(8640172800000L)
     }
 
     @Test
     public fun nextChangeTimeDailyTimeZone() {
-        val timeFormatText = TimeFormatText(
-            "d LLL",
-            ComplicationText.FORMAT_STYLE_DEFAULT,
-            TimeZone.getTimeZone("GMT-5")
-        )
-        val calendar: Calendar =
-            GregorianCalendar(TimeZone.getTimeZone("UTC"))
+        val timeFormatText =
+            TimeFormatText(
+                "d LLL",
+                ComplicationText.FORMAT_STYLE_DEFAULT,
+                TimeZone.getTimeZone("GMT-5")
+            )
+        val calendar: Calendar = GregorianCalendar(TimeZone.getTimeZone("UTC"))
         calendar[2018, Calendar.APRIL, 17, 8, 0] = 0
         calendar[Calendar.MILLISECOND] = 0
         val inputTime = calendar.timeInMillis
@@ -282,19 +238,18 @@
         // Next change is at midnight in the specified time zone.
         calendar[2018, Calendar.APRIL, 18, 5, 0] = 0
         val expectedTime = calendar.timeInMillis
-        Truth.assertThat(timeFormatText.getNextChangeTime(inputTime))
-            .isEqualTo(expectedTime)
+        Truth.assertThat(timeFormatText.getNextChangeTime(inputTime)).isEqualTo(expectedTime)
     }
 
     @Test
     public fun nextChangeTimeDailyTimeZoneNextDay() {
-        val timeFormatText = TimeFormatText(
-            "d LLL",
-            ComplicationText.FORMAT_STYLE_DEFAULT,
-            TimeZone.getTimeZone("GMT+5")
-        )
-        val calendar: Calendar =
-            GregorianCalendar(TimeZone.getTimeZone("UTC"))
+        val timeFormatText =
+            TimeFormatText(
+                "d LLL",
+                ComplicationText.FORMAT_STYLE_DEFAULT,
+                TimeZone.getTimeZone("GMT+5")
+            )
+        val calendar: Calendar = GregorianCalendar(TimeZone.getTimeZone("UTC"))
         calendar[2018, Calendar.APRIL, 17, 23, 0] = 0
         calendar[Calendar.MILLISECOND] = 0
         val inputTime = calendar.timeInMillis
@@ -304,65 +259,62 @@
         // is after midnight in GMT+5).
         calendar[2018, Calendar.APRIL, 18, 19, 0] = 0
         val expectedTime = calendar.timeInMillis
-        Truth.assertThat(timeFormatText.getNextChangeTime(inputTime))
-            .isEqualTo(expectedTime)
+        Truth.assertThat(timeFormatText.getNextChangeTime(inputTime)).isEqualTo(expectedTime)
     }
 
     @Test
     public fun testTimeFormatTextGetPrecision() {
-        val dateFormats = arrayOf(
-            "S",
-            "s",
-            "d",
-            "m",
-            "h",
-            "D",
-            "W",
-            "y",
-            "E",
-            "w",
-            "EEE 'the' d LLL HH:mm",
-            "'now time is' HH 'o''clock'",
-            "yyyy-MM-dd",
-            "yyyy-MM-dd HH:mm",
-            "yyyy-MM-dd HH:mmZ",
-            "yyyy-MM-dd HH:mm:ss.SSSZ",
-            "yyyy-MM-dd'T'HH:mm:ss.SSSZ",
-            "yyyy ''' hello'",
-            "yyyy ''''' hello' s",
-            "LLL",
-            "LLL a"
-        )
-        val dateFormatPrecision = longArrayOf(
-            TimeUnit.SECONDS.toMillis(1),
-            TimeUnit.SECONDS.toMillis(1),
-            TimeUnit.DAYS.toMillis(1),
-            TimeUnit.MINUTES.toMillis(1),
-            TimeUnit.HOURS.toMillis(1),
-            TimeUnit.DAYS.toMillis(1),
-            TimeUnit.DAYS.toMillis(1),
-            TimeUnit.DAYS.toMillis(1),
-            TimeUnit.DAYS.toMillis(1),
-            TimeUnit.DAYS.toMillis(1),
-            TimeUnit.MINUTES.toMillis(1),
-            TimeUnit.HOURS.toMillis(1),
-            TimeUnit.DAYS.toMillis(1),
-            TimeUnit.MINUTES.toMillis(1),
-            TimeUnit.MINUTES.toMillis(1),
-            TimeUnit.SECONDS.toMillis(1),
-            TimeUnit.SECONDS.toMillis(1),
-            TimeUnit.DAYS.toMillis(1),
-            TimeUnit.SECONDS.toMillis(1),
-            TimeUnit.DAYS.toMillis(1),
-            TimeUnit.HOURS.toMillis(12)
-        )
-        for (i in dateFormats.indices) {
-            val text = TimeFormatText(
-                dateFormats[i],
-                ComplicationText.FORMAT_STYLE_DEFAULT,
-                null
+        val dateFormats =
+            arrayOf(
+                "S",
+                "s",
+                "d",
+                "m",
+                "h",
+                "D",
+                "W",
+                "y",
+                "E",
+                "w",
+                "EEE 'the' d LLL HH:mm",
+                "'now time is' HH 'o''clock'",
+                "yyyy-MM-dd",
+                "yyyy-MM-dd HH:mm",
+                "yyyy-MM-dd HH:mmZ",
+                "yyyy-MM-dd HH:mm:ss.SSSZ",
+                "yyyy-MM-dd'T'HH:mm:ss.SSSZ",
+                "yyyy ''' hello'",
+                "yyyy ''''' hello' s",
+                "LLL",
+                "LLL a"
             )
+        val dateFormatPrecision =
+            longArrayOf(
+                TimeUnit.SECONDS.toMillis(1),
+                TimeUnit.SECONDS.toMillis(1),
+                TimeUnit.DAYS.toMillis(1),
+                TimeUnit.MINUTES.toMillis(1),
+                TimeUnit.HOURS.toMillis(1),
+                TimeUnit.DAYS.toMillis(1),
+                TimeUnit.DAYS.toMillis(1),
+                TimeUnit.DAYS.toMillis(1),
+                TimeUnit.DAYS.toMillis(1),
+                TimeUnit.DAYS.toMillis(1),
+                TimeUnit.MINUTES.toMillis(1),
+                TimeUnit.HOURS.toMillis(1),
+                TimeUnit.DAYS.toMillis(1),
+                TimeUnit.MINUTES.toMillis(1),
+                TimeUnit.MINUTES.toMillis(1),
+                TimeUnit.SECONDS.toMillis(1),
+                TimeUnit.SECONDS.toMillis(1),
+                TimeUnit.DAYS.toMillis(1),
+                TimeUnit.SECONDS.toMillis(1),
+                TimeUnit.DAYS.toMillis(1),
+                TimeUnit.HOURS.toMillis(12)
+            )
+        for (i in dateFormats.indices) {
+            val text = TimeFormatText(dateFormats[i], ComplicationText.FORMAT_STYLE_DEFAULT, null)
             Assert.assertEquals(dateFormatPrecision[i], text.precision)
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluatorTest.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluatorTest.kt
index 47abee2..37cae45 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluatorTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluatorTest.kt
@@ -49,8 +49,7 @@
 
 @RunWith(SharedRobolectricTestRunner::class)
 class ComplicationDataExpressionEvaluatorTest {
-    @get:Rule
-    val expect = Expect.create()
+    @get:Rule val expect = Expect.create()
 
     private val listener = mock<Consumer<WireComplicationData>>()
 
@@ -88,128 +87,172 @@
         val evaluated: List<WireComplicationData>,
     ) {
         SET_IMMEDIATELY_WHEN_ALL_DATA_AVAILABLE(
-            expressed = WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
-                .setRangedValueExpression(DynamicFloat.constant(1f))
-                .setLongText(WireComplicationText(DynamicString.constant("Long Text")))
-                .setLongTitle(WireComplicationText(DynamicString.constant("Long Title")))
-                .setShortText(WireComplicationText(DynamicString.constant("Short Text")))
-                .setShortTitle(WireComplicationText(DynamicString.constant("Short Title")))
-                .setContentDescription(WireComplicationText(DynamicString.constant("Description")))
-                .build(),
-            states = listOf(),
-            evaluated = listOf(
+            expressed =
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
-                    .setRangedValue(1f)
                     .setRangedValueExpression(DynamicFloat.constant(1f))
-                    .setLongText(
-                        WireComplicationText("Long Text", DynamicString.constant("Long Text"))
-                    )
-                    .setLongTitle(
-                        WireComplicationText("Long Title", DynamicString.constant("Long Title"))
-                    )
-                    .setShortText(
-                        WireComplicationText("Short Text", DynamicString.constant("Short Text"))
-                    )
-                    .setShortTitle(
-                        WireComplicationText("Short Title", DynamicString.constant("Short Title"))
-                    )
+                    .setLongText(WireComplicationText(DynamicString.constant("Long Text")))
+                    .setLongTitle(WireComplicationText(DynamicString.constant("Long Title")))
+                    .setShortText(WireComplicationText(DynamicString.constant("Short Text")))
+                    .setShortTitle(WireComplicationText(DynamicString.constant("Short Title")))
                     .setContentDescription(
-                        WireComplicationText("Description", DynamicString.constant("Description"))
+                        WireComplicationText(DynamicString.constant("Description"))
                     )
-                    .build()
-            ),
+                    .build(),
+            states = listOf(),
+            evaluated =
+                listOf(
+                    WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
+                        .setRangedValue(1f)
+                        .setRangedValueExpression(DynamicFloat.constant(1f))
+                        .setLongText(
+                            WireComplicationText("Long Text", DynamicString.constant("Long Text"))
+                        )
+                        .setLongTitle(
+                            WireComplicationText("Long Title", DynamicString.constant("Long Title"))
+                        )
+                        .setShortText(
+                            WireComplicationText("Short Text", DynamicString.constant("Short Text"))
+                        )
+                        .setShortTitle(
+                            WireComplicationText(
+                                "Short Title",
+                                DynamicString.constant("Short Title")
+                            )
+                        )
+                        .setContentDescription(
+                            WireComplicationText(
+                                "Description",
+                                DynamicString.constant("Description")
+                            )
+                        )
+                        .build()
+                ),
         ),
         SET_ONLY_AFTER_ALL_FIELDS_EVALUATED(
-            expressed = WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
-                .setRangedValueExpression(DynamicFloat.fromState("ranged_value"))
-                .setLongText(WireComplicationText(DynamicString.fromState("long_text")))
-                .setLongTitle(WireComplicationText(DynamicString.fromState("long_title")))
-                .setShortText(WireComplicationText(DynamicString.fromState("short_text")))
-                .setShortTitle(WireComplicationText(DynamicString.fromState("short_title")))
-                .setContentDescription(WireComplicationText(DynamicString.fromState("description")))
-                .build(),
-            states = aggregate(
-                // Each map piles on top of the previous ones.
-                mapOf("ranged_value" to StateEntryValue.fromFloat(1f)),
-                mapOf("long_text" to StateEntryValue.fromString("Long Text")),
-                mapOf("long_title" to StateEntryValue.fromString("Long Title")),
-                mapOf("short_text" to StateEntryValue.fromString("Short Text")),
-                mapOf("short_title" to StateEntryValue.fromString("Short Title")),
-                // Only the last one will trigger an evaluated data.
-                mapOf("description" to StateEntryValue.fromString("Description")),
-            ),
-            evaluated = listOf(
-                INVALID_DATA, // Before state is available.
+            expressed =
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
-                    .setRangedValue(1f)
                     .setRangedValueExpression(DynamicFloat.fromState("ranged_value"))
-                    .setLongText(
-                        WireComplicationText("Long Text", DynamicString.fromState("long_text"))
-                    )
-                    .setLongTitle(
-                        WireComplicationText("Long Title", DynamicString.fromState("long_title"))
-                    )
-                    .setShortText(
-                        WireComplicationText("Short Text", DynamicString.fromState("short_text"))
-                    )
-                    .setShortTitle(
-                        WireComplicationText("Short Title", DynamicString.fromState("short_title"))
-                    )
+                    .setLongText(WireComplicationText(DynamicString.fromState("long_text")))
+                    .setLongTitle(WireComplicationText(DynamicString.fromState("long_title")))
+                    .setShortText(WireComplicationText(DynamicString.fromState("short_text")))
+                    .setShortTitle(WireComplicationText(DynamicString.fromState("short_title")))
                     .setContentDescription(
-                        WireComplicationText("Description", DynamicString.fromState("description"))
+                        WireComplicationText(DynamicString.fromState("description"))
                     )
-                    .build()
-            ),
+                    .build(),
+            states =
+                aggregate(
+                    // Each map piles on top of the previous ones.
+                    mapOf("ranged_value" to StateEntryValue.fromFloat(1f)),
+                    mapOf("long_text" to StateEntryValue.fromString("Long Text")),
+                    mapOf("long_title" to StateEntryValue.fromString("Long Title")),
+                    mapOf("short_text" to StateEntryValue.fromString("Short Text")),
+                    mapOf("short_title" to StateEntryValue.fromString("Short Title")),
+                    // Only the last one will trigger an evaluated data.
+                    mapOf("description" to StateEntryValue.fromString("Description")),
+                ),
+            evaluated =
+                listOf(
+                    INVALID_DATA, // Before state is available.
+                    WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
+                        .setRangedValue(1f)
+                        .setRangedValueExpression(DynamicFloat.fromState("ranged_value"))
+                        .setLongText(
+                            WireComplicationText("Long Text", DynamicString.fromState("long_text"))
+                        )
+                        .setLongTitle(
+                            WireComplicationText(
+                                "Long Title",
+                                DynamicString.fromState("long_title")
+                            )
+                        )
+                        .setShortText(
+                            WireComplicationText(
+                                "Short Text",
+                                DynamicString.fromState("short_text")
+                            )
+                        )
+                        .setShortTitle(
+                            WireComplicationText(
+                                "Short Title",
+                                DynamicString.fromState("short_title")
+                            )
+                        )
+                        .setContentDescription(
+                            WireComplicationText(
+                                "Description",
+                                DynamicString.fromState("description")
+                            )
+                        )
+                        .build()
+                ),
         ),
         SET_TO_EVALUATED_IF_ALL_FIELDS_VALID(
-            expressed = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                .setShortTitle(WireComplicationText(DynamicString.fromState("valid")))
-                .setShortText(WireComplicationText(DynamicString.fromState("valid")))
-                .build(),
-            states = listOf(
-                mapOf("valid" to StateEntryValue.fromString("Valid")),
-            ),
-            evaluated = listOf(
-                INVALID_DATA, // Before state is available.
+            expressed =
                 WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                    .setShortTitle(WireComplicationText("Valid", DynamicString.fromState("valid")))
-                    .setShortText(WireComplicationText("Valid", DynamicString.fromState("valid")))
+                    .setShortTitle(WireComplicationText(DynamicString.fromState("valid")))
+                    .setShortText(WireComplicationText(DynamicString.fromState("valid")))
                     .build(),
-            ),
+            states =
+                listOf(
+                    mapOf("valid" to StateEntryValue.fromString("Valid")),
+                ),
+            evaluated =
+                listOf(
+                    INVALID_DATA, // Before state is available.
+                    WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                        .setShortTitle(
+                            WireComplicationText("Valid", DynamicString.fromState("valid"))
+                        )
+                        .setShortText(
+                            WireComplicationText("Valid", DynamicString.fromState("valid"))
+                        )
+                        .build(),
+                ),
         ),
         SET_TO_NO_DATA_IF_FIRST_STATE_IS_INVALID(
-            expressed = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                .setShortTitle(WireComplicationText(DynamicString.fromState("valid")))
-                .setShortText(WireComplicationText(DynamicString.fromState("invalid")))
-                .build(),
-            states = listOf(
-                mapOf(),
-                mapOf("valid" to StateEntryValue.fromString("Valid")),
-            ),
-            evaluated = listOf(
-                INVALID_DATA, // States invalid after one field changed to valid.
-            ),
+            expressed =
+                WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                    .setShortTitle(WireComplicationText(DynamicString.fromState("valid")))
+                    .setShortText(WireComplicationText(DynamicString.fromState("invalid")))
+                    .build(),
+            states =
+                listOf(
+                    mapOf(),
+                    mapOf("valid" to StateEntryValue.fromString("Valid")),
+                ),
+            evaluated =
+                listOf(
+                    INVALID_DATA, // States invalid after one field changed to valid.
+                ),
         ),
         SET_TO_NO_DATA_IF_LAST_STATE_IS_INVALID(
-            expressed = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                .setShortTitle(WireComplicationText(DynamicString.fromState("valid")))
-                .setShortText(WireComplicationText(DynamicString.fromState("invalid")))
-                .build(),
-            states = listOf(
-                mapOf(
-                    "valid" to StateEntryValue.fromString("Valid"),
-                    "invalid" to StateEntryValue.fromString("Valid"),
-                ),
-                mapOf("valid" to StateEntryValue.fromString("Valid")),
-            ),
-            evaluated = listOf(
-                INVALID_DATA, // Before state is available.
+            expressed =
                 WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                    .setShortTitle(WireComplicationText("Valid", DynamicString.fromState("valid")))
-                    .setShortText(WireComplicationText("Valid", DynamicString.fromState("invalid")))
+                    .setShortTitle(WireComplicationText(DynamicString.fromState("valid")))
+                    .setShortText(WireComplicationText(DynamicString.fromState("invalid")))
                     .build(),
-                INVALID_DATA, // After it was invalidated.
-            ),
+            states =
+                listOf(
+                    mapOf(
+                        "valid" to StateEntryValue.fromString("Valid"),
+                        "invalid" to StateEntryValue.fromString("Valid"),
+                    ),
+                    mapOf("valid" to StateEntryValue.fromString("Valid")),
+                ),
+            evaluated =
+                listOf(
+                    INVALID_DATA, // Before state is available.
+                    WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                        .setShortTitle(
+                            WireComplicationText("Valid", DynamicString.fromState("valid"))
+                        )
+                        .setShortText(
+                            WireComplicationText("Valid", DynamicString.fromState("invalid"))
+                        )
+                        .build(),
+                    INVALID_DATA, // After it was invalidated.
+                ),
         ),
     }
 
@@ -220,27 +263,31 @@
             val expressed = WireComplicationData.Builder(scenario.expressed).build()
             val stateStore = ObservableStateStore(mapOf())
             ComplicationDataExpressionEvaluator(
-                expressed,
-                stateStore = stateStore,
-            ).use { evaluator ->
-                val allEvaluations = evaluator.data.filterNotNull().shareIn(
-                    CoroutineScope(Dispatchers.Main),
-                    SharingStarted.Eagerly,
-                    replay = 10,
+                    expressed,
+                    stateStore = stateStore,
                 )
-                evaluator.init()
-                runUiThreadTasks() // Ensures data sharing started.
+                .use { evaluator ->
+                    val allEvaluations =
+                        evaluator.data
+                            .filterNotNull()
+                            .shareIn(
+                                CoroutineScope(Dispatchers.Main),
+                                SharingStarted.Eagerly,
+                                replay = 10,
+                            )
+                    evaluator.init()
+                    runUiThreadTasks() // Ensures data sharing started.
 
-                for (state in scenario.states) {
-                    stateStore.setStateEntryValues(state)
-                    runUiThreadTasks() // Ensures data sharing ended.
+                    for (state in scenario.states) {
+                        stateStore.setStateEntryValues(state)
+                        runUiThreadTasks() // Ensures data sharing ended.
+                    }
+
+                    expect
+                        .withMessage(scenario.name)
+                        .that(allEvaluations.replayCache)
+                        .isEqualTo(scenario.evaluated)
                 }
-
-                expect
-                    .withMessage(scenario.name)
-                    .that(allEvaluations.replayCache)
-                    .isEqualTo(scenario.evaluated)
-            }
         }
     }
 
@@ -292,28 +339,30 @@
     @Test
     fun compat_notInitialized_listenerNotInvoked() {
         ComplicationDataExpressionEvaluator.Compat(
-            DATA_WITH_NO_EXPRESSION,
-            ContextCompat.getMainExecutor(getApplicationContext()),
-            listener,
-        ).use {
-            runUiThreadTasks()
+                DATA_WITH_NO_EXPRESSION,
+                ContextCompat.getMainExecutor(getApplicationContext()),
+                listener,
+            )
+            .use {
+                runUiThreadTasks()
 
-            verify(listener, never()).accept(any())
-        }
+                verify(listener, never()).accept(any())
+            }
     }
 
     @Test
     fun compat_noExpression_listenerInvokedWithData() {
         ComplicationDataExpressionEvaluator.Compat(
-            DATA_WITH_NO_EXPRESSION,
-            ContextCompat.getMainExecutor(getApplicationContext()),
-            listener,
-        ).use { evaluator ->
-            evaluator.init()
-            runUiThreadTasks()
+                DATA_WITH_NO_EXPRESSION,
+                ContextCompat.getMainExecutor(getApplicationContext()),
+                listener,
+            )
+            .use { evaluator ->
+                evaluator.init()
+                runUiThreadTasks()
 
-            verify(listener, times(1)).accept(DATA_WITH_NO_EXPRESSION)
-        }
+                verify(listener, times(1)).accept(DATA_WITH_NO_EXPRESSION)
+            }
     }
 
     private companion object {
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/DataTest.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/DataTest.kt
index 0ed46d2..f75fff1 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/DataTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/DataTest.kt
@@ -18,8 +18,6 @@
 
 package androidx.wear.watchface.complications.data
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
-import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.annotation.SuppressLint
 import android.app.PendingIntent
 import android.content.ComponentName
@@ -29,6 +27,8 @@
 import android.graphics.Color
 import android.graphics.drawable.Icon
 import android.os.Build
+import android.support.wearable.complications.ComplicationData as WireComplicationData
+import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.util.Log
 import androidx.annotation.RequiresApi
 import androidx.test.core.app.ApplicationProvider
@@ -81,12 +81,13 @@
 
         assertThat(data).isEqualTo(NoDataComplicationData())
         assertThat(data.hashCode()).isEqualTo(NoDataComplicationData().hashCode())
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=null, tapActionLostDueToSerialization=false," +
-                " tapAction=null, validTimeRange=TimeRange(startDateTimeMillis=" +
-                "-1000000000-01-01T00:00:00Z, endDateTimeMillis=" +
-                "+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=null, tapActionLostDueToSerialization=false, " +
+                    "tapAction=null, validTimeRange=TimeRange(startDateTimeMillis=" +
+                    "-1000000000-01-01T00:00:00Z, endDateTimeMillis=" +
+                    "+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
@@ -122,15 +123,16 @@
 
     @Test
     public fun shortTextComplicationData() {
-        val data = ShortTextComplicationData.Builder(
-            "text".complicationText,
-            "content description".complicationText
-        )
-            .setTitle("title".complicationText)
-            .setDataSource(dataSource)
-            .setPersistencePolicy(ComplicationPersistencePolicies.DO_NOT_PERSIST)
-            .setDisplayPolicy(ComplicationDisplayPolicies.DO_NOT_SHOW_WHEN_DEVICE_LOCKED)
-            .build()
+        val data =
+            ShortTextComplicationData.Builder(
+                    "text".complicationText,
+                    "content description".complicationText
+                )
+                .setTitle("title".complicationText)
+                .setDataSource(dataSource)
+                .setPersistencePolicy(ComplicationPersistencePolicies.DO_NOT_PERSIST)
+                .setDisplayPolicy(ComplicationDisplayPolicies.DO_NOT_SHOW_WHEN_DEVICE_LOCKED)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
@@ -144,38 +146,40 @@
             )
         testRoundTripConversions(data)
         val deserialized = serializeAndDeserialize(data) as ShortTextComplicationData
-        assertThat(deserialized.text.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("text")
+        assertThat(deserialized.text.getTextAt(resources, Instant.EPOCH)).isEqualTo("text")
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("title")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("title")
 
-        assertThat(data.toString()).isEqualTo(
-            "ShortTextComplicationData(text=ComplicationText{mSurroundingText=text, " +
-                "mTimeDependentText=null, mExpression=null}, title=ComplicationText{" +
-                "mSurroundingText=title, mTimeDependentText=null, mExpression=null}, " +
-                "monochromaticImage=null, smallImage=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}, tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=1, displayPolicy=1)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "ShortTextComplicationData(text=ComplicationText{mSurroundingText=text, " +
+                    "mTimeDependentText=null, mExpression=null}, title=ComplicationText{" +
+                    "mSurroundingText=title, mTimeDependentText=null, mExpression=null}, " +
+                    "monochromaticImage=null, smallImage=null, " +
+                    "contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}, tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=1, " +
+                    "displayPolicy=1)"
+            )
     }
 
     @RequiresApi(Build.VERSION_CODES.P)
     @Test
     public fun shortTextComplicationData_withImages() {
-        val data = ShortTextComplicationData.Builder(
-            "text".complicationText,
-            "content description".complicationText
-        )
-            .setTitle("title".complicationText)
-            .setMonochromaticImage(monochromaticImage)
-            .setSmallImage(smallImage)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            ShortTextComplicationData.Builder(
+                    "text".complicationText,
+                    "content description".complicationText
+                )
+                .setTitle("title".complicationText)
+                .setMonochromaticImage(monochromaticImage)
+                .setSmallImage(smallImage)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
@@ -192,42 +196,41 @@
             )
         testRoundTripConversions(data)
         val deserialized = serializeAndDeserialize(data) as ShortTextComplicationData
-        assertThat(deserialized.text.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("text")
+        assertThat(deserialized.text.getTextAt(resources, Instant.EPOCH)).isEqualTo("text")
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("title")
-        assertThat(deserialized.monochromaticImage!!.image.uri.toString())
-            .isEqualTo("someuri")
-        assertThat(deserialized.smallImage!!.image.uri.toString())
-            .isEqualTo("someuri2")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("title")
+        assertThat(deserialized.monochromaticImage!!.image.uri.toString()).isEqualTo("someuri")
+        assertThat(deserialized.smallImage!!.image.uri.toString()).isEqualTo("someuri2")
         assertThat(deserialized.smallImage!!.type).isEqualTo(SmallImageType.PHOTO)
 
-        assertThat(data.toString()).isEqualTo(
-            "ShortTextComplicationData(text=ComplicationText{mSurroundingText=text, " +
-                "mTimeDependentText=null, mExpression=null}, title=ComplicationText{" +
-                "mSurroundingText=title, mTimeDependentText=null, mExpression=null}, " +
-                "monochromaticImage=MonochromaticImage(image=Icon(typ=URI uri=someuri), " +
-                "ambientImage=null), smallImage=SmallImage(image=Icon(typ=URI uri=someuri2), " +
-                "type=PHOTO, ambientImage=null), contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}, tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "ShortTextComplicationData(text=ComplicationText{mSurroundingText=text, " +
+                    "mTimeDependentText=null, mExpression=null}, title=ComplicationText{" +
+                    "mSurroundingText=title, mTimeDependentText=null, mExpression=null}, " +
+                    "monochromaticImage=MonochromaticImage(image=Icon(typ=URI uri=someuri), " +
+                    "ambientImage=null), smallImage=SmallImage(image=Icon(typ=URI uri=someuri2), " +
+                    "type=PHOTO, ambientImage=null), contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}, tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
     }
 
     @Test
     public fun longTextComplicationData() {
-        val data = LongTextComplicationData.Builder(
-            "text".complicationText,
-            "content description".complicationText
-        )
-            .setTitle("title".complicationText)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            LongTextComplicationData.Builder(
+                    "text".complicationText,
+                    "content description".complicationText
+                )
+                .setTitle("title".complicationText)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_LONG_TEXT)
@@ -241,38 +244,40 @@
             )
         testRoundTripConversions(data)
         val deserialized = serializeAndDeserialize(data) as LongTextComplicationData
-        assertThat(deserialized.text.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("text")
+        assertThat(deserialized.text.getTextAt(resources, Instant.EPOCH)).isEqualTo("text")
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("title")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("title")
 
-        assertThat(data.toString()).isEqualTo(
-            "LongTextComplicationData(text=ComplicationText{mSurroundingText=text, " +
-                "mTimeDependentText=null, mExpression=null}, title=ComplicationText{" +
-                "mSurroundingText=title, mTimeDependentText=null, mExpression=null}, " +
-                "monochromaticImage=null, smallImage=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "LongTextComplicationData(text=ComplicationText{mSurroundingText=text, " +
+                    "mTimeDependentText=null, mExpression=null}, title=ComplicationText{" +
+                    "mSurroundingText=title, mTimeDependentText=null, mExpression=null}, " +
+                    "monochromaticImage=null, smallImage=null, " +
+                    "contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
     }
 
     @RequiresApi(Build.VERSION_CODES.P)
     @Test
     public fun longTextComplicationData_withImages() {
-        val data = LongTextComplicationData.Builder(
-            "text".complicationText,
-            "content description".complicationText
-        )
-            .setTitle("title".complicationText)
-            .setMonochromaticImage(monochromaticImage)
-            .setSmallImage(smallImage)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            LongTextComplicationData.Builder(
+                    "text".complicationText,
+                    "content description".complicationText
+                )
+                .setTitle("title".complicationText)
+                .setMonochromaticImage(monochromaticImage)
+                .setSmallImage(smallImage)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_LONG_TEXT)
@@ -289,43 +294,44 @@
             )
         testRoundTripConversions(data)
         val deserialized = serializeAndDeserialize(data) as LongTextComplicationData
-        assertThat(deserialized.text.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("text")
+        assertThat(deserialized.text.getTextAt(resources, Instant.EPOCH)).isEqualTo("text")
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("title")
-        assertThat(deserialized.monochromaticImage!!.image.uri.toString())
-            .isEqualTo("someuri")
-        assertThat(deserialized.smallImage!!.image.uri.toString())
-            .isEqualTo("someuri2")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("title")
+        assertThat(deserialized.monochromaticImage!!.image.uri.toString()).isEqualTo("someuri")
+        assertThat(deserialized.smallImage!!.image.uri.toString()).isEqualTo("someuri2")
         assertThat(deserialized.smallImage!!.type).isEqualTo(SmallImageType.PHOTO)
 
-        assertThat(data.toString()).isEqualTo(
-            "LongTextComplicationData(text=ComplicationText{mSurroundingText=text, " +
-                "mTimeDependentText=null, mExpression=null}, " +
-                "title=ComplicationText{mSurroundingText=title, mTimeDependentText=null, " +
-                "mExpression=null}, monochromaticImage=MonochromaticImage(" +
-                "image=Icon(typ=URI uri=someuri), ambientImage=null), smallImage=SmallImage(" +
-                "image=Icon(typ=URI uri=someuri2), type=PHOTO, ambientImage=null), " +
-                "contentDescription=ComplicationText{mSurroundingText=content description, " +
-                "mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "LongTextComplicationData(text=ComplicationText{mSurroundingText=text, " +
+                    "mTimeDependentText=null, mExpression=null}, " +
+                    "title=ComplicationText{mSurroundingText=title, mTimeDependentText=null, " +
+                    "mExpression=null}, monochromaticImage=MonochromaticImage(" +
+                    "image=Icon(typ=URI uri=someuri), ambientImage=null), smallImage=SmallImage(" +
+                    "image=Icon(typ=URI uri=someuri2), type=PHOTO, ambientImage=null), " +
+                    "contentDescription=ComplicationText{mSurroundingText=content description, " +
+                    "mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
     }
 
     @Test
     public fun rangedValueComplicationData_withFixedValue() {
-        val data = RangedValueComplicationData.Builder(
-            value = 95f, min = 0f, max = 100f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("battery".complicationText)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            RangedValueComplicationData.Builder(
+                    value = 95f,
+                    min = 0f,
+                    max = 100f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("battery".complicationText)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_RANGED_VALUE)
@@ -348,34 +354,35 @@
         assertThat(deserialized.valueExpression).isNull()
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("battery")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("battery")
 
-        assertThat(data.toString()).isEqualTo(
-            "RangedValueComplicationData(value=95.0, valueExpression=null, valueType=0, " +
-                "min=0.0, max=100.0, monochromaticImage=null, smallImage=null, " +
-                "title=ComplicationText{mSurroundingText=battery, mTimeDependentText=null, " +
-                "mExpression=null}, text=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "RangedValueComplicationData(value=95.0, valueExpression=null, valueType=0, " +
+                    "min=0.0, max=100.0, monochromaticImage=null, smallImage=null, " +
+                    "title=ComplicationText{mSurroundingText=battery, mTimeDependentText=null, " +
+                    "mExpression=null}, text=null, contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun rangedValueComplicationData_withValueExpression() {
-        val data = RangedValueComplicationData.Builder(
-            valueExpression = DynamicFloat.constant(20f),
-            min = 5f,
-            max = 100f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("battery".complicationText)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            RangedValueComplicationData.Builder(
+                    valueExpression = DynamicFloat.constant(20f),
+                    min = 5f,
+                    max = 100f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("battery".complicationText)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_RANGED_VALUE)
@@ -400,33 +407,36 @@
         assertThat(deserialized.value).isEqualTo(5f) // min as a sensible default
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("battery")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("battery")
 
-        assertThat(data.toString()).isEqualTo(
-            "RangedValueComplicationData(value=5.0, " +
-                "valueExpression=FixedFloat{value=20.0}, valueType=0, min=5.0, " +
-                "max=100.0, monochromaticImage=null, smallImage=null, title=ComplicationText{" +
-                "mSurroundingText=battery, mTimeDependentText=null, mExpression=null}, " +
-                "text=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), dataSource=" +
-                "ComponentInfo{com.pkg_a/com.a}, colorRamp=null, persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "RangedValueComplicationData(value=5.0, " +
+                    "valueExpression=FixedFloat{value=20.0}, valueType=0, min=5.0, " +
+                    "max=100.0, monochromaticImage=null, smallImage=null, title=ComplicationText{" +
+                    "mSurroundingText=battery, mTimeDependentText=null, mExpression=null}, " +
+                    "text=null, contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), dataSource=" +
+                    "ComponentInfo{com.pkg_a/com.a}, colorRamp=null, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
     }
 
     @Test
     public fun rangedValueComplicationData_withStringExpression() {
-        val data = RangedValueComplicationData.Builder(
-            value = 95f, min = 0f, max = 100f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle(ComplicationTextExpression(DynamicString.constant("title")))
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            RangedValueComplicationData.Builder(
+                    value = 95f,
+                    min = 0f,
+                    max = 100f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle(ComplicationTextExpression(DynamicString.constant("title")))
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_RANGED_VALUE)
@@ -449,34 +459,38 @@
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "RangedValueComplicationData(value=95.0, valueExpression=null, valueType=0, " +
-                "min=0.0, max=100.0, monochromaticImage=null, smallImage=null, " +
-                "title=ComplicationText{mSurroundingText=(null), mTimeDependentText=null, " +
-                "mExpression=FixedString{value=title}}, text=null, " +
-                "contentDescription=ComplicationText{mSurroundingText=content description, " +
-                "mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "RangedValueComplicationData(value=95.0, valueExpression=null, valueType=0, " +
+                    "min=0.0, max=100.0, monochromaticImage=null, smallImage=null, " +
+                    "title=ComplicationText{mSurroundingText=(null), mTimeDependentText=null, " +
+                    "mExpression=FixedString{value=title}}, text=null, " +
+                    "contentDescription=ComplicationText{mSurroundingText=content description, " +
+                    "mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @RequiresApi(Build.VERSION_CODES.P)
     @Test
     public fun rangedValueComplicationData_withImages() {
-        val data = RangedValueComplicationData.Builder(
-            value = 95f, min = 0f, max = 100f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("battery".complicationText)
-            .setMonochromaticImage(monochromaticImage)
-            .setSmallImage(smallImage)
-            .setDataSource(dataSource)
-            .setValueType(RangedValueComplicationData.TYPE_RATING)
-            .build()
+        val data =
+            RangedValueComplicationData.Builder(
+                    value = 95f,
+                    min = 0f,
+                    max = 100f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("battery".complicationText)
+                .setMonochromaticImage(monochromaticImage)
+                .setSmallImage(smallImage)
+                .setDataSource(dataSource)
+                .setValueType(RangedValueComplicationData.TYPE_RATING)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_RANGED_VALUE)
@@ -501,40 +515,41 @@
         assertThat(deserialized.value).isEqualTo(95f)
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("battery")
-        assertThat(deserialized.monochromaticImage!!.image.uri.toString())
-            .isEqualTo("someuri")
-        assertThat(deserialized.smallImage!!.image.uri.toString())
-            .isEqualTo("someuri2")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("battery")
+        assertThat(deserialized.monochromaticImage!!.image.uri.toString()).isEqualTo("someuri")
+        assertThat(deserialized.smallImage!!.image.uri.toString()).isEqualTo("someuri2")
         assertThat(deserialized.smallImage!!.type).isEqualTo(SmallImageType.PHOTO)
 
-        assertThat(data.toString()).isEqualTo(
-            "RangedValueComplicationData(value=95.0, valueExpression=null, " +
-                "valueType=1, min=0.0, max=100.0, " +
-                "monochromaticImage=MonochromaticImage(image=Icon(typ=URI uri=someuri), " +
-                "ambientImage=null), smallImage=SmallImage(image=Icon(typ=URI uri=someuri2), " +
-                "type=PHOTO, ambientImage=null), title=ComplicationText{mSurroundingText=battery," +
-                " mTimeDependentText=null, mExpression=null}, text=null, " +
-                "contentDescription=ComplicationText{mSurroundingText=content description, " +
-                "mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "RangedValueComplicationData(value=95.0, valueExpression=null, " +
+                    "valueType=1, min=0.0, max=100.0, " +
+                    "monochromaticImage=MonochromaticImage(image=Icon(typ=URI uri=someuri), " +
+                    "ambientImage=null), smallImage=SmallImage(image=Icon(typ=URI uri=someuri2), " +
+                    "type=PHOTO, ambientImage=null), " +
+                    "title=ComplicationText{mSurroundingText=battery, " +
+                    "mTimeDependentText=null, mExpression=null}, text=null, " +
+                    "contentDescription=ComplicationText{mSurroundingText=content description, " +
+                    "mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun goalProgressComplicationData_withFixedValue() {
-        val data = GoalProgressComplicationData.Builder(
-            value = 1200f, targetValue = 10000f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("steps".complicationText)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            GoalProgressComplicationData.Builder(
+                    value = 1200f,
+                    targetValue = 10000f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("steps".complicationText)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_GOAL_PROGRESS)
@@ -554,33 +569,34 @@
         assertThat(deserialized.targetValue).isEqualTo(10000f)
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("steps")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("steps")
 
-        assertThat(data.toString()).isEqualTo(
-            "GoalProgressComplicationData(value=1200.0, valueExpression=null, " +
-                "targetValue=10000.0, monochromaticImage=null, smallImage=null, " +
-                "title=ComplicationText{mSurroundingText=steps, mTimeDependentText=null, " +
-                "mExpression=null}, text=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "GoalProgressComplicationData(value=1200.0, valueExpression=null, " +
+                    "targetValue=10000.0, monochromaticImage=null, smallImage=null, " +
+                    "title=ComplicationText{mSurroundingText=steps, mTimeDependentText=null, " +
+                    "mExpression=null}, text=null, contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun goalProgressComplicationData_withValueExpression() {
-        val data = GoalProgressComplicationData.Builder(
-            valueExpression = DynamicFloat.constant(10f),
-            targetValue = 10000f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("steps".complicationText)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            GoalProgressComplicationData.Builder(
+                    valueExpression = DynamicFloat.constant(10f),
+                    targetValue = 10000f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("steps".complicationText)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_GOAL_PROGRESS)
@@ -602,34 +618,37 @@
         assertThat(deserialized.targetValue).isEqualTo(10000f)
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("steps")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("steps")
 
-        assertThat(data.toString()).isEqualTo(
-            "GoalProgressComplicationData(value=0.0, valueExpression=" +
-                "FixedFloat{value=10.0}, targetValue=10000.0, " +
-                "monochromaticImage=null, smallImage=null, title=ComplicationText{" +
-                "mSurroundingText=steps, mTimeDependentText=null, mExpression=null}, " +
-                "text=null, contentDescription=ComplicationText{mSurroundingText=content " +
-                "description, mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, validTimeRange=TimeRange(" +
-                "startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "GoalProgressComplicationData(value=0.0, valueExpression=" +
+                    "FixedFloat{value=10.0}, targetValue=10000.0, " +
+                    "monochromaticImage=null, smallImage=null, title=ComplicationText{" +
+                    "mSurroundingText=steps, mTimeDependentText=null, mExpression=null}, " +
+                    "text=null, contentDescription=ComplicationText{mSurroundingText=content " +
+                    "description, mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(" +
+                    "startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun goalProgressComplicationData_withColorRamp() {
-        val data = GoalProgressComplicationData.Builder(
-            value = 1200f, targetValue = 10000f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("steps".complicationText)
-            .setDataSource(dataSource)
-            .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
-            .build()
+        val data =
+            GoalProgressComplicationData.Builder(
+                    value = 1200f,
+                    targetValue = 10000f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("steps".complicationText)
+                .setDataSource(dataSource)
+                .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_GOAL_PROGRESS)
@@ -650,36 +669,39 @@
         assertThat(deserialized.targetValue).isEqualTo(10000f)
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("steps")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("steps")
 
-        assertThat(data.toString()).isEqualTo(
-            "GoalProgressComplicationData(value=1200.0, valueExpression=null, " +
-                "targetValue=10000.0, monochromaticImage=null, smallImage=null, " +
-                "title=ComplicationText{mSurroundingText=steps, mTimeDependentText=null, " +
-                "mExpression=null}, text=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=ColorRamp(colors=[-65536, " +
-                "-16711936, -16776961], interpolated=true), persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "GoalProgressComplicationData(value=1200.0, valueExpression=null, " +
+                    "targetValue=10000.0, monochromaticImage=null, smallImage=null, " +
+                    "title=ComplicationText{mSurroundingText=steps, mTimeDependentText=null, " +
+                    "mExpression=null}, text=null, contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, " +
+                    "colorRamp=ColorRamp(colors=[-65536, -16711936, -16776961], " +
+                    "interpolated=true), persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @RequiresApi(Build.VERSION_CODES.P)
     @Test
     public fun goalProgressComplicationData_withColorRampAndImages() {
-        val data = GoalProgressComplicationData.Builder(
-            value = 1200f, targetValue = 10000f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("steps".complicationText)
-            .setMonochromaticImage(monochromaticImage)
-            .setSmallImage(smallImage)
-            .setDataSource(dataSource)
-            .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
-            .build()
+        val data =
+            GoalProgressComplicationData.Builder(
+                    value = 1200f,
+                    targetValue = 10000f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("steps".complicationText)
+                .setMonochromaticImage(monochromaticImage)
+                .setSmallImage(smallImage)
+                .setDataSource(dataSource)
+                .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_GOAL_PROGRESS)
@@ -703,41 +725,44 @@
         assertThat(deserialized.targetValue).isEqualTo(10000f)
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("steps")
-        assertThat(deserialized.monochromaticImage!!.image.uri.toString())
-            .isEqualTo("someuri")
-        assertThat(deserialized.smallImage!!.image.uri.toString())
-            .isEqualTo("someuri2")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("steps")
+        assertThat(deserialized.monochromaticImage!!.image.uri.toString()).isEqualTo("someuri")
+        assertThat(deserialized.smallImage!!.image.uri.toString()).isEqualTo("someuri2")
         assertThat(deserialized.smallImage!!.type).isEqualTo(SmallImageType.PHOTO)
 
-        assertThat(data.toString()).isEqualTo(
-            "GoalProgressComplicationData(value=1200.0, valueExpression=null, " +
-                "targetValue=10000.0, " +
-                "monochromaticImage=MonochromaticImage(image=Icon(typ=URI uri=someuri), " +
-                "ambientImage=null), smallImage=SmallImage(image=Icon(typ=URI uri=someuri2), " +
-                "type=PHOTO, ambientImage=null), title=ComplicationText{mSurroundingText=steps, " +
-                "mTimeDependentText=null, mExpression=null}, text=null, " +
-                "contentDescription=ComplicationText{mSurroundingText=content description, " +
-                "mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=ColorRamp(colors=[-65536, " +
-                "-16711936, -16776961], interpolated=true), persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "GoalProgressComplicationData(value=1200.0, valueExpression=null, " +
+                    "targetValue=10000.0, " +
+                    "monochromaticImage=MonochromaticImage(image=Icon(typ=URI uri=someuri), " +
+                    "ambientImage=null), smallImage=SmallImage(image=Icon(typ=URI uri=someuri2), " +
+                    "type=PHOTO, ambientImage=null), " +
+                    "title=ComplicationText{mSurroundingText=steps, " +
+                    "mTimeDependentText=null, mExpression=null}, text=null, " +
+                    "contentDescription=ComplicationText{mSurroundingText=content description, " +
+                    "mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, " +
+                    "colorRamp=ColorRamp(colors=[-65536, -16711936, -16776961], " +
+                    "interpolated=true), persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun rangedValueComplicationData_withColorRamp() {
-        val data = RangedValueComplicationData.Builder(
-            value = 95f, min = 0f, max = 100f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("battery".complicationText)
-            .setDataSource(dataSource)
-            .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
-            .build()
+        val data =
+            RangedValueComplicationData.Builder(
+                    value = 95f,
+                    min = 0f,
+                    max = 100f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("battery".complicationText)
+                .setDataSource(dataSource)
+                .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_RANGED_VALUE)
@@ -761,52 +786,55 @@
         assertThat(deserialized.value).isEqualTo(95f)
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("battery")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("battery")
 
-        assertThat(data.toString()).isEqualTo(
-            "RangedValueComplicationData(value=95.0, valueExpression=null, " +
-                "valueType=0, min=0.0, max=100.0, " +
-                "monochromaticImage=null, smallImage=null, title=ComplicationText{" +
-                "mSurroundingText=battery, mTimeDependentText=null, mExpression=null}, " +
-                "text=null, contentDescription=ComplicationText{mSurroundingText=content " +
-                "description, mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=ColorRamp(colors=[-65536, " +
-                "-16711936, -16776961], interpolated=true), persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "RangedValueComplicationData(value=95.0, valueExpression=null, " +
+                    "valueType=0, min=0.0, max=100.0, " +
+                    "monochromaticImage=null, smallImage=null, title=ComplicationText{" +
+                    "mSurroundingText=battery, mTimeDependentText=null, mExpression=null}, " +
+                    "text=null, contentDescription=ComplicationText{mSurroundingText=content " +
+                    "description, mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, " +
+                    "colorRamp=ColorRamp(colors=[-65536, -16711936, -16776961], " +
+                    "interpolated=true), persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     fun weightedElementsComplicationDataTruncation() {
-        val data = WeightedElementsComplicationData.Builder(
-            MutableList(WeightedElementsComplicationData.getMaxElements() + 5) {
-                WeightedElementsComplicationData.Element(0.5f, Color.RED)
-            },
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("test".complicationText)
-            .build()
+        val data =
+            WeightedElementsComplicationData.Builder(
+                    MutableList(WeightedElementsComplicationData.getMaxElements() + 5) {
+                        WeightedElementsComplicationData.Element(0.5f, Color.RED)
+                    },
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("test".complicationText)
+                .build()
 
         assertThat(data.elements.size).isEqualTo(WeightedElementsComplicationData.getMaxElements())
     }
 
     @Test
     public fun weightedElementsComplicationData() {
-        val data = WeightedElementsComplicationData.Builder(
-            listOf(
-                WeightedElementsComplicationData.Element(0.5f, Color.RED),
-                WeightedElementsComplicationData.Element(1f, Color.GREEN),
-                WeightedElementsComplicationData.Element(2f, Color.BLUE),
-            ),
-            contentDescription = "content description".complicationText
-        )
-            .setElementBackgroundColor(Color.GRAY)
-            .setTitle("calories".complicationText)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            WeightedElementsComplicationData.Builder(
+                    listOf(
+                        WeightedElementsComplicationData.Element(0.5f, Color.RED),
+                        WeightedElementsComplicationData.Element(1f, Color.GREEN),
+                        WeightedElementsComplicationData.Element(2f, Color.BLUE),
+                    ),
+                    contentDescription = "content description".complicationText
+                )
+                .setElementBackgroundColor(Color.GRAY)
+                .setTitle("calories".complicationText)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_WEIGHTED_ELEMENTS)
@@ -822,48 +850,51 @@
             )
         testRoundTripConversions(data)
         val deserialized = serializeAndDeserialize(data) as WeightedElementsComplicationData
-        assertThat(deserialized.elements).isEqualTo(
-            listOf(
-                WeightedElementsComplicationData.Element(0.5f, Color.RED),
-                WeightedElementsComplicationData.Element(1f, Color.GREEN),
-                WeightedElementsComplicationData.Element(2f, Color.BLUE),
+        assertThat(deserialized.elements)
+            .isEqualTo(
+                listOf(
+                    WeightedElementsComplicationData.Element(0.5f, Color.RED),
+                    WeightedElementsComplicationData.Element(1f, Color.GREEN),
+                    WeightedElementsComplicationData.Element(2f, Color.BLUE),
+                )
             )
-        )
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("calories")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("calories")
 
-        assertThat(data.toString()).isEqualTo(
-            "WeightedElementsComplicationData(elements=Element(color=-65536, weight=0.5)," +
-                " Element(color=-16711936, weight=1.0), Element(color=-16776961, weight=2.0), " +
-                "elementBackgroundColor=-7829368, monochromaticImage=null, smallImage=null, " +
-                "title=ComplicationText{mSurroundingText=calories, mTimeDependentText=null, " +
-                "mExpression=null}, text=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "WeightedElementsComplicationData(elements=Element(color=-65536, weight=0.5), " +
+                    "Element(color=-16711936, weight=1.0), Element(color=-16776961, weight=2.0), " +
+                    "elementBackgroundColor=-7829368, monochromaticImage=null, smallImage=null, " +
+                    "title=ComplicationText{mSurroundingText=calories, mTimeDependentText=null, " +
+                    "mExpression=null}, text=null, contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
     }
 
     @RequiresApi(Build.VERSION_CODES.P)
     @Test
     public fun weightedElementsComplicationData_withImages() {
-        val data = WeightedElementsComplicationData.Builder(
-            listOf(
-                WeightedElementsComplicationData.Element(0.5f, Color.RED),
-                WeightedElementsComplicationData.Element(1f, Color.GREEN),
-                WeightedElementsComplicationData.Element(2f, Color.BLUE),
-            ),
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("calories".complicationText)
-            .setMonochromaticImage(monochromaticImage)
-            .setSmallImage(smallImage)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            WeightedElementsComplicationData.Builder(
+                    listOf(
+                        WeightedElementsComplicationData.Element(0.5f, Color.RED),
+                        WeightedElementsComplicationData.Element(1f, Color.GREEN),
+                        WeightedElementsComplicationData.Element(2f, Color.BLUE),
+                    ),
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("calories".complicationText)
+                .setMonochromaticImage(monochromaticImage)
+                .setSmallImage(smallImage)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_WEIGHTED_ELEMENTS)
@@ -882,46 +913,50 @@
             )
         testRoundTripConversions(data)
         val deserialized = serializeAndDeserialize(data) as WeightedElementsComplicationData
-        assertThat(deserialized.elements).isEqualTo(
-            listOf(
-                WeightedElementsComplicationData.Element(0.5f, Color.RED),
-                WeightedElementsComplicationData.Element(1f, Color.GREEN),
-                WeightedElementsComplicationData.Element(2f, Color.BLUE),
+        assertThat(deserialized.elements)
+            .isEqualTo(
+                listOf(
+                    WeightedElementsComplicationData.Element(0.5f, Color.RED),
+                    WeightedElementsComplicationData.Element(1f, Color.GREEN),
+                    WeightedElementsComplicationData.Element(2f, Color.BLUE),
+                )
             )
-        )
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
-        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH))
-            .isEqualTo("calories")
-        assertThat(deserialized.monochromaticImage!!.image.uri.toString())
-            .isEqualTo("someuri")
-        assertThat(deserialized.smallImage!!.image.uri.toString())
-            .isEqualTo("someuri2")
+        assertThat(deserialized.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo("calories")
+        assertThat(deserialized.monochromaticImage!!.image.uri.toString()).isEqualTo("someuri")
+        assertThat(deserialized.smallImage!!.image.uri.toString()).isEqualTo("someuri2")
         assertThat(deserialized.smallImage!!.type).isEqualTo(SmallImageType.PHOTO)
 
-        assertThat(data.toString()).isEqualTo(
-            "WeightedElementsComplicationData(elements=Element(color=-65536, weight=0.5)," +
-                " Element(color=-16711936, weight=1.0), Element(color=-16776961, weight=2.0), " +
-                "elementBackgroundColor=0, monochromaticImage=MonochromaticImage(" +
-                "image=Icon(typ=URI uri=someuri), ambientImage=null), " +
-                "smallImage=SmallImage(image=Icon(typ=URI uri=someuri2), type=PHOTO, " +
-                "ambientImage=null), title=ComplicationText{mSurroundingText=calories, " +
-                "mTimeDependentText=null, mExpression=null}, text=null, " +
-                "contentDescription=ComplicationText{mSurroundingText=content description, " +
-                "mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "WeightedElementsComplicationData(elements=Element(color=-65536, weight=0.5), " +
+                    "Element(color=-16711936, weight=1.0), Element(color=-16776961, weight=2.0), " +
+                    "elementBackgroundColor=0, monochromaticImage=MonochromaticImage(" +
+                    "image=Icon(typ=URI uri=someuri), ambientImage=null), " +
+                    "smallImage=SmallImage(image=Icon(typ=URI uri=someuri2), type=PHOTO, " +
+                    "ambientImage=null), title=ComplicationText{mSurroundingText=calories, " +
+                    "mTimeDependentText=null, mExpression=null}, text=null, " +
+                    "contentDescription=ComplicationText{mSurroundingText=content description, " +
+                    "mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
     }
 
     @RequiresApi(Build.VERSION_CODES.P)
     @Test
     public fun monochromaticImageComplicationData() {
-        val data = MonochromaticImageComplicationData.Builder(
-            image, "content description".complicationText
-        ).setDataSource(dataSource).build()
+        val data =
+            MonochromaticImageComplicationData.Builder(
+                    image,
+                    "content description".complicationText
+                )
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_ICON)
@@ -934,29 +969,32 @@
             )
         testRoundTripConversions(data)
         val deserialized = serializeAndDeserialize(data) as MonochromaticImageComplicationData
-        assertThat(deserialized.monochromaticImage.image.uri.toString())
-            .isEqualTo("someuri")
+        assertThat(deserialized.monochromaticImage.image.uri.toString()).isEqualTo("someuri")
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "MonochromaticImageComplicationData(monochromaticImage=MonochromaticImage(" +
-                "image=Icon(typ=URI uri=someuri), ambientImage=null), contentDescription=" +
-                "ComplicationText{mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "MonochromaticImageComplicationData(monochromaticImage=MonochromaticImage(" +
+                    "image=Icon(typ=URI uri=someuri), ambientImage=null), contentDescription=" +
+                    "ComplicationText{mSurroundingText=content description, " +
+                    "mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
     }
 
     @RequiresApi(Build.VERSION_CODES.P)
     @Test
     public fun smallImageComplicationData() {
         val image = SmallImage.Builder(icon, SmallImageType.PHOTO).build()
-        val data = SmallImageComplicationData.Builder(
-            image, "content description".complicationText
-        ).setDataSource(dataSource).build()
+        val data =
+            SmallImageComplicationData.Builder(image, "content description".complicationText)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_SMALL_IMAGE)
@@ -970,22 +1008,23 @@
             )
         testRoundTripConversions(data)
         val deserialized = serializeAndDeserialize(data) as SmallImageComplicationData
-        assertThat(deserialized.smallImage.image.uri.toString())
-            .isEqualTo("someuri")
+        assertThat(deserialized.smallImage.image.uri.toString()).isEqualTo("someuri")
         assertThat(deserialized.smallImage.type).isEqualTo(SmallImageType.PHOTO)
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "SmallImageComplicationData(smallImage=SmallImage(image=Icon(" +
-                "typ=URI uri=someuri), type=PHOTO, ambientImage=null), " +
-                "contentDescription=ComplicationText{mSurroundingText=content description, " +
-                "mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "SmallImageComplicationData(smallImage=SmallImage(image=Icon(" +
+                    "typ=URI uri=someuri), type=PHOTO, ambientImage=null), " +
+                    "contentDescription=ComplicationText{mSurroundingText=content description, " +
+                    "mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
     }
 
     @RequiresApi(Build.VERSION_CODES.P)
@@ -994,9 +1033,10 @@
         val bitmapIcon =
             Icon.createWithBitmap(Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888))
         val image = SmallImage.Builder(bitmapIcon, SmallImageType.PHOTO).build()
-        val data = SmallImageComplicationData.Builder(
-            image, "content description".complicationText
-        ).setDataSource(dataSource).build()
+        val data =
+            SmallImageComplicationData.Builder(image, "content description".complicationText)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_SMALL_IMAGE)
@@ -1025,9 +1065,10 @@
     @Test
     public fun backgroundImageComplicationData() {
         val photoImage = Icon.createWithContentUri("someuri")
-        val data = PhotoImageComplicationData.Builder(
-            photoImage, "content description".complicationText
-        ).setDataSource(dataSource).build()
+        val data =
+            PhotoImageComplicationData.Builder(photoImage, "content description".complicationText)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_LARGE_IMAGE)
@@ -1040,28 +1081,30 @@
             )
         testRoundTripConversions(data)
         val deserialized = serializeAndDeserialize(data) as PhotoImageComplicationData
-        assertThat(deserialized.photoImage.uri.toString())
-            .isEqualTo("someuri")
+        assertThat(deserialized.photoImage.uri.toString()).isEqualTo("someuri")
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "PhotoImageComplicationData(photoImage=Icon(typ=URI uri=someuri), " +
-                "contentDescription=ComplicationText{mSurroundingText=content description, " +
-                "mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "PhotoImageComplicationData(photoImage=Icon(typ=URI uri=someuri), " +
+                    "contentDescription=ComplicationText{mSurroundingText=content description, " +
+                    "mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noPermissionComplicationData() {
-        val data = NoPermissionComplicationData.Builder()
-            .setText("needs location".complicationText)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            NoPermissionComplicationData.Builder()
+                .setText("needs location".complicationText)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_PERMISSION)
@@ -1076,25 +1119,29 @@
         assertThat(deserialized.text!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("needs location")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoPermissionComplicationData(text=ComplicationText{mSurroundingText=needs location, " +
-                "mTimeDependentText=null, mExpression=null}, title=null, " +
-                "monochromaticImage=null, smallImage=null, tapActionLostDueToSerialization=false," +
-                " tapAction=null, validTimeRange=TimeRange(startDateTimeMillis=" +
-                "-1000000000-01-01T00:00:00Z, endDateTimeMillis=" +
-                "+1000000000-12-31T23:59:59.999999999Z), dataSource=ComponentInfo{" +
-                "com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoPermissionComplicationData(text=ComplicationText{" +
+                    "mSurroundingText=needs location, " +
+                    "mTimeDependentText=null, mExpression=null}, title=null, " +
+                    "monochromaticImage=null, smallImage=null, " +
+                    "tapActionLostDueToSerialization=false, " +
+                    "tapAction=null, validTimeRange=TimeRange(startDateTimeMillis=" +
+                    "-1000000000-01-01T00:00:00Z, endDateTimeMillis=" +
+                    "+1000000000-12-31T23:59:59.999999999Z), dataSource=ComponentInfo{" +
+                    "com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noPermissionComplicationData_withImages() {
-        val data = NoPermissionComplicationData.Builder()
-            .setText("needs location".complicationText)
-            .setMonochromaticImage(monochromaticImage)
-            .setSmallImage(smallImage)
-            .setDataSource(dataSource)
-            .build()
+        val data =
+            NoPermissionComplicationData.Builder()
+                .setText("needs location".complicationText)
+                .setMonochromaticImage(monochromaticImage)
+                .setSmallImage(smallImage)
+                .setDataSource(dataSource)
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_PERMISSION)
@@ -1112,31 +1159,35 @@
         assertThat(deserialized.text!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("needs location")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoPermissionComplicationData(text=ComplicationText{" +
-                "mSurroundingText=needs location, mTimeDependentText=null, " +
-                "mExpression=null}, title=null, monochromaticImage=MonochromaticImage(" +
-                "image=Icon(typ=URI uri=someuri), ambientImage=null), smallImage=SmallImage(" +
-                "image=Icon(typ=URI uri=someuri2), type=PHOTO, ambientImage=null), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, validTimeRange=TimeRange(" +
-                "startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoPermissionComplicationData(text=ComplicationText{" +
+                    "mSurroundingText=needs location, mTimeDependentText=null, " +
+                    "mExpression=null}, title=null, monochromaticImage=MonochromaticImage(" +
+                    "image=Icon(typ=URI uri=someuri), ambientImage=null), smallImage=SmallImage(" +
+                    "image=Icon(typ=URI uri=someuri2), type=PHOTO, ambientImage=null), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(" +
+                    "startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noDataComplicationData_shortText() {
-        val data = NoDataComplicationData(
-            ShortTextComplicationData.Builder(
-                ComplicationText.PLACEHOLDER,
-                "content description".complicationText
+        val data =
+            NoDataComplicationData(
+                ShortTextComplicationData.Builder(
+                        ComplicationText.PLACEHOLDER,
+                        "content description".complicationText
+                    )
+                    .setTitle(ComplicationText.PLACEHOLDER)
+                    .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
+                    .setDataSource(dataSource)
+                    .build()
             )
-                .setTitle(ComplicationText.PLACEHOLDER)
-                .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
-                .setDataSource(dataSource)
-                .build()
-        )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -1162,34 +1213,38 @@
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=ShortTextComplicationData(text=" +
-                "ComplicationText{mSurroundingText=__placeholder__, mTimeDependentText=null, " +
-                "mExpression=null}, title=ComplicationText{" +
-                "mSurroundingText=__placeholder__, mTimeDependentText=null, " +
-                "mExpression=null}, monochromaticImage=MonochromaticImage(" +
-                "image=Icon(typ=RESOURCE pkg= id=0xffffffff), ambientImage=null), " +
-                "smallImage=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}, tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
-                "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=ShortTextComplicationData(text=" +
+                    "ComplicationText{mSurroundingText=__placeholder__, mTimeDependentText=null, " +
+                    "mExpression=null}, title=ComplicationText{" +
+                    "mSurroundingText=__placeholder__, mTimeDependentText=null, " +
+                    "mExpression=null}, monochromaticImage=MonochromaticImage(" +
+                    "image=Icon(typ=RESOURCE pkg= id=0xffffffff), ambientImage=null), " +
+                    "smallImage=null, contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}, tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noDataComplicationData_longText() {
-        val data = NoDataComplicationData(
-            LongTextComplicationData.Builder(
-                "text".complicationText,
-                "content description".complicationText
-            ).setDataSource(dataSource).build()
-        )
+        val data =
+            NoDataComplicationData(
+                LongTextComplicationData.Builder(
+                        "text".complicationText,
+                        "content description".complicationText
+                    )
+                    .setDataSource(dataSource)
+                    .build()
+            )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -1213,36 +1268,38 @@
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=LongTextComplicationData(" +
-                "text=ComplicationText{mSurroundingText=text, mTimeDependentText=null, " +
-                "mExpression=null}, title=null, monochromaticImage=null, smallImage=null, " +
-                "contentDescription=ComplicationText{mSurroundingText=content description, " +
-                "mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
-                "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=LongTextComplicationData(" +
+                    "text=ComplicationText{mSurroundingText=text, mTimeDependentText=null, " +
+                    "mExpression=null}, title=null, monochromaticImage=null, smallImage=null, " +
+                    "contentDescription=ComplicationText{mSurroundingText=content description, " +
+                    "mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noDataComplicationData_rangedValue() {
-        val data = NoDataComplicationData(
-            RangedValueComplicationData.Builder(
-                value = RangedValueComplicationData.PLACEHOLDER,
-                min = 0f,
-                max = 100f,
-                "content description".complicationText
+        val data =
+            NoDataComplicationData(
+                RangedValueComplicationData.Builder(
+                        value = RangedValueComplicationData.PLACEHOLDER,
+                        min = 0f,
+                        max = 100f,
+                        "content description".complicationText
+                    )
+                    .setText(ComplicationText.PLACEHOLDER)
+                    .setDataSource(dataSource)
+                    .build()
             )
-                .setText(ComplicationText.PLACEHOLDER)
-                .setDataSource(dataSource)
-                .build()
-        )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -1270,37 +1327,40 @@
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=RangedValueComplicationData(" +
-                "value=3.4028235E38, valueExpression=null, valueType=0, min=0.0, max=100.0, " +
-                "monochromaticImage=null, smallImage=null, title=null, text=ComplicationText{" +
-                "mSurroundingText=__placeholder__, mTimeDependentText=null, " +
-                "mExpression=null}, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, persistencePolicy=0, " +
-                "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=RangedValueComplicationData(" +
+                    "value=3.4028235E38, valueExpression=null, valueType=0, min=0.0, max=100.0, " +
+                    "monochromaticImage=null, smallImage=null, title=null, text=ComplicationText{" +
+                    "mSurroundingText=__placeholder__, mTimeDependentText=null, " +
+                    "mExpression=null}, contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=null, " +
+                    "persistencePolicy=0, " +
+                    "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noDataComplicationData_goalProgress() {
-        val data = NoDataComplicationData(
-            GoalProgressComplicationData.Builder(
-                value = GoalProgressComplicationData.PLACEHOLDER,
-                targetValue = 10000f,
-                contentDescription = "content description".complicationText
+        val data =
+            NoDataComplicationData(
+                GoalProgressComplicationData.Builder(
+                        value = GoalProgressComplicationData.PLACEHOLDER,
+                        targetValue = 10000f,
+                        contentDescription = "content description".complicationText
+                    )
+                    .setText(ComplicationText.PLACEHOLDER)
+                    .setDataSource(dataSource)
+                    .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), false))
+                    .build()
             )
-                .setText(ComplicationText.PLACEHOLDER)
-                .setDataSource(dataSource)
-                .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), false))
-                .build()
-        )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -1328,42 +1388,45 @@
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=GoalProgressComplicationData(" +
-                "value=3.4028235E38, valueExpression=null, targetValue=10000.0, " +
-                "monochromaticImage=null, smallImage=null, title=null, text=ComplicationText{" +
-                "mSurroundingText=__placeholder__, mTimeDependentText=null, " +
-                "mExpression=null}, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, " +
-                "colorRamp=ColorRamp(colors=[-65536, -16711936, -16776961], interpolated=false), " +
-                "persistencePolicy=0, displayPolicy=0), tapActionLostDueToSerialization=false, " +
-                "tapAction=null, validTimeRange=TimeRange(startDateTimeMillis=" +
-                "-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=GoalProgressComplicationData(" +
+                    "value=3.4028235E38, valueExpression=null, targetValue=10000.0, " +
+                    "monochromaticImage=null, smallImage=null, title=null, text=ComplicationText{" +
+                    "mSurroundingText=__placeholder__, mTimeDependentText=null, " +
+                    "mExpression=null}, contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, " +
+                    "colorRamp=ColorRamp(colors=[-65536, -16711936, -16776961], " +
+                    "interpolated=false), persistencePolicy=0, displayPolicy=0), " +
+                    "tapActionLostDueToSerialization=false, " +
+                    "tapAction=null, validTimeRange=TimeRange(startDateTimeMillis=" +
+                    "-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noDataComplicationData_weightedElements() {
-        val data = NoDataComplicationData(
-            WeightedElementsComplicationData.Builder(
-                listOf(
-                    WeightedElementsComplicationData.Element(0.5f, Color.RED),
-                    WeightedElementsComplicationData.Element(1f, Color.GREEN),
-                    WeightedElementsComplicationData.Element(2f, Color.BLUE),
-                ),
-                contentDescription = "content description".complicationText
+        val data =
+            NoDataComplicationData(
+                WeightedElementsComplicationData.Builder(
+                        listOf(
+                            WeightedElementsComplicationData.Element(0.5f, Color.RED),
+                            WeightedElementsComplicationData.Element(1f, Color.GREEN),
+                            WeightedElementsComplicationData.Element(2f, Color.BLUE),
+                        ),
+                        contentDescription = "content description".complicationText
+                    )
+                    .setTitle("calories".complicationText)
+                    .setElementBackgroundColor(Color.GRAY)
+                    .setDataSource(dataSource)
+                    .build()
             )
-                .setTitle("calories".complicationText)
-                .setElementBackgroundColor(Color.GRAY)
-                .setDataSource(dataSource)
-                .build()
-        )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -1390,40 +1453,42 @@
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=WeightedElementsComplicationData(" +
-                "elements=Element(color=-65536, weight=0.5), Element(color=-16711936, " +
-                "weight=1.0), Element(color=-16776961, weight=2.0), " +
-                "elementBackgroundColor=-7829368, monochromaticImage=null, smallImage=null, " +
-                "title=ComplicationText{mSurroundingText=calories, mTimeDependentText=null, " +
-                "mExpression=null}, text=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
-                "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=WeightedElementsComplicationData(" +
+                    "elements=Element(color=-65536, weight=0.5), Element(color=-16711936, " +
+                    "weight=1.0), Element(color=-16776961, weight=2.0), " +
+                    "elementBackgroundColor=-7829368, monochromaticImage=null, smallImage=null, " +
+                    "title=ComplicationText{mSurroundingText=calories, mTimeDependentText=null, " +
+                    "mExpression=null}, text=null, contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noDataComplicationData_rangedValue_with_ColorRange() {
-        val data = NoDataComplicationData(
-            RangedValueComplicationData.Builder(
-                value = RangedValueComplicationData.PLACEHOLDER,
-                min = 0f,
-                max = 100f,
-                "content description".complicationText
+        val data =
+            NoDataComplicationData(
+                RangedValueComplicationData.Builder(
+                        value = RangedValueComplicationData.PLACEHOLDER,
+                        min = 0f,
+                        max = 100f,
+                        "content description".complicationText
+                    )
+                    .setText(ComplicationText.PLACEHOLDER)
+                    .setDataSource(dataSource)
+                    .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
+                    .setValueType(RangedValueComplicationData.TYPE_RATING)
+                    .build()
             )
-                .setText(ComplicationText.PLACEHOLDER)
-                .setDataSource(dataSource)
-                .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
-                .setValueType(RangedValueComplicationData.TYPE_RATING)
-                .build()
-        )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -1453,33 +1518,38 @@
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=RangedValueComplicationData(" +
-                "value=3.4028235E38, valueExpression=null, valueType=1, min=0.0, max=100.0, " +
-                "monochromaticImage=null, smallImage=null, title=null, text=ComplicationText{" +
-                "mSurroundingText=__placeholder__, mTimeDependentText=null, " +
-                "mExpression=null}, contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, colorRamp=ColorRamp(colors=[-65536, " +
-                "-16711936, -16776961], interpolated=true), persistencePolicy=0, " +
-                "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=RangedValueComplicationData(" +
+                    "value=3.4028235E38, valueExpression=null, valueType=1, min=0.0, max=100.0, " +
+                    "monochromaticImage=null, smallImage=null, title=null, text=ComplicationText{" +
+                    "mSurroundingText=__placeholder__, mTimeDependentText=null, " +
+                    "mExpression=null}, contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, " +
+                    "colorRamp=ColorRamp(colors=[-65536, -16711936, -16776961], " +
+                    "interpolated=true), persistencePolicy=0, " +
+                    "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noDataComplicationData_monochromaticImage() {
-        val data = NoDataComplicationData(
-            MonochromaticImageComplicationData.Builder(
-                MonochromaticImage.PLACEHOLDER,
-                "content description".complicationText
-            ).setDataSource(dataSource).build()
-        )
+        val data =
+            NoDataComplicationData(
+                MonochromaticImageComplicationData.Builder(
+                        MonochromaticImage.PLACEHOLDER,
+                        "content description".complicationText
+                    )
+                    .setDataSource(dataSource)
+                    .build()
+            )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -1503,30 +1573,34 @@
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=MonochromaticImageComplicationData(" +
-                "monochromaticImage=MonochromaticImage(image=Icon(typ=RESOURCE pkg= " +
-                "id=0xffffffff), ambientImage=null), contentDescription=ComplicationText{" +
-                "mSurroundingText=content description, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
-                "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=MonochromaticImageComplicationData(" +
+                    "monochromaticImage=MonochromaticImage(image=Icon(typ=RESOURCE pkg= " +
+                    "id=0xffffffff), ambientImage=null), contentDescription=ComplicationText{" +
+                    "mSurroundingText=content description, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noDataComplicationData_smallImage() {
-        val data = NoDataComplicationData(
-            SmallImageComplicationData.Builder(
-                SmallImage.PLACEHOLDER,
-                "content description".complicationText
-            ).setDataSource(dataSource).build()
-        )
+        val data =
+            NoDataComplicationData(
+                SmallImageComplicationData.Builder(
+                        SmallImage.PLACEHOLDER,
+                        "content description".complicationText
+                    )
+                    .setDataSource(dataSource)
+                    .build()
+            )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -1551,30 +1625,34 @@
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=SmallImageComplicationData(smallImage=" +
-                "SmallImage(image=Icon(typ=RESOURCE pkg= id=0xffffffff), type=ICON, " +
-                "ambientImage=null), contentDescription=ComplicationText{mSurroundingText=" +
-                "content description, mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, validTimeRange=TimeRange(" +
-                "startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
-                "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=SmallImageComplicationData(smallImage=" +
+                    "SmallImage(image=Icon(typ=RESOURCE pkg= id=0xffffffff), type=ICON, " +
+                    "ambientImage=null), contentDescription=ComplicationText{mSurroundingText=" +
+                    "content description, mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     @Test
     public fun noDataComplicationData_photoImage() {
-        val data = NoDataComplicationData(
-            PhotoImageComplicationData.Builder(
-                PhotoImageComplicationData.PLACEHOLDER,
-                "content description".complicationText
-            ).setDataSource(dataSource).build()
-        )
+        val data =
+            NoDataComplicationData(
+                PhotoImageComplicationData.Builder(
+                        PhotoImageComplicationData.PLACEHOLDER,
+                        "content description".complicationText
+                    )
+                    .setDataSource(dataSource)
+                    .build()
+            )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -1598,20 +1676,21 @@
         assertThat(deserialized.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("content description")
 
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=PhotoImageComplicationData(" +
-                "photoImage=Icon(typ=RESOURCE pkg= id=0xffffffff), " +
-                "contentDescription=ComplicationText{mSurroundingText=content description, " +
-                "mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
-                "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
-                "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
-                "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=PhotoImageComplicationData(" +
+                    "photoImage=Icon(typ=RESOURCE pkg= id=0xffffffff), " +
+                    "contentDescription=ComplicationText{mSurroundingText=content description, " +
+                    "mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "dataSource=ComponentInfo{com.pkg_a/com.a}, persistencePolicy=0, " +
+                    "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(startDateTimeMillis=-1000000000-01-01T00:00:00Z, " +
+                    "endDateTimeMillis=+1000000000-12-31T23:59:59.999999999Z), " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
     }
 
     private fun testRoundTripConversions(data: ComplicationData) {
@@ -2027,75 +2106,89 @@
 
 @RunWith(SharedRobolectricTestRunner::class)
 public class TapActionTest {
-    private val mPendingIntent = PendingIntent.getBroadcast(
-        ApplicationProvider.getApplicationContext(),
-        0,
-        Intent(),
-        0
-    )
+    private val mPendingIntent =
+        PendingIntent.getBroadcast(ApplicationProvider.getApplicationContext(), 0, Intent(), 0)
 
     @Test
     public fun shortTextComplicationData() {
         assertThat(
-            ShortTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
-                .setTapAction(mPendingIntent)
-                .build().asWireComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+                ShortTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun longTextComplicationData() {
         assertThat(
-            LongTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
-                .setTapAction(mPendingIntent)
-                .build().asWireComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+                LongTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun rangedValueComplicationData() {
         assertThat(
-            RangedValueComplicationData.Builder(
-                value = 95f, min = 0f, max = 100f,
-                contentDescription = ComplicationText.EMPTY
+                RangedValueComplicationData.Builder(
+                        value = 95f,
+                        min = 0f,
+                        max = 100f,
+                        contentDescription = ComplicationText.EMPTY
+                    )
+                    .setText("battery".complicationText)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .tapAction
             )
-                .setText("battery".complicationText)
-                .setTapAction(mPendingIntent)
-                .build().asWireComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun goalProgressComplicationData() {
         assertThat(
-            @Suppress("NewApi")
-            GoalProgressComplicationData.Builder(
-                value = 1200f, targetValue = 10000f,
-                contentDescription = "content description".complicationText
+                @Suppress("NewApi")
+                GoalProgressComplicationData.Builder(
+                        value = 1200f,
+                        targetValue = 10000f,
+                        contentDescription = "content description".complicationText
+                    )
+                    .setTitle("steps".complicationText)
+                    .setTapAction(mPendingIntent)
+                    .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
+                    .build()
+                    .asWireComplicationData()
+                    .tapAction
             )
-                .setTitle("steps".complicationText)
-                .setTapAction(mPendingIntent)
-                .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
-                .build().asWireComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun weightedElementsComplicationData() {
         assertThat(
-            @Suppress("NewApi")
-            WeightedElementsComplicationData.Builder(
-                listOf(
-                    WeightedElementsComplicationData.Element(0.5f, Color.RED),
-                    WeightedElementsComplicationData.Element(1f, Color.GREEN),
-                    WeightedElementsComplicationData.Element(2f, Color.BLUE),
-                ),
-                contentDescription = "content description".complicationText
+                @Suppress("NewApi")
+                WeightedElementsComplicationData.Builder(
+                        listOf(
+                            WeightedElementsComplicationData.Element(0.5f, Color.RED),
+                            WeightedElementsComplicationData.Element(1f, Color.GREEN),
+                            WeightedElementsComplicationData.Element(2f, Color.BLUE),
+                        ),
+                        contentDescription = "content description".complicationText
+                    )
+                    .setTitle("calories".complicationText)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .tapAction
             )
-                .setTitle("calories".complicationText)
-                .setTapAction(mPendingIntent)
-                .build().asWireComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
@@ -2103,12 +2196,13 @@
         val icon = Icon.createWithContentUri("someuri")
         val image = MonochromaticImage.Builder(icon).build()
         assertThat(
-            MonochromaticImageComplicationData.Builder(image, ComplicationText.EMPTY)
-                .setTapAction(mPendingIntent)
-                .build()
-                .asWireComplicationData()
-                .tapAction
-        ).isEqualTo(mPendingIntent)
+                MonochromaticImageComplicationData.Builder(image, ComplicationText.EMPTY)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
@@ -2116,108 +2210,137 @@
         val icon = Icon.createWithContentUri("someuri")
         val image = SmallImage.Builder(icon, SmallImageType.PHOTO).build()
         assertThat(
-            SmallImageComplicationData.Builder(image, ComplicationText.EMPTY)
-                .setTapAction(mPendingIntent).build()
-                .asWireComplicationData()
-                .tapAction
-        ).isEqualTo(mPendingIntent)
+                SmallImageComplicationData.Builder(image, ComplicationText.EMPTY)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun photoImageComplicationData() {
         val icon = Icon.createWithContentUri("someuri")
         assertThat(
-            PhotoImageComplicationData.Builder(icon, ComplicationText.EMPTY)
-                .setTapAction(mPendingIntent).build()
-                .asWireComplicationData()
-                .tapAction
-        ).isEqualTo(mPendingIntent)
+                PhotoImageComplicationData.Builder(icon, ComplicationText.EMPTY)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun noDataComplicationData() {
         assertThat(
-            NoDataComplicationData(
-                ShortTextComplicationData.Builder(
-                    ComplicationText.PLACEHOLDER,
-                    ComplicationText.EMPTY
-                ).setTapAction(mPendingIntent).build()
-            ).asWireComplicationData().placeholder?.tapAction
-        ).isEqualTo(mPendingIntent)
+                NoDataComplicationData(
+                        ShortTextComplicationData.Builder(
+                                ComplicationText.PLACEHOLDER,
+                                ComplicationText.EMPTY
+                            )
+                            .setTapAction(mPendingIntent)
+                            .build()
+                    )
+                    .asWireComplicationData()
+                    .placeholder
+                    ?.tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 }
 
 @RunWith(SharedRobolectricTestRunner::class)
 public class RoundtripTapActionTest {
-    private val mPendingIntent = PendingIntent.getBroadcast(
-        ApplicationProvider.getApplicationContext(),
-        0,
-        Intent(),
-        0
-    )
+    private val mPendingIntent =
+        PendingIntent.getBroadcast(ApplicationProvider.getApplicationContext(), 0, Intent(), 0)
 
     @Test
     public fun shortTextComplicationData() {
         assertThat(
-            ShortTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
-                .setTapAction(mPendingIntent)
-                .build().asWireComplicationData().toApiComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+                ShortTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .toApiComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun longTextComplicationData() {
         assertThat(
-            LongTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
-                .setTapAction(mPendingIntent)
-                .build().asWireComplicationData().toApiComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+                LongTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .toApiComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun rangedValueComplicationData() {
         assertThat(
-            RangedValueComplicationData.Builder(
-                value = 95f, min = 0f, max = 100f,
-                contentDescription = ComplicationText.EMPTY
+                RangedValueComplicationData.Builder(
+                        value = 95f,
+                        min = 0f,
+                        max = 100f,
+                        contentDescription = ComplicationText.EMPTY
+                    )
+                    .setText("battery".complicationText)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .toApiComplicationData()
+                    .tapAction
             )
-                .setText("battery".complicationText)
-                .setTapAction(mPendingIntent)
-                .build().asWireComplicationData().toApiComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun goalProgressComplicationData() {
         assertThat(
-            @Suppress("NewApi")
-            GoalProgressComplicationData.Builder(
-                value = 1200f, targetValue = 10000f,
-                contentDescription = "content description".complicationText
+                @Suppress("NewApi")
+                GoalProgressComplicationData.Builder(
+                        value = 1200f,
+                        targetValue = 10000f,
+                        contentDescription = "content description".complicationText
+                    )
+                    .setTitle("steps".complicationText)
+                    .setTapAction(mPendingIntent)
+                    .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), false))
+                    .build()
+                    .asWireComplicationData()
+                    .toApiComplicationData()
+                    .tapAction
             )
-                .setTitle("steps".complicationText)
-                .setTapAction(mPendingIntent)
-                .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), false))
-                .build().asWireComplicationData().toApiComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun weightedElementsComplicationData() {
         assertThat(
-            @Suppress("NewApi")
-            WeightedElementsComplicationData.Builder(
-                listOf(
-                    WeightedElementsComplicationData.Element(0.5f, Color.RED),
-                    WeightedElementsComplicationData.Element(1f, Color.GREEN),
-                    WeightedElementsComplicationData.Element(2f, Color.BLUE),
-                ),
-                contentDescription = "content description".complicationText
+                @Suppress("NewApi")
+                WeightedElementsComplicationData.Builder(
+                        listOf(
+                            WeightedElementsComplicationData.Element(0.5f, Color.RED),
+                            WeightedElementsComplicationData.Element(1f, Color.GREEN),
+                            WeightedElementsComplicationData.Element(2f, Color.BLUE),
+                        ),
+                        contentDescription = "content description".complicationText
+                    )
+                    .setTitle("calories".complicationText)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .toApiComplicationData()
+                    .tapAction
             )
-                .setTitle("calories".complicationText)
-                .setTapAction(mPendingIntent)
-                .build().asWireComplicationData().toApiComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
@@ -2225,13 +2348,14 @@
         val icon = Icon.createWithContentUri("someuri")
         val image = MonochromaticImage.Builder(icon).build()
         assertThat(
-            MonochromaticImageComplicationData.Builder(image, ComplicationText.EMPTY)
-                .setTapAction(mPendingIntent)
-                .build()
-                .asWireComplicationData()
-                .toApiComplicationData()
-                .tapAction
-        ).isEqualTo(mPendingIntent)
+                MonochromaticImageComplicationData.Builder(image, ComplicationText.EMPTY)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .toApiComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
@@ -2239,36 +2363,46 @@
         val icon = Icon.createWithContentUri("someuri")
         val image = SmallImage.Builder(icon, SmallImageType.PHOTO).build()
         assertThat(
-            SmallImageComplicationData.Builder(image, ComplicationText.EMPTY)
-                .setTapAction(mPendingIntent).build()
-                .asWireComplicationData()
-                .toApiComplicationData()
-                .tapAction
-        ).isEqualTo(mPendingIntent)
+                SmallImageComplicationData.Builder(image, ComplicationText.EMPTY)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .toApiComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun photoImageComplicationData() {
         val icon = Icon.createWithContentUri("someuri")
         assertThat(
-            PhotoImageComplicationData.Builder(icon, ComplicationText.EMPTY)
-                .setTapAction(mPendingIntent).build()
-                .asWireComplicationData()
-                .toApiComplicationData()
-                .tapAction
-        ).isEqualTo(mPendingIntent)
+                PhotoImageComplicationData.Builder(icon, ComplicationText.EMPTY)
+                    .setTapAction(mPendingIntent)
+                    .build()
+                    .asWireComplicationData()
+                    .toApiComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 
     @Test
     public fun noDataComplicationData() {
         assertThat(
-            NoDataComplicationData(
-                MonochromaticImageComplicationData.Builder(
-                    MonochromaticImage.PLACEHOLDER,
-                    ComplicationText.EMPTY
-                ).setTapAction(mPendingIntent).build()
-            ).asWireComplicationData().toApiComplicationData().tapAction
-        ).isEqualTo(mPendingIntent)
+                NoDataComplicationData(
+                        MonochromaticImageComplicationData.Builder(
+                                MonochromaticImage.PLACEHOLDER,
+                                ComplicationText.EMPTY
+                            )
+                            .setTapAction(mPendingIntent)
+                            .build()
+                    )
+                    .asWireComplicationData()
+                    .toApiComplicationData()
+                    .tapAction
+            )
+            .isEqualTo(mPendingIntent)
     }
 }
 
@@ -2280,11 +2414,10 @@
 
     @Test
     public fun shortTextComplicationData() {
-        val data = ShortTextComplicationData.Builder(
-            "text".complicationText, ComplicationText.EMPTY
-        )
-            .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
-            .build()
+        val data =
+            ShortTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
+                .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
@@ -2299,9 +2432,10 @@
 
     @Test
     public fun longTextComplicationData() {
-        val data = LongTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
-            .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
-            .build()
+        val data =
+            LongTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
+                .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_LONG_TEXT)
@@ -2316,13 +2450,16 @@
 
     @Test
     public fun rangedValueComplicationData() {
-        val data = RangedValueComplicationData.Builder(
-            value = 95f, min = 0f, max = 100f,
-            contentDescription = ComplicationText.EMPTY
-        )
-            .setText("battery".complicationText)
-            .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
-            .build()
+        val data =
+            RangedValueComplicationData.Builder(
+                    value = 95f,
+                    min = 0f,
+                    max = 100f,
+                    contentDescription = ComplicationText.EMPTY
+                )
+                .setText("battery".complicationText)
+                .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_RANGED_VALUE)
@@ -2341,14 +2478,16 @@
 
     @Test
     public fun goalProgressComplicationData() {
-        val data = GoalProgressComplicationData.Builder(
-            value = 1200f, targetValue = 10000f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("steps".complicationText)
-            .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
-            .setColorRamp(ColorRamp(intArrayOf(Color.YELLOW, Color.MAGENTA), true))
-            .build()
+        val data =
+            GoalProgressComplicationData.Builder(
+                    value = 1200f,
+                    targetValue = 10000f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("steps".complicationText)
+                .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
+                .setColorRamp(ColorRamp(intArrayOf(Color.YELLOW, Color.MAGENTA), true))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_GOAL_PROGRESS)
@@ -2368,17 +2507,18 @@
 
     @Test
     public fun weightedElementsComplicationData() {
-        val data = WeightedElementsComplicationData.Builder(
-            listOf(
-                WeightedElementsComplicationData.Element(0.5f, Color.RED),
-                WeightedElementsComplicationData.Element(1f, Color.GREEN),
-                WeightedElementsComplicationData.Element(2f, Color.BLUE),
-            ),
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("calories".complicationText)
-            .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
-            .build()
+        val data =
+            WeightedElementsComplicationData.Builder(
+                    listOf(
+                        WeightedElementsComplicationData.Element(0.5f, Color.RED),
+                        WeightedElementsComplicationData.Element(1f, Color.GREEN),
+                        WeightedElementsComplicationData.Element(2f, Color.BLUE),
+                    ),
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("calories".complicationText)
+                .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_WEIGHTED_ELEMENTS)
@@ -2399,9 +2539,10 @@
     public fun monochromaticImageComplicationData() {
         val icon = Icon.createWithContentUri("someuri")
         val image = MonochromaticImage.Builder(icon).build()
-        val data = MonochromaticImageComplicationData.Builder(image, ComplicationText.EMPTY)
-            .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
-            .build()
+        val data =
+            MonochromaticImageComplicationData.Builder(image, ComplicationText.EMPTY)
+                .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_ICON)
@@ -2418,9 +2559,10 @@
     public fun smallImageComplicationData() {
         val icon = Icon.createWithContentUri("someuri")
         val image = SmallImage.Builder(icon, SmallImageType.PHOTO).build()
-        val data = SmallImageComplicationData.Builder(image, ComplicationText.EMPTY)
-            .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
-            .build()
+        val data =
+            SmallImageComplicationData.Builder(image, ComplicationText.EMPTY)
+                .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_SMALL_IMAGE)
@@ -2437,9 +2579,10 @@
     @Test
     public fun photoImageComplicationData() {
         val photoImage = Icon.createWithContentUri("someuri")
-        val data = PhotoImageComplicationData.Builder(photoImage, ComplicationText.EMPTY)
-            .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
-            .build()
+        val data =
+            PhotoImageComplicationData.Builder(photoImage, ComplicationText.EMPTY)
+                .setValidTimeRange(TimeRange.between(testStartInstant, testEndDateInstant))
+                .build()
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_LARGE_IMAGE)
@@ -2454,10 +2597,11 @@
 
     @Test
     public fun noDataComplicationData_shortText() {
-        val data = NoDataComplicationData(
-            ShortTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
-                .build(),
-        )
+        val data =
+            NoDataComplicationData(
+                ShortTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
+                    .build(),
+            )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -2476,10 +2620,11 @@
 
     @Test
     public fun noDataComplicationData_longText() {
-        val data = NoDataComplicationData(
-            LongTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
-                .build()
-        )
+        val data =
+            NoDataComplicationData(
+                LongTextComplicationData.Builder("text".complicationText, ComplicationText.EMPTY)
+                    .build()
+            )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -2498,16 +2643,17 @@
 
     @Test
     public fun noDataComplicationData_rangedValue() {
-        val data = NoDataComplicationData(
-            RangedValueComplicationData.Builder(
-                value = 95f,
-                min = 0f,
-                max = 100f,
-                ComplicationText.EMPTY
+        val data =
+            NoDataComplicationData(
+                RangedValueComplicationData.Builder(
+                        value = 95f,
+                        min = 0f,
+                        max = 100f,
+                        ComplicationText.EMPTY
+                    )
+                    .setText("battery".complicationText)
+                    .build()
             )
-                .setText("battery".complicationText)
-                .build()
-        )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -2530,15 +2676,17 @@
 
     @Test
     public fun noDataComplicationData_goalProgress() {
-        val data = NoDataComplicationData(
-            GoalProgressComplicationData.Builder(
-                value = 1200f, targetValue = 10000f,
-                contentDescription = "content description".complicationText
+        val data =
+            NoDataComplicationData(
+                GoalProgressComplicationData.Builder(
+                        value = 1200f,
+                        targetValue = 10000f,
+                        contentDescription = "content description".complicationText
+                    )
+                    .setTitle("steps".complicationText)
+                    .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), false))
+                    .build()
             )
-                .setTitle("steps".complicationText)
-                .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), false))
-                .build()
-        )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -2564,18 +2712,19 @@
 
     @Test
     public fun noDataComplicationData_weightedElements() {
-        val data = NoDataComplicationData(
-            WeightedElementsComplicationData.Builder(
-                listOf(
-                    WeightedElementsComplicationData.Element(0.5f, Color.RED),
-                    WeightedElementsComplicationData.Element(1f, Color.GREEN),
-                    WeightedElementsComplicationData.Element(2f, Color.BLUE),
-                ),
-                contentDescription = "content description".complicationText
+        val data =
+            NoDataComplicationData(
+                WeightedElementsComplicationData.Builder(
+                        listOf(
+                            WeightedElementsComplicationData.Element(0.5f, Color.RED),
+                            WeightedElementsComplicationData.Element(1f, Color.GREEN),
+                            WeightedElementsComplicationData.Element(2f, Color.BLUE),
+                        ),
+                        contentDescription = "content description".complicationText
+                    )
+                    .setTitle("calories".complicationText)
+                    .build()
             )
-                .setTitle("calories".complicationText)
-                .build()
-        )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -2602,9 +2751,10 @@
     public fun noDataComplicationData_monochromaticImage() {
         val icon = Icon.createWithContentUri("someuri")
         val image = MonochromaticImage.Builder(icon).build()
-        val data = NoDataComplicationData(
-            MonochromaticImageComplicationData.Builder(image, ComplicationText.EMPTY).build()
-        )
+        val data =
+            NoDataComplicationData(
+                MonochromaticImageComplicationData.Builder(image, ComplicationText.EMPTY).build()
+            )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -2625,9 +2775,10 @@
     public fun noDataComplicationData_smallImage() {
         val icon = Icon.createWithContentUri("someuri")
         val image = SmallImage.Builder(icon, SmallImageType.PHOTO).build()
-        val data = NoDataComplicationData(
-            SmallImageComplicationData.Builder(image, ComplicationText.EMPTY).build()
-        )
+        val data =
+            NoDataComplicationData(
+                SmallImageComplicationData.Builder(image, ComplicationText.EMPTY).build()
+            )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -2648,9 +2799,10 @@
     @Test
     public fun noDataComplicationData_photoImage() {
         val icon = Icon.createWithContentUri("someuri")
-        val data = NoDataComplicationData(
-            PhotoImageComplicationData.Builder(icon, ComplicationText.EMPTY).build()
-        )
+        val data =
+            NoDataComplicationData(
+                PhotoImageComplicationData.Builder(icon, ComplicationText.EMPTY).build()
+            )
         ParcelableSubject.assertThat(data.asWireComplicationData())
             .hasSameSerializationAs(
                 WireComplicationData.Builder(WireComplicationData.TYPE_NO_DATA)
@@ -2686,129 +2838,140 @@
 
     @Test
     fun shortText() {
-        val data = ShortTextComplicationData.Builder(
-            "text".complicationText,
-            "content description".complicationText
-        )
-            .setTitle("title".complicationText)
-            .build()
+        val data =
+            ShortTextComplicationData.Builder(
+                    "text".complicationText,
+                    "content description".complicationText
+                )
+                .setTitle("title".complicationText)
+                .build()
 
-        assertThat(data.toString()).isEqualTo(
-            "ShortTextComplicationData(text=ComplicationText{mSurroundingText=REDACTED, " +
-                "mTimeDependentText=null, mExpression=null}, title=ComplicationText{" +
-                "mSurroundingText=REDACTED, mTimeDependentText=null, mExpression=null}, " +
-                "monochromaticImage=null, smallImage=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=REDACTED, mTimeDependentText=null, mExpression=null}, " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(REDACTED), dataSource=null, persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
-        assertThat(data.asWireComplicationData().toString()).isEqualTo(
-            "ComplicationData{mType=3, mFields=REDACTED}"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "ShortTextComplicationData(text=ComplicationText{mSurroundingText=REDACTED, " +
+                    "mTimeDependentText=null, mExpression=null}, title=ComplicationText{" +
+                    "mSurroundingText=REDACTED, mTimeDependentText=null, mExpression=null}, " +
+                    "monochromaticImage=null, smallImage=null, " +
+                    "contentDescription=ComplicationText{" +
+                    "mSurroundingText=REDACTED, mTimeDependentText=null, mExpression=null}, " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(REDACTED), dataSource=null, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
+        assertThat(data.asWireComplicationData().toString())
+            .isEqualTo("ComplicationData{mType=3, mFields=REDACTED}")
     }
 
     @Test
     fun longText() {
-        val data = LongTextComplicationData.Builder(
-            "text".complicationText,
-            "content description".complicationText
-        )
-            .setTitle("title".complicationText)
-            .build()
+        val data =
+            LongTextComplicationData.Builder(
+                    "text".complicationText,
+                    "content description".complicationText
+                )
+                .setTitle("title".complicationText)
+                .build()
 
-        assertThat(data.toString()).isEqualTo(
-            "LongTextComplicationData(text=ComplicationText{mSurroundingText=REDACTED, " +
-                "mTimeDependentText=null, mExpression=null}, title=ComplicationText{" +
-                "mSurroundingText=REDACTED, mTimeDependentText=null, mExpression=null}, " +
-                "monochromaticImage=null, smallImage=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=REDACTED, mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(REDACTED), dataSource=null, persistencePolicy=0, " +
-                "displayPolicy=0)"
-        )
-        assertThat(data.asWireComplicationData().toString()).isEqualTo(
-            "ComplicationData{mType=4, mFields=REDACTED}"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "LongTextComplicationData(text=ComplicationText{mSurroundingText=REDACTED, " +
+                    "mTimeDependentText=null, mExpression=null}, title=ComplicationText{" +
+                    "mSurroundingText=REDACTED, mTimeDependentText=null, mExpression=null}, " +
+                    "monochromaticImage=null, smallImage=null, " +
+                    "contentDescription=ComplicationText{" +
+                    "mSurroundingText=REDACTED, mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(REDACTED), dataSource=null, persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
+        assertThat(data.asWireComplicationData().toString())
+            .isEqualTo("ComplicationData{mType=4, mFields=REDACTED}")
     }
 
     @Test
     fun rangedValue() {
-        val data = RangedValueComplicationData.Builder(
-            50f,
-            0f,
-            100f,
-            "content description".complicationText
-        )
-            .setText("text".complicationText)
-            .setTitle("title".complicationText)
-            .build()
+        val data =
+            RangedValueComplicationData.Builder(
+                    50f,
+                    0f,
+                    100f,
+                    "content description".complicationText
+                )
+                .setText("text".complicationText)
+                .setTitle("title".complicationText)
+                .build()
 
-        assertThat(data.toString()).isEqualTo(
-            "RangedValueComplicationData(value=REDACTED, valueExpression=REDACTED, " +
-                "valueType=0, min=0.0, max=100.0, monochromaticImage=null, smallImage=null, " +
-                "title=ComplicationText{mSurroundingText=REDACTED, mTimeDependentText=null, " +
-                "mExpression=null}, text=ComplicationText{mSurroundingText=REDACTED, " +
-                "mTimeDependentText=null, mExpression=null}, contentDescription=" +
-                "ComplicationText{mSurroundingText=REDACTED, mTimeDependentText=null, " +
-                "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null," +
-                " validTimeRange=TimeRange(REDACTED), dataSource=null, colorRamp=null, " +
-                "persistencePolicy=0, displayPolicy=0)"
-        )
-        assertThat(data.asWireComplicationData().toString()).isEqualTo(
-            "ComplicationData{mType=5, mFields=REDACTED}"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "RangedValueComplicationData(value=REDACTED, valueExpression=REDACTED, " +
+                    "valueType=0, min=0.0, max=100.0, monochromaticImage=null, smallImage=null, " +
+                    "title=ComplicationText{mSurroundingText=REDACTED, mTimeDependentText=null, " +
+                    "mExpression=null}, text=ComplicationText{mSurroundingText=REDACTED, " +
+                    "mTimeDependentText=null, mExpression=null}, contentDescription=" +
+                    "ComplicationText{mSurroundingText=REDACTED, mTimeDependentText=null, " +
+                    "mExpression=null}), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(REDACTED), dataSource=null, colorRamp=null, " +
+                    "persistencePolicy=0, displayPolicy=0)"
+            )
+        assertThat(data.asWireComplicationData().toString())
+            .isEqualTo("ComplicationData{mType=5, mFields=REDACTED}")
     }
 
     @Test
     @Suppress("NewApi")
     fun goalProgress() {
-        val data = GoalProgressComplicationData.Builder(
-            value = 1200f, targetValue = 10000f,
-            contentDescription = "content description".complicationText
-        )
-            .setTitle("steps".complicationText)
-            .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
-            .build()
+        val data =
+            GoalProgressComplicationData.Builder(
+                    value = 1200f,
+                    targetValue = 10000f,
+                    contentDescription = "content description".complicationText
+                )
+                .setTitle("steps".complicationText)
+                .setColorRamp(ColorRamp(intArrayOf(Color.RED, Color.GREEN, Color.BLUE), true))
+                .build()
 
-        assertThat(data.toString()).isEqualTo(
-            "GoalProgressComplicationData(value=REDACTED, valueExpression=REDACTED, " +
-                "targetValue=10000.0, monochromaticImage=null, smallImage=null, " +
-                "title=ComplicationText{mSurroundingText=REDACTED, mTimeDependentText=null, " +
-                "mExpression=null}, text=null, contentDescription=ComplicationText{" +
-                "mSurroundingText=REDACTED, mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, validTimeRange=" +
-                "TimeRange(REDACTED), dataSource=null, colorRamp=ColorRamp(colors=[-65536, " +
-                "-16711936, -16776961], interpolated=true), persistencePolicy=0, displayPolicy=0)"
-        )
-        assertThat(data.asWireComplicationData().toString()).isEqualTo(
-            "ComplicationData{mType=13, mFields=REDACTED}"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "GoalProgressComplicationData(value=REDACTED, valueExpression=REDACTED, " +
+                    "targetValue=10000.0, monochromaticImage=null, smallImage=null, " +
+                    "title=ComplicationText{mSurroundingText=REDACTED, mTimeDependentText=null, " +
+                    "mExpression=null}, text=null, contentDescription=ComplicationText{" +
+                    "mSurroundingText=REDACTED, mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, validTimeRange=" +
+                    "TimeRange(REDACTED), dataSource=null, colorRamp=ColorRamp(colors=[-65536, " +
+                    "-16711936, -16776961], interpolated=true), persistencePolicy=0, " +
+                    "displayPolicy=0)"
+            )
+        assertThat(data.asWireComplicationData().toString())
+            .isEqualTo("ComplicationData{mType=13, mFields=REDACTED}")
     }
 
     @Test
     fun placeholder() {
-        val data = NoDataComplicationData(
-            LongTextComplicationData.Builder(
-                ComplicationText.PLACEHOLDER,
-                ComplicationText.EMPTY
-            ).build()
-        )
+        val data =
+            NoDataComplicationData(
+                LongTextComplicationData.Builder(
+                        ComplicationText.PLACEHOLDER,
+                        ComplicationText.EMPTY
+                    )
+                    .build()
+            )
 
-        assertThat(data.toString()).isEqualTo(
-            "NoDataComplicationData(placeholder=LongTextComplicationData(" +
-                "text=ComplicationText{mSurroundingText=__placeholder__, mTimeDependentText=null," +
-                " mExpression=null}, title=null, monochromaticImage=null, smallImage=null, " +
-                "contentDescription=ComplicationText{mSurroundingText=REDACTED, " +
-                "mTimeDependentText=null, mExpression=null}), " +
-                "tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(REDACTED), dataSource=null, persistencePolicy=0, " +
-                "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
-                "validTimeRange=TimeRange(REDACTED), persistencePolicy=0, displayPolicy=0)"
-        )
-        assertThat(data.asWireComplicationData().toString()).isEqualTo(
-            "ComplicationData{mType=10, mFields=REDACTED}"
-        )
+        assertThat(data.toString())
+            .isEqualTo(
+                "NoDataComplicationData(placeholder=LongTextComplicationData(" +
+                    "text=ComplicationText{mSurroundingText=__placeholder__, " +
+                    "mTimeDependentText=null, " +
+                    "mExpression=null}, title=null, monochromaticImage=null, smallImage=null, " +
+                    "contentDescription=ComplicationText{mSurroundingText=REDACTED, " +
+                    "mTimeDependentText=null, mExpression=null}), " +
+                    "tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(REDACTED), dataSource=null, persistencePolicy=0, " +
+                    "displayPolicy=0), tapActionLostDueToSerialization=false, tapAction=null, " +
+                    "validTimeRange=TimeRange(REDACTED), persistencePolicy=0, displayPolicy=0)"
+            )
+        assertThat(data.asWireComplicationData().toString())
+            .isEqualTo("ComplicationData{mType=10, mFields=REDACTED}")
     }
 }
 
@@ -2852,15 +3015,16 @@
             max: Float
         ): () -> RangedValueComplicationData = {
             RangedValueComplicationData.Builder(
-                value = value,
-                min = min,
-                max = max,
-                contentDescription = "".complicationText,
-            )
+                    value = value,
+                    min = min,
+                    max = max,
+                    contentDescription = "".complicationText,
+                )
                 .setText("".complicationText)
                 .build()
         }
     }
 }
 
-val String.complicationText get() = PlainComplicationText.Builder(this).build()
+val String.complicationText
+    get() = PlainComplicationText.Builder(this).build()
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ImageTest.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ImageTest.kt
index bbd0815..62e9a0c 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ImageTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ImageTest.kt
@@ -27,9 +27,7 @@
     public fun monochromaticImage() {
         val icon = Icon.createWithContentUri("icon")
         val ambientIcon = Icon.createWithContentUri("icon")
-        val image = MonochromaticImage.Builder(icon)
-            .setAmbientImage(ambientIcon)
-            .build()
+        val image = MonochromaticImage.Builder(icon).setAmbientImage(ambientIcon).build()
         assertThat(image.image).isEqualTo(icon)
         assertThat(image.ambientImage).isEqualTo(ambientIcon)
     }
@@ -38,9 +36,8 @@
     public fun smallImage() {
         val icon = Icon.createWithContentUri("icon")
         val ambientIcon = Icon.createWithContentUri("icon")
-        val image = SmallImage.Builder(icon, SmallImageType.PHOTO)
-            .setAmbientImage(ambientIcon)
-            .build()
+        val image =
+            SmallImage.Builder(icon, SmallImageType.PHOTO).setAmbientImage(ambientIcon).build()
         assertThat(image.image).isEqualTo(icon)
         assertThat(image.type).isEqualTo(SmallImageType.PHOTO)
         assertThat(image.ambientImage).isEqualTo(ambientIcon)
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ParcelableSubject.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ParcelableSubject.kt
index e7ddf40..fd7d69d 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ParcelableSubject.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ParcelableSubject.kt
@@ -25,32 +25,29 @@
 internal class ParcelableSubject(metadata: FailureMetadata?, private val subject: Parcelable?) :
     Subject(metadata, subject) {
 
-    private class ParcelableSubjectFactory :
-        Factory<ParcelableSubject, Parcelable> {
-        override fun createSubject(
-            metadata: FailureMetadata?,
-            subject: Parcelable?
-        ) = ParcelableSubject(metadata, subject)
+    private class ParcelableSubjectFactory : Factory<ParcelableSubject, Parcelable> {
+        override fun createSubject(metadata: FailureMetadata?, subject: Parcelable?) =
+            ParcelableSubject(metadata, subject)
     }
 
     fun hasSameSerializationAs(parcelable: Parcelable) {
         check("hasSameSerializationAs()").that(subject).isNotNull()
         check("hasSameSerializationAs()").that(parcelable).isNotNull()
-        check("hasSameSerializationAs()").that(serializeParcelable(subject!!))
+        check("hasSameSerializationAs()")
+            .that(serializeParcelable(subject!!))
             .isEqualTo(serializeParcelable(parcelable))
     }
 
     fun hasDifferentSerializationAs(parcelable: Parcelable) {
         check("hasDifferentSerializationAs()").that(subject).isNotNull()
         check("hasDifferentSerializationAs()").that(parcelable).isNotNull()
-        check("hasDifferentSerializationAs()").that(serializeParcelable(subject!!))
+        check("hasDifferentSerializationAs()")
+            .that(serializeParcelable(subject!!))
             .isNotEqualTo(serializeParcelable(parcelable))
     }
 
     private fun serializeParcelable(parcelable: Parcelable) =
-        Parcel.obtain().apply {
-            parcelable.writeToParcel(this, 0)
-        }.marshall()
+        Parcel.obtain().apply { parcelable.writeToParcel(this, 0) }.marshall()
 
     internal companion object {
         @JvmStatic
@@ -58,8 +55,6 @@
             return Truth.assertAbout(FACTORY).that(parcelable)
         }
 
-        @JvmField
-        val FACTORY: Factory<ParcelableSubject, Parcelable> =
-            ParcelableSubjectFactory()
+        @JvmField val FACTORY: Factory<ParcelableSubject, Parcelable> = ParcelableSubjectFactory()
     }
 }
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/PlaceholderTest.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/PlaceholderTest.kt
index a77abb9..b46676a 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/PlaceholderTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/PlaceholderTest.kt
@@ -41,13 +41,19 @@
 
     @Test
     fun placeholder_shortText() {
-        val placeholderShortText = NoDataComplicationData(
-            ShortTextComplicationData.Builder(ComplicationText.PLACEHOLDER, contentDescription)
-                .setTitle(ComplicationText.PLACEHOLDER)
-                .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
-                .setSmallImage(SmallImage.PLACEHOLDER)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as ShortTextComplicationData
+        val placeholderShortText =
+            NoDataComplicationData(
+                    ShortTextComplicationData.Builder(
+                            ComplicationText.PLACEHOLDER,
+                            contentDescription
+                        )
+                        .setTitle(ComplicationText.PLACEHOLDER)
+                        .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
+                        .setSmallImage(SmallImage.PLACEHOLDER)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as ShortTextComplicationData
 
         assertThat(placeholderShortText.text).isEqualTo(ComplicationText.PLACEHOLDER)
         assertThat(placeholderShortText.title).isEqualTo(ComplicationText.PLACEHOLDER)
@@ -61,20 +67,21 @@
 
     @Test
     fun normal_shortText() {
-        val placeholderShortText = NoDataComplicationData(
-            ShortTextComplicationData.Builder(text, contentDescription)
-                .setTitle(title)
-                .setMonochromaticImage(monochromaticImage)
-                .setSmallImage(smallImage)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as ShortTextComplicationData
+        val placeholderShortText =
+            NoDataComplicationData(
+                    ShortTextComplicationData.Builder(text, contentDescription)
+                        .setTitle(title)
+                        .setMonochromaticImage(monochromaticImage)
+                        .setSmallImage(smallImage)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as ShortTextComplicationData
 
-        assertThat(placeholderShortText.text.getTextAt(resources, Instant.EPOCH)).isEqualTo(
-            text.getTextAt(resources, Instant.EPOCH)
-        )
-        assertThat(placeholderShortText.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo(
-            title.getTextAt(resources, Instant.EPOCH)
-        )
+        assertThat(placeholderShortText.text.getTextAt(resources, Instant.EPOCH))
+            .isEqualTo(text.getTextAt(resources, Instant.EPOCH))
+        assertThat(placeholderShortText.title!!.getTextAt(resources, Instant.EPOCH))
+            .isEqualTo(title.getTextAt(resources, Instant.EPOCH))
         assertThat(placeholderShortText.monochromaticImage).isEqualTo(monochromaticImage)
         assertThat(placeholderShortText.smallImage).isEqualTo(smallImage)
         assertThat(placeholderShortText.hasPlaceholderFields()).isFalse()
@@ -82,10 +89,16 @@
 
     @Test
     fun absent_shortText() {
-        val placeholderShortText = NoDataComplicationData(
-            ShortTextComplicationData.Builder(ComplicationText.PLACEHOLDER, contentDescription)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as ShortTextComplicationData
+        val placeholderShortText =
+            NoDataComplicationData(
+                    ShortTextComplicationData.Builder(
+                            ComplicationText.PLACEHOLDER,
+                            contentDescription
+                        )
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as ShortTextComplicationData
 
         assertThat(placeholderShortText.title).isNull()
         assertThat(placeholderShortText.monochromaticImage).isNull()
@@ -94,18 +107,23 @@
 
     @Test
     fun placeholder_longText() {
-        val placeholderLongText = NoDataComplicationData(
-            LongTextComplicationData.Builder(ComplicationText.PLACEHOLDER, contentDescription)
-                .setTitle(ComplicationText.PLACEHOLDER)
-                .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
-                .setSmallImage(SmallImage.PLACEHOLDER)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as LongTextComplicationData
+        val placeholderLongText =
+            NoDataComplicationData(
+                    LongTextComplicationData.Builder(
+                            ComplicationText.PLACEHOLDER,
+                            contentDescription
+                        )
+                        .setTitle(ComplicationText.PLACEHOLDER)
+                        .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
+                        .setSmallImage(SmallImage.PLACEHOLDER)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as LongTextComplicationData
 
         assertThat(placeholderLongText.text).isEqualTo(ComplicationText.PLACEHOLDER)
         assertThat(placeholderLongText.title).isEqualTo(ComplicationText.PLACEHOLDER)
-        assertThat(placeholderLongText.monochromaticImage)
-            .isEqualTo(MonochromaticImage.PLACEHOLDER)
+        assertThat(placeholderLongText.monochromaticImage).isEqualTo(MonochromaticImage.PLACEHOLDER)
         assertThat(placeholderLongText.smallImage).isEqualTo(SmallImage.PLACEHOLDER)
         assertThat(placeholderLongText.contentDescription!!.getTextAt(resources, Instant.EPOCH))
             .isEqualTo("description")
@@ -114,20 +132,21 @@
 
     @Test
     fun normal_longText() {
-        val placeholderLongText = NoDataComplicationData(
-            LongTextComplicationData.Builder(text, contentDescription)
-                .setTitle(title)
-                .setMonochromaticImage(monochromaticImage)
-                .setSmallImage(smallImage)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as LongTextComplicationData
+        val placeholderLongText =
+            NoDataComplicationData(
+                    LongTextComplicationData.Builder(text, contentDescription)
+                        .setTitle(title)
+                        .setMonochromaticImage(monochromaticImage)
+                        .setSmallImage(smallImage)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as LongTextComplicationData
 
-        assertThat(placeholderLongText.text.getTextAt(resources, Instant.EPOCH)).isEqualTo(
-            text.getTextAt(resources, Instant.EPOCH)
-        )
-        assertThat(placeholderLongText.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo(
-            title.getTextAt(resources, Instant.EPOCH)
-        )
+        assertThat(placeholderLongText.text.getTextAt(resources, Instant.EPOCH))
+            .isEqualTo(text.getTextAt(resources, Instant.EPOCH))
+        assertThat(placeholderLongText.title!!.getTextAt(resources, Instant.EPOCH))
+            .isEqualTo(title.getTextAt(resources, Instant.EPOCH))
         assertThat(placeholderLongText.monochromaticImage).isEqualTo(monochromaticImage)
         assertThat(placeholderLongText.smallImage).isEqualTo(smallImage)
         assertThat(placeholderLongText.hasPlaceholderFields()).isFalse()
@@ -135,10 +154,16 @@
 
     @Test
     fun absent_longText() {
-        val placeholderLongText = NoDataComplicationData(
-            LongTextComplicationData.Builder(ComplicationText.PLACEHOLDER, contentDescription)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as LongTextComplicationData
+        val placeholderLongText =
+            NoDataComplicationData(
+                    LongTextComplicationData.Builder(
+                            ComplicationText.PLACEHOLDER,
+                            contentDescription
+                        )
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as LongTextComplicationData
 
         assertThat(placeholderLongText.title).isNull()
         assertThat(placeholderLongText.monochromaticImage).isNull()
@@ -147,19 +172,22 @@
 
     @Test
     fun placeholder_rangedValue() {
-        val placeholderRangedValue = NoDataComplicationData(
-            RangedValueComplicationData.Builder(
-                value = RangedValueComplicationData.PLACEHOLDER,
-                min = 1f,
-                max = 10f,
-                contentDescription
-            )
-                .setText(ComplicationText.PLACEHOLDER)
-                .setTitle(ComplicationText.PLACEHOLDER)
-                .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
-                .setSmallImage(SmallImage.PLACEHOLDER)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as RangedValueComplicationData
+        val placeholderRangedValue =
+            NoDataComplicationData(
+                    RangedValueComplicationData.Builder(
+                            value = RangedValueComplicationData.PLACEHOLDER,
+                            min = 1f,
+                            max = 10f,
+                            contentDescription
+                        )
+                        .setText(ComplicationText.PLACEHOLDER)
+                        .setTitle(ComplicationText.PLACEHOLDER)
+                        .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
+                        .setSmallImage(SmallImage.PLACEHOLDER)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as RangedValueComplicationData
 
         assertThat(placeholderRangedValue.value).isEqualTo(RangedValueComplicationData.PLACEHOLDER)
         assertThat(placeholderRangedValue.text).isEqualTo(ComplicationText.PLACEHOLDER)
@@ -174,21 +202,27 @@
 
     @Test
     fun normal_rangedValue() {
-        val placeholderRangedValue = NoDataComplicationData(
-            RangedValueComplicationData.Builder(value = 7f, min = 1f, max = 10f, contentDescription)
-                .setText(text)
-                .setTitle(title)
-                .setMonochromaticImage(monochromaticImage)
-                .setSmallImage(smallImage)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as RangedValueComplicationData
+        val placeholderRangedValue =
+            NoDataComplicationData(
+                    RangedValueComplicationData.Builder(
+                            value = 7f,
+                            min = 1f,
+                            max = 10f,
+                            contentDescription
+                        )
+                        .setText(text)
+                        .setTitle(title)
+                        .setMonochromaticImage(monochromaticImage)
+                        .setSmallImage(smallImage)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as RangedValueComplicationData
 
-        assertThat(placeholderRangedValue.text!!.getTextAt(resources, Instant.EPOCH)).isEqualTo(
-            text.getTextAt(resources, Instant.EPOCH)
-        )
-        assertThat(placeholderRangedValue.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo(
-            title.getTextAt(resources, Instant.EPOCH)
-        )
+        assertThat(placeholderRangedValue.text!!.getTextAt(resources, Instant.EPOCH))
+            .isEqualTo(text.getTextAt(resources, Instant.EPOCH))
+        assertThat(placeholderRangedValue.title!!.getTextAt(resources, Instant.EPOCH))
+            .isEqualTo(title.getTextAt(resources, Instant.EPOCH))
         assertThat(placeholderRangedValue.monochromaticImage).isEqualTo(monochromaticImage)
         assertThat(placeholderRangedValue.smallImage).isEqualTo(smallImage)
         assertThat(placeholderRangedValue.value).isEqualTo(7f)
@@ -199,16 +233,19 @@
 
     @Test
     fun titleAbsent_rangedValue() {
-        val placeholderRangedValue = NoDataComplicationData(
-            RangedValueComplicationData.Builder(
-                value = RangedValueComplicationData.PLACEHOLDER,
-                min = 1f,
-                max = 10f,
-                contentDescription
-            )
-                .setText(ComplicationText.PLACEHOLDER)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as RangedValueComplicationData
+        val placeholderRangedValue =
+            NoDataComplicationData(
+                    RangedValueComplicationData.Builder(
+                            value = RangedValueComplicationData.PLACEHOLDER,
+                            min = 1f,
+                            max = 10f,
+                            contentDescription
+                        )
+                        .setText(ComplicationText.PLACEHOLDER)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as RangedValueComplicationData
 
         assertThat(placeholderRangedValue.text).isEqualTo(ComplicationText.PLACEHOLDER)
         assertThat(placeholderRangedValue.title).isNull()
@@ -219,18 +256,21 @@
     @OptIn(ComplicationExperimental::class)
     @Test
     fun placeholder_goalProgress() {
-        val placeholderGoalProgress = NoDataComplicationData(
-            GoalProgressComplicationData.Builder(
-                value = GoalProgressComplicationData.PLACEHOLDER,
-                targetValue = 10000f,
-                contentDescription
-            )
-                .setText(ComplicationText.PLACEHOLDER)
-                .setTitle(ComplicationText.PLACEHOLDER)
-                .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
-                .setSmallImage(SmallImage.PLACEHOLDER)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as GoalProgressComplicationData
+        val placeholderGoalProgress =
+            NoDataComplicationData(
+                    GoalProgressComplicationData.Builder(
+                            value = GoalProgressComplicationData.PLACEHOLDER,
+                            targetValue = 10000f,
+                            contentDescription
+                        )
+                        .setText(ComplicationText.PLACEHOLDER)
+                        .setTitle(ComplicationText.PLACEHOLDER)
+                        .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
+                        .setSmallImage(SmallImage.PLACEHOLDER)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as GoalProgressComplicationData
 
         assertThat(placeholderGoalProgress.value).isEqualTo(RangedValueComplicationData.PLACEHOLDER)
         assertThat(placeholderGoalProgress.text).isEqualTo(ComplicationText.PLACEHOLDER)
@@ -246,25 +286,26 @@
     @OptIn(ComplicationExperimental::class)
     @Test
     fun normal_goalProgress() {
-        val placeholderGoalProgress = NoDataComplicationData(
-            GoalProgressComplicationData.Builder(
-                value = 1200f,
-                targetValue = 10000f,
-                contentDescription
-            )
-                .setText(text)
-                .setTitle(title)
-                .setMonochromaticImage(monochromaticImage)
-                .setSmallImage(smallImage)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as GoalProgressComplicationData
+        val placeholderGoalProgress =
+            NoDataComplicationData(
+                    GoalProgressComplicationData.Builder(
+                            value = 1200f,
+                            targetValue = 10000f,
+                            contentDescription
+                        )
+                        .setText(text)
+                        .setTitle(title)
+                        .setMonochromaticImage(monochromaticImage)
+                        .setSmallImage(smallImage)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as GoalProgressComplicationData
 
-        assertThat(placeholderGoalProgress.text!!.getTextAt(resources, Instant.EPOCH)).isEqualTo(
-            text.getTextAt(resources, Instant.EPOCH)
-        )
-        assertThat(placeholderGoalProgress.title!!.getTextAt(resources, Instant.EPOCH)).isEqualTo(
-            title.getTextAt(resources, Instant.EPOCH)
-        )
+        assertThat(placeholderGoalProgress.text!!.getTextAt(resources, Instant.EPOCH))
+            .isEqualTo(text.getTextAt(resources, Instant.EPOCH))
+        assertThat(placeholderGoalProgress.title!!.getTextAt(resources, Instant.EPOCH))
+            .isEqualTo(title.getTextAt(resources, Instant.EPOCH))
         assertThat(placeholderGoalProgress.monochromaticImage).isEqualTo(monochromaticImage)
         assertThat(placeholderGoalProgress.smallImage).isEqualTo(smallImage)
         assertThat(placeholderGoalProgress.value).isEqualTo(1200f)
@@ -275,17 +316,20 @@
     @OptIn(ComplicationExperimental::class)
     @Test
     fun placeholder_weightedElements() {
-        val placeholderWeightedElements = NoDataComplicationData(
-            WeightedElementsComplicationData.Builder(
-                elements = WeightedElementsComplicationData.PLACEHOLDER,
-                contentDescription
-            )
-                .setText(ComplicationText.PLACEHOLDER)
-                .setTitle(ComplicationText.PLACEHOLDER)
-                .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
-                .setSmallImage(SmallImage.PLACEHOLDER)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as WeightedElementsComplicationData
+        val placeholderWeightedElements =
+            NoDataComplicationData(
+                    WeightedElementsComplicationData.Builder(
+                            elements = WeightedElementsComplicationData.PLACEHOLDER,
+                            contentDescription
+                        )
+                        .setText(ComplicationText.PLACEHOLDER)
+                        .setTitle(ComplicationText.PLACEHOLDER)
+                        .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
+                        .setSmallImage(SmallImage.PLACEHOLDER)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as WeightedElementsComplicationData
 
         assertThat(placeholderWeightedElements.elements)
             .isEqualTo(WeightedElementsComplicationData.PLACEHOLDER)
@@ -294,37 +338,44 @@
         assertThat(placeholderWeightedElements.monochromaticImage)
             .isEqualTo(MonochromaticImage.PLACEHOLDER)
         assertThat(placeholderWeightedElements.smallImage).isEqualTo(SmallImage.PLACEHOLDER)
-        assertThat(placeholderWeightedElements.contentDescription!!
-            .getTextAt(resources, Instant.EPOCH)).isEqualTo("description")
+        assertThat(
+                placeholderWeightedElements.contentDescription!!.getTextAt(resources, Instant.EPOCH)
+            )
+            .isEqualTo("description")
         assertThat(placeholderWeightedElements.hasPlaceholderFields()).isTrue()
     }
 
     @OptIn(ComplicationExperimental::class)
     @Test
     fun normal_weightedElements() {
-        val weightedElements = NoDataComplicationData(
-            WeightedElementsComplicationData.Builder(
-                elements = listOf(
+        val weightedElements =
+            NoDataComplicationData(
+                    WeightedElementsComplicationData.Builder(
+                            elements =
+                                listOf(
+                                    WeightedElementsComplicationData.Element(0.5f, Color.RED),
+                                    WeightedElementsComplicationData.Element(1f, Color.GREEN),
+                                    WeightedElementsComplicationData.Element(2f, Color.BLUE),
+                                ),
+                            contentDescription
+                        )
+                        .setText(text)
+                        .setTitle(title)
+                        .setMonochromaticImage(monochromaticImage)
+                        .setSmallImage(smallImage)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as WeightedElementsComplicationData
+
+        assertThat(weightedElements.elements)
+            .isEqualTo(
+                listOf(
                     WeightedElementsComplicationData.Element(0.5f, Color.RED),
                     WeightedElementsComplicationData.Element(1f, Color.GREEN),
                     WeightedElementsComplicationData.Element(2f, Color.BLUE),
-                ),
-                contentDescription
+                )
             )
-                .setText(text)
-                .setTitle(title)
-                .setMonochromaticImage(monochromaticImage)
-                .setSmallImage(smallImage)
-                .build()
-        ).toWireFormatRoundTrip().placeholder as WeightedElementsComplicationData
-
-        assertThat(weightedElements.elements).isEqualTo(
-            listOf(
-                WeightedElementsComplicationData.Element(0.5f, Color.RED),
-                WeightedElementsComplicationData.Element(1f, Color.GREEN),
-                WeightedElementsComplicationData.Element(2f, Color.BLUE),
-            )
-        )
         assertThat(weightedElements.text).isEqualTo(text)
         assertThat(weightedElements.title).isEqualTo(title)
         assertThat(weightedElements.monochromaticImage).isEqualTo(monochromaticImage)
@@ -336,29 +387,41 @@
 
     @Test
     fun placeholder_monochromaticImage() {
-        val placeholderMonochromaticImage = NoDataComplicationData(
-            MonochromaticImageComplicationData.Builder(
-                MonochromaticImage.PLACEHOLDER,
-                contentDescription
-            ).build()
-        ).toWireFormatRoundTrip().placeholder as MonochromaticImageComplicationData
+        val placeholderMonochromaticImage =
+            NoDataComplicationData(
+                    MonochromaticImageComplicationData.Builder(
+                            MonochromaticImage.PLACEHOLDER,
+                            contentDescription
+                        )
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as MonochromaticImageComplicationData
 
         assertThat(placeholderMonochromaticImage.monochromaticImage)
             .isEqualTo(MonochromaticImage.PLACEHOLDER)
         assertThat(
-            placeholderMonochromaticImage.contentDescription!!.getTextAt(resources, Instant.EPOCH)
-        ).isEqualTo("description")
+                placeholderMonochromaticImage.contentDescription!!.getTextAt(
+                    resources,
+                    Instant.EPOCH
+                )
+            )
+            .isEqualTo("description")
         assertThat(placeholderMonochromaticImage.hasPlaceholderFields()).isTrue()
     }
 
     @Test
     fun normal_monochromaticImage() {
-        val placeholderMonochromaticImage = NoDataComplicationData(
-            MonochromaticImageComplicationData.Builder(
-                monochromaticImage,
-                contentDescription
-            ).build()
-        ).toWireFormatRoundTrip().placeholder as MonochromaticImageComplicationData
+        val placeholderMonochromaticImage =
+            NoDataComplicationData(
+                    MonochromaticImageComplicationData.Builder(
+                            monochromaticImage,
+                            contentDescription
+                        )
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as MonochromaticImageComplicationData
 
         assertThat(placeholderMonochromaticImage.monochromaticImage).isEqualTo(monochromaticImage)
         assertThat(placeholderMonochromaticImage.hasPlaceholderFields()).isFalse()
@@ -366,9 +429,13 @@
 
     @Test
     fun placeholder_smallImage() {
-        val placeholderSmallImage = NoDataComplicationData(
-            SmallImageComplicationData.Builder(SmallImage.PLACEHOLDER, contentDescription).build()
-        ).toWireFormatRoundTrip().placeholder as SmallImageComplicationData
+        val placeholderSmallImage =
+            NoDataComplicationData(
+                    SmallImageComplicationData.Builder(SmallImage.PLACEHOLDER, contentDescription)
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as SmallImageComplicationData
 
         assertThat(placeholderSmallImage.smallImage).isEqualTo(SmallImage.PLACEHOLDER)
         assertThat(placeholderSmallImage.contentDescription!!.getTextAt(resources, Instant.EPOCH))
@@ -378,9 +445,12 @@
 
     @Test
     fun normal_smallImage() {
-        val placeholderSmallImage = NoDataComplicationData(
-            SmallImageComplicationData.Builder(smallImage, contentDescription).build()
-        ).toWireFormatRoundTrip().placeholder as SmallImageComplicationData
+        val placeholderSmallImage =
+            NoDataComplicationData(
+                    SmallImageComplicationData.Builder(smallImage, contentDescription).build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as SmallImageComplicationData
 
         assertThat(placeholderSmallImage.smallImage).isEqualTo(smallImage)
         assertThat(placeholderSmallImage.hasPlaceholderFields()).isFalse()
@@ -388,12 +458,16 @@
 
     @Test
     fun placeholder_photoImage() {
-        val placeholderPhotoImage = NoDataComplicationData(
-            PhotoImageComplicationData.Builder(
-                PhotoImageComplicationData.PLACEHOLDER,
-                contentDescription
-            ).build()
-        ).toWireFormatRoundTrip().placeholder as PhotoImageComplicationData
+        val placeholderPhotoImage =
+            NoDataComplicationData(
+                    PhotoImageComplicationData.Builder(
+                            PhotoImageComplicationData.PLACEHOLDER,
+                            contentDescription
+                        )
+                        .build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as PhotoImageComplicationData
 
         assertThat(placeholderPhotoImage.photoImage)
             .isEqualTo(PhotoImageComplicationData.PLACEHOLDER)
@@ -404,9 +478,12 @@
 
     @Test
     fun normal_photoImage() {
-        val placeholderPhotoImage = NoDataComplicationData(
-            PhotoImageComplicationData.Builder(icon, contentDescription).build()
-        ).toWireFormatRoundTrip().placeholder as PhotoImageComplicationData
+        val placeholderPhotoImage =
+            NoDataComplicationData(
+                    PhotoImageComplicationData.Builder(icon, contentDescription).build()
+                )
+                .toWireFormatRoundTrip()
+                .placeholder as PhotoImageComplicationData
 
         assertThat(placeholderPhotoImage.photoImage).isEqualTo(icon)
         assertThat(placeholderPhotoImage.hasPlaceholderFields()).isFalse()
@@ -425,20 +502,19 @@
         timelineEntry.timelineStartEpochSecond = 100
         timelineEntry.timelineEndEpochSecond = 1000
 
-        val wireLongTextComplication = ComplicationData.Builder(
-            ComplicationType.LONG_TEXT.toWireComplicationType()
-        )
-            .setEndDateTimeMillis(1650988800000)
-            .setDataSource(ComponentName("a", "b"))
-            .setLongText(
-                android.support.wearable.complications.ComplicationText.plainText("longText")
-            )
-            .setIcon(icon)
-            .setSmallImageStyle(IMAGE_STYLE_ICON)
-            .setContentDescription(
-                android.support.wearable.complications.ComplicationText.plainText("test")
-            )
-            .build()
+        val wireLongTextComplication =
+            ComplicationData.Builder(ComplicationType.LONG_TEXT.toWireComplicationType())
+                .setEndDateTimeMillis(1650988800000)
+                .setDataSource(ComponentName("a", "b"))
+                .setLongText(
+                    android.support.wearable.complications.ComplicationText.plainText("longText")
+                )
+                .setIcon(icon)
+                .setSmallImageStyle(IMAGE_STYLE_ICON)
+                .setContentDescription(
+                    android.support.wearable.complications.ComplicationText.plainText("test")
+                )
+                .build()
         wireLongTextComplication.setTimelineEntryCollection(listOf(timelineEntry))
 
         val apiLongTextComplicationData = wireLongTextComplication.toApiComplicationData()
@@ -448,7 +524,10 @@
         assertThat(apiLongTextComplicationData.text.isPlaceholder()).isFalse()
 
         val noDataComplicationData =
-            apiLongTextComplicationData.asWireComplicationData().timelineEntries!!.first()
+            apiLongTextComplicationData
+                .asWireComplicationData()
+                .timelineEntries!!
+                .first()
                 .toApiComplicationData()
 
         assertThat(noDataComplicationData.type).isEqualTo(ComplicationType.NO_DATA)
@@ -463,4 +542,4 @@
 }
 
 fun NoDataComplicationData.toWireFormatRoundTrip() =
-    asWireComplicationData().toApiComplicationData() as NoDataComplicationData
\ No newline at end of file
+    asWireComplicationData().toApiComplicationData() as NoDataComplicationData
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/SharedRobolectricTestRunner.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/SharedRobolectricTestRunner.kt
index 5b45eb4..aaca557 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/SharedRobolectricTestRunner.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/SharedRobolectricTestRunner.kt
@@ -25,8 +25,10 @@
     RobolectricTestRunner(testClass) {
 
     override fun createClassLoaderConfig(method: FrameworkMethod?): InstrumentationConfiguration =
-        InstrumentationConfiguration.Builder(super.createClassLoaderConfig(method)).apply {
-            doNotInstrumentPackage("androidx.wear")
-            doNotInstrumentPackage("android.support.wearable")
-        }.build()
+        InstrumentationConfiguration.Builder(super.createClassLoaderConfig(method))
+            .apply {
+                doNotInstrumentPackage("androidx.wear")
+                doNotInstrumentPackage("android.support.wearable")
+            }
+            .build()
 }
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TextTest.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TextTest.kt
index 492d983..2125d4f 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TextTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TextTest.kt
@@ -16,20 +16,20 @@
 
 package androidx.wear.watchface.complications.data
 
-import android.support.wearable.complications.ComplicationText as WireComplicationText
-import android.support.wearable.complications.ComplicationText.TimeDifferenceBuilder as WireTimeDifferenceBuilder
-import android.support.wearable.complications.ComplicationText.TimeFormatBuilder as WireTimeFormatBuilder
 import android.content.Context
 import android.icu.util.TimeZone
+import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.support.wearable.complications.ComplicationText
+import android.support.wearable.complications.ComplicationText.TimeDifferenceBuilder as WireTimeDifferenceBuilder
+import android.support.wearable.complications.ComplicationText.TimeFormatBuilder as WireTimeFormatBuilder
 import android.support.wearable.complications.TimeFormatText
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
+import java.time.Instant
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertNull
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.time.Instant
-import java.util.concurrent.TimeUnit
 
 @RunWith(SharedRobolectricTestRunner::class)
 public class AsWireComplicationTextTest {
@@ -45,14 +45,15 @@
     @Test
     public fun timeDifferenceText_CountUpTimeReference() {
         val referenceInstant = Instant.parse("2020-12-30T10:15:30.001Z")
-        val text = TimeDifferenceComplicationText.Builder(
-            TimeDifferenceStyle.STOPWATCH,
-            CountUpTimeReference(referenceInstant)
-        )
-            .setText("^1 after lunch")
-            .setDisplayAsNow(false)
-            .setMinimumTimeUnit(TimeUnit.SECONDS)
-            .build()
+        val text =
+            TimeDifferenceComplicationText.Builder(
+                    TimeDifferenceStyle.STOPWATCH,
+                    CountUpTimeReference(referenceInstant)
+                )
+                .setText("^1 after lunch")
+                .setDisplayAsNow(false)
+                .setMinimumTimeUnit(TimeUnit.SECONDS)
+                .build()
 
         ParcelableSubject.assertThat(text.toWireComplicationText())
             .hasSameSerializationAs(
@@ -67,22 +68,22 @@
 
         val twoMinutesThreeSecondAfter =
             Instant.ofEpochMilli(referenceInstant.toEpochMilli() + 2.minutes + 3.seconds)
-        assertThat(
-            text.getTextAt(getResource(), twoMinutesThreeSecondAfter).toString()
-        ).isEqualTo("02:03 after lunch")
+        assertThat(text.getTextAt(getResource(), twoMinutesThreeSecondAfter).toString())
+            .isEqualTo("02:03 after lunch")
     }
 
     @Test
     public fun timeDifferenceText_CountDownTimeReference() {
         val referenceInstant = Instant.parse("2020-12-30T10:15:30.001Z")
-        val text = TimeDifferenceComplicationText.Builder(
-            TimeDifferenceStyle.STOPWATCH,
-            CountDownTimeReference(referenceInstant)
-        )
-            .setText("^1 before lunch")
-            .setDisplayAsNow(false)
-            .setMinimumTimeUnit(TimeUnit.SECONDS)
-            .build()
+        val text =
+            TimeDifferenceComplicationText.Builder(
+                    TimeDifferenceStyle.STOPWATCH,
+                    CountDownTimeReference(referenceInstant)
+                )
+                .setText("^1 before lunch")
+                .setDisplayAsNow(false)
+                .setMinimumTimeUnit(TimeUnit.SECONDS)
+                .build()
 
         ParcelableSubject.assertThat(text.toWireComplicationText())
             .hasSameSerializationAs(
@@ -97,18 +98,18 @@
 
         val twoMinutesThreeSecondBefore =
             Instant.ofEpochMilli(referenceInstant.toEpochMilli() - 2.minutes - 3.seconds)
-        assertThat(
-            text.getTextAt(getResource(), twoMinutesThreeSecondBefore).toString()
-        ).isEqualTo("02:03 before lunch")
+        assertThat(text.getTextAt(getResource(), twoMinutesThreeSecondBefore).toString())
+            .isEqualTo("02:03 before lunch")
     }
 
     @Test
     public fun timeFormatText() {
-        val text = TimeFormatComplicationText.Builder("h:m")
-            .setText("^1 in London")
-            .setStyle(TimeFormatStyle.UPPER_CASE)
-            .setTimeZone(TimeZone.getTimeZone("Europe/London"))
-            .build()
+        val text =
+            TimeFormatComplicationText.Builder("h:m")
+                .setText("^1 in London")
+                .setStyle(TimeFormatStyle.UPPER_CASE)
+                .setTimeZone(TimeZone.getTimeZone("Europe/London"))
+                .build()
 
         ParcelableSubject.assertThat(text.toWireComplicationText())
             .hasSameSerializationAs(
@@ -134,39 +135,30 @@
         assertThat(text.getTextAt(getResource(), Instant.EPOCH)).isEqualTo("abc")
         assertThat(text.getNextChangeTime(Instant.EPOCH)).isEqualTo(Instant.MAX)
         assertThat(text.isAlwaysEmpty()).isFalse()
-        assertThat(
-            text.returnsSameText(
-                Instant.EPOCH,
-                Instant.ofEpochMilli(Long.MAX_VALUE)
-            )
-        ).isTrue()
+        assertThat(text.returnsSameText(Instant.EPOCH, Instant.ofEpochMilli(Long.MAX_VALUE)))
+            .isTrue()
     }
 
     @Test
     public fun timeDifferenceText() {
         val startPoint = Instant.parse("2020-12-30T10:15:30.001Z")
-        val wireText = WireTimeDifferenceBuilder()
-            .setStyle(WireComplicationText.DIFFERENCE_STYLE_STOPWATCH)
-            .setSurroundingText("^1 before lunch")
-            .setShowNowText(false)
-            .setMinimumUnit(TimeUnit.SECONDS)
-            .setReferencePeriodEndMillis(startPoint.toEpochMilli())
-            .build()
+        val wireText =
+            WireTimeDifferenceBuilder()
+                .setStyle(WireComplicationText.DIFFERENCE_STYLE_STOPWATCH)
+                .setSurroundingText("^1 before lunch")
+                .setShowNowText(false)
+                .setMinimumUnit(TimeUnit.SECONDS)
+                .setReferencePeriodEndMillis(startPoint.toEpochMilli())
+                .build()
 
         val text = wireText.toApiComplicationText()
 
         val twoMinutesThreeSecondAfter =
             Instant.ofEpochMilli(startPoint.toEpochMilli() + 2.minutes + 3.seconds)
-        assertThat(
-            text.getTextAt(
-                getResource(),
-                twoMinutesThreeSecondAfter
-            ).toString()
-        ).isEqualTo("02:03 before lunch")
+        assertThat(text.getTextAt(getResource(), twoMinutesThreeSecondAfter).toString())
+            .isEqualTo("02:03 before lunch")
         assertThat(text.getNextChangeTime(twoMinutesThreeSecondAfter))
-            .isEqualTo(
-                Instant.ofEpochMilli(twoMinutesThreeSecondAfter.toEpochMilli() + 1.seconds)
-            )
+            .isEqualTo(Instant.ofEpochMilli(twoMinutesThreeSecondAfter.toEpochMilli() + 1.seconds))
         assertThat(text.isAlwaysEmpty()).isFalse()
         assertThat(text.returnsSameText(twoMinutesThreeSecondAfter, startPoint)).isFalse()
     }
@@ -174,32 +166,34 @@
     @Test
     public fun timeFormatText() {
         val dateTime = Instant.parse("2020-12-30T10:15:20.00Z")
-        val wireText = WireTimeFormatBuilder()
-            .setFormat("h:m")
-            .setStyle(WireComplicationText.FORMAT_STYLE_UPPER_CASE)
-            .setSurroundingText("^1 in London")
-            .setTimeZone(java.util.TimeZone.getTimeZone("Europe/London"))
-            .build()
+        val wireText =
+            WireTimeFormatBuilder()
+                .setFormat("h:m")
+                .setStyle(WireComplicationText.FORMAT_STYLE_UPPER_CASE)
+                .setSurroundingText("^1 in London")
+                .setTimeZone(java.util.TimeZone.getTimeZone("Europe/London"))
+                .build()
 
         val text = wireText.toApiComplicationText()
 
-        assertThat(text.getTextAt(getResource(), dateTime).toString())
-            .isEqualTo("10:15 in London")
+        assertThat(text.getTextAt(getResource(), dateTime).toString()).isEqualTo("10:15 in London")
         assertThat(text.getNextChangeTime(dateTime))
             .isEqualTo(Instant.ofEpochMilli(dateTime.toEpochMilli() + 40.seconds))
         assertThat(text.isAlwaysEmpty()).isFalse()
         assertThat(
-            text.returnsSameText(
-                dateTime,
-                Instant.ofEpochMilli(dateTime.toEpochMilli() + 20.seconds)
+                text.returnsSameText(
+                    dateTime,
+                    Instant.ofEpochMilli(dateTime.toEpochMilli() + 20.seconds)
+                )
             )
-        ).isTrue()
+            .isTrue()
         assertThat(
-            text.returnsSameText(
-                dateTime,
-                Instant.ofEpochMilli(dateTime.toEpochMilli() + 60.seconds)
+                text.returnsSameText(
+                    dateTime,
+                    Instant.ofEpochMilli(dateTime.toEpochMilli() + 60.seconds)
+                )
             )
-        ).isFalse()
+            .isFalse()
     }
 
     @Test
@@ -207,12 +201,13 @@
         val minimumTimeUnit = TimeUnit.SECONDS
 
         val referenceInstant = Instant.parse("2020-12-30T10:15:30.001Z")
-        val text = TimeDifferenceComplicationText.Builder(
-            TimeDifferenceStyle.STOPWATCH,
-            CountUpTimeReference(referenceInstant)
-        )
-            .setMinimumTimeUnit(minimumTimeUnit)
-            .build()
+        val text =
+            TimeDifferenceComplicationText.Builder(
+                    TimeDifferenceStyle.STOPWATCH,
+                    CountUpTimeReference(referenceInstant)
+                )
+                .setMinimumTimeUnit(minimumTimeUnit)
+                .build()
 
         assertThat(minimumTimeUnit).isEqualTo(text.getMinimumTimeUnit())
     }
@@ -220,24 +215,20 @@
     @Test
     public fun testGetMinimumTimeUnit_WithoutTimeDependentTextObject() {
         val referenceInstant = Instant.parse("2020-12-30T10:15:30.001Z")
-        val text = TimeDifferenceComplicationText.Builder(
-            TimeDifferenceStyle.STOPWATCH,
-            CountUpTimeReference(referenceInstant)
-        ).build()
+        val text =
+            TimeDifferenceComplicationText.Builder(
+                    TimeDifferenceStyle.STOPWATCH,
+                    CountUpTimeReference(referenceInstant)
+                )
+                .build()
 
         assertNull(text.getMinimumTimeUnit())
     }
 
     @Test
     public fun testGetMinimumTimeUnit_WithWrongTimeDependentTextObject() {
-        val tft = TimeFormatText(
-            "E 'in' LLL",
-            ComplicationText.FORMAT_STYLE_DEFAULT,
-            null
-        )
-        val text = TimeDifferenceComplicationText(
-            ComplicationText("test", tft)
-        )
+        val tft = TimeFormatText("E 'in' LLL", ComplicationText.FORMAT_STYLE_DEFAULT, null)
+        val text = TimeDifferenceComplicationText(ComplicationText("test", tft))
 
         assertNull(text.getMinimumTimeUnit())
     }
@@ -245,5 +236,7 @@
     private fun getResource() = ApplicationProvider.getApplicationContext<Context>().resources
 }
 
-private val Int.minutes get() = TimeUnit.MINUTES.toMillis(this.toLong())
-private val Int.seconds get() = TimeUnit.SECONDS.toMillis(this.toLong())
+private val Int.minutes
+    get() = TimeUnit.MINUTES.toMillis(this.toLong())
+private val Int.seconds
+    get() = TimeUnit.SECONDS.toMillis(this.toLong())
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TimeRangeTest.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TimeRangeTest.kt
index b1b89809..a9cb532 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TimeRangeTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TimeRangeTest.kt
@@ -17,9 +17,9 @@
 package androidx.wear.watchface.complications.data
 
 import com.google.common.truth.Truth.assertThat
+import java.time.Instant
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.time.Instant
 
 @RunWith(SharedRobolectricTestRunner::class)
 public class TimeRangeTest {
@@ -45,10 +45,7 @@
 
     @Test
     public fun betweenTwoTimes() {
-        val range = TimeRange.between(
-            Instant.ofEpochMilli(1000),
-            Instant.ofEpochMilli(2000)
-        )
+        val range = TimeRange.between(Instant.ofEpochMilli(1000), Instant.ofEpochMilli(2000))
         assertThat(range.contains(Instant.ofEpochMilli(100))).isFalse()
         assertThat(range.contains(Instant.ofEpochMilli(999))).isFalse()
         assertThat(range.contains(Instant.ofEpochMilli(1000))).isTrue()
@@ -73,4 +70,4 @@
         assertThat(range.contains(Instant.ofEpochMilli(10000))).isTrue()
         assertThat(range.contains(Instant.ofEpochMilli(Long.MAX_VALUE))).isTrue()
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TypeTest.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TypeTest.kt
index 1e2a28c..ee3f572 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TypeTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TypeTest.kt
@@ -36,10 +36,7 @@
         assertThatIsWireType(ComplicationType.RANGED_VALUE, WireComplicationData.TYPE_RANGED_VALUE)
         assertThatIsWireType(ComplicationType.MONOCHROMATIC_IMAGE, WireComplicationData.TYPE_ICON)
         assertThatIsWireType(ComplicationType.SMALL_IMAGE, WireComplicationData.TYPE_SMALL_IMAGE)
-        assertThatIsWireType(
-            ComplicationType.PHOTO_IMAGE,
-            WireComplicationData.TYPE_LARGE_IMAGE
-        )
+        assertThatIsWireType(ComplicationType.PHOTO_IMAGE, WireComplicationData.TYPE_LARGE_IMAGE)
         assertThatIsWireType(
             ComplicationType.NO_PERMISSION,
             WireComplicationData.TYPE_NO_PERMISSION
@@ -63,10 +60,7 @@
         assertThatIsApiType(WireComplicationData.TYPE_RANGED_VALUE, ComplicationType.RANGED_VALUE)
         assertThatIsApiType(WireComplicationData.TYPE_ICON, ComplicationType.MONOCHROMATIC_IMAGE)
         assertThatIsApiType(WireComplicationData.TYPE_SMALL_IMAGE, ComplicationType.SMALL_IMAGE)
-        assertThatIsApiType(
-            WireComplicationData.TYPE_LARGE_IMAGE,
-            ComplicationType.PHOTO_IMAGE
-        )
+        assertThatIsApiType(WireComplicationData.TYPE_LARGE_IMAGE, ComplicationType.PHOTO_IMAGE)
         assertThatIsApiType(WireComplicationData.TYPE_NO_PERMISSION, ComplicationType.NO_PERMISSION)
     }
 
diff --git a/wear/watchface/watchface-complications-permission-dialogs-sample/src/main/java/androidx/wear/watchface/complications/permission/dialogs/sample/ComplicationRationalActivity.java b/wear/watchface/watchface-complications-permission-dialogs-sample/src/main/java/androidx/wear/watchface/complications/permission/dialogs/sample/ComplicationRationalActivity.java
index ff2af32..493a96d 100644
--- a/wear/watchface/watchface-complications-permission-dialogs-sample/src/main/java/androidx/wear/watchface/complications/permission/dialogs/sample/ComplicationRationalActivity.java
+++ b/wear/watchface/watchface-complications-permission-dialogs-sample/src/main/java/androidx/wear/watchface/complications/permission/dialogs/sample/ComplicationRationalActivity.java
@@ -34,5 +34,4 @@
 
         findViewById(R.id.ok_button).setOnClickListener(view -> finish());
     }
-
 }
diff --git a/wear/watchface/watchface-complications-rendering/src/androidTest/java/androidx/wear/watchface/complications/rendering/test/ComplicationDrawableAndroidTest.java b/wear/watchface/watchface-complications-rendering/src/androidTest/java/androidx/wear/watchface/complications/rendering/test/ComplicationDrawableAndroidTest.java
index 8ef7443..ad25b88 100644
--- a/wear/watchface/watchface-complications-rendering/src/androidTest/java/androidx/wear/watchface/complications/rendering/test/ComplicationDrawableAndroidTest.java
+++ b/wear/watchface/watchface-complications-rendering/src/androidTest/java/androidx/wear/watchface/complications/rendering/test/ComplicationDrawableAndroidTest.java
@@ -45,8 +45,9 @@
     public void defaultValuesAreLoadedAfterLoadingFromResource() {
         ComplicationDrawable drawable =
                 (ComplicationDrawable)
-                        ApplicationProvider.getApplicationContext().getResources().getDrawable(
-                                R.drawable.default_complication_drawable, null);
+                        ApplicationProvider.getApplicationContext()
+                                .getResources()
+                                .getDrawable(R.drawable.default_complication_drawable, null);
         int textSizeFromResources = drawable.getActiveStyle().getTextSize();
         assertThat(textSizeFromResources).isEqualTo(mDefaultTextSize);
     }
@@ -55,8 +56,9 @@
     public void inflateFromEmptyTag() {
         ComplicationDrawable drawable =
                 (ComplicationDrawable)
-                        ApplicationProvider.getApplicationContext().getResources().getDrawable(
-                                R.drawable.default_complication_drawable, null);
+                        ApplicationProvider.getApplicationContext()
+                                .getResources()
+                                .getDrawable(R.drawable.default_complication_drawable, null);
         assertThat(drawable).isNotNull();
     }
 }
diff --git a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/CanvasComplicationDrawable.kt b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/CanvasComplicationDrawable.kt
index e5e18b1..c871758 100644
--- a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/CanvasComplicationDrawable.kt
+++ b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/CanvasComplicationDrawable.kt
@@ -24,15 +24,15 @@
 import android.util.TypedValue
 import androidx.annotation.CallSuper
 import androidx.annotation.ColorInt
-import androidx.wear.watchface.complications.data.ComplicationData
-import androidx.wear.watchface.complications.data.NoDataComplicationData
-import androidx.wear.watchface.utility.TraceEvent
 import androidx.wear.watchface.CanvasComplication
+import androidx.wear.watchface.ComplicationSlotBoundsType
 import androidx.wear.watchface.DrawMode
 import androidx.wear.watchface.RenderParameters
 import androidx.wear.watchface.WatchState
-import androidx.wear.watchface.ComplicationSlotBoundsType
+import androidx.wear.watchface.complications.data.ComplicationData
+import androidx.wear.watchface.complications.data.NoDataComplicationData
 import androidx.wear.watchface.style.WatchFaceLayer
+import androidx.wear.watchface.utility.TraceEvent
 import java.time.ZonedDateTime
 
 /**
@@ -41,9 +41,9 @@
  *
  * @param drawable The [ComplicationDrawable] to render with.
  * @param watchState The watch's [WatchState] which contains details pertaining to (low-bit) ambient
- * mode and burn in protection needed to render correctly.
+ *   mode and burn in protection needed to render correctly.
  * @param invalidateCallback The [CanvasComplication.InvalidateCallback] associated with which can
- * be used to request screen redrawing and to report updates
+ *   be used to request screen redrawing and to report updates
  */
 public open class CanvasComplicationDrawable
 @SuppressWarnings("ExecutorRegistration") // invalidateCallback is owned by the library and
@@ -69,7 +69,6 @@
                 EXPANSION_DP,
                 Resources.getSystem().displayMetrics
             ),
-
             TypedValue.applyDimension(
                 TypedValue.COMPLEX_UNIT_DIP,
                 STROKE_WIDTH_DP,
@@ -78,17 +77,18 @@
         )
     }
 
-    private val drawableCallback = object : Drawable.Callback {
-        override fun unscheduleDrawable(who: Drawable, what: Runnable) {}
+    private val drawableCallback =
+        object : Drawable.Callback {
+            override fun unscheduleDrawable(who: Drawable, what: Runnable) {}
 
-        @SuppressLint("SyntheticAccessor")
-        override fun invalidateDrawable(who: Drawable) {
-            invalidateCallback.onInvalidate()
+            @SuppressLint("SyntheticAccessor")
+            override fun invalidateDrawable(who: Drawable) {
+                invalidateCallback.onInvalidate()
+            }
+
+            override fun scheduleDrawable(who: Drawable, what: Runnable, `when`: Long) {}
         }
 
-        override fun scheduleDrawable(who: Drawable, what: Runnable, `when`: Long) {}
-    }
-
     init {
         drawable.callback = drawableCallback
     }
@@ -122,11 +122,13 @@
         drawable.isInAmbientMode = renderParameters.drawMode == DrawMode.AMBIENT
         drawable.bounds = bounds
         drawable.currentTime = zonedDateTime.toInstant()
-        drawable.isHighlighted = renderParameters.lastComplicationTapDownEvents[slotId]?.let {
-            val startTime = it.tapTime.toEpochMilli()
-            val endTime = it.tapTime.toEpochMilli() + COMPLICATION_HIGHLIGHT_DURATION_MS
-            zonedDateTime.toInstant().toEpochMilli() in startTime until endTime
-        } ?: false
+        drawable.isHighlighted =
+            renderParameters.lastComplicationTapDownEvents[slotId]?.let {
+                val startTime = it.tapTime.toEpochMilli()
+                val endTime = it.tapTime.toEpochMilli() + COMPLICATION_HIGHLIGHT_DURATION_MS
+                zonedDateTime.toInstant().toEpochMilli() in startTime until endTime
+            }
+                ?: false
         drawable.draw(canvas)
     }
 
@@ -138,11 +140,7 @@
         @ColorInt color: Int
     ) {
         if (boundsType == ComplicationSlotBoundsType.ROUND_RECT) {
-            complicationHighlightRenderer.drawComplicationHighlight(
-                canvas,
-                bounds,
-                color
-            )
+            complicationHighlightRenderer.drawComplicationHighlight(canvas, bounds, color)
         }
     }
 
@@ -157,20 +155,18 @@
      *
      * @param complicationData The new [ComplicationData] for which any [Drawable]s should be loaded
      * @param loadDrawablesAsynchronous Whether any [Drawable]s within [complicationData] should be
-     * loaded asynchronously or not. If they are loaded asynchronously then upon completion,
-     * [ComplicationDrawable.setComplicationData] will call [Drawable.Callback.invalidateDrawable]
-     * registered in our init section above, which invalidates the attachedComplication and
-     * ultimately the watch face.
+     *   loaded asynchronously or not. If they are loaded asynchronously then upon completion,
+     *   [ComplicationDrawable.setComplicationData] will call [Drawable.Callback.invalidateDrawable]
+     *   registered in our init section above, which invalidates the attachedComplication and
+     *   ultimately the watch face.
      */
     @CallSuper
     override fun loadData(
         complicationData: ComplicationData,
         loadDrawablesAsynchronous: Boolean
-    ): Unit = TraceEvent("CanvasComplicationDrawable.setIdAndData").use {
-        _data = complicationData
-        drawable.setComplicationData(
-            complicationData,
-            loadDrawablesAsynchronous
-        )
-    }
+    ): Unit =
+        TraceEvent("CanvasComplicationDrawable.setIdAndData").use {
+            _data = complicationData
+            drawable.setComplicationData(complicationData, loadDrawablesAsynchronous)
+        }
 }
diff --git a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationDrawable.kt b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationDrawable.kt
index 3fd9b54..9f1416d 100644
--- a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationDrawable.kt
+++ b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationDrawable.kt
@@ -35,27 +35,26 @@
 import androidx.annotation.IntRange
 import androidx.annotation.Px
 import androidx.annotation.VisibleForTesting
+import androidx.wear.watchface.ComplicationHelperActivity
 import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.complications.data.ComplicationType.NO_DATA
 import androidx.wear.watchface.complications.data.ComplicationType.NO_PERMISSION
 import androidx.wear.watchface.complications.data.ComplicationType.RANGED_VALUE
 import androidx.wear.watchface.complications.data.NoDataComplicationData
-import androidx.wear.watchface.ComplicationHelperActivity
 import androidx.wear.watchface.complications.rendering.ComplicationRenderer.OnInvalidateListener
-import org.xmlpull.v1.XmlPullParser
-import org.xmlpull.v1.XmlPullParserException
 import java.io.IOException
 import java.time.Instant
+import org.xmlpull.v1.XmlPullParser
+import org.xmlpull.v1.XmlPullParserException
 
 /**
- * A styleable drawable object that draws complicationSlots. You can create a ComplicationDrawable from
- * XML inflation or by using one of the constructor methods.
+ * A styleable drawable object that draws complicationSlots. You can create a ComplicationDrawable
+ * from XML inflation or by using one of the constructor methods.
  *
  * <h3>Constructing a ComplicationDrawable</h3>
  *
- * To construct a ComplicationDrawable programmatically, use the [ComplicationDrawable]
- * constructor. Afterwards, styling attributes you want to modify
- * can be set via set methods.
+ * To construct a ComplicationDrawable programmatically, use the [ComplicationDrawable] constructor.
+ * Afterwards, styling attributes you want to modify can be set via set methods.
  *
  * ```
  * val complicationDrawable = ComplicationDrawable(context)
@@ -65,15 +64,13 @@
  *
  * <h3>Constructing a ComplicationDrawable from XML</h3>
  *
- * Constructing a ComplicationDrawable from an XML file makes it easier to modify multiple
- * styling attributes at once without calling any set methods. You may also use different XML files
- * to switch between different styles your watch face supports.
+ * Constructing a ComplicationDrawable from an XML file makes it easier to modify multiple styling
+ * attributes at once without calling any set methods. You may also use different XML files to
+ * switch between different styles your watch face supports.
  *
- *
- * To construct a ComplicationDrawable from a drawable XML file, you may create an XML file in
- * your project's `res/drawable` folder. A ComplicationDrawable with red text and white title
- * in active mode, and white text and white title in ambient mode would look like this:
- *
+ * To construct a ComplicationDrawable from a drawable XML file, you may create an XML file in your
+ * project's `res/drawable` folder. A ComplicationDrawable with red text and white title in active
+ * mode, and white text and white title in ambient mode would look like this:
  * ```
  * <?xml version="1.0" encoding="utf-8"?>
  * <android.support.wearable.complication.rendering.ComplicationDrawable
@@ -85,10 +82,8 @@
  * </android.support.wearable.complication.rendering.ComplicationDrawable>
  * ```
  *
- *
- * A top-level `drawable` tag with the `class` attribute may also be used to
- * construct a ComplicationDrawable from an XML file:
- *
+ * A top-level `drawable` tag with the `class` attribute may also be used to construct a
+ * ComplicationDrawable from an XML file:
  * ```
  * <?xml version="1.0" encoding="utf-8"?>
  * <drawable
@@ -101,9 +96,9 @@
  * </drawable>
  * ```
  *
- * To inflate a ComplicationDrawable from XML file, use the [.getDrawable]
- * method. ComplicationDrawable needs access to the current context in order to style and draw
- * the complication.
+ * To inflate a ComplicationDrawable from XML file, use the [.getDrawable] method.
+ * ComplicationDrawable needs access to the current context in order to style and draw the
+ * complication.
  *
  * ```
  * public void onCreate(SurfaceHolder holder) {
@@ -116,6 +111,7 @@
  * ```
  *
  * <h4>Syntax:</h4>
+ *
  * ```
  * <?xml version="1.0" encoding="utf-8"?>
  * <android.support.wearable.complication.rendering.ComplicationDrawable
@@ -178,13 +174,11 @@
  * rectangular bounds might draw the icon to the left of the short text instead.
  */
 public class ComplicationDrawable : Drawable {
-    /**
-     * Returns the [Context] used to render the complication.
-     */
+    /** Returns the [Context] used to render the complication. */
     public var context: Context? = null
         private set
 
-    /** Returns complication renderer.  */
+    /** Returns complication renderer. */
     @VisibleForTesting(otherwise = VisibleForTesting.NONE)
     @get:JvmName("getComplicationRenderer")
     internal var complicationRenderer: ComplicationRenderer? = null
@@ -225,8 +219,8 @@
     public var isBurnInProtectionOn: Boolean = false
 
     /**
-     * Whether the complication is currently highlighted. This may be called by a watch face when
-     * a complication is tapped.
+     * Whether the complication is currently highlighted. This may be called by a watch face when a
+     * complication is tapped.
      *
      * If watch face is in ambient mode, highlight will not be visible even if this is set to
      * `true`, because it may cause burn-in or power inefficiency.
@@ -278,8 +272,8 @@
      * permission dialogs by the [onTap] method, in case current watch face doesn't have the
      * permission to receive complication data.
      *
-     * If this ComplicationDrawable is retrieved using [Resources.getDrawable], this method must
-     * be called before calling any of the methods mentioned above.
+     * If this ComplicationDrawable is retrieved using [Resources.getDrawable], this method must be
+     * called before calling any of the methods mentioned above.
      *
      * If this ComplicationDrawable is not inflated from an XML file, this method will reset the
      * style to match the default values, so if ComplicationDrawable(drawable: ComplicationDrawable)
@@ -297,8 +291,10 @@
             setStyleToDefaultValues(ambientStyle, context.resources)
         }
         if (!alreadyStyled) {
-            highlightDuration = context.resources
-                .getInteger(R.integer.complicationDrawable_highlightDurationMs).toLong()
+            highlightDuration =
+                context.resources
+                    .getInteger(R.integer.complicationDrawable_highlightDurationMs)
+                    .toLong()
         }
         complicationRenderer = ComplicationRenderer(this.context, activeStyle, ambientStyle)
         val nonNullComplicationRenderer = complicationRenderer!!
@@ -322,26 +318,29 @@
         val a = r.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.ComplicationDrawable)
         val complicationStyle = if (isAmbient) ambientStyle else activeStyle
         if (a.hasValue(R.styleable.ComplicationDrawable_backgroundColor)) {
-            complicationStyle.backgroundColor = a.getColor(
-                R.styleable.ComplicationDrawable_backgroundColor,
-                r.getColor(R.color.complicationDrawable_backgroundColor, null)
-            )
+            complicationStyle.backgroundColor =
+                a.getColor(
+                    R.styleable.ComplicationDrawable_backgroundColor,
+                    r.getColor(R.color.complicationDrawable_backgroundColor, null)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_backgroundDrawable)) {
             complicationStyle.backgroundDrawable =
                 a.getDrawable(R.styleable.ComplicationDrawable_backgroundDrawable)
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_textColor)) {
-            complicationStyle.textColor = a.getColor(
-                R.styleable.ComplicationDrawable_textColor,
-                r.getColor(R.color.complicationDrawable_textColor, null)
-            )
+            complicationStyle.textColor =
+                a.getColor(
+                    R.styleable.ComplicationDrawable_textColor,
+                    r.getColor(R.color.complicationDrawable_textColor, null)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_titleColor)) {
-            complicationStyle.titleColor = a.getColor(
-                R.styleable.ComplicationDrawable_titleColor,
-                r.getColor(R.color.complicationDrawable_titleColor, null)
-            )
+            complicationStyle.titleColor =
+                a.getColor(
+                    R.styleable.ComplicationDrawable_titleColor,
+                    r.getColor(R.color.complicationDrawable_titleColor, null)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_textTypeface)) {
             complicationStyle.setTextTypeface(
@@ -360,88 +359,95 @@
             )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_textSize)) {
-            complicationStyle.textSize = a.getDimensionPixelSize(
-                R.styleable.ComplicationDrawable_textSize,
-                r.getDimensionPixelSize(R.dimen.complicationDrawable_textSize)
-            )
+            complicationStyle.textSize =
+                a.getDimensionPixelSize(
+                    R.styleable.ComplicationDrawable_textSize,
+                    r.getDimensionPixelSize(R.dimen.complicationDrawable_textSize)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_titleSize)) {
-            complicationStyle.titleSize = a.getDimensionPixelSize(
-                R.styleable.ComplicationDrawable_titleSize,
-                r.getDimensionPixelSize(R.dimen.complicationDrawable_titleSize)
-            )
+            complicationStyle.titleSize =
+                a.getDimensionPixelSize(
+                    R.styleable.ComplicationDrawable_titleSize,
+                    r.getDimensionPixelSize(R.dimen.complicationDrawable_titleSize)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_iconColor)) {
-            complicationStyle.iconColor = a.getColor(
-                R.styleable.ComplicationDrawable_iconColor,
-                r.getColor(R.color.complicationDrawable_iconColor, null)
-            )
+            complicationStyle.iconColor =
+                a.getColor(
+                    R.styleable.ComplicationDrawable_iconColor,
+                    r.getColor(R.color.complicationDrawable_iconColor, null)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_borderColor)) {
-            complicationStyle.borderColor = a.getColor(
-                R.styleable.ComplicationDrawable_borderColor,
-                r.getColor(R.color.complicationDrawable_borderColor, null)
-            )
+            complicationStyle.borderColor =
+                a.getColor(
+                    R.styleable.ComplicationDrawable_borderColor,
+                    r.getColor(R.color.complicationDrawable_borderColor, null)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_borderRadius)) {
-            complicationStyle.borderRadius = a.getDimensionPixelSize(
-                R.styleable.ComplicationDrawable_borderRadius,
-                r.getDimensionPixelSize(R.dimen.complicationDrawable_borderRadius)
-            )
+            complicationStyle.borderRadius =
+                a.getDimensionPixelSize(
+                    R.styleable.ComplicationDrawable_borderRadius,
+                    r.getDimensionPixelSize(R.dimen.complicationDrawable_borderRadius)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_borderStyle)) {
-            complicationStyle.borderStyle = a.getInt(
-                R.styleable.ComplicationDrawable_borderStyle,
-                r.getInteger(R.integer.complicationDrawable_borderStyle)
-            )
+            complicationStyle.borderStyle =
+                a.getInt(
+                    R.styleable.ComplicationDrawable_borderStyle,
+                    r.getInteger(R.integer.complicationDrawable_borderStyle)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_borderDashWidth)) {
-            complicationStyle.borderDashWidth = a.getDimensionPixelSize(
-                R.styleable.ComplicationDrawable_borderDashWidth,
-                r.getDimensionPixelSize(R.dimen.complicationDrawable_borderDashWidth)
-            )
+            complicationStyle.borderDashWidth =
+                a.getDimensionPixelSize(
+                    R.styleable.ComplicationDrawable_borderDashWidth,
+                    r.getDimensionPixelSize(R.dimen.complicationDrawable_borderDashWidth)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_borderDashGap)) {
-            complicationStyle.borderDashGap = a.getDimensionPixelSize(
-                R.styleable.ComplicationDrawable_borderDashGap,
-                r.getDimensionPixelSize(R.dimen.complicationDrawable_borderDashGap)
-            )
+            complicationStyle.borderDashGap =
+                a.getDimensionPixelSize(
+                    R.styleable.ComplicationDrawable_borderDashGap,
+                    r.getDimensionPixelSize(R.dimen.complicationDrawable_borderDashGap)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_borderWidth)) {
-            complicationStyle.borderWidth = a.getDimensionPixelSize(
-                R.styleable.ComplicationDrawable_borderWidth,
-                r.getDimensionPixelSize(R.dimen.complicationDrawable_borderWidth)
-            )
+            complicationStyle.borderWidth =
+                a.getDimensionPixelSize(
+                    R.styleable.ComplicationDrawable_borderWidth,
+                    r.getDimensionPixelSize(R.dimen.complicationDrawable_borderWidth)
+                )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_rangedValueRingWidth)) {
-            complicationStyle.rangedValueRingWidth = a.getDimensionPixelSize(
-                R.styleable.ComplicationDrawable_rangedValueRingWidth,
-                r.getDimensionPixelSize(
-                    R.dimen.complicationDrawable_rangedValueRingWidth
+            complicationStyle.rangedValueRingWidth =
+                a.getDimensionPixelSize(
+                    R.styleable.ComplicationDrawable_rangedValueRingWidth,
+                    r.getDimensionPixelSize(R.dimen.complicationDrawable_rangedValueRingWidth)
                 )
-            )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_rangedValuePrimaryColor)) {
-            complicationStyle.rangedValuePrimaryColor = a.getColor(
-                R.styleable.ComplicationDrawable_rangedValuePrimaryColor,
-                r.getColor(
-                    R.color.complicationDrawable_rangedValuePrimaryColor, null
+            complicationStyle.rangedValuePrimaryColor =
+                a.getColor(
+                    R.styleable.ComplicationDrawable_rangedValuePrimaryColor,
+                    r.getColor(R.color.complicationDrawable_rangedValuePrimaryColor, null)
                 )
-            )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_rangedValueSecondaryColor)) {
-            complicationStyle.rangedValueSecondaryColor = a.getColor(
-                R.styleable.ComplicationDrawable_rangedValueSecondaryColor,
-                r.getColor(
-                    R.color.complicationDrawable_rangedValueSecondaryColor, null
+            complicationStyle.rangedValueSecondaryColor =
+                a.getColor(
+                    R.styleable.ComplicationDrawable_rangedValueSecondaryColor,
+                    r.getColor(R.color.complicationDrawable_rangedValueSecondaryColor, null)
                 )
-            )
         }
         if (a.hasValue(R.styleable.ComplicationDrawable_highlightColor)) {
-            complicationStyle.highlightColor = a.getColor(
-                R.styleable.ComplicationDrawable_highlightColor,
-                r.getColor(R.color.complicationDrawable_highlightColor, null)
-            )
+            complicationStyle.highlightColor =
+                a.getColor(
+                    R.styleable.ComplicationDrawable_highlightColor,
+                    r.getColor(R.color.complicationDrawable_highlightColor, null)
+                )
         }
         a.recycle()
     }
@@ -451,10 +457,10 @@
      * for each ComplicationDrawable. Note that framework may have called this once to create the
      * ComplicationDrawable instance from an XML resource.
      *
-     * @param r      Resources used to resolve attribute values
+     * @param r Resources used to resolve attribute values
      * @param parser XML parser from which to inflate this ComplicationDrawable
-     * @param attrs  Base set of attribute values
-     * @param theme  Ignored by ComplicationDrawable
+     * @param attrs Base set of attribute values
+     * @param theme Ignored by ComplicationDrawable
      */
     @Throws(XmlPullParserException::class, IOException::class)
     public override fun inflate(
@@ -477,7 +483,7 @@
         inflateStyle(true, r, parser)
         while (
             parser.next().also { type = it } != XmlPullParser.END_DOCUMENT &&
-            (type != XmlPullParser.END_TAG || parser.depth > outerDepth)
+                (type != XmlPullParser.END_TAG || parser.depth > outerDepth)
         ) {
             if (type != XmlPullParser.START_TAG) {
                 continue
@@ -540,16 +546,15 @@
     override fun getOpacity(): Int = PixelFormat.OPAQUE
 
     protected override fun onBoundsChange(bounds: Rect) {
-        complicationRenderer?.let {
-            it.bounds = bounds
-        }
+        complicationRenderer?.let { it.bounds = bounds }
     }
 
-    /** If the ranged value progress should be hidden when [ComplicationData] is of type
+    /**
+     * If the ranged value progress should be hidden when [ComplicationData] is of type
      * [RANGED_VALUE].
      *
      * @attr ref androidx.wear.watchface.complicationSlots.rendering.R
-     * .styleable#ComplicationDrawable_rangedValueProgressHidden
+     *   .styleable#ComplicationDrawable_rangedValueProgressHidden
      */
     public var isRangedValueProgressHidden: Boolean = false
         set(rangedValueProgressHidden) {
@@ -561,8 +566,8 @@
      * Sets the complication data to be drawn.
      *
      * @param complicationData The [ComplicationData] to set
-     * @param loadDrawablesAsync If true any drawables should be loaded asynchronously,
-     * otherwise they will be loaded synchronously.
+     * @param loadDrawablesAsync If true any drawables should be loaded asynchronously, otherwise
+     *   they will be loaded synchronously.
      */
     public fun setComplicationData(
         complicationData: ComplicationData,
@@ -601,45 +606,43 @@
         private set
 
     init {
-        complicationRenderer?.setComplicationData(
-            complicationData.asWireComplicationData(),
-            false
-        )
+        complicationRenderer?.setComplicationData(complicationData.asWireComplicationData(), false)
     }
 
     /**
      * Sends the tap action for the complication if tap coordinates are inside the complication
      * bounds.
      *
-     * This method will also highlight the complication. The highlight duration is 300
-     * milliseconds by default but can be modified using the [.setHighlightDuration]
-     * method.
+     * This method will also highlight the complication. The highlight duration is 300 milliseconds
+     * by default but can be modified using the [.setHighlightDuration] method.
      *
      * If [ComplicationData] has the type [NO_PERMISSION], this method will launch an intent to
-     * request complication permission for the watch face. This will only work if the context set
-     * by [getDrawable] or the constructor is an instance of WatchFaceService.
+     * request complication permission for the watch face. This will only work if the context set by
+     * [getDrawable] or the constructor is an instance of WatchFaceService.
      *
      * @param x X coordinate of the tap relative to screen origin
      * @param y Y coordinate of the tap relative to screen origin
      * @return `true` if the action was successful, `false` if complication data is not set, the
-     * complication has no tap action, the tap action (i.e. [android.app.PendingIntent]) is
-     * cancelled, or the given x and y are not inside the complication bounds.
+     *   complication has no tap action, the tap action (i.e. [android.app.PendingIntent]) is
+     *   cancelled, or the given x and y are not inside the complication bounds.
      */
     public fun onTap(@Px x: Int, @Px y: Int): Boolean {
         if (complicationRenderer == null) {
             return false
         }
         val data = complicationRenderer!!.complicationData ?: return false
-        if (!data.hasTapAction() && data.type
-            != android.support.wearable.complications.ComplicationData.TYPE_NO_PERMISSION
+        if (
+            !data.hasTapAction() &&
+                data.type !=
+                    android.support.wearable.complications.ComplicationData.TYPE_NO_PERMISSION
         ) {
             return false
         }
         if (!bounds.contains(x, y)) {
             return false
         }
-        if (data.type
-            == android.support.wearable.complications.ComplicationData.TYPE_NO_PERMISSION
+        if (
+            data.type == android.support.wearable.complications.ComplicationData.TYPE_NO_PERMISSION
         ) {
             // Check if context is an instance of WatchFaceService. We can't use the standard
             // instanceof operator because WatchFaceService is defined in library which depends on
@@ -648,11 +651,12 @@
                 if (context!!::class.java.name == "androidx.wear.watchface.WatchFaceService") {
                     context!!.startActivity(
                         ComplicationHelperActivity.createPermissionRequestHelperIntent(
-                            context!!,
-                            ComponentName(context!!, context!!.javaClass),
-                            /* complicationDenied */ null,
-                            /* complicationRationale */null
-                        ).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+                                context!!,
+                                ComponentName(context!!, context!!.javaClass),
+                                /* complicationDenied */ null,
+                                /* complicationRationale */ null
+                            )
+                            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                     )
                 } else {
                     return false
@@ -678,7 +682,8 @@
         return true
     }
 
-    /** The duration for the complication to stay highlighted after calling the [onTap] method.
+    /**
+     * The duration for the complication to stay highlighted after calling the [onTap] method.
      * Default value is 300 milliseconds. Setting highlight duration to 0 disables highlighting.
      */
     public var highlightDuration: Long = 0
@@ -687,7 +692,7 @@
             field = highlightDurationMillis
         }
 
-    /** Builds styles and syncs them with the complication renderer.  */
+    /** Builds styles and syncs them with the complication renderer. */
     @JvmName(name = "updateStyleIfRequired")
     internal fun updateStyleIfRequired() {
         if (activeStyle.isDirty || ambientStyle.isDirty) {
@@ -724,9 +729,9 @@
          * Creates a ComplicationDrawable from a resource.
          *
          * @param context The [Context] to load the resource from
-         * @param id      The id of the resource to load
+         * @param id The id of the resource to load
          * @return The [ComplicationDrawable] loaded from the specified resource id or null if it
-         * doesn't exist.
+         *   doesn't exist.
          */
         @JvmStatic
         public fun getDrawable(context: Context, id: Int): ComplicationDrawable? {
@@ -743,12 +748,14 @@
             style.titleColor = r.getColor(R.color.complicationDrawable_titleColor, null)
             style.setTextTypeface(
                 Typeface.create(
-                    r.getString(R.string.complicationDrawable_textTypeface), Typeface.NORMAL
+                    r.getString(R.string.complicationDrawable_textTypeface),
+                    Typeface.NORMAL
                 )
             )
             style.setTitleTypeface(
                 Typeface.create(
-                    r.getString(R.string.complicationDrawable_titleTypeface), Typeface.NORMAL
+                    r.getString(R.string.complicationDrawable_titleTypeface),
+                    Typeface.NORMAL
                 )
             )
             style.textSize = r.getDimensionPixelSize(R.dimen.complicationDrawable_textSize)
diff --git a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationHighlightRenderer.kt b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationHighlightRenderer.kt
index ca6f60a..d6b809c 100644
--- a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationHighlightRenderer.kt
+++ b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationHighlightRenderer.kt
@@ -32,30 +32,28 @@
     @Px private val outlineExpansion: Float,
     @Px outlineStrokeWidth: Float
 ) {
-    private val transparentWhitePaint = Paint().apply {
-        style = Paint.Style.FILL
-        color = Color.argb(0, 255, 255, 255) // Transparent white
-        xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC)
-        isAntiAlias = true
-    }
+    private val transparentWhitePaint =
+        Paint().apply {
+            style = Paint.Style.FILL
+            color = Color.argb(0, 255, 255, 255) // Transparent white
+            xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC)
+            isAntiAlias = true
+        }
 
-    private val outlinePaint = Paint().apply {
-        style = Paint.Style.STROKE
-        strokeWidth = outlineStrokeWidth
-        isAntiAlias = true
-    }
+    private val outlinePaint =
+        Paint().apply {
+            style = Paint.Style.STROKE
+            strokeWidth = outlineStrokeWidth
+            isAntiAlias = true
+        }
 
     /**
      * Intended for use by [CanvasComplicationDrawable.drawHighlight]. Draws a thick line around the
-     * complication with [color] and with the given bounds.  Fills the center of the complication
+     * complication with [color] and with the given bounds. Fills the center of the complication
      * with transparent white. When composited on top of the underlying watchface the complication's
      * original pixels will be preserved with their original brightness.
      */
-    public fun drawComplicationHighlight(
-        canvas: Canvas,
-        bounds: Rect,
-        @ColorInt color: Int
-    ) {
+    public fun drawComplicationHighlight(canvas: Canvas, bounds: Rect, @ColorInt color: Int) {
         outlinePaint.color = color
         val radius = bounds.height() / 2.0f
         if (bounds.width() == bounds.height()) {
@@ -63,19 +61,9 @@
             val ctrX = floor(bounds.exactCenterX() + 0.5f)
             val ctrY = floor(bounds.exactCenterY() + 0.5f)
 
-            canvas.drawCircle(
-                ctrX,
-                ctrY,
-                radius + outlineExpansion,
-                transparentWhitePaint
-            )
+            canvas.drawCircle(ctrX, ctrY, radius + outlineExpansion, transparentWhitePaint)
 
-            canvas.drawCircle(
-                ctrX,
-                ctrY,
-                radius + outlineExpansion,
-                outlinePaint
-            )
+            canvas.drawCircle(ctrX, ctrY, radius + outlineExpansion, outlinePaint)
         } else {
             canvas.drawRoundRect(
                 RectF(
diff --git a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationRenderer.java b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationRenderer.java
index f44dadb..e411088 100644
--- a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationRenderer.java
+++ b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationRenderer.java
@@ -85,12 +85,10 @@
      * padding and gravity. Testing this class with DEBUG_MODE set to true causes a test to fail so
      * it's only meant to be true on local builds.
      */
-    @VisibleForTesting
-    static final boolean DEBUG_MODE = false;
+    @VisibleForTesting static final boolean DEBUG_MODE = false;
 
     /** The gap between the in progress stroke and the remain stroke. */
-    @VisibleForTesting
-    static final int STROKE_GAP_IN_DEGREES = 4;
+    @VisibleForTesting static final int STROKE_GAP_IN_DEGREES = 4;
 
     /** The gap between in progress stroke for scores. */
     static final int STROKE_GAP_IN_DEGREES_FOR_SCORE = 15;
@@ -99,8 +97,7 @@
      * Starting angle for ranged value, i.e. in progress part will start from this angle. As it's
      * drawn clockwise, -90 corresponds to 12 o'clock on a watch.
      */
-    @VisibleForTesting
-    static final int RANGED_VALUE_START_ANGLE = -90;
+    @VisibleForTesting static final int RANGED_VALUE_START_ANGLE = -90;
 
     /** Size fraction used for drawing icons. 1.0 here means no padding is applied. */
     private static final float ICON_SIZE_FRACTION = 1.0f;
@@ -118,8 +115,7 @@
     private static final float TEXT_PADDING_HEIGHT_FRACTION = 0.1f;
 
     /** Used to apply a grey color to a placeholder. */
-    @VisibleForTesting
-    static final Paint PLACEHOLDER_PAINT = createPlaceHolderPaint();
+    @VisibleForTesting static final Paint PLACEHOLDER_PAINT = createPlaceHolderPaint();
 
     /** Defines the placeholder shape for WeightedElementsComplicationData. */
     private static final float[] PLACEHOLDER_WEIGHTS = {3.0f, 2.0f, 1.0f};
@@ -153,8 +149,8 @@
 
     /** Used to apply a grey tint to a placeholder icon. */
     @VisibleForTesting
-    static final ColorFilter PLACEHOLDER_COLOR_FILTER = new PorterDuffColorFilter(
-            Color.LTGRAY, PorterDuff.Mode.SRC_IN);
+    static final ColorFilter PLACEHOLDER_COLOR_FILTER =
+            new PorterDuffColorFilter(Color.LTGRAY, PorterDuff.Mode.SRC_IN);
 
     /** Context is required for localization. */
     private final Context mContext;
@@ -170,31 +166,19 @@
     private boolean mHasNoData;
 
     // Below drawables will be null until they are fully loaded.
-    @Nullable
-    Drawable mIcon;
-    @Nullable
-    Drawable mBurnInProtectionIcon;
-    @Nullable
-    Drawable mSmallImage;
-    @Nullable
-    Drawable mBurnInProtectionSmallImage;
-    @Nullable
-    Drawable mLargeImage;
+    @Nullable Drawable mIcon;
+    @Nullable Drawable mBurnInProtectionIcon;
+    @Nullable Drawable mSmallImage;
+    @Nullable Drawable mBurnInProtectionSmallImage;
+    @Nullable Drawable mLargeImage;
 
-    @VisibleForTesting
-    boolean mIsPlaceholderIcon;
-    @VisibleForTesting
-    boolean mIsPlaceholderSmallImage;
-    @VisibleForTesting
-    boolean mIsPlaceholderLargeImage;
-    @VisibleForTesting
-    boolean mIsPlaceholderRangedValue;
-    @VisibleForTesting
-    boolean mIsPlaceholderWeightedElements;
-    @VisibleForTesting
-    boolean mIsPlaceholderTitle;
-    @VisibleForTesting
-    boolean mIsPlaceholderText;
+    @VisibleForTesting boolean mIsPlaceholderIcon;
+    @VisibleForTesting boolean mIsPlaceholderSmallImage;
+    @VisibleForTesting boolean mIsPlaceholderLargeImage;
+    @VisibleForTesting boolean mIsPlaceholderRangedValue;
+    @VisibleForTesting boolean mIsPlaceholderWeightedElements;
+    @VisibleForTesting boolean mIsPlaceholderTitle;
+    @VisibleForTesting boolean mIsPlaceholderText;
     boolean mIsPlaceholder;
 
     // Drawables for rendering rounded images
@@ -203,11 +187,9 @@
     private RoundedDrawable mRoundedSmallImage = null;
 
     // Text renderers
-    @VisibleForTesting
-    TextRenderer mMainTextRenderer = new TextRenderer();
+    @VisibleForTesting TextRenderer mMainTextRenderer = new TextRenderer();
 
-    @VisibleForTesting
-    TextRenderer mSubTextRenderer = new TextRenderer();
+    @VisibleForTesting TextRenderer mSubTextRenderer = new TextRenderer();
 
     // Bounds for components. NB we want to avoid allocations in watch face rendering code to
     // reduce GC pressure.
@@ -222,34 +204,28 @@
     private final RectF mRangedValueBoundsF = new RectF();
 
     // Paint sets for active and ambient modes.
-    @VisibleForTesting
-    PaintSet mActivePaintSet = null;
+    @VisibleForTesting PaintSet mActivePaintSet = null;
     PaintSet mActivePaintSetLostTapAction = null;
-    @VisibleForTesting
-    PaintSet mAmbientPaintSet = null;
+    @VisibleForTesting PaintSet mAmbientPaintSet = null;
     PaintSet mAmbientPaintSetLostTapAction = null;
 
     // Paints for texts
-    @Nullable
-    private TextPaint mMainTextPaint = null;
-    @Nullable
-    private TextPaint mSubTextPaint = null;
+    @Nullable private TextPaint mMainTextPaint = null;
+    @Nullable private TextPaint mSubTextPaint = null;
 
     // Styles for active and ambient modes.
     private ComplicationStyle mActiveStyle;
     private ComplicationStyle mAmbientStyle;
 
-    @Nullable
-    private Paint mDebugPaint;
+    @Nullable private Paint mDebugPaint;
 
-    @Nullable
-    private OnInvalidateListener mInvalidateListener;
+    @Nullable private OnInvalidateListener mInvalidateListener;
 
     /**
      * Initializes complication renderer.
      *
-     * @param context      Current [Context].
-     * @param activeStyle  ComplicationSlot style to be used when in active mode.
+     * @param context Current [Context].
+     * @param activeStyle ComplicationSlot style to be used when in active mode.
      * @param ambientStyle ComplicationSlot style to be used when in ambient mode.
      */
     ComplicationRenderer(
@@ -266,7 +242,7 @@
     /**
      * Updates the complication styles in active and ambient modes
      *
-     * @param activeStyle  complication style in active mode
+     * @param activeStyle complication style in active mode
      * @param ambientStyle complication style in ambient mode
      */
     public void updateStyle(
@@ -286,10 +262,9 @@
     /**
      * Sets the complication data to be rendered.
      *
-     * @param data               ComplicationSlot data to be rendered. If this is null, nothing
-     *                           is drawn.
-     * @param loadDrawablesAsync If true any drawables will be loaded asynchronously, otherwise
-     *                           they will be loaded synchronously.
+     * @param data ComplicationSlot data to be rendered. If this is null, nothing is drawn.
+     * @param loadDrawablesAsync If true any drawables will be loaded asynchronously, otherwise they
+     *     will be loaded synchronously.
      */
     public void setComplicationData(@Nullable ComplicationData data, boolean loadDrawablesAsync) {
         if (Objects.equals(mComplicationData, data)) {
@@ -322,20 +297,19 @@
                         data.hasSmallImage() && ImageKt.isPlaceholder(data.getSmallImage());
                 mIsPlaceholderLargeImage =
                         data.hasLargeImage() && ImageKt.isPlaceholder(data.getLargeImage());
-                mIsPlaceholderRangedValue = data.hasRangedValue()
-                        && data.getRangedValue() == RangedValueComplicationData.PLACEHOLDER;
-                mIsPlaceholderWeightedElements = data.getElementWeights() != null
-                        && data.getElementWeights().length == 0;
+                mIsPlaceholderRangedValue =
+                        data.hasRangedValue()
+                                && data.getRangedValue() == RangedValueComplicationData.PLACEHOLDER;
+                mIsPlaceholderWeightedElements =
+                        data.getElementWeights() != null && data.getElementWeights().length == 0;
                 if (data.getType() == ComplicationData.TYPE_LONG_TEXT) {
                     mIsPlaceholderTitle =
                             data.hasLongTitle() && data.getLongTitle().isPlaceholder();
-                    mIsPlaceholderText =
-                            data.hasLongText() && data.getLongText().isPlaceholder();
+                    mIsPlaceholderText = data.hasLongText() && data.getLongText().isPlaceholder();
                 } else {
                     mIsPlaceholderTitle =
                             data.hasShortTitle() && data.getShortTitle().isPlaceholder();
-                    mIsPlaceholderText =
-                            data.hasShortText() && data.getShortText().isPlaceholder();
+                    mIsPlaceholderText = data.hasShortText() && data.getShortText().isPlaceholder();
                 }
                 mComplicationData = data;
                 mHasNoData = false;
@@ -431,14 +405,13 @@
      * Renders complication data on a canvas. Does nothing if the current data is null, has type
      * 'empty' or 'not configured', or is not active.
      *
-     * @param canvas           canvas to be drawn on.
-     * @param currentTime      current time as an {@link Instant}
-     * @param inAmbientMode    true if the device is in ambient mode.
-     * @param lowBitAmbient    true if the screen supports fewer bits for each color in ambient
-     *                         mode.
+     * @param canvas canvas to be drawn on.
+     * @param currentTime current time as an {@link Instant}
+     * @param inAmbientMode true if the device is in ambient mode.
+     * @param lowBitAmbient true if the screen supports fewer bits for each color in ambient mode.
      * @param burnInProtection true if burn-in protection is required.
      * @param showTapHighlight true if the complication should be drawn with a highlighted effect,
-     *                         to provide visual feedback after a tap.
+     *     to provide visual feedback after a tap.
      */
     public void draw(
             @NonNull Canvas canvas,
@@ -459,13 +432,16 @@
         // reinitialize.
         if (inAmbientMode
                 && (mAmbientPaintSet.mLowBitAmbient != lowBitAmbient
-                || mAmbientPaintSet.mBurnInProtection != burnInProtection)) {
+                        || mAmbientPaintSet.mBurnInProtection != burnInProtection)) {
             mAmbientPaintSet = new PaintSet(mAmbientStyle, true, lowBitAmbient, burnInProtection);
         }
         // Choose the correct paint set to use
-        PaintSet currentPaintSet = mComplicationData.getTapActionLostDueToSerialization()
-                ? (inAmbientMode ? mAmbientPaintSetLostTapAction : mActivePaintSetLostTapAction) :
-                (inAmbientMode ? mAmbientPaintSet : mActivePaintSet);
+        PaintSet currentPaintSet =
+                mComplicationData.getTapActionLostDueToSerialization()
+                        ? (inAmbientMode
+                                ? mAmbientPaintSetLostTapAction
+                                : mActivePaintSetLostTapAction)
+                        : (inAmbientMode ? mAmbientPaintSet : mActivePaintSet);
         // Update complication texts
         updateComplicationTexts(currentTime.toEpochMilli());
         canvas.save();
@@ -503,24 +479,28 @@
         if (mComplicationData.hasShortText()) {
             mMainTextRenderer.setMaxLines(1);
             mMainTextRenderer.setText(
-                    mComplicationData.getShortText().getTextAt(
-                            mContext.getResources(), currentTimeMillis));
+                    mComplicationData
+                            .getShortText()
+                            .getTextAt(mContext.getResources(), currentTimeMillis));
             if (mComplicationData.getShortTitle() != null) {
                 mSubTextRenderer.setText(
-                        mComplicationData.getShortTitle().getTextAt(
-                                mContext.getResources(), currentTimeMillis));
+                        mComplicationData
+                                .getShortTitle()
+                                .getTextAt(mContext.getResources(), currentTimeMillis));
             } else {
                 mSubTextRenderer.setText("");
             }
         }
         if (mComplicationData.hasLongText()) {
             mMainTextRenderer.setText(
-                    mComplicationData.getLongText().getTextAt(
-                            mContext.getResources(), currentTimeMillis));
+                    mComplicationData
+                            .getLongText()
+                            .getTextAt(mContext.getResources(), currentTimeMillis));
             if (mComplicationData.getLongTitle() != null) {
                 mSubTextRenderer.setText(
-                        mComplicationData.getLongTitle().getTextAt(
-                                mContext.getResources(), currentTimeMillis));
+                        mComplicationData
+                                .getLongTitle()
+                                .getTextAt(mContext.getResources(), currentTimeMillis));
                 // If long text has title, only show one line from each
                 mMainTextRenderer.setMaxLines(1);
             } else {
@@ -581,19 +561,21 @@
             // Avoid drawing two placeholder text fields of the same length.
             if (!mSubTextBounds.isEmpty()
                     && (mComplicationData.getType() == ComplicationData.TYPE_SHORT_TEXT
-                    || mComplicationData.getType() == ComplicationData.TYPE_LONG_TEXT)) {
+                            || mComplicationData.getType() == ComplicationData.TYPE_LONG_TEXT)) {
                 width = mMainTextBounds.width() * 0.4f;
                 height = mMainTextBounds.height() * 0.9f;
             } else {
                 width = mMainTextBounds.width();
                 height = mMainTextBounds.height() * 0.75f;
             }
-            canvas.drawRoundRect(mMainTextBounds.left,
+            canvas.drawRoundRect(
+                    mMainTextBounds.left,
                     mMainTextBounds.top + height * 0.1f,
                     mMainTextBounds.left + width,
                     mMainTextBounds.top + height,
                     mMainTextBounds.width() * 0.05f,
-                    mMainTextBounds.height() * 0.1f, PLACEHOLDER_PAINT);
+                    mMainTextBounds.height() * 0.1f,
+                    PLACEHOLDER_PAINT);
         } else {
             mMainTextRenderer.draw(canvas, mMainTextBounds);
         }
@@ -613,10 +595,14 @@
         }
 
         if (isPlaceholder) {
-            canvas.drawRoundRect(mSubTextBounds.left,
+            canvas.drawRoundRect(
+                    mSubTextBounds.left,
                     mSubTextBounds.bottom - mSubTextBounds.height() * 0.9f,
-                    mSubTextBounds.right, mSubTextBounds.bottom, mSubTextBounds.width() * 0.05f,
-                    mSubTextBounds.height() * 0.1f, PLACEHOLDER_PAINT);
+                    mSubTextBounds.right,
+                    mSubTextBounds.bottom,
+                    mSubTextBounds.width() * 0.05f,
+                    mSubTextBounds.height() * 0.1f,
+                    PLACEHOLDER_PAINT);
         } else {
             mSubTextRenderer.draw(canvas, mSubTextBounds);
         }
@@ -672,22 +658,30 @@
 
         float startAngle = RANGED_VALUE_START_ANGLE + gap / 2.0f;
         switch (valueType) {
-            case RangedValueComplicationData.TYPE_RATING: {
-                float sweepAngle = 360.0f - gap / 2;
-                drawProgressBarArc(canvas, isPlaceholder, paintSet, startAngle, sweepAngle);
+            case RangedValueComplicationData.TYPE_RATING:
+                {
+                    float sweepAngle = 360.0f - gap / 2;
+                    drawProgressBarArc(canvas, isPlaceholder, paintSet, startAngle, sweepAngle);
 
-                // Draw the progress indicator.
-                float strokeWidth = paintSet.mInProgressPaint.getStrokeWidth();
-                float radiusX = mRangedValueBoundsF.width() * 0.5f;
-                float radiusY = mRangedValueBoundsF.height() * 0.5f;
-                float x = mRangedValueBoundsF.centerX()
-                        + radiusX * (float) cos(toRadians(startAngle + inProgressAngle));
-                float y = mRangedValueBoundsF.centerY()
-                        + radiusY * (float) sin(toRadians(startAngle + inProgressAngle));
-                canvas.drawCircle(x, y, strokeWidth,
-                        isPlaceholder ? PLACEHOLDER_PROGRESS_PAINT : paintSet.mInProgressPaint);
-                break;
-            }
+                    // Draw the progress indicator.
+                    float strokeWidth = paintSet.mInProgressPaint.getStrokeWidth();
+                    float radiusX = mRangedValueBoundsF.width() * 0.5f;
+                    float radiusY = mRangedValueBoundsF.height() * 0.5f;
+                    float x =
+                            mRangedValueBoundsF.centerX()
+                                    + radiusX
+                                            * (float) cos(toRadians(startAngle + inProgressAngle));
+                    float y =
+                            mRangedValueBoundsF.centerY()
+                                    + radiusY
+                                            * (float) sin(toRadians(startAngle + inProgressAngle));
+                    canvas.drawCircle(
+                            x,
+                            y,
+                            strokeWidth,
+                            isPlaceholder ? PLACEHOLDER_PROGRESS_PAINT : paintSet.mInProgressPaint);
+                    break;
+                }
 
             default:
             case RangedValueComplicationData.TYPE_UNDEFINED:
@@ -700,7 +694,7 @@
                             mRangedValueBoundsF,
                             startAngle + inProgressAngle + gap,
                             remainderAngle,
-                            /* useCenter = */ false,
+                            /* useCenter= */ false,
                             paintSet.mRemainingPaint);
                 }
                 break;
@@ -722,7 +716,7 @@
             rangedValue = 75.0f;
         }
 
-        float value =  Math.min(rangedMaxValue, Math.max(0f, rangedValue));
+        float value = Math.min(rangedMaxValue, Math.max(0f, rangedValue));
         float interval = rangedMaxValue;
         float progress = interval > 0 ? value / interval : 0;
         float gap = STROKE_GAP_IN_DEGREES_FOR_SCORE;
@@ -739,7 +733,11 @@
         float sweepAngle = 360.0f - gap / 2;
 
         // Draw the fixed length progress arc.
-        drawProgressBarArc(canvas, isPlaceholder, paintSet, startAngle,
+        drawProgressBarArc(
+                canvas,
+                isPlaceholder,
+                paintSet,
+                startAngle,
                 sweepAngle - OVER_ACHIEVEMENT_ARC_LENGTH);
 
         // Draw the fixed length over-achievement achievement arc, resenting progress past the
@@ -750,7 +748,7 @@
                 mRangedValueBoundsF,
                 startAngle + sweepAngle - OVER_ACHIEVEMENT_ARC_LENGTH,
                 OVER_ACHIEVEMENT_ARC_LENGTH,
-                /* useCenter = */ false,
+                /* useCenter= */ false,
                 paintSet.mInProgressPaint);
 
         paintSet.mInProgressPaint.setColor(prevColor);
@@ -759,18 +757,27 @@
         float strokeWidth = paintSet.mInProgressPaint.getStrokeWidth();
         float radiusX = mRangedValueBoundsF.width() * 0.5f;
         float radiusY = mRangedValueBoundsF.height() * 0.5f;
-        float x = mRangedValueBoundsF.centerX()
-                + radiusX * (float) cos(toRadians(startAngle + inProgressAngle));
-        float y = mRangedValueBoundsF.centerY()
-                + radiusY * (float) sin(toRadians(startAngle + inProgressAngle));
-        canvas.drawCircle(x, y, strokeWidth,
+        float x =
+                mRangedValueBoundsF.centerX()
+                        + radiusX * (float) cos(toRadians(startAngle + inProgressAngle));
+        float y =
+                mRangedValueBoundsF.centerY()
+                        + radiusY * (float) sin(toRadians(startAngle + inProgressAngle));
+        canvas.drawCircle(
+                x,
+                y,
+                strokeWidth,
                 isPlaceholder ? PLACEHOLDER_PROGRESS_PAINT : paintSet.mInProgressPaint);
 
         mRangedValueBoundsF.inset(-insetAmount, -insetAmount);
     }
 
-    private void drawProgressBarArc(Canvas canvas, boolean isPlaceholder, PaintSet paintSet,
-            float startAngle, float sweepAngle) {
+    private void drawProgressBarArc(
+            Canvas canvas,
+            boolean isPlaceholder,
+            PaintSet paintSet,
+            float startAngle,
+            float sweepAngle) {
         int[] colorRamp = mComplicationData.getColorRamp();
         if (colorRamp != null) {
             if (!checkNotNull(mComplicationData.isColorRampInterpolated())) {
@@ -781,11 +788,14 @@
 
             // Set up the SweepGradient shader, rotated so the start is at the top (12 o'clock).
             SweepGradient gradient =
-                    new SweepGradient(mRangedValueBoundsF.centerX(), mRangedValueBoundsF.centerY(),
-                            colorRamp, /* positions= */ null);
+                    new SweepGradient(
+                            mRangedValueBoundsF.centerX(),
+                            mRangedValueBoundsF.centerY(),
+                            colorRamp,
+                            /* positions= */ null);
             Matrix matrix = new Matrix();
-            matrix.postRotate(startAngle,
-                    mRangedValueBoundsF.centerX(), mRangedValueBoundsF.centerY());
+            matrix.postRotate(
+                    startAngle, mRangedValueBoundsF.centerX(), mRangedValueBoundsF.centerY());
             gradient.setLocalMatrix(matrix);
             paintSet.mInProgressPaint.setShader(gradient);
         }
@@ -799,8 +809,12 @@
     }
 
     private void drawNonInterpolatedColorRampArc(
-            Canvas canvas, boolean isPlaceholder, PaintSet paintSet,
-            float startAngle, float sweepAngle, int[] colorRamp) {
+            Canvas canvas,
+            boolean isPlaceholder,
+            PaintSet paintSet,
+            float startAngle,
+            float sweepAngle,
+            int[] colorRamp) {
         // We need to draw the arc in segments of equal color.
         float segmentSweepAngle = sweepAngle / (float) colorRamp.length;
         int prevColor = paintSet.mInProgressPaint.getColor();
@@ -835,14 +849,14 @@
             paintSet.mInProgressPaint.setColor(mComplicationData.getElementBackgroundColor());
             canvas.drawArc(
                     mRangedValueBoundsF,
-                    /* startAngle = */ 0f,
-                    /* sweepAngle = */ 360.0f,
-                    /* useCenter = */ false,
+                    /* startAngle= */ 0f,
+                    /* sweepAngle= */ 360.0f,
+                    /* useCenter= */ false,
                     paintSet.mInProgressPaint);
         }
 
-        float[] weights = isPlaceholder ? PLACEHOLDER_WEIGHTS :
-                mComplicationData.getElementWeights();
+        float[] weights =
+                isPlaceholder ? PLACEHOLDER_WEIGHTS : mComplicationData.getElementWeights();
         int[] colors = mComplicationData.getElementColors();
         float sum = 0;
         for (float weight : weights) {
@@ -862,7 +876,7 @@
                     mRangedValueBoundsF,
                     angle,
                     sweepLength,
-                    /* useCenter = */ false,
+                    /* useCenter= */ false,
                     isPlaceholder ? PLACEHOLDER_PROGRESS_PAINT : paintSet.mInProgressPaint);
             angle += sweepLength + WEIGHTED_ANGLE_GAP;
         }
@@ -882,8 +896,8 @@
             if (paintSet.isInBurnInProtectionMode() && mBurnInProtectionIcon != null) {
                 icon = mBurnInProtectionIcon;
             }
-            icon.setColorFilter(mIsPlaceholder ? PLACEHOLDER_COLOR_FILTER :
-                    paintSet.mIconColorFilter);
+            icon.setColorFilter(
+                    mIsPlaceholder ? PLACEHOLDER_COLOR_FILTER : paintSet.mIconColorFilter);
             drawIconOnCanvas(canvas, mIconBounds, icon);
         } else if (isPlaceholder) {
             canvas.drawRect(mIconBounds, PLACEHOLDER_PAINT);
@@ -975,10 +989,10 @@
             return Math.max(
                     getBorderRadius(currentStyle)
                             - Math.min(
-                            Math.min(imageBounds.left, mBounds.width() - imageBounds.right),
-                            Math.min(
-                                    imageBounds.top,
-                                    mBounds.height() - imageBounds.bottom)),
+                                    Math.min(imageBounds.left, mBounds.width() - imageBounds.right),
+                                    Math.min(
+                                            imageBounds.top,
+                                            mBounds.height() - imageBounds.bottom)),
                     0);
         }
     }
@@ -1113,11 +1127,14 @@
         mBurnInProtectionIcon = null;
         if (mComplicationData != null) {
             icon = mComplicationData.hasIcon() ? mComplicationData.getIcon() : null;
-            burnInProtectionIcon = mComplicationData.hasBurnInProtectionIcon()
-                    ? mComplicationData.getBurnInProtectionIcon() : null;
+            burnInProtectionIcon =
+                    mComplicationData.hasBurnInProtectionIcon()
+                            ? mComplicationData.getBurnInProtectionIcon()
+                            : null;
             burnInProtectionSmallImage =
                     mComplicationData.hasBurnInProtectionSmallImage()
-                            ? mComplicationData.getBurnInProtectionSmallImage() : null;
+                            ? mComplicationData.getBurnInProtectionSmallImage()
+                            : null;
             smallImage =
                     mComplicationData.hasSmallImage() ? mComplicationData.getSmallImage() : null;
             largeImage =
@@ -1234,11 +1251,14 @@
         mBurnInProtectionIcon = null;
         if (mComplicationData != null) {
             icon = mComplicationData.hasIcon() ? mComplicationData.getIcon() : null;
-            burnInProtectionIcon = mComplicationData.hasBurnInProtectionIcon()
-                    ? mComplicationData.getBurnInProtectionIcon() : null;
+            burnInProtectionIcon =
+                    mComplicationData.hasBurnInProtectionIcon()
+                            ? mComplicationData.getBurnInProtectionIcon()
+                            : null;
             burnInProtectionSmallImage =
                     mComplicationData.hasBurnInProtectionSmallImage()
-                            ? mComplicationData.getBurnInProtectionSmallImage() : null;
+                            ? mComplicationData.getBurnInProtectionSmallImage()
+                            : null;
             smallImage =
                     mComplicationData.hasSmallImage() ? mComplicationData.getSmallImage() : null;
             largeImage =
@@ -1333,7 +1353,7 @@
             mIconColorFilter =
                     antiAlias
                             ? new PorterDuffColorFilter(
-                            style.getIconColor(), PorterDuff.Mode.SRC_IN)
+                                    style.getIconColor(), PorterDuff.Mode.SRC_IN)
                             : new ColorMatrixColorFilter(
                                     createSingleColorMatrix(style.getIconColor()));
 
@@ -1362,7 +1382,7 @@
             if (style.getBorderStyle() == ComplicationStyle.BORDER_STYLE_DASHED) {
                 mBorderPaint.setPathEffect(
                         new DashPathEffect(
-                                new float[]{style.getBorderDashWidth(), style.getBorderDashGap()},
+                                new float[] {style.getBorderDashWidth(), style.getBorderDashGap()},
                                 0));
             }
             if (style.getBorderStyle() == ComplicationStyle.BORDER_STYLE_NONE) {
@@ -1392,11 +1412,11 @@
         @VisibleForTesting
         static ColorMatrix createSingleColorMatrix(int color) {
             return new ColorMatrix(
-                    new float[]{
-                            0, 0, 0, 0, Color.red(color),
-                            0, 0, 0, 0, Color.green(color),
-                            0, 0, 0, 0, Color.blue(color),
-                            0, 0, 0, 255, SINGLE_COLOR_FILTER_ALPHA_CUTOFF * -255
+                    new float[] {
+                        0, 0, 0, 0, Color.red(color),
+                        0, 0, 0, 0, Color.green(color),
+                        0, 0, 0, 0, Color.blue(color),
+                        0, 0, 0, 255, SINGLE_COLOR_FILTER_ALPHA_CUTOFF * -255
                     });
         }
     }
@@ -1455,7 +1475,9 @@
         return mSubTextBounds;
     }
 
-    /** @param outRect Object that receives the computation of the complication's inner bounds */
+    /**
+     * @param outRect Object that receives the computation of the complication's inner bounds
+     */
     @VisibleForTesting(otherwise = VisibleForTesting.NONE)
     public void getComplicationInnerBounds(@NonNull Rect outRect) {
         LayoutUtils.getInnerBounds(
diff --git a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationStyle.kt b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationStyle.kt
index 3e91f21..de9df7a 100644
--- a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationStyle.kt
+++ b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationStyle.kt
@@ -25,9 +25,7 @@
 import androidx.annotation.RestrictTo
 import androidx.wear.watchface.complications.data.SmallImageType
 
-/**
- * Defines attributes to customize appearance of rendered [ ].
- */
+/** Defines attributes to customize appearance of rendered [ ]. */
 public class ComplicationStyle {
     /**
      * Constants used to define border styles for complicationSlots.
@@ -36,28 +34,30 @@
      */
     @Retention(AnnotationRetention.SOURCE)
     @IntDef(BORDER_STYLE_NONE, BORDER_STYLE_SOLID, BORDER_STYLE_DASHED)
-    @RestrictTo(
-        RestrictTo.Scope.LIBRARY_GROUP
-    )
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public annotation class BorderStyle
 
     /** The background color to be used. */
     @ColorInt
     public var backgroundColor: Int = BACKGROUND_COLOR_DEFAULT
         @ColorInt get() = field
-        set(@ColorInt backgroundColor: Int) { field = backgroundColor }
+        set(@ColorInt backgroundColor: Int) {
+            field = backgroundColor
+        }
 
-    /** The background drawable to be used, or null if there's no background drawable.  */
+    /** The background drawable to be used, or null if there's no background drawable. */
     public var backgroundDrawable: Drawable? = null
 
     /**
-     * The color to render the text with. Text color is used for rendering short text and long
-     * text fields.
+     * The color to render the text with. Text color is used for rendering short text and long text
+     * fields.
      */
     @ColorInt
     public var textColor: Int = PRIMARY_COLOR_DEFAULT
         @ColorInt get() = field
-        set(@ColorInt textColor: Int) { field = textColor }
+        set(@ColorInt textColor: Int) {
+            field = textColor
+        }
 
     /**
      * The color to render the title with. Title color is used for rendering short title and long
@@ -66,56 +66,45 @@
     @ColorInt
     public var titleColor: Int = SECONDARY_COLOR_DEFAULT
         @ColorInt get() = field
-        set(@ColorInt titleColor: Int) { field = titleColor }
+        set(@ColorInt titleColor: Int) {
+            field = titleColor
+        }
 
-    /** The typeface to be used for short and long text.  */
+    /** The typeface to be used for short and long text. */
     public var textTypeface: Typeface = TYPEFACE_DEFAULT
         private set
 
-    /** The typeface to be used for short and long title.  */
+    /** The typeface to be used for short and long title. */
     public var titleTypeface: Typeface = TYPEFACE_DEFAULT
         private set
 
-    @Px
-    private var mTextSize = TEXT_SIZE_DEFAULT
+    @Px private var mTextSize = TEXT_SIZE_DEFAULT
 
-    @Px
-    private var mTitleSize = TEXT_SIZE_DEFAULT
+    @Px private var mTitleSize = TEXT_SIZE_DEFAULT
 
     private var mImageColorFilter: ColorFilter? = null
 
-    @ColorInt
-    private var mIconColor = PRIMARY_COLOR_DEFAULT
+    @ColorInt private var mIconColor = PRIMARY_COLOR_DEFAULT
 
-    @ColorInt
-    private var mBorderColor = BORDER_COLOR_DEFAULT
+    @ColorInt private var mBorderColor = BORDER_COLOR_DEFAULT
 
-    @BorderStyle
-    private var mBorderStyle = BORDER_STYLE_SOLID
+    @BorderStyle private var mBorderStyle = BORDER_STYLE_SOLID
 
-    @Px
-    private var mBorderDashWidth = DASH_WIDTH_DEFAULT
+    @Px private var mBorderDashWidth = DASH_WIDTH_DEFAULT
 
-    @Px
-    private var mBorderDashGap = DASH_GAP_DEFAULT
+    @Px private var mBorderDashGap = DASH_GAP_DEFAULT
 
-    @Px
-    private var mBorderRadius = BORDER_RADIUS_DEFAULT
+    @Px private var mBorderRadius = BORDER_RADIUS_DEFAULT
 
-    @Px
-    private var mBorderWidth = BORDER_WIDTH_DEFAULT
+    @Px private var mBorderWidth = BORDER_WIDTH_DEFAULT
 
-    @Px
-    private var mRangedValueRingWidth = RING_WIDTH_DEFAULT
+    @Px private var mRangedValueRingWidth = RING_WIDTH_DEFAULT
 
-    @ColorInt
-    private var mRangedValuePrimaryColor = PRIMARY_COLOR_DEFAULT
+    @ColorInt private var mRangedValuePrimaryColor = PRIMARY_COLOR_DEFAULT
 
-    @ColorInt
-    private var mRangedValueSecondaryColor = SECONDARY_COLOR_DEFAULT
+    @ColorInt private var mRangedValueSecondaryColor = SECONDARY_COLOR_DEFAULT
 
-    @ColorInt
-    private var mHighlightColor = HIGHLIGHT_COLOR_DEFAULT
+    @ColorInt private var mHighlightColor = HIGHLIGHT_COLOR_DEFAULT
 
     @get:JvmName(name = "isDirty")
     internal var isDirty: Boolean = true
@@ -152,8 +141,8 @@
     }
 
     /**
-     * The color filter used in active mode when rendering large images and small images
-     * with style [SmallImageType.PHOTO].
+     * The color filter used in active mode when rendering large images and small images with style
+     * [SmallImageType.PHOTO].
      */
     public var imageColorFilter: ColorFilter?
         get() = mImageColorFilter
@@ -162,7 +151,7 @@
             isDirty = true
         }
 
-    /** The color for tinting icons.  */
+    /** The color for tinting icons. */
     public var iconColor: Int
         @ColorInt get() = mIconColor
         set(@ColorInt iconColor) {
@@ -186,9 +175,7 @@
             isDirty = true
         }
 
-    /**
-     * The color to render the complication border with.
-     */
+    /** The color to render the complication border with. */
     public var borderColor: Int
         @ColorInt get() = mBorderColor
         set(@ColorInt borderColor) {
@@ -196,17 +183,16 @@
             isDirty = true
         }
 
-    /**
-     * The style to render the complication border with.
-     */
+    /** The style to render the complication border with. */
     public var borderStyle: Int
         @BorderStyle get() = mBorderStyle
         set(@BorderStyle borderStyle) {
-            mBorderStyle = when (borderStyle) {
-                BORDER_STYLE_SOLID -> BORDER_STYLE_SOLID
-                BORDER_STYLE_DASHED -> BORDER_STYLE_DASHED
-                else -> BORDER_STYLE_NONE
-            }
+            mBorderStyle =
+                when (borderStyle) {
+                    BORDER_STYLE_SOLID -> BORDER_STYLE_SOLID
+                    BORDER_STYLE_DASHED -> BORDER_STYLE_DASHED
+                    else -> BORDER_STYLE_NONE
+                }
             isDirty = true
         }
     /** The dash width to be used when drawing borders of type [.BORDER_STYLE_DASHED]. */
@@ -217,9 +203,7 @@
             isDirty = true
         }
 
-    /**
-     * The dash gap to be used when drawing borders of type [.BORDER_STYLE_DASHED].
-     */
+    /** The dash gap to be used when drawing borders of type [.BORDER_STYLE_DASHED]. */
     public var borderDashGap: Int
         @Px get() = mBorderDashGap
         set(@Px borderDashGap) {
@@ -227,10 +211,10 @@
             isDirty = true
         }
     /**
-     * The border radius to be applied to the corners of the bounds of the complication in
-     * active mode. Border radius will be limited to the half of width or height, depending
-     * on which one is smaller. If [ComplicationStyle.BORDER_RADIUS_DEFAULT] is returned, border
-     * radius should be reduced to half of the minimum of width or height during the rendering.
+     * The border radius to be applied to the corners of the bounds of the complication in active
+     * mode. Border radius will be limited to the half of width or height, depending on which one is
+     * smaller. If [ComplicationStyle.BORDER_RADIUS_DEFAULT] is returned, border radius should be
+     * reduced to half of the minimum of width or height during the rendering.
      */
     public var borderRadius: Int
         @Px get() = mBorderRadius
@@ -239,9 +223,7 @@
             isDirty = true
         }
 
-    /**
-     * The width to render the complication border with.
-     */
+    /** The width to render the complication border with. */
     public var borderWidth: Int
         @Px get() = mBorderWidth
         set(@Px borderWidth) {
@@ -303,25 +285,27 @@
 
     /**
      * Returns a copy of the ComplicationStyle [tint]ed by [tintColor].
+     *
      * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
-    fun asTinted(tintColor: Int): ComplicationStyle = ComplicationStyle(this).apply {
-        backgroundColor = tint(backgroundColor, tintColor)
-        borderColor = tint(borderColor, tintColor)
-        highlightColor = tint(highlightColor, tintColor)
-        iconColor = tint(iconColor, tintColor)
-        rangedValuePrimaryColor = tint(rangedValuePrimaryColor, tintColor)
-        rangedValueSecondaryColor = tint(rangedValueSecondaryColor, tintColor)
-        textColor = tint(textColor, tintColor)
-        titleColor = tint(titleColor, tintColor)
-    }
+    fun asTinted(tintColor: Int): ComplicationStyle =
+        ComplicationStyle(this).apply {
+            backgroundColor = tint(backgroundColor, tintColor)
+            borderColor = tint(borderColor, tintColor)
+            highlightColor = tint(highlightColor, tintColor)
+            iconColor = tint(iconColor, tintColor)
+            rangedValuePrimaryColor = tint(rangedValuePrimaryColor, tintColor)
+            rangedValueSecondaryColor = tint(rangedValueSecondaryColor, tintColor)
+            textColor = tint(textColor, tintColor)
+            titleColor = tint(titleColor, tintColor)
+        }
 
     public companion object {
-        /** Style where the borders are not drawn.  */
+        /** Style where the borders are not drawn. */
         public const val BORDER_STYLE_NONE: Int = 0
 
-        /** Style where the borders are drawn without any gap.  */
+        /** Style where the borders are drawn without any gap. */
         public const val BORDER_STYLE_SOLID: Int = 1
 
         /**
@@ -331,55 +315,49 @@
          */
         public const val BORDER_STYLE_DASHED: Int = 2
 
-        /** Default primary color.  */
+        /** Default primary color. */
         private const val PRIMARY_COLOR_DEFAULT = Color.WHITE
 
-        /** Default secondary color.  */
+        /** Default secondary color. */
         private const val SECONDARY_COLOR_DEFAULT = Color.LTGRAY
 
-        /** Default background color.  */
+        /** Default background color. */
         private const val BACKGROUND_COLOR_DEFAULT = Color.BLACK
 
-        /** Default background color.  */
+        /** Default background color. */
         private const val HIGHLIGHT_COLOR_DEFAULT = Color.LTGRAY
 
-        /** Default border color.  */
+        /** Default border color. */
         private const val BORDER_COLOR_DEFAULT = Color.WHITE
 
-        /** Default text size.  */
-        @Px
-        private const val TEXT_SIZE_DEFAULT = Int.MAX_VALUE
+        /** Default text size. */
+        @Px private const val TEXT_SIZE_DEFAULT = Int.MAX_VALUE
 
-        /** Default typeface.  */
-        private val TYPEFACE_DEFAULT =
-            Typeface.create("sans-serif-condensed", Typeface.NORMAL)
+        /** Default typeface. */
+        private val TYPEFACE_DEFAULT = Typeface.create("sans-serif-condensed", Typeface.NORMAL)
 
-        /** Default dash width.  */
-        @Px
-        private const val DASH_WIDTH_DEFAULT = 3
+        /** Default dash width. */
+        @Px private const val DASH_WIDTH_DEFAULT = 3
 
-        /** Default dash gap.  */
-        @Px
-        private const val DASH_GAP_DEFAULT = 3
+        /** Default dash gap. */
+        @Px private const val DASH_GAP_DEFAULT = 3
 
-        /** Default border width.  */
-        @Px
-        private const val BORDER_WIDTH_DEFAULT = 1
+        /** Default border width. */
+        @Px private const val BORDER_WIDTH_DEFAULT = 1
 
-        /** Default ring width.  */
-        @Px
-        private const val RING_WIDTH_DEFAULT = 2
+        /** Default ring width. */
+        @Px private const val RING_WIDTH_DEFAULT = 2
 
-        /** Default border radius.  */
-        @Px
-        public const val BORDER_RADIUS_DEFAULT: Int = Int.MAX_VALUE
+        /** Default border radius. */
+        @Px public const val BORDER_RADIUS_DEFAULT: Int = Int.MAX_VALUE
 
         /** Computes the luminance of [color] and applies that to [tint]. */
         internal fun tint(color: Int, tint: Int): Int {
             // See https://en.wikipedia.org/wiki/Relative_luminance
-            val luminance = (Color.red(color).toFloat() * (0.2126f / 255.0f)) +
-                (Color.green(color).toFloat() * (0.7152f / 255.0f)) +
-                (Color.blue(color).toFloat() * (0.0722f / 255.0f))
+            val luminance =
+                (Color.red(color).toFloat() * (0.2126f / 255.0f)) +
+                    (Color.green(color).toFloat() * (0.7152f / 255.0f)) +
+                    (Color.blue(color).toFloat() * (0.0722f / 255.0f))
 
             return Color.argb(
                 Color.alpha(color).toFloat() / 255.0f,
@@ -389,4 +367,4 @@
             )
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/GlesTextureComplication.kt b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/GlesTextureComplication.kt
index e1ed591..2719673 100644
--- a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/GlesTextureComplication.kt
+++ b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/GlesTextureComplication.kt
@@ -28,8 +28,8 @@
 import java.time.ZonedDateTime
 
 /**
- * Helper for rendering a [ComplicationSlot] to a GLES20 texture. To use call [renderToTexture]
- * and then [bind] before drawing.
+ * Helper for rendering a [ComplicationSlot] to a GLES20 texture. To use call [renderToTexture] and
+ * then [bind] before drawing.
  *
  * @param complicationSlot The [ComplicationSlot] to render to texture.
  * @param textureWidth The width of the texture in pixels to create.
@@ -43,11 +43,7 @@
     private val textureType: Int
 ) {
     private val texture = createTexture(textureType)
-    private val bitmap = Bitmap.createBitmap(
-        textureWidth,
-        textureHeight,
-        Bitmap.Config.ARGB_8888
-    )
+    private val bitmap = Bitmap.createBitmap(textureWidth, textureHeight, Bitmap.Config.ARGB_8888)
     private val canvas = Canvas(bitmap)
     private val bounds = Rect(0, 0, textureWidth, textureHeight)
 
@@ -79,26 +75,10 @@
         val handle = IntArray(1)
         GLES20.glGenTextures(1, handle, 0)
         GLES20.glBindTexture(textureType, handle[0])
-        GLES20.glTexParameteri(
-            textureType,
-            GLES20.GL_TEXTURE_WRAP_S,
-            GLES20.GL_CLAMP_TO_EDGE
-        )
-        GLES20.glTexParameteri(
-            textureType,
-            GLES20.GL_TEXTURE_WRAP_T,
-            GLES20.GL_CLAMP_TO_EDGE
-        )
-        GLES20.glTexParameteri(
-            textureType,
-            GLES20.GL_TEXTURE_MAG_FILTER,
-            GLES20.GL_LINEAR
-        )
-        GLES20.glTexParameteri(
-            textureType,
-            GLES20.GL_TEXTURE_MIN_FILTER,
-            GLES20.GL_LINEAR
-        )
+        GLES20.glTexParameteri(textureType, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE)
+        GLES20.glTexParameteri(textureType, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE)
+        GLES20.glTexParameteri(textureType, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR)
+        GLES20.glTexParameteri(textureType, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR)
         return handle[0]
     }
 }
diff --git a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/RoundedDrawable.java b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/RoundedDrawable.java
index a187cc1..e2db21d 100644
--- a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/RoundedDrawable.java
+++ b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/RoundedDrawable.java
@@ -90,7 +90,9 @@
         canvas.restore();
     }
 
-    /** @deprecated This method is no longer used in graphics optimizations */
+    /**
+     * @deprecated This method is no longer used in graphics optimizations
+     */
     @Override
     @Deprecated
     public int getOpacity() {
diff --git a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/TextRenderer.java b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/TextRenderer.java
index d5caf43..a477b58 100644
--- a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/TextRenderer.java
+++ b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/TextRenderer.java
@@ -102,15 +102,15 @@
     private static final int SPACE_CHARACTER = 0x20;
 
     private static final Class<?>[] SPAN_ALLOW_LIST =
-            new Class<?>[]{
-                    ForegroundColorSpan.class,
-                    LocaleSpan.class,
-                    SubscriptSpan.class,
-                    SuperscriptSpan.class,
-                    StrikethroughSpan.class,
-                    StyleSpan.class,
-                    TypefaceSpan.class,
-                    UnderlineSpan.class
+            new Class<?>[] {
+                ForegroundColorSpan.class,
+                LocaleSpan.class,
+                SubscriptSpan.class,
+                SuperscriptSpan.class,
+                StrikethroughSpan.class,
+                StyleSpan.class,
+                TypefaceSpan.class,
+                UnderlineSpan.class
             };
 
     private final Rect mBounds = new Rect();
@@ -207,7 +207,8 @@
             for (Object span : spans) {
                 if (!isSpanAllowed(span)) {
                     builder.removeSpan(span);
-                    Log.w(TAG,
+                    Log.w(
+                            TAG,
                             "Removing unsupported span of type " + span.getClass().getSimpleName());
                 }
             }
@@ -268,7 +269,7 @@
      * <p>If not called, the default is {@link Gravity#CENTER}.
      *
      * @param gravity Gravity to position text, should be one of the constants specified in {@link
-     * android.view.Gravity} class.
+     *     android.view.Gravity} class.
      */
     public void setGravity(int gravity) {
         if (mGravity == gravity) {
diff --git a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/utils/LayoutHelper.java b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/utils/LayoutHelper.java
index 771e0fc..d0c0dcd 100644
--- a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/utils/LayoutHelper.java
+++ b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/utils/LayoutHelper.java
@@ -152,7 +152,7 @@
     }
 
     /**
-     * @param outRect {@link Rect}  that receives the computed bounds for the long text
+     * @param outRect {@link Rect} that receives the computed bounds for the long text
      */
     public void getLongTextBounds(@NonNull Rect outRect) {
         outRect.setEmpty();
@@ -174,7 +174,7 @@
     }
 
     /**
-     * @param outRect {@link Rect}  that receives the computed bounds for the long title text
+     * @param outRect {@link Rect} that receives the computed bounds for the long title text
      */
     public void getLongTitleBounds(@NonNull Rect outRect) {
         outRect.setEmpty();
diff --git a/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/CanvasComplicationDrawableTest.kt b/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/CanvasComplicationDrawableTest.kt
index f3d831e..ade836b 100644
--- a/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/CanvasComplicationDrawableTest.kt
+++ b/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/CanvasComplicationDrawableTest.kt
@@ -27,12 +27,12 @@
 import androidx.wear.watchface.TapEvent
 import androidx.wear.watchface.style.WatchFaceLayer
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.Mockito
 import java.time.Instant
 import java.time.ZoneId
 import java.time.ZonedDateTime
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mockito
 
 @RunWith(ComplicationsTestRunner::class)
 public class CanvasComplicationDrawableTest {
@@ -45,11 +45,12 @@
     private val canvas = Canvas(bitmap)
     private val zonedDateTime =
         ZonedDateTime.ofInstant(Instant.ofEpochMilli(1234), ZoneId.of("UTC"))
-    private val canvasComplicationDrawable = CanvasComplicationDrawable(
-        complicationDrawable,
-        watchState.asWatchState(),
-        invalidateCallback
-    )
+    private val canvasComplicationDrawable =
+        CanvasComplicationDrawable(
+            complicationDrawable,
+            watchState.asWatchState(),
+            invalidateCallback
+        )
     private val slotId = 100
 
     @Test
@@ -119,12 +120,13 @@
 
     @Test
     public fun render_highlight() {
-        val renderParameters = RenderParameters(
-            DrawMode.INTERACTIVE,
-            setOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS),
-            null,
-            mapOf(slotId to TapEvent(50, 50, Instant.ofEpochMilli(1100)))
-        )
+        val renderParameters =
+            RenderParameters(
+                DrawMode.INTERACTIVE,
+                setOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS),
+                null,
+                mapOf(slotId to TapEvent(50, 50, Instant.ofEpochMilli(1100)))
+            )
 
         val t1099 = ZonedDateTime.ofInstant(Instant.ofEpochMilli(1099), ZoneId.of("UTC"))
         canvasComplicationDrawable.render(canvas, bounds, t1099, renderParameters, slotId)
@@ -134,22 +136,24 @@
         canvasComplicationDrawable.render(canvas, bounds, t1100, renderParameters, slotId)
         assertThat(complicationDrawable.isHighlighted).isTrue()
 
-        val t1099_plus = ZonedDateTime.ofInstant(
-            Instant.ofEpochMilli(
-                1099 + CanvasComplicationDrawable.COMPLICATION_HIGHLIGHT_DURATION_MS
-            ),
-            ZoneId.of("UTC")
-        )
+        val t1099_plus =
+            ZonedDateTime.ofInstant(
+                Instant.ofEpochMilli(
+                    1099 + CanvasComplicationDrawable.COMPLICATION_HIGHLIGHT_DURATION_MS
+                ),
+                ZoneId.of("UTC")
+            )
 
         canvasComplicationDrawable.render(canvas, bounds, t1099_plus, renderParameters, slotId)
         assertThat(complicationDrawable.isHighlighted).isTrue()
 
-        val t1100_plus = ZonedDateTime.ofInstant(
-            Instant.ofEpochMilli(
-                1100 + CanvasComplicationDrawable.COMPLICATION_HIGHLIGHT_DURATION_MS
-            ),
-            ZoneId.of("UTC")
-        )
+        val t1100_plus =
+            ZonedDateTime.ofInstant(
+                Instant.ofEpochMilli(
+                    1100 + CanvasComplicationDrawable.COMPLICATION_HIGHLIGHT_DURATION_MS
+                ),
+                ZoneId.of("UTC")
+            )
         canvasComplicationDrawable.render(canvas, bounds, t1100_plus, renderParameters, slotId)
         assertThat(complicationDrawable.isHighlighted).isFalse()
     }
diff --git a/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationDrawableTest.java b/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationDrawableTest.java
index e9b11db..5baf25b 100644
--- a/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationDrawableTest.java
+++ b/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationDrawableTest.java
@@ -60,6 +60,8 @@
 import androidx.wear.watchface.complications.data.NoDataComplicationData;
 import androidx.wear.watchface.style.CurrentUserStyleRepository;
 
+import kotlin.coroutines.Continuation;
+
 import org.jetbrains.annotations.Nullable;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -73,8 +75,6 @@
 import java.time.ZonedDateTime;
 import java.util.concurrent.TimeUnit;
 
-import kotlin.coroutines.Continuation;
-
 /** Tests for {@link ComplicationDrawable}. */
 @RunWith(ComplicationsTestRunner.class)
 @DoNotInstrument
@@ -89,16 +89,11 @@
     private androidx.wear.watchface.complications.data.ComplicationData mComplicationData;
     private int mDefaultTextSize;
 
-    @Mock
-    Canvas mMockCanvas;
-    @Mock
-    Drawable mMockDrawableActive;
-    @Mock
-    Drawable mMockDrawableAmbient;
-    @Mock
-    PendingIntent mMockPendingIntent;
-    @Mock
-    Drawable.Callback mMockDrawableCallback;
+    @Mock Canvas mMockCanvas;
+    @Mock Drawable mMockDrawableActive;
+    @Mock Drawable mMockDrawableAmbient;
+    @Mock PendingIntent mMockPendingIntent;
+    @Mock Drawable.Callback mMockDrawableCallback;
 
     @SuppressWarnings("deprecation") // b/251211092
     @Before
@@ -108,9 +103,8 @@
         mComplicationDrawable.setCallback(mMockDrawableCallback);
 
         ComplicationData complicationData =
-                new ComplicationData.Builder(
-                        ComplicationData.TYPE_SHORT_TEXT
-                ).setShortText(ComplicationText.plainText("hede"))
+                new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
+                        .setShortText(ComplicationText.plainText("hede"))
                         .build();
         mComplicationData = DataKt.toApiComplicationData(complicationData);
         mDefaultTextSize =
@@ -127,8 +121,7 @@
 
     @Test
     public void callingDrawWithTimeOnCanvasBeforeSetContextThrowsAnException() {
-        assertThrows(
-                IllegalStateException.class, () -> mComplicationDrawable.draw(mMockCanvas));
+        assertThrows(IllegalStateException.class, () -> mComplicationDrawable.draw(mMockCanvas));
     }
 
     @Test
@@ -313,10 +306,10 @@
         ColorFilter ambientCF = new PorterDuffColorFilter(AMBIENT_COLOR, Mode.SRC_IN);
         mComplicationDrawable.getActiveStyle().setImageColorFilter(activeCF);
         mComplicationDrawable.getAmbientStyle().setImageColorFilter(ambientCF);
-        assertThat(mComplicationDrawable.getActiveStyle().getImageColorFilter()).isEqualTo(
-                activeCF);
-        assertThat(mComplicationDrawable.getAmbientStyle().getImageColorFilter()).isEqualTo(
-                ambientCF);
+        assertThat(mComplicationDrawable.getActiveStyle().getImageColorFilter())
+                .isEqualTo(activeCF);
+        assertThat(mComplicationDrawable.getAmbientStyle().getImageColorFilter())
+                .isEqualTo(ambientCF);
     }
 
     @Test
@@ -365,8 +358,7 @@
         int textSizeFromConstructor = mComplicationDrawable.getActiveStyle().getTextSize();
         mComplicationDrawable.setContext(ApplicationProvider.getApplicationContext());
         int textSizeFromResources = mComplicationDrawable.getActiveStyle().getTextSize();
-        assertThat(textSizeFromConstructor)
-                .isEqualTo(new ComplicationStyle().getTextSize());
+        assertThat(textSizeFromConstructor).isEqualTo(new ComplicationStyle().getTextSize());
         assertThat(textSizeFromResources).isEqualTo(mDefaultTextSize);
     }
 
@@ -384,13 +376,11 @@
         mComplicationDrawable.setContext(ApplicationProvider.getApplicationContext());
         mComplicationDrawable.setComplicationData(
                 DataKt.toApiComplicationData(
-                    new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
-                            .setShortText(ComplicationText.plainText("rofl"))
-                            .setShortTitle(ComplicationText.plainText("copter"))
-                            .build()
-                    ),
-                true
-        );
+                        new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
+                                .setShortText(ComplicationText.plainText("rofl"))
+                                .setShortTitle(ComplicationText.plainText("copter"))
+                                .build()),
+                true);
         mComplicationDrawable.setBounds(new Rect(0, 0, 100, 100));
 
         assertThat(mComplicationDrawable.onTap(50, 50)).isFalse();
@@ -401,14 +391,12 @@
         mComplicationDrawable.setContext(ApplicationProvider.getApplicationContext());
         mComplicationDrawable.setComplicationData(
                 DataKt.toApiComplicationData(
-                    new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
-                            .setShortText(ComplicationText.plainText("rofl"))
-                            .setShortTitle(ComplicationText.plainText("copter"))
-                            .setTapAction(mMockPendingIntent)
-                            .build()
-                ),
-                true
-        );
+                        new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
+                                .setShortText(ComplicationText.plainText("rofl"))
+                                .setShortTitle(ComplicationText.plainText("copter"))
+                                .setTapAction(mMockPendingIntent)
+                                .build()),
+                true);
         mComplicationDrawable.setBounds(new Rect(0, 0, 100, 100));
 
         assertThat(mComplicationDrawable.onTap(200, 200)).isFalse();
@@ -421,14 +409,12 @@
         mComplicationDrawable.setContext(ApplicationProvider.getApplicationContext());
         mComplicationDrawable.setComplicationData(
                 DataKt.toApiComplicationData(
-                    new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
-                            .setShortText(ComplicationText.plainText("rofl"))
-                            .setShortTitle(ComplicationText.plainText("copter"))
-                            .setTapAction(mMockPendingIntent)
-                        .build()
-                ),
-                true
-        );
+                        new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
+                                .setShortText(ComplicationText.plainText("rofl"))
+                                .setShortTitle(ComplicationText.plainText("copter"))
+                                .setTapAction(mMockPendingIntent)
+                                .build()),
+                true);
         mComplicationDrawable.setBounds(new Rect(0, 0, 100, 100));
 
         assertThat(mComplicationDrawable.onTap(50, 50)).isFalse();
@@ -439,14 +425,12 @@
         mComplicationDrawable.setContext(ApplicationProvider.getApplicationContext());
         mComplicationDrawable.setComplicationData(
                 DataKt.toApiComplicationData(
-                    new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
-                            .setShortText(ComplicationText.plainText("rofl"))
-                            .setShortTitle(ComplicationText.plainText("copter"))
-                            .setTapAction(mMockPendingIntent)
-                        .build()
-                ),
-                true
-        );
+                        new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
+                                .setShortText(ComplicationText.plainText("rofl"))
+                                .setShortTitle(ComplicationText.plainText("copter"))
+                                .setTapAction(mMockPendingIntent)
+                                .build()),
+                true);
         reset(mMockDrawableCallback);
         mComplicationDrawable.setBounds(new Rect(0, 0, 100, 100));
 
@@ -461,14 +445,12 @@
         mComplicationDrawable.setContext(ApplicationProvider.getApplicationContext());
         mComplicationDrawable.setComplicationData(
                 DataKt.toApiComplicationData(
-                    new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
-                            .setShortText(ComplicationText.plainText("rofl"))
-                            .setShortTitle(ComplicationText.plainText("copter"))
-                            .setTapAction(mMockPendingIntent)
-                            .build()
-                ),
-                true
-        );
+                        new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
+                                .setShortText(ComplicationText.plainText("rofl"))
+                                .setShortTitle(ComplicationText.plainText("copter"))
+                                .setTapAction(mMockPendingIntent)
+                                .build()),
+                true);
         reset(mMockDrawableCallback);
 
         mComplicationDrawable.setBounds(new Rect(0, 0, 100, 100));
@@ -494,14 +476,12 @@
         mComplicationDrawable.setContext(ApplicationProvider.getApplicationContext());
         mComplicationDrawable.setComplicationData(
                 DataKt.toApiComplicationData(
-                    new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
-                            .setShortText(ComplicationText.plainText("rofl"))
-                            .setShortTitle(ComplicationText.plainText("copter"))
-                            .setTapAction(mMockPendingIntent)
-                            .build()
-                ),
-                true
-        );
+                        new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
+                                .setShortText(ComplicationText.plainText("rofl"))
+                                .setShortTitle(ComplicationText.plainText("copter"))
+                                .setTapAction(mMockPendingIntent)
+                                .build()),
+                true);
         mComplicationDrawable.setBounds(new Rect(0, 0, 100, 100));
 
         mComplicationDrawable.setHighlightDuration(highlightDuration);
@@ -536,17 +516,15 @@
 
         mComplicationDrawable.setComplicationData(
                 DataKt.toApiComplicationData(
-                        new ComplicationData.Builder(ComplicationData.TYPE_NO_PERMISSION).build()
-                ),
-                true
-        );
+                        new ComplicationData.Builder(ComplicationData.TYPE_NO_PERMISSION).build()),
+                true);
 
         assertThat(mComplicationDrawable.onTap(50, 50)).isTrue();
 
         Application context = ApplicationProvider.getApplicationContext();
         Intent expected =
                 ComplicationHelperActivity.createPermissionRequestHelperIntent(
-                        context, new ComponentName(context, context.getClass()), null, null)
+                                context, new ComponentName(context, context.getClass()), null, null)
                         .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         Intent actual = shadowOf(context).getNextStartedActivity();
 
@@ -562,10 +540,8 @@
 
         mComplicationDrawable.setComplicationData(
                 DataKt.toApiComplicationData(
-                    new ComplicationData.Builder(ComplicationData.TYPE_NO_PERMISSION).build()
-                ),
-                true
-        );
+                        new ComplicationData.Builder(ComplicationData.TYPE_NO_PERMISSION).build()),
+                true);
 
         assertThat(mComplicationDrawable.onTap(50, 50)).isFalse();
 
@@ -630,11 +606,11 @@
         mComplicationDrawable.getActiveStyle().setBorderWidth(borderWidth);
         mComplicationDrawable.getActiveStyle().setHighlightColor(highlightColor);
         mComplicationDrawable.getActiveStyle().setIconColor(iconColor);
-        mComplicationDrawable.getActiveStyle().setRangedValuePrimaryColor(
-                rangedValuePrimaryColor);
+        mComplicationDrawable.getActiveStyle().setRangedValuePrimaryColor(rangedValuePrimaryColor);
         mComplicationDrawable.getActiveStyle().setRangedValueRingWidth(rangedValueRingWidth);
-        mComplicationDrawable.getActiveStyle().setRangedValueSecondaryColor(
-                rangedValueSecondaryColor);
+        mComplicationDrawable
+                .getActiveStyle()
+                .setRangedValueSecondaryColor(rangedValueSecondaryColor);
         mComplicationDrawable.getActiveStyle().setTextColor(textColor);
         mComplicationDrawable.getActiveStyle().setTextSize(textSize);
         mComplicationDrawable.getActiveStyle().setTitleColor(titleColor);
@@ -649,12 +625,15 @@
         mComplicationDrawable.getAmbientStyle().setBorderWidth(borderWidthAmbient);
         mComplicationDrawable.getAmbientStyle().setHighlightColor(highlightColorAmbient);
         mComplicationDrawable.getAmbientStyle().setIconColor(iconColorAmbient);
-        mComplicationDrawable.getAmbientStyle().setRangedValuePrimaryColor(
-                rangedValuePrimaryColorAmbient);
-        mComplicationDrawable.getAmbientStyle().setRangedValueRingWidth(
-                rangedValueRingWidthAmbient);
-        mComplicationDrawable.getAmbientStyle().setRangedValueSecondaryColor(
-                rangedValueSecondaryColorAmbient);
+        mComplicationDrawable
+                .getAmbientStyle()
+                .setRangedValuePrimaryColor(rangedValuePrimaryColorAmbient);
+        mComplicationDrawable
+                .getAmbientStyle()
+                .setRangedValueRingWidth(rangedValueRingWidthAmbient);
+        mComplicationDrawable
+                .getAmbientStyle()
+                .setRangedValueSecondaryColor(rangedValueSecondaryColorAmbient);
         mComplicationDrawable.getAmbientStyle().setTextColor(textColorAmbient);
         mComplicationDrawable.getAmbientStyle().setTextSize(textSizeAmbient);
         mComplicationDrawable.getAmbientStyle().setTitleColor(titleColorAmbient);
@@ -713,13 +692,23 @@
         mComplicationDrawable.setContext(ApplicationProvider.getApplicationContext());
         mComplicationDrawable.getActiveStyle().setBackgroundColor(123);
 
-        assertThat(mComplicationDrawable.getComplicationRenderer().mActivePaintSet
-                .mBackgroundPaint.getColor()).isNotEqualTo(123);
+        assertThat(
+                        mComplicationDrawable
+                                .getComplicationRenderer()
+                                .mActivePaintSet
+                                .mBackgroundPaint
+                                .getColor())
+                .isNotEqualTo(123);
 
         mComplicationDrawable.updateStyleIfRequired();
 
-        assertThat(mComplicationDrawable.getComplicationRenderer().mActivePaintSet
-                .mBackgroundPaint.getColor()).isEqualTo(123);
+        assertThat(
+                        mComplicationDrawable
+                                .getComplicationRenderer()
+                                .mActivePaintSet
+                                .mBackgroundPaint
+                                .getColor())
+                .isEqualTo(123);
     }
 
     /** Proxies necessary methods to Robolectric application. */
@@ -743,7 +732,8 @@
         @SuppressWarnings("deprecation")
         @Nullable
         @Override
-        protected Object createWatchFace(@NonNull SurfaceHolder surfaceHolder,
+        protected Object createWatchFace(
+                @NonNull SurfaceHolder surfaceHolder,
                 @NonNull WatchState watchState,
                 @NonNull ComplicationSlotsManager complicationSlotsManager,
                 @NonNull CurrentUserStyleRepository currentUserStyleRepository,
@@ -751,17 +741,23 @@
             return new WatchFace(
                     WatchFaceType.ANALOG,
                     new Renderer.CanvasRenderer(
-                            surfaceHolder, currentUserStyleRepository, watchState,
-                            CanvasType.SOFTWARE, 16L) {
+                            surfaceHolder,
+                            currentUserStyleRepository,
+                            watchState,
+                            CanvasType.SOFTWARE,
+                            16L) {
                         @Override
-                        public void renderHighlightLayer(@NonNull Canvas canvas,
-                                @NonNull Rect bounds, @NonNull ZonedDateTime zonedDateTime) {}
+                        public void renderHighlightLayer(
+                                @NonNull Canvas canvas,
+                                @NonNull Rect bounds,
+                                @NonNull ZonedDateTime zonedDateTime) {}
 
                         @Override
-                        public void render(@NonNull Canvas canvas, @NonNull Rect bounds,
+                        public void render(
+                                @NonNull Canvas canvas,
+                                @NonNull Rect bounds,
                                 @NonNull ZonedDateTime zonedDateTime) {}
-                    }
-            );
+                    });
         }
     }
 }
diff --git a/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationRendererTest.java b/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationRendererTest.java
index b014c3b..47dead1 100644
--- a/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationRendererTest.java
+++ b/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationRendererTest.java
@@ -93,18 +93,12 @@
     private ComplicationRenderer mComplicationRenderer;
     private Rect mComplicationBounds;
 
-    @Mock
-    private Icon mMockIcon;
-    @Mock
-    private Icon mMockBurnInProtectionIcon;
-    @Mock
-    private Icon mMockSmallImage;
-    @Mock
-    private Icon mMockBurnInProtectionSmallImage;
-    @Mock
-    private Canvas mMockCanvas;
-    @Mock
-    private OnInvalidateListener mMockInvalidateListener;
+    @Mock private Icon mMockIcon;
+    @Mock private Icon mMockBurnInProtectionIcon;
+    @Mock private Icon mMockSmallImage;
+    @Mock private Icon mMockBurnInProtectionSmallImage;
+    @Mock private Canvas mMockCanvas;
+    @Mock private OnInvalidateListener mMockInvalidateListener;
     private final Resources mResurces = ApplicationProvider.getApplicationContext().getResources();
 
     @SuppressWarnings("deprecation") // b/251211092
@@ -130,10 +124,11 @@
                 new ComplicationData.Builder(ComplicationData.TYPE_NO_DATA).build(), true);
         assertThat(mComplicationRenderer.getComplicationData().getType())
                 .isEqualTo(TYPE_SHORT_TEXT);
-        assertThat(mComplicationRenderer
-                .getComplicationData()
-                .getShortText()
-                .getTextAt(mResurces, REFERENCE_TIME.toEpochMilli()))
+        assertThat(
+                        mComplicationRenderer
+                                .getComplicationData()
+                                .getShortText()
+                                .getTextAt(mResurces, REFERENCE_TIME.toEpochMilli()))
                 .isEqualTo(noDataText);
     }
 
@@ -254,21 +249,21 @@
         ComplicationRenderer.PaintSet thirdPaintSet = mComplicationRenderer.mAmbientPaintSet;
         // THEN different paint sets are used for every call
         assertThat(
-                firstPaintSet.mIsAmbientStyle
-                        && firstPaintSet.mLowBitAmbient
-                        && firstPaintSet.mBurnInProtection)
+                        firstPaintSet.mIsAmbientStyle
+                                && firstPaintSet.mLowBitAmbient
+                                && firstPaintSet.mBurnInProtection)
                 .isTrue();
         assertThat(firstPaintSet).isNotEqualTo(secondPaintSet);
         assertThat(
-                secondPaintSet.mIsAmbientStyle
-                        && secondPaintSet.mLowBitAmbient
-                        && !secondPaintSet.mBurnInProtection)
+                        secondPaintSet.mIsAmbientStyle
+                                && secondPaintSet.mLowBitAmbient
+                                && !secondPaintSet.mBurnInProtection)
                 .isTrue();
         assertThat(secondPaintSet).isNotEqualTo(thirdPaintSet);
         assertThat(
-                thirdPaintSet.mIsAmbientStyle
-                        && !thirdPaintSet.mLowBitAmbient
-                        && !thirdPaintSet.mBurnInProtection)
+                        thirdPaintSet.mIsAmbientStyle
+                                && !thirdPaintSet.mLowBitAmbient
+                                && !thirdPaintSet.mBurnInProtection)
                 .isTrue();
     }
 
@@ -436,8 +431,8 @@
         public float remaining;
         public float gap;
 
-        RangedArcsTestData(int min, int max, int value, float progress, float remaining,
-                float gap) {
+        RangedArcsTestData(
+                int min, int max, int value, float progress, float remaining, float gap) {
             this.min = min;
             this.max = max;
             this.value = value;
@@ -578,9 +573,7 @@
         newStyle.setBorderStyle(ComplicationStyle.BORDER_STYLE_SOLID);
         newStyle.setBorderRadius((int) radius);
         newStyle.setBorderWidth(borderWidth);
-        mComplicationRenderer.updateStyle(
-                newStyle,
-                new ComplicationStyle());
+        mComplicationRenderer.updateStyle(newStyle, new ComplicationStyle());
         // WHEN the complication is drawn in active mode and as highlighted
         mComplicationRenderer.draw(mMockCanvas, REFERENCE_TIME, false, false, false, true);
         RectF bounds = new RectF(mComplicationBounds);
@@ -610,83 +603,113 @@
     public void placeholderLongTextIsDrawnAsPlaceholder() {
         mComplicationRenderer.setComplicationData(
                 new ComplicationData.Builder(ComplicationData.TYPE_NO_DATA)
-                        .setPlaceholder(new ComplicationData.Builder(
-                                ComplicationData.TYPE_LONG_TEXT)
-                                .setLongText(PLACEHOLDER_COMPLICATION_TEXT)
-                                .build())
+                        .setPlaceholder(
+                                new ComplicationData.Builder(ComplicationData.TYPE_LONG_TEXT)
+                                        .setLongText(PLACEHOLDER_COMPLICATION_TEXT)
+                                        .build())
                         .build(),
                 true);
 
         mComplicationRenderer.draw(mMockCanvas, REFERENCE_TIME, false, false, false, true);
 
-        verify(mMockCanvas).drawRoundRect(anyFloat(), anyFloat(), anyFloat(), anyFloat(),
-                anyFloat(), anyFloat(), eq(ComplicationRenderer.PLACEHOLDER_PAINT));
+        verify(mMockCanvas)
+                .drawRoundRect(
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        eq(ComplicationRenderer.PLACEHOLDER_PAINT));
     }
 
     @Test
     public void placeholderShortTextIsDrawnAsPlaceholder() {
         mComplicationRenderer.setComplicationData(
                 new ComplicationData.Builder(ComplicationData.TYPE_NO_DATA)
-                        .setPlaceholder(new ComplicationData.Builder(
-                                TYPE_SHORT_TEXT)
-                                .setShortText(PLACEHOLDER_COMPLICATION_TEXT)
-                                .build())
+                        .setPlaceholder(
+                                new ComplicationData.Builder(TYPE_SHORT_TEXT)
+                                        .setShortText(PLACEHOLDER_COMPLICATION_TEXT)
+                                        .build())
                         .build(),
                 true);
 
         mComplicationRenderer.draw(mMockCanvas, REFERENCE_TIME, false, false, false, true);
 
-        verify(mMockCanvas).drawRoundRect(anyFloat(), anyFloat(), anyFloat(), anyFloat(),
-                anyFloat(), anyFloat(), eq(ComplicationRenderer.PLACEHOLDER_PAINT));
+        verify(mMockCanvas)
+                .drawRoundRect(
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        eq(ComplicationRenderer.PLACEHOLDER_PAINT));
     }
 
     @Test
     public void placeholderLongTitleIsDrawnAsPlaceholder() {
         mComplicationRenderer.setComplicationData(
                 new ComplicationData.Builder(ComplicationData.TYPE_NO_DATA)
-                        .setPlaceholder(new ComplicationData.Builder(
-                                ComplicationData.TYPE_LONG_TEXT)
-                                .setLongText(ComplicationText.plainText("Hi"))
-                                .setLongTitle(PLACEHOLDER_COMPLICATION_TEXT)
-                                .build())
+                        .setPlaceholder(
+                                new ComplicationData.Builder(ComplicationData.TYPE_LONG_TEXT)
+                                        .setLongText(ComplicationText.plainText("Hi"))
+                                        .setLongTitle(PLACEHOLDER_COMPLICATION_TEXT)
+                                        .build())
                         .build(),
                 true);
 
         mComplicationRenderer.draw(mMockCanvas, REFERENCE_TIME, false, false, false, true);
 
-        verify(mMockCanvas).drawRoundRect(anyFloat(), anyFloat(), anyFloat(), anyFloat(),
-                anyFloat(), anyFloat(), eq(ComplicationRenderer.PLACEHOLDER_PAINT));
+        verify(mMockCanvas)
+                .drawRoundRect(
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        eq(ComplicationRenderer.PLACEHOLDER_PAINT));
     }
 
     @Test
     public void placeholderShortTitleIsDrawnAsPlaceholder() {
         mComplicationRenderer.setComplicationData(
                 new ComplicationData.Builder(ComplicationData.TYPE_NO_DATA)
-                        .setPlaceholder(new ComplicationData.Builder(
-                                TYPE_SHORT_TEXT)
-                                .setShortText(ComplicationText.plainText("Hi"))
-                                .setShortTitle(PLACEHOLDER_COMPLICATION_TEXT)
-                                .build())
+                        .setPlaceholder(
+                                new ComplicationData.Builder(TYPE_SHORT_TEXT)
+                                        .setShortText(ComplicationText.plainText("Hi"))
+                                        .setShortTitle(PLACEHOLDER_COMPLICATION_TEXT)
+                                        .build())
                         .build(),
                 true);
 
         mComplicationRenderer.draw(mMockCanvas, REFERENCE_TIME, false, false, false, true);
 
-        verify(mMockCanvas).drawRoundRect(anyFloat(), anyFloat(), anyFloat(), anyFloat(),
-                anyFloat(), anyFloat(), eq(ComplicationRenderer.PLACEHOLDER_PAINT));
+        verify(mMockCanvas)
+                .drawRoundRect(
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        anyFloat(),
+                        eq(ComplicationRenderer.PLACEHOLDER_PAINT));
     }
 
     @Test
     public void iconIsTintedWithPlaceholderTintForPlaceholderComplication() {
         mComplicationRenderer.setComplicationData(
                 new ComplicationData.Builder(ComplicationData.TYPE_NO_DATA)
-                        .setPlaceholder(new ComplicationData.Builder(
-                                TYPE_SHORT_TEXT)
-                                .setShortText(ComplicationText.plainText("Hi"))
-                                .setIcon(Icon.createWithBitmap(
-                                        Bitmap.createBitmap(100, 100, Bitmap.Config.RGB_565)))
-                                .setShortTitle(PLACEHOLDER_COMPLICATION_TEXT)
-                                .build())
+                        .setPlaceholder(
+                                new ComplicationData.Builder(TYPE_SHORT_TEXT)
+                                        .setShortText(ComplicationText.plainText("Hi"))
+                                        .setIcon(
+                                                Icon.createWithBitmap(
+                                                        Bitmap.createBitmap(
+                                                                100, 100, Bitmap.Config.RGB_565)))
+                                        .setShortTitle(PLACEHOLDER_COMPLICATION_TEXT)
+                                        .build())
                         .build(),
                 false);
 
@@ -776,8 +799,12 @@
         assertThat(mComplicationRenderer.mMainTextRenderer.getPaint())
                 .isEqualTo(mComplicationRenderer.mActivePaintSet.mPrimaryTextPaint);
 
-        verify(mMockCanvas, atLeastOnce()).drawRoundRect(any(), anyFloat(), anyFloat(),
-                eq(mComplicationRenderer.mActivePaintSet.mBorderPaint));
+        verify(mMockCanvas, atLeastOnce())
+                .drawRoundRect(
+                        any(),
+                        anyFloat(),
+                        anyFloat(),
+                        eq(mComplicationRenderer.mActivePaintSet.mBorderPaint));
     }
 
     @Test
@@ -795,8 +822,12 @@
         assertThat(mComplicationRenderer.mMainTextRenderer.getPaint())
                 .isEqualTo(mComplicationRenderer.mActivePaintSetLostTapAction.mPrimaryTextPaint);
 
-        verify(mMockCanvas, atLeastOnce()).drawRoundRect(any(), anyFloat(), anyFloat(),
-                eq(mComplicationRenderer.mActivePaintSetLostTapAction.mBorderPaint));
+        verify(mMockCanvas, atLeastOnce())
+                .drawRoundRect(
+                        any(),
+                        anyFloat(),
+                        anyFloat(),
+                        eq(mComplicationRenderer.mActivePaintSetLostTapAction.mBorderPaint));
     }
 
     @Test
@@ -1145,8 +1176,9 @@
     public void placeholderIcon() {
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new MonochromaticImageComplicationData.Builder(
-                                MonochromaticImage.PLACEHOLDER, EMPTY_TEXT).build())
+                                new MonochromaticImageComplicationData.Builder(
+                                                MonochromaticImage.PLACEHOLDER, EMPTY_TEXT)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.mIsPlaceholderIcon).isTrue();
@@ -1156,8 +1188,9 @@
     public void placeholderSmallImage() {
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new SmallImageComplicationData.Builder(
-                                SmallImage.PLACEHOLDER, EMPTY_TEXT).build())
+                                new SmallImageComplicationData.Builder(
+                                                SmallImage.PLACEHOLDER, EMPTY_TEXT)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.mIsPlaceholderSmallImage).isTrue();
@@ -1167,8 +1200,9 @@
     public void placeholderPhotoImage() {
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new PhotoImageComplicationData.Builder(
-                                PhotoImageComplicationData.PLACEHOLDER, EMPTY_TEXT).build())
+                                new PhotoImageComplicationData.Builder(
+                                                PhotoImageComplicationData.PLACEHOLDER, EMPTY_TEXT)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.mIsPlaceholderLargeImage).isTrue();
@@ -1180,10 +1214,13 @@
                 androidx.wear.watchface.complications.data.ComplicationText.PLACEHOLDER;
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new RangedValueComplicationData.Builder(
-                                RangedValueComplicationData.PLACEHOLDER, 0f, 100f, EMPTY_TEXT)
-                                .setTitle(placeholderText)
-                                .build())
+                                new RangedValueComplicationData.Builder(
+                                                RangedValueComplicationData.PLACEHOLDER,
+                                                0f,
+                                                100f,
+                                                EMPTY_TEXT)
+                                        .setTitle(placeholderText)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.mIsPlaceholderRangedValue).isTrue();
@@ -1196,18 +1233,18 @@
 
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new ShortTextComplicationData.Builder(placeholderText, EMPTY_TEXT)
-                                .setTitle(placeholderText)
-                                .build())
+                                new ShortTextComplicationData.Builder(placeholderText, EMPTY_TEXT)
+                                        .setTitle(placeholderText)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.mIsPlaceholderText).isTrue();
 
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new LongTextComplicationData.Builder(placeholderText, EMPTY_TEXT)
-                                .setTitle(placeholderText)
-                                .build())
+                                new LongTextComplicationData.Builder(placeholderText, EMPTY_TEXT)
+                                        .setTitle(placeholderText)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.mIsPlaceholderText).isTrue();
@@ -1220,15 +1257,16 @@
 
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new ShortTextComplicationData.Builder(placeholderText, EMPTY_TEXT).build()
-                )
+                                new ShortTextComplicationData.Builder(placeholderText, EMPTY_TEXT)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.mIsPlaceholderText).isTrue();
 
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new LongTextComplicationData.Builder(placeholderText, EMPTY_TEXT).build())
+                                new LongTextComplicationData.Builder(placeholderText, EMPTY_TEXT)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.mIsPlaceholderText).isTrue();
@@ -1238,8 +1276,9 @@
     public void placeholderIcon_notLoadedAsync() {
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new MonochromaticImageComplicationData.Builder(
-                                MonochromaticImage.PLACEHOLDER, EMPTY_TEXT).build())
+                                new MonochromaticImageComplicationData.Builder(
+                                                MonochromaticImage.PLACEHOLDER, EMPTY_TEXT)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.loadDrawableIconAndImagesAsync()).isFalse();
@@ -1249,8 +1288,9 @@
     public void placeholderSmallImage_notLoadedAsync() {
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new SmallImageComplicationData.Builder(
-                                SmallImage.PLACEHOLDER, EMPTY_TEXT).build())
+                                new SmallImageComplicationData.Builder(
+                                                SmallImage.PLACEHOLDER, EMPTY_TEXT)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.loadDrawableIconAndImagesAsync()).isFalse();
@@ -1260,8 +1300,9 @@
     public void placeholderPhotoImage_notLoadedAsync() {
         mComplicationRenderer.setComplicationData(
                 new NoDataComplicationData(
-                        new PhotoImageComplicationData.Builder(
-                                PhotoImageComplicationData.PLACEHOLDER, EMPTY_TEXT).build())
+                                new PhotoImageComplicationData.Builder(
+                                                PhotoImageComplicationData.PLACEHOLDER, EMPTY_TEXT)
+                                        .build())
                         .asWireComplicationData(),
                 true);
         assertThat(mComplicationRenderer.loadDrawableIconAndImagesAsync()).isFalse();
diff --git a/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationStyleTest.kt b/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationStyleTest.kt
index 34b2ac7..35505e3 100644
--- a/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationStyleTest.kt
+++ b/wear/watchface/watchface-complications-rendering/src/test/java/androidx/wear/watchface/complications/rendering/ComplicationStyleTest.kt
@@ -38,8 +38,9 @@
             .isEqualTo(Color.argb(127, 100, 0, 0))
 
         assertThat(
-            ComplicationStyle.tint(Color.argb(127, 50, 100, 200), Color.argb(0, 127, 127, 255))
-        ).isEqualTo(Color.argb(127, 48, 48, 97))
+                ComplicationStyle.tint(Color.argb(127, 50, 100, 200), Color.argb(0, 127, 127, 255))
+            )
+            .isEqualTo(Color.argb(127, 48, 48, 97))
     }
 
     @Test
@@ -59,4 +60,4 @@
         assertThat(tintedComplicationStyle.titleColor)
             .isEqualTo(ComplicationStyle.tint(Color.LTGRAY, Color.RED))
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications/api/current.ignore b/wear/watchface/watchface-complications/api/current.ignore
new file mode 100644
index 0000000..5d6e1bd
--- /dev/null
+++ b/wear/watchface/watchface-complications/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.complications.ComplicationDataSourceInfoRetrieverKt:
+    Removed class androidx.wear.watchface.complications.ComplicationDataSourceInfoRetrieverKt
diff --git a/wear/watchface/watchface-complications/api/current.txt b/wear/watchface/watchface-complications/api/current.txt
index ad56e5f..53d23f2 100644
--- a/wear/watchface/watchface-complications/api/current.txt
+++ b/wear/watchface/watchface-complications/api/current.txt
@@ -35,9 +35,6 @@
     ctor public ComplicationDataSourceInfoRetriever.ServiceDisconnectedException();
   }
 
-  public final class ComplicationDataSourceInfoRetrieverKt {
-  }
-
   public final class ComplicationSlotBounds {
     ctor public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds, java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeMargins);
     ctor @Deprecated public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds);
diff --git a/wear/watchface/watchface-complications/api/public_plus_experimental_current.txt b/wear/watchface/watchface-complications/api/public_plus_experimental_current.txt
index ad56e5f..53d23f2 100644
--- a/wear/watchface/watchface-complications/api/public_plus_experimental_current.txt
+++ b/wear/watchface/watchface-complications/api/public_plus_experimental_current.txt
@@ -35,9 +35,6 @@
     ctor public ComplicationDataSourceInfoRetriever.ServiceDisconnectedException();
   }
 
-  public final class ComplicationDataSourceInfoRetrieverKt {
-  }
-
   public final class ComplicationSlotBounds {
     ctor public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds, java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeMargins);
     ctor @Deprecated public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds);
diff --git a/wear/watchface/watchface-complications/api/restricted_current.ignore b/wear/watchface/watchface-complications/api/restricted_current.ignore
index 447539a..b776ca1 100644
--- a/wear/watchface/watchface-complications/api/restricted_current.ignore
+++ b/wear/watchface/watchface-complications/api/restricted_current.ignore
@@ -1,4 +1,8 @@
 // Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.complications.ComplicationDataSourceInfoRetrieverKt:
+    Removed class androidx.wear.watchface.complications.ComplicationDataSourceInfoRetrieverKt
+
+
 RemovedMethod: androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy#DefaultComplicationDataSourcePolicy(androidx.wear.watchface.complications.data.DefaultComplicationDataSourcePolicyWireFormat):
     Removed constructor androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy(androidx.wear.watchface.complications.data.DefaultComplicationDataSourcePolicyWireFormat)
 RemovedMethod: androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy#toWireFormat():
diff --git a/wear/watchface/watchface-complications/api/restricted_current.txt b/wear/watchface/watchface-complications/api/restricted_current.txt
index ad56e5f..53d23f2 100644
--- a/wear/watchface/watchface-complications/api/restricted_current.txt
+++ b/wear/watchface/watchface-complications/api/restricted_current.txt
@@ -35,9 +35,6 @@
     ctor public ComplicationDataSourceInfoRetriever.ServiceDisconnectedException();
   }
 
-  public final class ComplicationDataSourceInfoRetrieverKt {
-  }
-
   public final class ComplicationSlotBounds {
     ctor public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds, java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeMargins);
     ctor @Deprecated public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds);
diff --git a/wear/watchface/watchface-complications/src/androidTest/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt b/wear/watchface/watchface-complications/src/androidTest/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt
index 230310b..74757d2 100644
--- a/wear/watchface/watchface-complications/src/androidTest/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt
+++ b/wear/watchface/watchface-complications/src/androidTest/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt
@@ -16,7 +16,6 @@
 
 package androidx.wear.watchface.complications
 
-import android.support.wearable.complications.ComplicationProviderInfo as WireComplicationProviderInfo
 import android.app.Service
 import android.content.ComponentName
 import android.content.Context
@@ -25,6 +24,7 @@
 import android.graphics.drawable.Icon
 import android.os.Build
 import android.os.IBinder
+import android.support.wearable.complications.ComplicationProviderInfo as WireComplicationProviderInfo
 import android.support.wearable.complications.IPreviewComplicationDataCallback
 import android.support.wearable.complications.IProviderInfoService
 import androidx.annotation.RequiresApi
@@ -37,10 +37,10 @@
 import androidx.wear.watchface.complications.data.PlainComplicationText
 import androidx.wear.watchface.complications.data.ShortTextComplicationData
 import com.google.common.truth.Truth.assertThat
+import java.time.Instant
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.time.Instant
 
 private const val LEFT_COMPLICATION_ID = 101
 private const val RIGHT_COMPLICATION_ID = 102
@@ -62,39 +62,49 @@
     private val dataSourceIcon2: Icon =
         Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888))
 
-    private val dataSourceInfos = mapOf(
-        LEFT_COMPLICATION_ID to ComplicationDataSourceInfo(
-            "DataSourceApp1",
-            "DataSource1",
-            dataSourceIcon1,
-            ComplicationType.SHORT_TEXT,
-            dataSource1
-        ),
-        RIGHT_COMPLICATION_ID to ComplicationDataSourceInfo(
-            "DataSourceApp2",
-            "DataSource2",
-            dataSourceIcon2,
-            ComplicationType.LONG_TEXT,
-            dataSource2
+    private val dataSourceInfos =
+        mapOf(
+            LEFT_COMPLICATION_ID to
+                ComplicationDataSourceInfo(
+                    "DataSourceApp1",
+                    "DataSource1",
+                    dataSourceIcon1,
+                    ComplicationType.SHORT_TEXT,
+                    dataSource1
+                ),
+            RIGHT_COMPLICATION_ID to
+                ComplicationDataSourceInfo(
+                    "DataSourceApp2",
+                    "DataSource2",
+                    dataSourceIcon2,
+                    ComplicationType.LONG_TEXT,
+                    dataSource2
+                )
         )
-    )
-    private val previewData = mapOf(
-        dataSource1 to
-            ShortTextComplicationData.Builder(
-                PlainComplicationText.Builder("Left").build(),
-                ComplicationText.EMPTY
-            ).build().asWireComplicationData(),
-        dataSource2 to
-            LongTextComplicationData.Builder(
-                PlainComplicationText.Builder("Right").build(),
-                ComplicationText.EMPTY
-            ).build().asWireComplicationData(),
-        dataSource3 to
-            LongTextComplicationData.Builder(
-                PlainComplicationText.Builder("DataSource3").build(),
-                ComplicationText.EMPTY
-            ).build().asWireComplicationData(),
-    )
+    private val previewData =
+        mapOf(
+            dataSource1 to
+                ShortTextComplicationData.Builder(
+                        PlainComplicationText.Builder("Left").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .build()
+                    .asWireComplicationData(),
+            dataSource2 to
+                LongTextComplicationData.Builder(
+                        PlainComplicationText.Builder("Right").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .build()
+                    .asWireComplicationData(),
+            dataSource3 to
+                LongTextComplicationData.Builder(
+                        PlainComplicationText.Builder("DataSource3").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .build()
+                    .asWireComplicationData(),
+        )
 
     override fun getProviderInfos(
         watchFaceComponentName: ComponentName,
@@ -103,11 +113,13 @@
         if (watchFaceComponentName != watchFaceComponent) {
             return null
         }
-        return ArrayList<WireComplicationProviderInfo?>().apply {
-            for (id in ids) {
-                add(dataSourceInfos[id]?.toWireComplicationProviderInfo())
+        return ArrayList<WireComplicationProviderInfo?>()
+            .apply {
+                for (id in ids) {
+                    add(dataSourceInfos[id]?.toWireComplicationProviderInfo())
+                }
             }
-        }.toTypedArray()
+            .toTypedArray()
     }
 
     override fun getApiVersion() = IProviderInfoService.API_VERSION
@@ -128,10 +140,11 @@
 
     private val context = ApplicationProvider.getApplicationContext<Context>()
     private val serviceIntent = Intent(context, TestProviderInfoService::class.java)
-    private val complicationDataSourceInfoRetriever = ComplicationDataSourceInfoRetriever(
-        ApplicationProvider.getApplicationContext<Context>(),
-        serviceIntent
-    )
+    private val complicationDataSourceInfoRetriever =
+        ComplicationDataSourceInfoRetriever(
+            ApplicationProvider.getApplicationContext<Context>(),
+            serviceIntent
+        )
 
     @Test
     public fun retrieveComplicationDataSourceInfo() {
@@ -163,9 +176,8 @@
                     dataSource1,
                     ComplicationType.SHORT_TEXT
                 ) as ShortTextComplicationData
-            assertThat(
-                complicationData.text.getTextAt(context.resources, Instant.EPOCH)
-            ).isEqualTo("Left")
+            assertThat(complicationData.text.getTextAt(context.resources, Instant.EPOCH))
+                .isEqualTo("Left")
             complicationDataSourceInfoRetriever.close()
         }
     }
@@ -179,4 +191,4 @@
         // This should not crash.
         complicationDataSourceInfoRetriever.close()
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications/src/androidTest/java/androidx/wear/watchface/complications/ComplicationSlotBoundsTest.kt b/wear/watchface/watchface-complications/src/androidTest/java/androidx/wear/watchface/complications/ComplicationSlotBoundsTest.kt
index 1624c19f..e14eca1 100644
--- a/wear/watchface/watchface-complications/src/androidTest/java/androidx/wear/watchface/complications/ComplicationSlotBoundsTest.kt
+++ b/wear/watchface/watchface-complications/src/androidTest/java/androidx/wear/watchface/complications/ComplicationSlotBoundsTest.kt
@@ -21,8 +21,8 @@
 import android.os.Build
 import androidx.annotation.RequiresApi
 import androidx.test.core.app.ApplicationProvider
-import androidx.test.filters.MediumTest
 import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import androidx.wear.watchface.complications.data.ComplicationType
 import androidx.wear.watchface.complications.test.R
 import com.google.common.truth.Truth.assertThat
@@ -49,44 +49,43 @@
         val bounds = ComplicationSlotBounds.inflate(context.resources, parser, 1.0f, 1.0f)!!
 
         // SHORT_TEXT, LONG_TEXT and RANGED_VALUE should match the input
-        assertThat(
-            bounds.perComplicationTypeBounds[ComplicationType.SHORT_TEXT]
-        ).isEqualTo(RectF(0.2f, 0.4f, 0.3f, 0.1f))
-        assertThat(
-            bounds.perComplicationTypeMargins[ComplicationType.SHORT_TEXT]
-        ).isEqualTo(RectF(0.1f, 0.2f, 0.3f, 0.4f))
+        assertThat(bounds.perComplicationTypeBounds[ComplicationType.SHORT_TEXT])
+            .isEqualTo(RectF(0.2f, 0.4f, 0.3f, 0.1f))
+        assertThat(bounds.perComplicationTypeMargins[ComplicationType.SHORT_TEXT])
+            .isEqualTo(RectF(0.1f, 0.2f, 0.3f, 0.4f))
 
         val widthPixels = context.resources.displayMetrics.widthPixels
 
-        assertThat(
-            bounds.perComplicationTypeBounds[ComplicationType.LONG_TEXT]
-        ).isEqualTo(RectF(
-            96f * context.resources.displayMetrics.density / widthPixels,
-            96f * context.resources.displayMetrics.density / widthPixels,
-            192f * context.resources.displayMetrics.density / widthPixels,
-            192f * context.resources.displayMetrics.density / widthPixels
-        ))
+        assertThat(bounds.perComplicationTypeBounds[ComplicationType.LONG_TEXT])
+            .isEqualTo(
+                RectF(
+                    96f * context.resources.displayMetrics.density / widthPixels,
+                    96f * context.resources.displayMetrics.density / widthPixels,
+                    192f * context.resources.displayMetrics.density / widthPixels,
+                    192f * context.resources.displayMetrics.density / widthPixels
+                )
+            )
         assertThat(bounds.perComplicationTypeMargins[ComplicationType.LONG_TEXT]).isEqualTo(RectF())
 
-        assertThat(
-            bounds.perComplicationTypeBounds[ComplicationType.RANGED_VALUE]
-        ).isEqualTo(RectF(0.3f, 0.3f, 0.5f, 0.7f))
+        assertThat(bounds.perComplicationTypeBounds[ComplicationType.RANGED_VALUE])
+            .isEqualTo(RectF(0.3f, 0.3f, 0.5f, 0.7f))
 
         val center = context.resources.getDimension(R.dimen.complication_center) / widthPixels
         val halfSize =
             context.resources.getDimension(R.dimen.complication_size) / widthPixels / 2.0f
-        assertThat(
-            bounds.perComplicationTypeBounds[ComplicationType.SMALL_IMAGE]
-        ).isEqualTo(RectF(
-            center - halfSize, center - halfSize, center + halfSize, center + halfSize
-        ))
+        assertThat(bounds.perComplicationTypeBounds[ComplicationType.SMALL_IMAGE])
+            .isEqualTo(
+                RectF(center - halfSize, center - halfSize, center + halfSize, center + halfSize)
+            )
 
         // All other types should have been backfilled with an empty rect.
         for (type in ComplicationType.values()) {
-            if (type != ComplicationType.SHORT_TEXT &&
-                type != ComplicationType.LONG_TEXT &&
-                type != ComplicationType.RANGED_VALUE &&
-                type != ComplicationType.SMALL_IMAGE) {
+            if (
+                type != ComplicationType.SHORT_TEXT &&
+                    type != ComplicationType.LONG_TEXT &&
+                    type != ComplicationType.RANGED_VALUE &&
+                    type != ComplicationType.SMALL_IMAGE
+            ) {
                 assertThat(bounds.perComplicationTypeBounds[type]).isEqualTo(RectF())
             }
         }
diff --git a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetriever.kt b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetriever.kt
index dbc4246..be55134 100644
--- a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetriever.kt
+++ b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetriever.kt
@@ -15,7 +15,6 @@
  */
 package androidx.wear.watchface.complications
 
-import android.support.wearable.complications.ComplicationProviderInfo as WireComplicationProviderInfo
 import android.annotation.SuppressLint
 import android.content.ComponentName
 import android.content.Context
@@ -24,6 +23,7 @@
 import android.graphics.drawable.Icon
 import android.os.Build
 import android.os.IBinder
+import android.support.wearable.complications.ComplicationProviderInfo as WireComplicationProviderInfo
 import android.support.wearable.complications.IPreviewComplicationDataCallback
 import android.support.wearable.complications.IProviderInfoService
 import android.util.Log
@@ -47,28 +47,27 @@
 import androidx.wear.watchface.complications.data.SmallImageType
 import androidx.wear.watchface.complications.data.toApiComplicationData
 import androidx.wear.watchface.utility.TraceEvent
-import kotlinx.coroutines.CompletableDeferred
-import kotlinx.coroutines.suspendCancellableCoroutine
 import java.lang.IllegalArgumentException
 import kotlin.coroutines.resume
 import kotlin.coroutines.resumeWithException
 import kotlinx.coroutines.CancellableContinuation
+import kotlinx.coroutines.CompletableDeferred
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * Retrieves [Result] for a watch face's complications.
  *
- *
  * To use construct an instance and call [retrieveComplicationDataSourceInfo] which returns an array
  * of [Result] objects.
  *
- *
  * Further calls to [retrieveComplicationDataSourceInfo] may be made using the same instance of this
- * class, but [close] must be called when it is no longer needed. Once release has been
- * called, further retrieval attempts will fail.
+ * class, but [close] must be called when it is no longer needed. Once release has been called,
+ * further retrieval attempts will fail.
  */
 public class ComplicationDataSourceInfoRetriever : AutoCloseable {
     /** Results for [retrieveComplicationDataSourceInfo]. */
-    public class Result internal constructor(
+    public class Result
+    internal constructor(
         /** The id for the complication slot, as passed to [retrieveComplicationDataSourceInfo]. */
         public val slotId: Int,
 
@@ -87,17 +86,13 @@
 
         @SuppressLint("SyntheticAccessor")
         override fun onBindingDied(name: ComponentName?) {
-            synchronized(lock) {
-                closed = true
-            }
+            synchronized(lock) { closed = true }
             deferredService.completeExceptionally(ServiceDisconnectedException())
         }
 
         @SuppressLint("SyntheticAccessor")
         override fun onServiceDisconnected(name: ComponentName) {
-            synchronized(lock) {
-                closed = true
-            }
+            synchronized(lock) { closed = true }
             deferredService.completeExceptionally(ServiceDisconnectedException())
         }
     }
@@ -108,9 +103,7 @@
     private val deferredService = CompletableDeferred<IProviderInfoService>()
     private val lock = Any()
 
-    /**
-     * @hide
-     */
+    /** @hide */
     @VisibleForTesting
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public var closed: Boolean = false
@@ -122,7 +115,9 @@
     }
 
     /** @param context the current context */
-    public constructor(context: Context) : this(
+    public constructor(
+        context: Context
+    ) : this(
         context,
         Intent(ACTION_GET_COMPLICATION_CONFIG).apply { setPackage(PROVIDER_INFO_SERVICE_PACKAGE) }
     )
@@ -130,9 +125,7 @@
     /** Exception thrown if the service disconnects. */
     public class ServiceDisconnectedException : Exception()
 
-    /**
-     * @hide
-     */
+    /** @hide */
     @VisibleForTesting
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public constructor(service: IProviderInfoService) {
@@ -140,16 +133,15 @@
     }
 
     /**
-     * Requests [Result] for the specified complication ids on the specified
-     * watch face. When the info is received, the listener will receive a callback for each id.
-     * These callbacks will occur on the main thread.
-     *
+     * Requests [Result] for the specified complication ids on the specified watch face. When the
+     * info is received, the listener will receive a callback for each id. These callbacks will
+     * occur on the main thread.
      *
      * This will only work if the package of the current app is the same as the package of the
      * specified watch face.
      *
-     * @param watchFaceComponent the ComponentName of the WatchFaceService for which info is
-     * being requested
+     * @param watchFaceComponent the ComponentName of the WatchFaceService for which info is being
+     *   requested
      * @param watchFaceComplicationIds ids of the complications that info is being requested for
      * @return An array of [Result]. If the look up fails null will be returned.
      * @throws [ServiceDisconnectedException] if the service disconnected during the call.
@@ -161,18 +153,14 @@
     ): Array<Result>? =
         TraceEvent("ComplicationDataSourceInfoRetriever.retrieveComplicationDataSourceInfo").use {
             synchronized(lock) {
-                require(!closed) {
-                    "retrieveComplicationDataSourceInfo called after close"
-                }
+                require(!closed) { "retrieveComplicationDataSourceInfo called after close" }
             }
-            awaitDeferredService().getProviderInfos(
-                watchFaceComponent, watchFaceComplicationIds
-            )?.mapIndexed { index, info ->
-                Result(
-                    watchFaceComplicationIds[index],
-                    info?.toApiComplicationDataSourceInfo()
-                )
-            }?.toTypedArray()
+            awaitDeferredService()
+                .getProviderInfos(watchFaceComponent, watchFaceComplicationIds)
+                ?.mapIndexed { index, info ->
+                    Result(watchFaceComplicationIds[index], info?.toApiComplicationDataSourceInfo())
+                }
+                ?.toTypedArray()
         }
 
     /**
@@ -182,11 +170,11 @@
      * data based on the name and icon of the provider.
      *
      * @param complicationDataSourceComponent The [ComponentName] of the complication data source
-     * from which preview data is requested.
+     *   from which preview data is requested.
      * @param complicationType The requested [ComplicationType] for the preview data.
      * @return The preview [ComplicationData] or `null` if the complication data source component
-     * doesn't exist, or if it doesn't support complicationType, or if the remote service doesn't
-     * support this API.
+     *   doesn't exist, or if it doesn't support complicationType, or if the remote service doesn't
+     *   support this API.
      * @throws [ServiceDisconnectedException] if the service disconnected during the call.
      */
     @Throws(ServiceDisconnectedException::class)
@@ -194,48 +182,45 @@
     public suspend fun retrievePreviewComplicationData(
         complicationDataSourceComponent: ComponentName,
         complicationType: ComplicationType
-    ): ComplicationData? = TraceEvent(
-        "ComplicationDataSourceInfoRetriever.requestPreviewComplicationData"
-    ).use {
-        synchronized(lock) {
-            require(!closed) {
-                "retrievePreviewComplicationData called after close"
+    ): ComplicationData? =
+        TraceEvent("ComplicationDataSourceInfoRetriever.requestPreviewComplicationData").use {
+            synchronized(lock) {
+                require(!closed) { "retrievePreviewComplicationData called after close" }
             }
-        }
-        val service = awaitDeferredService()
-        if (service.apiVersion < 1) {
-            return null
-        }
+            val service = awaitDeferredService()
+            if (service.apiVersion < 1) {
+                return null
+            }
 
-        return suspendCancellableCoroutine { continuation ->
-            val callback = PreviewComplicationDataCallback(service, continuation)
-            if (!service.requestPreviewComplicationData(
-                    complicationDataSourceComponent,
-                    complicationType.toWireComplicationType(),
-                    callback
-                )
-            ) {
-                callback.safeUnlinkToDeath()
-                continuation.resume(null)
+            return suspendCancellableCoroutine { continuation ->
+                val callback = PreviewComplicationDataCallback(service, continuation)
+                if (
+                    !service.requestPreviewComplicationData(
+                        complicationDataSourceComponent,
+                        complicationType.toWireComplicationType(),
+                        callback
+                    )
+                ) {
+                    callback.safeUnlinkToDeath()
+                    continuation.resume(null)
+                }
             }
         }
-    }
 
     private class PreviewComplicationDataCallback(
         val service: IProviderInfoService,
         var continuation: CancellableContinuation<ComplicationData?>?
     ) : IPreviewComplicationDataCallback.Stub() {
-        val deathObserver: IBinder.DeathRecipient = IBinder.DeathRecipient {
-            continuation?.resumeWithException(ServiceDisconnectedException())
-        }
+        val deathObserver: IBinder.DeathRecipient =
+            IBinder.DeathRecipient {
+                continuation?.resumeWithException(ServiceDisconnectedException())
+            }
 
         init {
             service.asBinder().linkToDeath(deathObserver, 0)
 
             // Not a huge deal but we might as well unlink the deathObserver.
-            continuation?.invokeOnCancellation {
-                safeUnlinkToDeath()
-            }
+            continuation?.invokeOnCancellation { safeUnlinkToDeath() }
         }
 
         override fun updateComplicationData(
@@ -264,15 +249,14 @@
         }
 
     /**
-     * Releases the connection to the complication system used by this class. This must
-     * be called when the retriever is no longer needed.
-     *
+     * Releases the connection to the complication system used by this class. This must be called
+     * when the retriever is no longer needed.
      *
      * Any outstanding or subsequent futures returned by [retrieveComplicationDataSourceInfo] will
      * resolve with null.
      *
-     * This class implements the Java `AutoClosable` interface and
-     * may be used with try-with-resources.
+     * This class implements the Java `AutoClosable` interface and may be used with
+     * try-with-resources.
      */
     override fun close() {
         synchronized(lock) {
@@ -297,7 +281,7 @@
     private companion object {
         private const val TAG = "ComplicationDataS"
 
-        /** The package of the service that supplies complication data source info.  */
+        /** The package of the service that supplies complication data source info. */
         private const val PROVIDER_INFO_SERVICE_PACKAGE = "com.google.android.wearable.app"
         private const val ACTION_GET_COMPLICATION_CONFIG =
             "android.support.wearable.complications.ACTION_GET_COMPLICATION_CONFIG"
@@ -305,10 +289,9 @@
 }
 
 /**
- * Holder of details of a complication data source, for use by watch faces (for example,
- * to show the current complication data source in settings). A
- * [ComplicationDataSourceInfoRetriever] can be used to obtain references of this class for each
- * of a watch face's complications.
+ * Holder of details of a complication data source, for use by watch faces (for example, to show the
+ * current complication data source in settings). A [ComplicationDataSourceInfoRetriever] can be
+ * used to obtain references of this class for each of a watch face's complications.
  */
 public class ComplicationDataSourceInfo(
     /** The name of the application containing the complication data source. */
@@ -333,67 +316,55 @@
     /**
      * Lazily constructed fallback preview [ComplicationData] based on this
      * ComplicationDataSourceInfo. This is useful when
-     * [ComplicationDataSourceInfoRetriever.retrievePreviewComplicationData] returns `null` (e.g.
-     * on a pre-android R device).
+     * [ComplicationDataSourceInfoRetriever.retrievePreviewComplicationData] returns `null` (e.g. on
+     * a pre-android R device).
      */
     public val fallbackPreviewData: ComplicationData by lazy {
         val contentDescription = PlainComplicationText.Builder(name).build()
         when (type) {
             ComplicationType.SHORT_TEXT ->
                 ShortTextComplicationData.Builder(
-                    PlainComplicationText.Builder(
-                        name.take(ShortTextComplicationData.MAX_TEXT_LENGTH)
-                    ).build(),
-                    contentDescription
-                ).setMonochromaticImage(
-                    MonochromaticImage.Builder(icon).build()
-                ).build()
-
+                        PlainComplicationText.Builder(
+                                name.take(ShortTextComplicationData.MAX_TEXT_LENGTH)
+                            )
+                            .build(),
+                        contentDescription
+                    )
+                    .setMonochromaticImage(MonochromaticImage.Builder(icon).build())
+                    .build()
             ComplicationType.LONG_TEXT ->
                 LongTextComplicationData.Builder(
-                    PlainComplicationText.Builder(name).build(),
-                    contentDescription
-                ).setMonochromaticImage(
-                    MonochromaticImage.Builder(icon).build()
-                ).build()
-
+                        PlainComplicationText.Builder(name).build(),
+                        contentDescription
+                    )
+                    .setMonochromaticImage(MonochromaticImage.Builder(icon).build())
+                    .build()
             ComplicationType.SMALL_IMAGE ->
                 SmallImageComplicationData.Builder(
-                    SmallImage.Builder(icon, SmallImageType.ICON).build(),
-                    contentDescription
-                ).build()
-
+                        SmallImage.Builder(icon, SmallImageType.ICON).build(),
+                        contentDescription
+                    )
+                    .build()
             ComplicationType.MONOCHROMATIC_IMAGE ->
                 MonochromaticImageComplicationData.Builder(
-                    MonochromaticImage.Builder(icon).build(),
-                    contentDescription
-                ).build()
-
+                        MonochromaticImage.Builder(icon).build(),
+                        contentDescription
+                    )
+                    .build()
             ComplicationType.PHOTO_IMAGE ->
-                PhotoImageComplicationData.Builder(
-                    icon,
-                    contentDescription
-                ).build()
-
+                PhotoImageComplicationData.Builder(icon, contentDescription).build()
             ComplicationType.RANGED_VALUE ->
-                RangedValueComplicationData.Builder(
-                    42f,
-                    0f,
-                    100f,
-                    contentDescription
-                ).setMonochromaticImage(MonochromaticImage.Builder(icon).build())
+                RangedValueComplicationData.Builder(42f, 0f, 100f, contentDescription)
+                    .setMonochromaticImage(MonochromaticImage.Builder(icon).build())
                     .setText(PlainComplicationText.Builder(name).build())
                     .build()
-
             else -> NoDataComplicationData()
         }
     }
 
     init {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
-            require(componentName != null) {
-                "ComponentName is required on Android R and above"
-            }
+            require(componentName != null) { "ComponentName is required on Android R and above" }
         }
     }
 
@@ -433,17 +404,21 @@
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public fun toWireComplicationProviderInfo(): WireComplicationProviderInfo =
         WireComplicationProviderInfo(
-            appName, name, icon, type.toWireComplicationType(),
+            appName,
+            name,
+            icon,
+            type.toWireComplicationType(),
             componentName
         )
 }
 
-/**
- * @hide
- */
+/** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public fun WireComplicationProviderInfo.toApiComplicationDataSourceInfo() =
     ComplicationDataSourceInfo(
-        appName!!, providerName!!, providerIcon!!, fromWireType(complicationType),
+        appName!!,
+        providerName!!,
+        providerIcon!!,
+        fromWireType(complicationType),
         providerComponentName
     )
diff --git a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationSlotBounds.kt b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationSlotBounds.kt
index f0d847e..9a24586 100644
--- a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationSlotBounds.kt
+++ b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationSlotBounds.kt
@@ -45,9 +45,9 @@
  * lowest id that intersects the coordinates, if any, is selected.
  *
  * @param perComplicationTypeBounds Per [ComplicationType] fractional unit-square screen space
- * complication bounds.
+ *   complication bounds.
  * @param perComplicationTypeMargins Per [ComplicationType] fractional unit-square screen space
- * complication margins for tap detection (doesn't affect rendering).
+ *   complication margins for tap detection (doesn't affect rendering).
  */
 public class ComplicationSlotBounds(
     public val perComplicationTypeBounds: Map<ComplicationType, RectF>,
@@ -59,10 +59,9 @@
             "ComplicationSlotBounds(Map<ComplicationType, RectF>, Map<ComplicationType, RectF>)"
         )
     )
-    constructor(perComplicationTypeBounds: Map<ComplicationType, RectF>) : this(
-        perComplicationTypeBounds,
-        perComplicationTypeBounds.mapValues { RectF() }
-    )
+    constructor(
+        perComplicationTypeBounds: Map<ComplicationType, RectF>
+    ) : this(perComplicationTypeBounds, perComplicationTypeBounds.mapValues { RectF() })
 
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -116,12 +115,8 @@
             "perComplicationTypeMargins must contain entries for each ComplicationType"
         }
         for (type in ComplicationType.values()) {
-            require(perComplicationTypeBounds.containsKey(type)) {
-                "Missing bounds for $type"
-            }
-            require(perComplicationTypeMargins.containsKey(type)) {
-                "Missing margins for $type"
-            }
+            require(perComplicationTypeBounds.containsKey(type)) { "Missing bounds for $type" }
+            require(perComplicationTypeMargins.containsKey(type)) { "Missing margins for $type" }
         }
     }
 
@@ -131,11 +126,11 @@
         internal const val NODE_NAME = "ComplicationSlotBounds"
 
         /**
-         * Constructs a [ComplicationSlotBounds] from a potentially incomplete
-         * Map<ComplicationType, RectF>, backfilling with empty [RectF]s. This method is necessary
-         * because there can be a skew between the version of the library between the watch face and
-         * the system which would otherwise be problematic if new complication types have been
-         * introduced.
+         * Constructs a [ComplicationSlotBounds] from a potentially incomplete Map<ComplicationType,
+         * RectF>, backfilling with empty [RectF]s. This method is necessary because there can be a
+         * skew between the version of the library between the watch face and the system which would
+         * otherwise be problematic if new complication types have been introduced.
+         *
          * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -169,65 +164,62 @@
             parser.iterate {
                 when (parser.name) {
                     NODE_NAME -> {
-                        val rect = if (parser.hasValue("left"))
-                            RectF(
-                                parser.requireAndGet("left", resources, complicationScaleX),
-                                parser.requireAndGet("top", resources, complicationScaleY),
-                                parser.requireAndGet("right", resources, complicationScaleX),
-                                parser.requireAndGet("bottom", resources, complicationScaleY)
-                            )
-                        else if (parser.hasValue("center_x")) {
-                            val halfWidth =
-                                parser.requireAndGet("size_x", resources, complicationScaleX) / 2.0f
-                            val halfHeight =
-                                parser.requireAndGet("size_y", resources, complicationScaleY) / 2.0f
-                            val centerX =
-                                parser.requireAndGet("center_x", resources, complicationScaleX)
-                            val centerY =
-                                parser.requireAndGet("center_y", resources, complicationScaleY)
-                            RectF(
-                                centerX - halfWidth,
-                                centerY - halfHeight,
-                                centerX + halfWidth,
-                                centerY + halfHeight
-                            )
-                        } else {
-                            throw IllegalArgumentException("$NODE_NAME must " +
-                                "either define top, bottom, left, right" +
-                                "or center_x, center_y, size_x, size_y should be specified")
-                        }
-                        val margin = RectF(
-                            parser.get("marginLeft", resources, complicationScaleX) ?: 0f,
-                            parser.get("marginTop", resources, complicationScaleY) ?: 0f,
-                            parser.get("marginRight", resources, complicationScaleX) ?: 0f,
-                            parser.get("marginBottom", resources, complicationScaleY) ?: 0f
-                        )
-                        if (null != parser.getAttributeValue(
-                                NAMESPACE_APP,
-                                "complicationType"
-                            )
-                        ) {
-                            val complicationType = ComplicationType.fromWireType(
-                                parser.getAttributeIntValue(
-                                    NAMESPACE_APP,
-                                    "complicationType",
-                                    0
+                        val rect =
+                            if (parser.hasValue("left"))
+                                RectF(
+                                    parser.requireAndGet("left", resources, complicationScaleX),
+                                    parser.requireAndGet("top", resources, complicationScaleY),
+                                    parser.requireAndGet("right", resources, complicationScaleX),
+                                    parser.requireAndGet("bottom", resources, complicationScaleY)
                                 )
+                            else if (parser.hasValue("center_x")) {
+                                val halfWidth =
+                                    parser.requireAndGet("size_x", resources, complicationScaleX) /
+                                        2.0f
+                                val halfHeight =
+                                    parser.requireAndGet("size_y", resources, complicationScaleY) /
+                                        2.0f
+                                val centerX =
+                                    parser.requireAndGet("center_x", resources, complicationScaleX)
+                                val centerY =
+                                    parser.requireAndGet("center_y", resources, complicationScaleY)
+                                RectF(
+                                    centerX - halfWidth,
+                                    centerY - halfHeight,
+                                    centerX + halfWidth,
+                                    centerY + halfHeight
+                                )
+                            } else {
+                                throw IllegalArgumentException(
+                                    "$NODE_NAME must " +
+                                        "either define top, bottom, left, right" +
+                                        "or center_x, center_y, size_x, size_y should be specified"
+                                )
+                            }
+                        val margin =
+                            RectF(
+                                parser.get("marginLeft", resources, complicationScaleX) ?: 0f,
+                                parser.get("marginTop", resources, complicationScaleY) ?: 0f,
+                                parser.get("marginRight", resources, complicationScaleX) ?: 0f,
+                                parser.get("marginBottom", resources, complicationScaleY) ?: 0f
                             )
-                            require(
-                                !perComplicationTypeBounds.contains(complicationType)
-                            ) {
+                        if (null != parser.getAttributeValue(NAMESPACE_APP, "complicationType")) {
+                            val complicationType =
+                                ComplicationType.fromWireType(
+                                    parser.getAttributeIntValue(
+                                        NAMESPACE_APP,
+                                        "complicationType",
+                                        0
+                                    )
+                                )
+                            require(!perComplicationTypeBounds.contains(complicationType)) {
                                 "Duplicate $complicationType"
                             }
                             perComplicationTypeBounds[complicationType] = rect
                             perComplicationTypeMargins[complicationType] = margin
                         } else {
                             for (complicationType in ComplicationType.values()) {
-                                require(
-                                    !perComplicationTypeBounds.contains(
-                                        complicationType
-                                    )
-                                ) {
+                                require(!perComplicationTypeBounds.contains(complicationType)) {
                                     "Duplicate $complicationType"
                                 }
                                 perComplicationTypeBounds[complicationType] = rect
@@ -254,17 +246,11 @@
     scale: Float
 ): Float {
     val value = get(id, resources, scale)
-    require(value != null) {
-        "${ComplicationSlotBounds.NODE_NAME} must define '$id'"
-    }
+    require(value != null) { "${ComplicationSlotBounds.NODE_NAME} must define '$id'" }
     return value
 }
 
-internal fun XmlResourceParser.get(
-    id: String,
-    resources: Resources,
-    scale: Float
-): Float? {
+internal fun XmlResourceParser.get(id: String, resources: Resources, scale: Float): Float? {
     val stringValue = getAttributeValue(NAMESPACE_APP, id) ?: return null
     val resId = getAttributeResourceValue(NAMESPACE_APP, id, 0)
     if (resId != 0) {
@@ -296,4 +282,4 @@
     dos.writeFloat(right)
     dos.writeFloat(top)
     dos.writeFloat(bottom)
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/DefaultComplicationDataSourcePolicy.kt b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/DefaultComplicationDataSourcePolicy.kt
index b7ae041..4ba1f81 100644
--- a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/DefaultComplicationDataSourcePolicy.kt
+++ b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/DefaultComplicationDataSourcePolicy.kt
@@ -26,11 +26,11 @@
 import java.util.ArrayList
 
 /**
- * A watch face may wish to try and set one or more non-system data sources as the default
- * data source for a complication. If a complication data source can't be used for some reason (e.g.
- * it isn't installed or it doesn't support the requested type, or the watch face lacks the
- * necessary permission) then the next one will be tried. A system complication data source acts
- * as a final fallback in case no non-system data sources can be used.
+ * A watch face may wish to try and set one or more non-system data sources as the default data
+ * source for a complication. If a complication data source can't be used for some reason (e.g. it
+ * isn't installed or it doesn't support the requested type, or the watch face lacks the necessary
+ * permission) then the next one will be tried. A system complication data source acts as a final
+ * fallback in case no non-system data sources can be used.
  *
  * If the DefaultComplicationDataSourcePolicy is empty then no default is set.
  */
@@ -54,8 +54,7 @@
     public val secondaryDataSourceDefaultType: ComplicationType?
 
     /** Fallback in case none of the non-system data sources could be used. */
-    @DataSourceId
-    public val systemDataSourceFallback: Int
+    @DataSourceId public val systemDataSourceFallback: Int
 
     /** The default [ComplicationType] for [systemDataSourceFallback]. */
     public val systemDataSourceFallbackDefaultType: ComplicationType
@@ -86,8 +85,7 @@
         }
 
         this.systemDataSourceFallback = systemDataSourceFallback
-        this.systemDataSourceFallbackDefaultType =
-            systemDataSourceFallbackDefaultType
+        this.systemDataSourceFallbackDefaultType = systemDataSourceFallbackDefaultType
     }
 
     /** No default complication data source. */
@@ -100,9 +98,7 @@
         systemDataSourceFallbackDefaultType = ComplicationType.NOT_CONFIGURED
     }
 
-    /**
-     * Uses [systemProvider] as the default complication data source.
-     */
+    /** Uses [systemProvider] as the default complication data source. */
     @Deprecated(
         "Use a constructor that sets the DefaultTypes",
         ReplaceWith("DefaultComplicationDataSourcePolicy(Int, ComplicationType)")
@@ -145,10 +141,7 @@
                 " ComplicationType)"
         )
     )
-    public constructor(
-        dataSource: ComponentName,
-        @DataSourceId systemDataSourceFallback: Int
-    ) {
+    public constructor(dataSource: ComponentName, @DataSourceId systemDataSourceFallback: Int) {
         primaryDataSource = dataSource
         primaryDataSourceDefaultType = null
         secondaryDataSource = null
@@ -162,14 +155,14 @@
      * not present then [systemDataSourceFallback] will be used instead.
      *
      * @param primaryDataSource The data source to try.
-     * @param primaryDataSourceDefaultType The default [ComplicationType] if
-     * primaryDataSource is selected. Note Pre-R this will be ignored in favour of
-     * [systemDataSourceFallbackDefaultType].
+     * @param primaryDataSourceDefaultType The default [ComplicationType] if primaryDataSource is
+     *   selected. Note Pre-R this will be ignored in favour of
+     *   [systemDataSourceFallbackDefaultType].
      * @param systemDataSourceFallback The system data source to fall back on if neither provider is
-     * available.
+     *   available.
      * @param systemDataSourceFallbackDefaultType The default [ComplicationType] if
-     * systemDataSourceFallback is selected.
-    */
+     *   systemDataSourceFallback is selected.
+     */
     public constructor(
         primaryDataSource: ComponentName,
         primaryDataSourceDefaultType: ComplicationType,
@@ -215,17 +208,17 @@
      * [systemDataSourceFallback] will be used instead.
      *
      * @param primaryDataSource The first data source to try.
-     * @param primaryDataSourceDefaultType The default [ComplicationType] if
-     * primaryDataSource is selected. Note Pre-R this will be ignored in favour of
-     * [systemDataSourceFallbackDefaultType].
+     * @param primaryDataSourceDefaultType The default [ComplicationType] if primaryDataSource is
+     *   selected. Note Pre-R this will be ignored in favour of
+     *   [systemDataSourceFallbackDefaultType].
      * @param secondaryDataSource The second data source to try.
-     * @param secondaryDataSourceDefaultType The default [ComplicationType] if
-     * secondaryDataSource is selected. Note Pre-R this will be ignored in favour of
-     * [systemDataSourceFallbackDefaultType].
+     * @param secondaryDataSourceDefaultType The default [ComplicationType] if secondaryDataSource
+     *   is selected. Note Pre-R this will be ignored in favour of
+     *   [systemDataSourceFallbackDefaultType].
      * @param systemDataSourceFallback The system data source to fall back on if neither provider is
-     * available.
+     *   available.
      * @param systemDataSourceFallbackDefaultType The default [ComplicationType] if
-     * systemDataSourceFallback is selected.
+     *   systemDataSourceFallback is selected.
      */
     public constructor(
         primaryDataSource: ComponentName,
@@ -249,36 +242,38 @@
 
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    public fun dataSourcesAsList(): ArrayList<ComponentName> = ArrayList<ComponentName>().apply {
-        primaryDataSource?.let { add(it) }
-        secondaryDataSource?.let { add(it) }
-    }
+    public fun dataSourcesAsList(): ArrayList<ComponentName> =
+        ArrayList<ComponentName>().apply {
+            primaryDataSource?.let { add(it) }
+            secondaryDataSource?.let { add(it) }
+        }
 
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    public constructor(wireFormat: DefaultComplicationDataSourcePolicyWireFormat) : this(
+    public constructor(
+        wireFormat: DefaultComplicationDataSourcePolicyWireFormat
+    ) : this(
         wireFormat.mDefaultDataSourcesToTry,
         wireFormat.mFallbackSystemDataSource,
         ComplicationType.fromWireType(wireFormat.mPrimaryDataSourceDefaultType),
         ComplicationType.fromWireType(wireFormat.mSecondaryDataSourceDefaultType),
         ComplicationType.fromWireType(wireFormat.mDefaultType)
-    ) {
-    }
+    ) {}
 
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public fun toWireFormat(): DefaultComplicationDataSourcePolicyWireFormat {
-        val systemDataSourceFallbackDefaultType = systemDataSourceFallbackDefaultType
-            .toWireComplicationType()
+        val systemDataSourceFallbackDefaultType =
+            systemDataSourceFallbackDefaultType.toWireComplicationType()
 
         return DefaultComplicationDataSourcePolicyWireFormat(
             dataSourcesAsList(),
             systemDataSourceFallback,
             systemDataSourceFallbackDefaultType,
-            primaryDataSourceDefaultType
-                ?.toWireComplicationType() ?: systemDataSourceFallbackDefaultType,
-            secondaryDataSourceDefaultType
-                ?.toWireComplicationType() ?: systemDataSourceFallbackDefaultType
+            primaryDataSourceDefaultType?.toWireComplicationType()
+                ?: systemDataSourceFallbackDefaultType,
+            secondaryDataSourceDefaultType?.toWireComplicationType()
+                ?: systemDataSourceFallbackDefaultType
         )
     }
 
@@ -363,14 +358,19 @@
             require(parser.hasValue("systemDataSourceFallback")) {
                 "A $nodeName must have a systemDataSourceFallback attribute"
             }
-            val systemDataSourceFallback = parser.getAttributeIntValue(
-                NAMESPACE_APP, "systemDataSourceFallback", 0)
+            val systemDataSourceFallback =
+                parser.getAttributeIntValue(NAMESPACE_APP, "systemDataSourceFallback", 0)
             require(parser.hasValue("systemDataSourceFallbackDefaultType")) {
                 "A $nodeName must have a systemDataSourceFallbackDefaultType attribute"
             }
-            val systemDataSourceFallbackDefaultType = ComplicationType.fromWireType(
-                parser.getAttributeIntValue(
-                    NAMESPACE_APP, "systemDataSourceFallbackDefaultType", 0))
+            val systemDataSourceFallbackDefaultType =
+                ComplicationType.fromWireType(
+                    parser.getAttributeIntValue(
+                        NAMESPACE_APP,
+                        "systemDataSourceFallbackDefaultType",
+                        0
+                    )
+                )
             return when {
                 secondaryDataSource != null -> {
                     require(primaryDataSource != null) {
@@ -393,7 +393,6 @@
                         systemDataSourceFallbackDefaultType
                     )
                 }
-
                 primaryDataSource != null -> {
                     require(primaryDataSourceDefaultType != null) {
                         "If a primaryDataSource is specified, a " +
@@ -406,7 +405,6 @@
                         systemDataSourceFallbackDefaultType
                     )
                 }
-
                 else -> {
                     DefaultComplicationDataSourcePolicy(
                         systemDataSourceFallback,
diff --git a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/SystemDataSources.kt b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/SystemDataSources.kt
index 9a7e6ce..b1aa875 100644
--- a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/SystemDataSources.kt
+++ b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/SystemDataSources.kt
@@ -27,16 +27,15 @@
     public companion object {
         // NEXT AVAILABLE DATA SOURCE ID: 17
 
-        /** Specifies that no complication data source should be used.  */
+        /** Specifies that no complication data source should be used. */
         public const val NO_DATA_SOURCE: Int = -1
 
         /**
          * Id for the 'watch battery' complication complication data source.
          *
          * This is a safe complication data source, so if a watch face uses this as a default it
-         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA
-         * permission has been
-         * granted.
+         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA permission
+         * has been granted.
          *
          * This complication data source supports the following types:
          * [ComplicationType.MONOCHROMATIC_IMAGE], [ComplicationType.SHORT_TEXT],
@@ -48,8 +47,8 @@
          * Id for the 'date' complication complication data source.
          *
          * This is a safe complication data source, so if a watch face uses this as a default it
-         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA
-         * permission has been granted.
+         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA permission
+         * has been granted.
          *
          * This complication data source supports only [ComplicationType.SHORT_TEXT].
          */
@@ -59,8 +58,8 @@
          * Id for the 'time and date' complication complication data source.
          *
          * This is a safe complication data source, so if a watch face uses this as a default it
-         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA
-         * permission has been granted.
+         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA permission
+         * has been granted.
          *
          * This complication data source supports only [ComplicationType.SHORT_TEXT].
          */
@@ -81,8 +80,8 @@
          * Id for the 'world clock' complication complication data source.
          *
          * This is a safe complication data source, so if a watch face uses this as a default it
-         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA
-         * permission has been granted.
+         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA permission
+         * has been granted.
          *
          * This complication data source supports only [ComplicationType.SHORT_TEXT].
          */
@@ -92,8 +91,8 @@
          * Id for the 'app shortcut' complication complication data source.
          *
          * This is a safe complication data source, so if a watch face uses this as a default it
-         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA
-         * permission has been granted.
+         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA permission
+         * has been granted.
          *
          * This complication data source supports the following types:
          * [ComplicationType.SMALL_IMAGE], [ComplicationType.LONG_TEXT].
@@ -104,8 +103,8 @@
          * Id for the 'unread notification count' complication complication data source.
          *
          * This is a safe complication data source, so if a watch face uses this as a default it
-         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA
-         * permission has been granted.
+         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA permission
+         * has been granted.
          *
          * This complication data source supports the following types:
          * [ComplicationType.MONOCHROMATIC_IMAGE], [ComplicationType.SHORT_TEXT].
@@ -147,8 +146,8 @@
          * Id for the 'day of week' complication complication data source.
          *
          * This is a safe complication data source, so if a watch face uses this as a default it
-         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA
-         * permission has been granted.
+         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA permission
+         * has been granted.
          *
          * This complication data source supports only [ComplicationType.SHORT_TEXT].
          */
@@ -172,8 +171,8 @@
          * Id for the 'day and date' complication complication data source.
          *
          * This is a safe complication data source, so if a watch face uses this as a default it
-         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA
-         * permission has been granted.
+         * will be able to receive data from it even before the RECEIVE_COMPLICATION_DATA permission
+         * has been granted.
          *
          * This complication data source supports only [ComplicationType.SHORT_TEXT].
          */
@@ -200,9 +199,7 @@
         DATA_SOURCE_FAVORITE_CONTACT,
         DATA_SOURCE_DAY_AND_DATE
     )
-    @RestrictTo(
-        RestrictTo.Scope.LIBRARY_GROUP
-    )
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     @Retention(AnnotationRetention.SOURCE)
     public annotation class DataSourceId
 }
diff --git a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/XmlUtils.kt b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/XmlUtils.kt
index bb237b3..b7cbd9f 100644
--- a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/XmlUtils.kt
+++ b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/XmlUtils.kt
@@ -24,9 +24,7 @@
 import androidx.annotation.RestrictTo
 import org.xmlpull.v1.XmlPullParser
 
-/**
- * Exception to be thrown if an incorrect node is reached during parsing.
- */
+/** Exception to be thrown if an incorrect node is reached during parsing. */
 /** @hide */
 class IllegalNodeException(parser: XmlResourceParser) :
     IllegalArgumentException("Unexpected node ${parser.name} at line ${parser.lineNumber}")
@@ -61,9 +59,7 @@
         type = next()
     } while (type != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG)
 
-    require(name == expectedNode) {
-        "Expected a $expectedNode node but is $name"
-    }
+    require(name == expectedNode) { "Expected a $expectedNode node but is $name" }
 }
 
 /**
@@ -75,11 +71,7 @@
  * @param name the name of the attribute.
  * @hide
  */
-fun getStringRefAttribute(
-    resources: Resources,
-    parser: XmlResourceParser,
-    name: String
-): String? {
+fun getStringRefAttribute(resources: Resources, parser: XmlResourceParser, name: String): String? {
     return if (parser.hasValue(name)) {
         val resId = parser.getAttributeResourceValue(NAMESPACE_APP, name, 0)
         if (resId == 0) {
@@ -99,11 +91,7 @@
  * @param name the name of the attribute.
  * @hide
  */
-fun getIntRefAttribute(
-    resources: Resources,
-    parser: XmlResourceParser,
-    name: String
-): Int? {
+fun getIntRefAttribute(resources: Resources, parser: XmlResourceParser, name: String): Int? {
     return if (parser.hasValue(name)) {
         val resId = parser.getAttributeResourceValue(NAMESPACE_APP, name, 0)
         if (resId == 0) {
diff --git a/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt b/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt
index 7115a09..ded8016 100644
--- a/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt
+++ b/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt
@@ -32,8 +32,8 @@
 import androidx.wear.watchface.complications.data.ShortTextComplicationData
 import androidx.wear.watchface.complications.data.SmallImageComplicationData
 import com.google.common.truth.Truth.assertThat
-import org.mockito.Mockito
 import kotlin.jvm.java
+import org.mockito.Mockito
 
 @org.junit.runner.RunWith(SharedRobolectricTestRunner::class)
 public class ComplicationDataSourceInfoRetrieverTest {
@@ -54,20 +54,22 @@
 
             val testData: ComplicationData =
                 LongTextComplicationData.Builder(
-                    PlainComplicationText.Builder("Test Text")
-                        .build(),
-                    ComplicationText.Companion.EMPTY
-                ).build()
+                        PlainComplicationText.Builder("Test Text").build(),
+                        ComplicationText.Companion.EMPTY
+                    )
+                    .build()
 
             Mockito.doAnswer {
-                val callback = it.arguments[2] as IPreviewComplicationDataCallback
-                callback.updateComplicationData(testData.asWireComplicationData())
-                true
-            }.`when`(mockService).requestPreviewComplicationData(
-                org.mockito.ArgumentMatchers.eq(component),
-                org.mockito.ArgumentMatchers.eq(type.toWireComplicationType()),
-                org.mockito.ArgumentMatchers.any()
-            )
+                    val callback = it.arguments[2] as IPreviewComplicationDataCallback
+                    callback.updateComplicationData(testData.asWireComplicationData())
+                    true
+                }
+                .`when`(mockService)
+                .requestPreviewComplicationData(
+                    org.mockito.ArgumentMatchers.eq(component),
+                    org.mockito.ArgumentMatchers.eq(type.toWireComplicationType()),
+                    org.mockito.ArgumentMatchers.any()
+                )
 
             val previewData =
                 complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
@@ -76,11 +78,14 @@
                 )!!
             assertThat(previewData.type).isEqualTo(type)
             assertThat(
-                (previewData as LongTextComplicationData).text.getTextAt(
-                    ApplicationProvider.getApplicationContext<Context>().resources,
-                    java.time.Instant.EPOCH
+                    (previewData as LongTextComplicationData)
+                        .text
+                        .getTextAt(
+                            ApplicationProvider.getApplicationContext<Context>().resources,
+                            java.time.Instant.EPOCH
+                        )
                 )
-            ).isEqualTo("Test Text")
+                .isEqualTo("Test Text")
         }
     }
 
@@ -94,21 +99,24 @@
             Mockito.`when`(mockService.asBinder()).thenReturn(mockBinder)
 
             Mockito.doAnswer {
-                val callback = it.arguments[2] as IPreviewComplicationDataCallback
-                callback.updateComplicationData(null)
-                true
-            }.`when`(mockService).requestPreviewComplicationData(
-                org.mockito.ArgumentMatchers.eq(component),
-                org.mockito.ArgumentMatchers.eq(type.toWireComplicationType()),
-                org.mockito.ArgumentMatchers.any()
-            )
+                    val callback = it.arguments[2] as IPreviewComplicationDataCallback
+                    callback.updateComplicationData(null)
+                    true
+                }
+                .`when`(mockService)
+                .requestPreviewComplicationData(
+                    org.mockito.ArgumentMatchers.eq(component),
+                    org.mockito.ArgumentMatchers.eq(type.toWireComplicationType()),
+                    org.mockito.ArgumentMatchers.any()
+                )
 
             assertThat(
-                complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
-                    component,
-                    type
+                    complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
+                        component,
+                        type
+                    )
                 )
-            ).isNull()
+                .isNull()
         }
     }
 
@@ -122,11 +130,12 @@
             Mockito.`when`(mockService.asBinder()).thenReturn(mockBinder)
 
             assertThat(
-                complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
-                    component,
-                    type
+                    complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
+                        component,
+                        type
+                    )
                 )
-            ).isNull()
+                .isNull()
         }
     }
 
@@ -138,151 +147,180 @@
             val type = ComplicationType.LONG_TEXT
             Mockito.`when`(mockService.apiVersion).thenReturn(1)
             Mockito.`when`(mockService.asBinder()).thenReturn(mockBinder)
-            Mockito.doAnswer {
-                false
-            }.`when`(mockService).requestPreviewComplicationData(
-                org.mockito.ArgumentMatchers.eq(component),
-                org.mockito.ArgumentMatchers.eq(type.toWireComplicationType()),
-                org.mockito.ArgumentMatchers.any()
-            )
+            Mockito.doAnswer { false }
+                .`when`(mockService)
+                .requestPreviewComplicationData(
+                    org.mockito.ArgumentMatchers.eq(component),
+                    org.mockito.ArgumentMatchers.eq(type.toWireComplicationType()),
+                    org.mockito.ArgumentMatchers.any()
+                )
 
             assertThat(
-                complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
-                    component,
-                    type
+                    complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
+                        component,
+                        type
+                    )
                 )
-            ).isNull()
+                .isNull()
         }
     }
 
     @org.junit.Test
     public fun complicationDataSourceInfo_NullComponentName() {
-        val complicationDataSourceInfo = ComplicationDataSourceInfo(
-            "appName",
-            "name",
-            android.graphics.drawable.Icon.createWithContentUri("icon"),
-            ComplicationType.SHORT_TEXT,
-            componentName = null
-        )
+        val complicationDataSourceInfo =
+            ComplicationDataSourceInfo(
+                "appName",
+                "name",
+                android.graphics.drawable.Icon.createWithContentUri("icon"),
+                ComplicationType.SHORT_TEXT,
+                componentName = null
+            )
         assertThat(complicationDataSourceInfo.componentName).isNull()
-        assertThat(complicationDataSourceInfo.toString()).isEqualTo(
-            "ComplicationDataSourceInfo(appName=appName, name=name, type=SHORT_TEXT" +
-                ", icon=Icon(typ=URI uri=icon), componentName=null)"
-        )
+        assertThat(complicationDataSourceInfo.toString())
+            .isEqualTo(
+                "ComplicationDataSourceInfo(appName=appName, name=name, type=SHORT_TEXT" +
+                    ", icon=Icon(typ=URI uri=icon), componentName=null)"
+            )
     }
 
     @org.junit.Test
     public fun createShortTextFallbackPreviewData() {
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
-        val shortTextPreviewData = ComplicationDataSourceInfo(
-            "applicationName",
-            "complicationName",
-            icon,
-            ComplicationType.SHORT_TEXT,
-            componentName = null
-        ).fallbackPreviewData as ShortTextComplicationData
+        val shortTextPreviewData =
+            ComplicationDataSourceInfo(
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.SHORT_TEXT,
+                    componentName = null
+                )
+                .fallbackPreviewData as ShortTextComplicationData
+        assertThat(shortTextPreviewData.text.getTextAt(resources, java.time.Instant.EPOCH))
+            .isEqualTo("complic")
         assertThat(
-            shortTextPreviewData.text.getTextAt(resources, java.time.Instant.EPOCH)
-        ).isEqualTo("complic")
-        assertThat(
-            shortTextPreviewData.contentDescription!!.getTextAt(resources, java.time.Instant.EPOCH)
-        ).isEqualTo("complicationName")
+                shortTextPreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
+            )
+            .isEqualTo("complicationName")
         assertThat(shortTextPreviewData.monochromaticImage!!.image).isEqualTo(icon)
     }
 
     @org.junit.Test
     public fun createLongTextFallbackPreviewData() {
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
-        val longTextPreviewData = ComplicationDataSourceInfo(
-            "applicationName",
-            "complicationName",
-            icon,
-            ComplicationType.LONG_TEXT,
-            componentName = null
-        ).fallbackPreviewData as LongTextComplicationData
+        val longTextPreviewData =
+            ComplicationDataSourceInfo(
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.LONG_TEXT,
+                    componentName = null
+                )
+                .fallbackPreviewData as LongTextComplicationData
+        assertThat(longTextPreviewData.text.getTextAt(resources, java.time.Instant.EPOCH))
+            .isEqualTo("complicationName")
         assertThat(
-            longTextPreviewData.text.getTextAt(resources, java.time.Instant.EPOCH)
-        ).isEqualTo("complicationName")
-        assertThat(
-            longTextPreviewData.contentDescription!!.getTextAt(resources, java.time.Instant.EPOCH)
-        ).isEqualTo("complicationName")
+                longTextPreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
+            )
+            .isEqualTo("complicationName")
         assertThat(longTextPreviewData.monochromaticImage!!.image).isEqualTo(icon)
     }
 
     @org.junit.Test
     public fun createSmallImageFallbackPreviewData() {
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
-        val smallImagePreviewData = ComplicationDataSourceInfo(
-            "applicationName",
-            "complicationName",
-            icon,
-            ComplicationType.SMALL_IMAGE,
-            componentName = null
-        ).fallbackPreviewData as SmallImageComplicationData
+        val smallImagePreviewData =
+            ComplicationDataSourceInfo(
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.SMALL_IMAGE,
+                    componentName = null
+                )
+                .fallbackPreviewData as SmallImageComplicationData
         assertThat(smallImagePreviewData.smallImage.image).isEqualTo(icon)
         assertThat(
-            smallImagePreviewData.contentDescription!!.getTextAt(resources, java.time.Instant.EPOCH)
-        ).isEqualTo("complicationName")
+                smallImagePreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
+            )
+            .isEqualTo("complicationName")
     }
 
     @org.junit.Test
     public fun createPhotoImageFallbackPreviewData() {
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
-        val photoImagePreviewData = ComplicationDataSourceInfo(
-            "applicationName",
-            "complicationName",
-            icon,
-            ComplicationType.PHOTO_IMAGE,
-            componentName = null
-        ).fallbackPreviewData as PhotoImageComplicationData
+        val photoImagePreviewData =
+            ComplicationDataSourceInfo(
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.PHOTO_IMAGE,
+                    componentName = null
+                )
+                .fallbackPreviewData as PhotoImageComplicationData
         assertThat(photoImagePreviewData.photoImage).isEqualTo(icon)
         assertThat(
-            photoImagePreviewData.contentDescription!!.getTextAt(resources, java.time.Instant.EPOCH)
-        ).isEqualTo("complicationName")
+                photoImagePreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
+            )
+            .isEqualTo("complicationName")
     }
 
     @org.junit.Test
     public fun createMonochromaticImageFallbackPreviewData() {
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
-        val monochromaticImagePreviewData = ComplicationDataSourceInfo(
-            "applicationName",
-            "complicationName",
-            icon,
-            ComplicationType.MONOCHROMATIC_IMAGE,
-            componentName = null
-        ).fallbackPreviewData as MonochromaticImageComplicationData
-        assertThat(monochromaticImagePreviewData.monochromaticImage.image)
-            .isEqualTo(icon)
+        val monochromaticImagePreviewData =
+            ComplicationDataSourceInfo(
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    componentName = null
+                )
+                .fallbackPreviewData as MonochromaticImageComplicationData
+        assertThat(monochromaticImagePreviewData.monochromaticImage.image).isEqualTo(icon)
         assertThat(
-            monochromaticImagePreviewData.contentDescription!!.getTextAt(
-                resources,
-                java.time.Instant.EPOCH
+                monochromaticImagePreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
             )
-        ).isEqualTo("complicationName")
+            .isEqualTo("complicationName")
     }
 
     @org.junit.Test
     public fun createRangedValueFallbackPreviewData() {
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
-        val rangedValuePreviewData = ComplicationDataSourceInfo(
-            "applicationName",
-            "complicationName",
-            icon,
-            ComplicationType.RANGED_VALUE,
-            componentName = null
-        ).fallbackPreviewData as RangedValueComplicationData
+        val rangedValuePreviewData =
+            ComplicationDataSourceInfo(
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.RANGED_VALUE,
+                    componentName = null
+                )
+                .fallbackPreviewData as RangedValueComplicationData
         assertThat(rangedValuePreviewData.min).isEqualTo(0.0f)
         assertThat(rangedValuePreviewData.max).isEqualTo(100.0f)
         assertThat(rangedValuePreviewData.value).isEqualTo(42.0f)
-        assertThat(
-            rangedValuePreviewData.text!!.getTextAt(resources, java.time.Instant.EPOCH)
-        ).isEqualTo("complicationName")
+        assertThat(rangedValuePreviewData.text!!.getTextAt(resources, java.time.Instant.EPOCH))
+            .isEqualTo("complicationName")
         assertThat(rangedValuePreviewData.monochromaticImage!!.image).isEqualTo(icon)
         assertThat(
-            rangedValuePreviewData.contentDescription!!.getTextAt(
-                resources,
-                java.time.Instant.EPOCH
+                rangedValuePreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
             )
-        ).isEqualTo("complicationName")
+            .isEqualTo("complicationName")
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationSlotBoundsTest.kt b/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationSlotBoundsTest.kt
index 0e5262a..468eae9 100644
--- a/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationSlotBoundsTest.kt
+++ b/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationSlotBoundsTest.kt
@@ -26,15 +26,14 @@
 class ComplicationSlotBoundsTest {
     @Test
     public fun createFromPartialMap() {
-        val complicationSlotBounds = ComplicationSlotBounds.createFromPartialMap(
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
-                ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
-            ),
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.4f, 0.3f, 0.2f, 0.1f)
+        val complicationSlotBounds =
+            ComplicationSlotBounds.createFromPartialMap(
+                mapOf(
+                    ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
+                    ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
+                ),
+                mapOf(ComplicationType.SHORT_TEXT to RectF(0.4f, 0.3f, 0.2f, 0.1f))
             )
-        )
 
         val bounds = complicationSlotBounds.perComplicationTypeBounds
 
@@ -67,72 +66,65 @@
 
     @Test
     fun equality() {
-        val complicationSlotBoundsA = ComplicationSlotBounds.createFromPartialMap(
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
-                ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
-            ),
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.4f, 0.3f, 0.2f, 0.1f)
+        val complicationSlotBoundsA =
+            ComplicationSlotBounds.createFromPartialMap(
+                mapOf(
+                    ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
+                    ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
+                ),
+                mapOf(ComplicationType.SHORT_TEXT to RectF(0.4f, 0.3f, 0.2f, 0.1f))
             )
-        )
 
-        val complicationSlotBoundsB = ComplicationSlotBounds.createFromPartialMap(
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
-                ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
-            ),
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.4f, 0.3f, 0.2f, 0.1f)
+        val complicationSlotBoundsB =
+            ComplicationSlotBounds.createFromPartialMap(
+                mapOf(
+                    ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
+                    ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
+                ),
+                mapOf(ComplicationType.SHORT_TEXT to RectF(0.4f, 0.3f, 0.2f, 0.1f))
             )
-        )
 
-        val complicationSlotBoundsC = ComplicationSlotBounds.createFromPartialMap(
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(3f, 2f, 1f, 0f),
-                ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
-            ),
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.4f, 0.3f, 0.2f, 0.1f)
+        val complicationSlotBoundsC =
+            ComplicationSlotBounds.createFromPartialMap(
+                mapOf(
+                    ComplicationType.SHORT_TEXT to RectF(3f, 2f, 1f, 0f),
+                    ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
+                ),
+                mapOf(ComplicationType.SHORT_TEXT to RectF(0.4f, 0.3f, 0.2f, 0.1f))
             )
-        )
 
-        val complicationSlotBoundsD = ComplicationSlotBounds.createFromPartialMap(
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
-                ComplicationType.LONG_TEXT to RectF(3f, 2f, 1f, 0f)
-            ),
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.4f, 0.3f, 0.2f, 0.1f)
+        val complicationSlotBoundsD =
+            ComplicationSlotBounds.createFromPartialMap(
+                mapOf(
+                    ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
+                    ComplicationType.LONG_TEXT to RectF(3f, 2f, 1f, 0f)
+                ),
+                mapOf(ComplicationType.SHORT_TEXT to RectF(0.4f, 0.3f, 0.2f, 0.1f))
             )
-        )
 
-        val complicationSlotBoundsE = ComplicationSlotBounds.createFromPartialMap(
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
-                ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
-            ),
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(3f, 2f, 1f, 0f)
+        val complicationSlotBoundsE =
+            ComplicationSlotBounds.createFromPartialMap(
+                mapOf(
+                    ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
+                    ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
+                ),
+                mapOf(ComplicationType.SHORT_TEXT to RectF(3f, 2f, 1f, 0f))
             )
-        )
 
-        val complicationSlotBoundsF = ComplicationSlotBounds.createFromPartialMap(
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f)
-            ),
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(3f, 2f, 1f, 0f)
+        val complicationSlotBoundsF =
+            ComplicationSlotBounds.createFromPartialMap(
+                mapOf(ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f)),
+                mapOf(ComplicationType.SHORT_TEXT to RectF(3f, 2f, 1f, 0f))
             )
-        )
 
-        val complicationSlotBoundsG = ComplicationSlotBounds.createFromPartialMap(
-            mapOf(
-                ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
-                ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
-            ),
-            emptyMap()
-        )
+        val complicationSlotBoundsG =
+            ComplicationSlotBounds.createFromPartialMap(
+                mapOf(
+                    ComplicationType.SHORT_TEXT to RectF(0.1f, 0.2f, 0.3f, 0.4f),
+                    ComplicationType.LONG_TEXT to RectF(0.5f, 0.6f, 0.7f, 0.8f)
+                ),
+                emptyMap()
+            )
 
         assertThat(complicationSlotBoundsA).isEqualTo(complicationSlotBoundsB)
         assertThat(complicationSlotBoundsA).isNotEqualTo(complicationSlotBoundsC)
@@ -141,4 +133,4 @@
         assertThat(complicationSlotBoundsA).isNotEqualTo(complicationSlotBoundsF)
         assertThat(complicationSlotBoundsA).isNotEqualTo(complicationSlotBoundsG)
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/SharedRobolectricTestRunner.kt b/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/SharedRobolectricTestRunner.kt
index 3ea24e0..cab63c6 100644
--- a/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/SharedRobolectricTestRunner.kt
+++ b/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/SharedRobolectricTestRunner.kt
@@ -25,8 +25,10 @@
     RobolectricTestRunner(testClass) {
 
     override fun createClassLoaderConfig(method: FrameworkMethod?): InstrumentationConfiguration =
-        InstrumentationConfiguration.Builder(super.createClassLoaderConfig(method)).apply {
-            doNotInstrumentPackage("androidx.wear")
-            doNotInstrumentPackage("android.support.wearable")
-        }.build()
+        InstrumentationConfiguration.Builder(super.createClassLoaderConfig(method))
+            .apply {
+                doNotInstrumentPackage("androidx.wear")
+                doNotInstrumentPackage("android.support.wearable")
+            }
+            .build()
 }
diff --git a/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/SystemDataSourcesTest.kt b/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/SystemDataSourcesTest.kt
index 624d10d..6e1566a 100644
--- a/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/SystemDataSourcesTest.kt
+++ b/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/SystemDataSourcesTest.kt
@@ -17,10 +17,10 @@
 package androidx.wear.watchface.complications
 
 import com.google.common.truth.Truth.assertWithMessage
+import kotlin.reflect.KProperty
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.reflect.KProperty
 
 @RunWith(SharedRobolectricTestRunner::class)
 public class SystemDataSourcesTest {
@@ -34,12 +34,8 @@
                 return
             }
             // Must be final and const.
-            assertWithMessage("${member.name} should be final")
-                .that(member.isFinal)
-                .isTrue()
-            assertWithMessage("${member.name} should be const")
-                .that(member.isConst)
-                .isTrue()
+            assertWithMessage("${member.name} should be final").that(member.isFinal).isTrue()
+            assertWithMessage("${member.name} should be const").that(member.isConst).isTrue()
             when (val value = member.getter.call(SystemDataSources.Companion)) {
                 is Int -> {
                     valuesMap[value]?.let {
@@ -51,4 +47,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/Constants.kt b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/Constants.kt
index bf8a056..b2a8463 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/Constants.kt
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/Constants.kt
@@ -34,8 +34,7 @@
         public const val KEY_BOUNDS: String = "KEY_BOUNDS"
         public const val KEY_TEXT: String = "KEY_TEXT"
 
-        @SuppressWarnings("IntentName")
-        public const val KEY_TAP_ACTION: String = "KEY_TAP_ACTION"
+        @SuppressWarnings("IntentName") public const val KEY_TAP_ACTION: String = "KEY_TAP_ACTION"
 
         // Keys for [WatchFaceStyle].
         public const val KEY_COMPONENT: String = "component"
@@ -98,8 +97,7 @@
         public const val COMMAND_TOUCH_CANCEL: String = "android.wallpaper.touch_cancel"
 
         // Various binder extras.
-        @SuppressWarnings("ActionValue")
-        public const val EXTRA_BINDER: String = "binder"
+        @SuppressWarnings("ActionValue") public const val EXTRA_BINDER: String = "binder"
 
         @SuppressWarnings("ActionValue")
         public const val EXTRA_AMBIENT_MODE: String = "ambient_mode"
@@ -139,17 +137,17 @@
          * Property in bundle passed to [Engine.onPropertiesChanged] to indicate whether burn-in
          * protection is required. When this property is set to true, views are shifted around
          * periodically in ambient mode. To ensure that content isn't shifted off the screen, watch
-         * faces should avoid placing content within 10 pixels of the edge of the screen. Watch faces
-         * should also avoid solid white areas to prevent pixel burn-in. Both of these requirements only
-         * apply in ambient mode, and only when this property is set to true.
+         * faces should avoid placing content within 10 pixels of the edge of the screen. Watch
+         * faces should also avoid solid white areas to prevent pixel burn-in. Both of these
+         * requirements only apply in ambient mode, and only when this property is set to true.
          */
         public const val PROPERTY_BURN_IN_PROTECTION: String = "burn_in_protection"
 
         /**
-         * Property in bundle passed to [Engine.onPropertiesChanged] to indicate whether the
-         * device has low-bit ambient mode. When this property is set to true, the screen supports fewer
-         * bits for each color in ambient mode. In this case, watch faces should disable anti-aliasing
-         * in ambient mode.
+         * Property in bundle passed to [Engine.onPropertiesChanged] to indicate whether the device
+         * has low-bit ambient mode. When this property is set to true, the screen supports fewer
+         * bits for each color in ambient mode. In this case, watch faces should disable
+         * anti-aliasing in ambient mode.
          */
         public const val PROPERTY_LOW_BIT_AMBIENT: String = "low_bit_ambient"
 
@@ -168,8 +166,8 @@
             "androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
 
         /**
-         * Metadata flag indicating the watch face service exposes flavors. The system will
-         * access them only if this flag is present in manifest.
+         * Metadata flag indicating the watch face service exposes flavors. The system will access
+         * them only if this flag is present in manifest.
          */
         public const val META_DATA_FLAVORS_SUPPORTED: String =
             "androidx.wear.watchface.FLAVORS_SUPPORTED"
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/ParcelableWrapper.kt b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/ParcelableWrapper.kt
index 735eeaa..66619e6 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/ParcelableWrapper.kt
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/ParcelableWrapper.kt
@@ -56,4 +56,4 @@
             unparcel = unparceler
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/SharedMemoryImage.kt b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/SharedMemoryImage.kt
index ebaabf8..2f2bb0a 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/SharedMemoryImage.kt
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/SharedMemoryImage.kt
@@ -37,56 +37,56 @@
         /** Stores a [Bitmap] in shared memory and serializes it as a bundle. */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         @Suppress("DEPRECATION")
-        public fun ashmemWriteImageBundle(
-            bitmap: Bitmap
-        ): Bundle = TraceEvent("SharedMemoryImage.ashmemWriteImageBundle").use {
-            val ashmem =
-                SharedMemory.create("WatchFace.Screenshot.Bitmap", bitmap.allocationByteCount)
-            var byteBuffer: ByteBuffer? = null
-            try {
-                byteBuffer = ashmem.mapReadWrite()
-                bitmap.copyPixelsToBuffer(byteBuffer)
-                return Bundle().apply {
-                    this.putInt(Constants.KEY_BITMAP_WIDTH_PX, bitmap.width)
-                    this.putInt(Constants.KEY_BITMAP_HEIGHT_PX, bitmap.height)
-                    this.putInt(Constants.KEY_BITMAP_CONFIG_ORDINAL, bitmap.config.ordinal)
-                    this.putParcelable(Constants.KEY_SCREENSHOT, ashmem)
-                }
-            } finally {
-                if (byteBuffer != null) {
-                    SharedMemory.unmap(byteBuffer)
+        public fun ashmemWriteImageBundle(bitmap: Bitmap): Bundle =
+            TraceEvent("SharedMemoryImage.ashmemWriteImageBundle").use {
+                val ashmem =
+                    SharedMemory.create("WatchFace.Screenshot.Bitmap", bitmap.allocationByteCount)
+                var byteBuffer: ByteBuffer? = null
+                try {
+                    byteBuffer = ashmem.mapReadWrite()
+                    bitmap.copyPixelsToBuffer(byteBuffer)
+                    return Bundle().apply {
+                        this.putInt(Constants.KEY_BITMAP_WIDTH_PX, bitmap.width)
+                        this.putInt(Constants.KEY_BITMAP_HEIGHT_PX, bitmap.height)
+                        this.putInt(Constants.KEY_BITMAP_CONFIG_ORDINAL, bitmap.config.ordinal)
+                        this.putParcelable(Constants.KEY_SCREENSHOT, ashmem)
+                    }
+                } finally {
+                    if (byteBuffer != null) {
+                        SharedMemory.unmap(byteBuffer)
+                    }
                 }
             }
-        }
 
-        /**
-         * Deserializes a [Bundle] containing a [Bitmap] serialized by [ashmemWriteImageBundle].
-         */
+        /** Deserializes a [Bundle] containing a [Bitmap] serialized by [ashmemWriteImageBundle]. */
         @Suppress("DEPRECATION")
-        public fun ashmemReadImageBundle(
-            bundle: Bundle
-        ): Bitmap = TraceEvent("SharedMemoryImage.ashmemReadImageBundle").use {
-            bundle.classLoader = SharedMemory::class.java.classLoader
-            val ashmem = bundle.getParcelable<SharedMemory>(Constants.KEY_SCREENSHOT)
-                ?: throw IllegalStateException("Bundle did not contain " + Constants.KEY_SCREENSHOT)
-            val width = bundle.getInt(Constants.KEY_BITMAP_WIDTH_PX)
-            val height = bundle.getInt(Constants.KEY_BITMAP_HEIGHT_PX)
-            val configOrdinal = bundle.getInt(Constants.KEY_BITMAP_CONFIG_ORDINAL)
-            var byteBuffer: ByteBuffer? = null
-            try {
-                val bitmap = Bitmap.createBitmap(
-                    width,
-                    height,
-                    Bitmap.Config.values().find { it.ordinal == configOrdinal }!!
-                )
-                byteBuffer = ashmem.mapReadOnly()
-                bitmap.copyPixelsFromBuffer(byteBuffer)
-                return bitmap
-            } finally {
-                if (byteBuffer != null) {
-                    SharedMemory.unmap(byteBuffer)
+        public fun ashmemReadImageBundle(bundle: Bundle): Bitmap =
+            TraceEvent("SharedMemoryImage.ashmemReadImageBundle").use {
+                bundle.classLoader = SharedMemory::class.java.classLoader
+                val ashmem =
+                    bundle.getParcelable<SharedMemory>(Constants.KEY_SCREENSHOT)
+                        ?: throw IllegalStateException(
+                            "Bundle did not contain " + Constants.KEY_SCREENSHOT
+                        )
+                val width = bundle.getInt(Constants.KEY_BITMAP_WIDTH_PX)
+                val height = bundle.getInt(Constants.KEY_BITMAP_HEIGHT_PX)
+                val configOrdinal = bundle.getInt(Constants.KEY_BITMAP_CONFIG_ORDINAL)
+                var byteBuffer: ByteBuffer? = null
+                try {
+                    val bitmap =
+                        Bitmap.createBitmap(
+                            width,
+                            height,
+                            Bitmap.Config.values().find { it.ordinal == configOrdinal }!!
+                        )
+                    byteBuffer = ashmem.mapReadOnly()
+                    bitmap.copyPixelsFromBuffer(byteBuffer)
+                    return bitmap
+                } finally {
+                    if (byteBuffer != null) {
+                        SharedMemory.unmap(byteBuffer)
+                    }
                 }
             }
-        }
     }
 }
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/WatchFaceStyle.kt b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/WatchFaceStyle.kt
index f237a83..6d7cf18 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/WatchFaceStyle.kt
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/WatchFaceStyle.kt
@@ -28,8 +28,8 @@
  * A style descriptor for watch faces.
  *
  * <p>Parameters here affect how the system UI will be drawn over a watch face. An instance of this
- * class should be passed in to [WatchFaceService.Engine.setWatchFaceStyle] in the `onCreate`
- * method of your [WatchFaceService.Engine.onCreate] override.
+ * class should be passed in to [WatchFaceService.Engine.setWatchFaceStyle] in the `onCreate` method
+ * of your [WatchFaceService.Engine.onCreate] override.
  *
  * <p>To construct a WatchFaceStyle use [WatchFaceStyle.Builder].
  *
@@ -62,9 +62,7 @@
                 putBoolean(Constants.KEY_SHOW_UNREAD_INDICATOR, showUnreadCountIndicator)
                 putBoolean(Constants.KEY_HIDE_NOTIFICATION_INDICATOR, hideNotificationIndicator)
                 putBoolean(Constants.KEY_ACCEPTS_TAPS, acceptsTapEvents)
-                compatBundle?.let {
-                    putAll(compatBundle)
-                }
+                compatBundle?.let { putAll(compatBundle) }
             }
         )
     }
@@ -104,14 +102,14 @@
         public const val DEFAULT_ACCENT_COLOR: Int = Color.WHITE
 
         /**
-         * Whether to put a semi-transparent black background behind the status bar to make it visible
-         * on white backgrounds.
+         * Whether to put a semi-transparent black background behind the status bar to make it
+         * visible on white backgrounds.
          */
         public const val PROTECT_STATUS_BAR: Int = 0x1
 
         /**
-         * Whether to put a semi-transparent black background behind the "Ok Google" string to make it
-         * visible on a white background.
+         * Whether to put a semi-transparent black background behind the "Ok Google" string to make
+         * it visible on a white background.
          */
         public const val PROTECT_HOTWORD_INDICATOR: Int = 0x2
 
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/AccessibilityUtils.java b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/AccessibilityUtils.java
index 054835b..de457e4 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/AccessibilityUtils.java
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/AccessibilityUtils.java
@@ -91,28 +91,30 @@
             switch (data.getType()) {
                 case ComplicationData.TYPE_NO_PERMISSION:
                     typeSpecificText =
-                        ComplicationText.plainText(context.getString(R.string.a11y_no_permission));
+                            ComplicationText.plainText(
+                                    context.getString(R.string.a11y_no_permission));
                     break;
                 case ComplicationData.TYPE_NO_DATA:
                     typeSpecificText =
-                        ComplicationText.plainText(context.getString(R.string.a11y_no_data));
+                            ComplicationText.plainText(context.getString(R.string.a11y_no_data));
                     break;
-                case ComplicationData.TYPE_RANGED_VALUE: {
-                    // Most likely the range info is already in the short text.
-                    if (hasTextOrTitle) {
-                        typeSpecificText = null;
-                    } else {
-                        float value = data.getRangedValue();
-                        float max = data.getRangedMaxValue();
-                        // TODO(fuego): what do do with min? should we even say max? should it
-                        // be a percentage?
-                        typeSpecificText =
-                                ComplicationText.plainText(
-                                        context.getString(
-                                                R.string.a11y_template_range, value, max));
+                case ComplicationData.TYPE_RANGED_VALUE:
+                    {
+                        // Most likely the range info is already in the short text.
+                        if (hasTextOrTitle) {
+                            typeSpecificText = null;
+                        } else {
+                            float value = data.getRangedValue();
+                            float max = data.getRangedMaxValue();
+                            // TODO(fuego): what do do with min? should we even say max? should it
+                            // be a percentage?
+                            typeSpecificText =
+                                    ComplicationText.plainText(
+                                            context.getString(
+                                                    R.string.a11y_template_range, value, max));
+                        }
                     }
-                }
-                break;
+                    break;
                 default:
                     typeSpecificText = null;
             }
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/ContentDescriptionLabel.java b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/ContentDescriptionLabel.java
index f31fb55..33dbfb9 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/ContentDescriptionLabel.java
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/ContentDescriptionLabel.java
@@ -34,7 +34,8 @@
 
 import java.util.Objects;
 
-/** Holds labels for screen regions which should respond to accessibility events.
+/**
+ * Holds labels for screen regions which should respond to accessibility events.
  *
  * @hide
  */
@@ -120,9 +121,7 @@
         return mText;
     }
 
-    /**
-     * Returns the optional {@link PendingIntent} to launch when this label is tapped.
-     */
+    /** Returns the optional {@link PendingIntent} to launch when this label is tapped. */
     @Nullable
     public PendingIntent getTapAction() {
         return mTapAction;
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/package-info.java b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/package-info.java
index 45c6efc..c7bd40c 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/package-info.java
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/accessibility/package-info.java
@@ -14,9 +14,7 @@
  * limitations under the License.
  */
 
-/**
- * @hide
- */
+/** @hide */
 @RestrictTo(LIBRARY_GROUP)
 package android.support.wearable.watchface.accessibility;
 
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/package-info.java b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/package-info.java
index 4b57c76..6323b63 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/package-info.java
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/package-info.java
@@ -14,9 +14,7 @@
  * limitations under the License.
  */
 
-/**
- * @hide
- */
+/** @hide */
 @RestrictTo(LIBRARY_GROUP)
 package android.support.wearable.watchface;
 
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/CrashInfoParcel.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/CrashInfoParcel.java
index fac6dbd..7b20c45 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/CrashInfoParcel.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/CrashInfoParcel.java
@@ -28,6 +28,7 @@
 
 /**
  * Used for sending details of an exception over aidl.
+ *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/HeadlessWatchFaceInstanceParams.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/HeadlessWatchFaceInstanceParams.java
index 5de4167..230bbad 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/HeadlessWatchFaceInstanceParams.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/HeadlessWatchFaceInstanceParams.java
@@ -65,7 +65,9 @@
     /** Used by VersionedParcelable. */
     HeadlessWatchFaceInstanceParams() {}
 
-    /** @deprecated Use the other constructor instead. */
+    /**
+     * @deprecated Use the other constructor instead.
+     */
     @Deprecated
     public HeadlessWatchFaceInstanceParams(
             @NonNull ComponentName watchFaceName,
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/IdTypeAndDefaultProviderPolicyWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/IdTypeAndDefaultProviderPolicyWireFormat.java
index 80dbab7..f1bd49c7 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/IdTypeAndDefaultProviderPolicyWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/IdTypeAndDefaultProviderPolicyWireFormat.java
@@ -40,8 +40,8 @@
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @VersionedParcelize
 @SuppressLint("BanParcelableUsage")
-public final class IdTypeAndDefaultProviderPolicyWireFormat implements VersionedParcelable,
-        Parcelable {
+public final class IdTypeAndDefaultProviderPolicyWireFormat
+        implements VersionedParcelable, Parcelable {
     /** The watch's ID for the complication. */
     @ParcelField(1)
     int mId;
@@ -58,8 +58,7 @@
     int mDefaultProviderType;
 
     /** Used by VersionedParcelable. */
-    IdTypeAndDefaultProviderPolicyWireFormat() {
-    }
+    IdTypeAndDefaultProviderPolicyWireFormat() {}
 
     public IdTypeAndDefaultProviderPolicyWireFormat(
             int id,
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/WallpaperInteractiveWatchFaceInstanceParams.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/WallpaperInteractiveWatchFaceInstanceParams.java
index d3e8b68..1f12d2c 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/WallpaperInteractiveWatchFaceInstanceParams.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/WallpaperInteractiveWatchFaceInstanceParams.java
@@ -82,8 +82,7 @@
     String mAuxiliaryComponentPackageName;
 
     /** Used by VersionedParcelable. */
-    WallpaperInteractiveWatchFaceInstanceParams() {
-    }
+    WallpaperInteractiveWatchFaceInstanceParams() {}
 
     public WallpaperInteractiveWatchFaceInstanceParams(
             @NonNull String instanceId,
@@ -132,8 +131,7 @@
     }
 
     public void setIdAndComplicationDataWireFormats(
-            @Nullable List<IdAndComplicationDataWireFormat> idAndComplicationDataWireFormats
-    ) {
+            @Nullable List<IdAndComplicationDataWireFormat> idAndComplicationDataWireFormats) {
         mIdAndComplicationDataWireFormats = idAndComplicationDataWireFormats;
     }
 
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/WatchFaceRenderParams.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/WatchFaceRenderParams.java
index bc54dab..4a3801c 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/WatchFaceRenderParams.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/control/data/WatchFaceRenderParams.java
@@ -60,8 +60,7 @@
     UserStyleWireFormat mUserStyle;
 
     /**
-     * The complications to render with. If null then the current complication data is used
-     * instead.
+     * The complications to render with. If null then the current complication data is used instead.
      */
     @ParcelField(100)
     @Nullable
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/BoundingArcWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/BoundingArcWireFormat.java
index 9c85b21..9836c49 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/BoundingArcWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/BoundingArcWireFormat.java
@@ -45,8 +45,7 @@
     float mArcThickness = 0.0f;
 
     /** Used by VersionedParcelable. */
-    BoundingArcWireFormat() {
-    }
+    BoundingArcWireFormat() {}
 
     public BoundingArcWireFormat(float arcStartAngle, float totalArcAngle, float arcThickness) {
         mArcStartAngle = arcStartAngle;
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/ComplicationSlotMetadataWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/ComplicationSlotMetadataWireFormat.java
index d017c5c..365105f 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/ComplicationSlotMetadataWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/ComplicationSlotMetadataWireFormat.java
@@ -103,8 +103,7 @@
     List<RectF> mComplicationMargins;
 
     /** Used by VersionedParcelable. */
-    ComplicationSlotMetadataWireFormat() {
-    }
+    ComplicationSlotMetadataWireFormat() {}
 
     @ComplicationExperimental
     public ComplicationSlotMetadataWireFormat(
@@ -172,7 +171,7 @@
 
     /**
      * @deprecated Use the other constructor with primaryDataSourceDefaultType &
-     * secondaryDataSourceDefaultType instead.
+     *     secondaryDataSourceDefaultType instead.
      */
     @Deprecated
     public ComplicationSlotMetadataWireFormat(
@@ -247,8 +246,8 @@
     }
 
     /**
-     * @return The {@link ComplicationData.ComplicationType} for
-     * {@link #getFallbackSystemDataSource}.
+     * @return The {@link ComplicationData.ComplicationType} for {@link
+     *     #getFallbackSystemDataSource}.
      */
     @ComplicationData.ComplicationType
     public int getDefaultDataSourceType() {
@@ -256,27 +255,29 @@
     }
 
     /**
-     * @return The {@link ComplicationData.ComplicationType} for the first entry from
-     * {@link #getDefaultDataSourcesToTry}.
+     * @return The {@link ComplicationData.ComplicationType} for the first entry from {@link
+     *     #getDefaultDataSourcesToTry}.
      */
     @ComplicationData.ComplicationType
     public int getPrimaryDataSourceDefaultType() {
         // Not supported in library v1.0. TYPE_NOT_CONFIGURED is not a valid API choice indicating
         // and old client.
         return (mPrimaryDataSourceDefaultType == ComplicationData.TYPE_NOT_CONFIGURED)
-                ? mDefaultType : mPrimaryDataSourceDefaultType;
+                ? mDefaultType
+                : mPrimaryDataSourceDefaultType;
     }
 
     /**
-     * @return The {@link ComplicationData.ComplicationType} for the second entry from
-     * {@link #getDefaultDataSourcesToTry}.
+     * @return The {@link ComplicationData.ComplicationType} for the second entry from {@link
+     *     #getDefaultDataSourcesToTry}.
      */
     @ComplicationData.ComplicationType
     public int getSecondaryDataSourceDefaultType() {
         // Not supported in library v1.0. TYPE_NOT_CONFIGURED is not a valid API choice indicating
         // and old client.
         return (mSecondaryDataSourceDefaultType == ComplicationData.TYPE_NOT_CONFIGURED)
-                ? mDefaultType : mSecondaryDataSourceDefaultType;
+                ? mDefaultType
+                : mSecondaryDataSourceDefaultType;
     }
 
     public boolean isInitiallyEnabled() {
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/ComplicationStateWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/ComplicationStateWireFormat.java
index 8b34d3d..af1ad65 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/ComplicationStateWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/ComplicationStateWireFormat.java
@@ -115,8 +115,7 @@
     private static final int NULL_NAME_RESOURCE_ID = 0;
 
     /** Used by VersionedParcelable. */
-    ComplicationStateWireFormat() {
-    }
+    ComplicationStateWireFormat() {}
 
     @ComplicationExperimental
     public ComplicationStateWireFormat(
@@ -153,7 +152,8 @@
         mComplicationConfigExtras = complicationConfigExtras;
         mNameResourceId = (nameResourceId != null) ? nameResourceId : NULL_NAME_RESOURCE_ID;
         mScreenReaderNameResourceId =
-                (screenReaderNameResourceId != null) ? screenReaderNameResourceId
+                (screenReaderNameResourceId != null)
+                        ? screenReaderNameResourceId
                         : NULL_NAME_RESOURCE_ID;
         mBoundingArc = boundingArc;
     }
@@ -191,7 +191,8 @@
         mComplicationConfigExtras = complicationConfigExtras;
         mNameResourceId = (nameResourceId != null) ? nameResourceId : NULL_NAME_RESOURCE_ID;
         mScreenReaderNameResourceId =
-                (screenReaderNameResourceId != null) ? screenReaderNameResourceId
+                (screenReaderNameResourceId != null)
+                        ? screenReaderNameResourceId
                         : NULL_NAME_RESOURCE_ID;
     }
 
@@ -274,7 +275,9 @@
         return mFallbackSystemProvider;
     }
 
-    /** @deprecated Use {@link #getDefaultDataSourceType} instead. */
+    /**
+     * @deprecated Use {@link #getDefaultDataSourceType} instead.
+     */
     @Deprecated
     @ComplicationData.ComplicationType
     public int getDefaultProviderType() {
@@ -290,27 +293,29 @@
     }
 
     /**
-     * @return The {@link ComplicationData.ComplicationType} for the first entry from
-     * {@link #getDefaultDataSourcesToTry}.
+     * @return The {@link ComplicationData.ComplicationType} for the first entry from {@link
+     *     #getDefaultDataSourcesToTry}.
      */
     @ComplicationData.ComplicationType
     public int getPrimaryDataSourceDefaultType() {
         // Not supported in library v1.0. TYPE_NOT_CONFIGURED is not a valid API choice indicating
         // and old client.
         return (mPrimaryDataSourceDefaultType == ComplicationData.TYPE_NOT_CONFIGURED)
-                ? mDefaultType : mPrimaryDataSourceDefaultType;
+                ? mDefaultType
+                : mPrimaryDataSourceDefaultType;
     }
 
     /**
-     * @return The {@link ComplicationData.ComplicationType} for the second entry from
-     * {@link #getDefaultDataSourcesToTry}.
+     * @return The {@link ComplicationData.ComplicationType} for the second entry from {@link
+     *     #getDefaultDataSourcesToTry}.
      */
     @ComplicationData.ComplicationType
     public int getSecondaryDataSourceDefaultType() {
         // Not supported in library v1.0. TYPE_NOT_CONFIGURED is not a valid API choice indicating
         // and old client.
         return (mSecondaryDataSourceDefaultType == ComplicationData.TYPE_NOT_CONFIGURED)
-                ? mDefaultType : mSecondaryDataSourceDefaultType;
+                ? mDefaultType
+                : mSecondaryDataSourceDefaultType;
     }
 
     public boolean isEnabled() {
@@ -342,7 +347,8 @@
 
     @Nullable
     public Integer getScreenReaderNameResourceId() {
-        return mScreenReaderNameResourceId != NULL_NAME_RESOURCE_ID ? mScreenReaderNameResourceId
+        return mScreenReaderNameResourceId != NULL_NAME_RESOURCE_ID
+                ? mScreenReaderNameResourceId
                 : null;
     }
 
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndComplicationDataWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndComplicationDataWireFormat.java
index 07ccd8a..c4c0253 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndComplicationDataWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndComplicationDataWireFormat.java
@@ -49,8 +49,7 @@
     ComplicationData mComplicationData;
 
     /** Used by VersionedParcelable. */
-    IdAndComplicationDataWireFormat() {
-    }
+    IdAndComplicationDataWireFormat() {}
 
     public IdAndComplicationDataWireFormat(int id, @NonNull ComplicationData complicationData) {
         mId = id;
@@ -109,6 +108,10 @@
     @Override
     public String toString() {
         return "IdAndComplicationDataWireFormat{"
-                + "mId=" + mId + ", mComplicationData=" + mComplicationData + '}';
+                + "mId="
+                + mId
+                + ", mComplicationData="
+                + mComplicationData
+                + '}';
     }
 }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndComplicationStateWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndComplicationStateWireFormat.java
index 972aa55..f36b33d 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndComplicationStateWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndComplicationStateWireFormat.java
@@ -46,8 +46,7 @@
     ComplicationStateWireFormat mComplicationState;
 
     /** Used by VersionedParcelable. */
-    IdAndComplicationStateWireFormat() {
-    }
+    IdAndComplicationStateWireFormat() {}
 
     public IdAndComplicationStateWireFormat(
             int id, @NonNull ComplicationStateWireFormat complicationState) {
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndTapEventWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndTapEventWireFormat.java
index db67687a..4e5dca1 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndTapEventWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/IdAndTapEventWireFormat.java
@@ -54,14 +54,9 @@
     @Px
     long mCalendarTapTimeMillis;
 
-    IdAndTapEventWireFormat() {
-    }
+    IdAndTapEventWireFormat() {}
 
-    public IdAndTapEventWireFormat(
-            int id,
-            int x,
-            int y,
-            long calendarTapTimeMillis) {
+    public IdAndTapEventWireFormat(int id, int x, int y, long calendarTapTimeMillis) {
         mId = id;
         mX = x;
         mY = y;
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/LayerParameterWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/LayerParameterWireFormat.java
index 2993bba..08ced45 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/LayerParameterWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/LayerParameterWireFormat.java
@@ -28,10 +28,10 @@
 import androidx.versionedparcelable.VersionedParcelize;
 
 /**
- * Wire format for Map<{@link androidx.wear.watchface.style.Layer},
- * {@link androidx.wear.watchface.LayerMode}>
+ * Wire format for Map<{@link androidx.wear.watchface.style.Layer}, {@link
+ * androidx.wear.watchface.LayerMode}>
  *
- * Unfortunately we can't ever add new members to this because we use it in lists and
+ * <p>Unfortunately we can't ever add new members to this because we use it in lists and
  * VersionedParcelable isn't fully backwards compatible when new members are added to lists.
  *
  * @hide
@@ -48,8 +48,7 @@
     @ParcelField(2)
     int mLayerMode;
 
-    LayerParameterWireFormat() {
-    }
+    LayerParameterWireFormat() {}
 
     public LayerParameterWireFormat(int layer, int layerMode) {
         mLayer = layer;
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/RenderParametersWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/RenderParametersWireFormat.java
index 327e951..867e51c 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/RenderParametersWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/RenderParametersWireFormat.java
@@ -44,20 +44,20 @@
     public static int ELEMENT_TYPE_NONE = 0;
 
     /**
-     * Used when {@link androidx.wear.watchface.RenderParameters#getHighlightLayer} is
-     * {@link androidx.wear.watchface.HighlightedElement.AllComplications}.
+     * Used when {@link androidx.wear.watchface.RenderParameters#getHighlightLayer} is {@link
+     * androidx.wear.watchface.HighlightedElement.AllComplications}.
      */
     public static int ELEMENT_TYPE_ALL_COMPLICATIONS = 1;
 
     /**
-     * Used when {@link androidx.wear.watchface.RenderParameters#getHighlightLayer} is
-     * {@link androidx.wear.watchface.HighlightedElement.Complication}.
+     * Used when {@link androidx.wear.watchface.RenderParameters#getHighlightLayer} is {@link
+     * androidx.wear.watchface.HighlightedElement.Complication}.
      */
     public static int ELEMENT_TYPE_COMPLICATION = 2;
 
     /**
-     * Used when {@link androidx.wear.watchface.RenderParameters#getHighlightLayer} is
-     * {@link androidx.wear.watchface.HighlightedElement.UserStyle}.
+     * Used when {@link androidx.wear.watchface.RenderParameters#getHighlightLayer} is {@link
+     * androidx.wear.watchface.HighlightedElement.UserStyle}.
      */
     public static int ELEMENT_TYPE_USER_STYLE = 3;
 
@@ -66,29 +66,29 @@
     int mDrawMode;
 
     /**
-     * A bitfield where each bit represents one layer in the set of
-     * {@link androidx.wear.watchface.style.WatchFaceLayer}s.
+     * A bitfield where each bit represents one layer in the set of {@link
+     * androidx.wear.watchface.style.WatchFaceLayer}s.
      */
     @ParcelField(2)
     int mWatchFaceLayerSetBitfield;
 
     /**
-     * One of {@link #ELEMENT_TYPE_NONE}, {@link #ELEMENT_TYPE_ALL_COMPLICATIONS},
-     * {@link #ELEMENT_TYPE_COMPLICATION} or {@link #ELEMENT_TYPE_USER_STYLE}.
+     * One of {@link #ELEMENT_TYPE_NONE}, {@link #ELEMENT_TYPE_ALL_COMPLICATIONS}, {@link
+     * #ELEMENT_TYPE_COMPLICATION} or {@link #ELEMENT_TYPE_USER_STYLE}.
      */
     @ParcelField(3)
     int mElementType;
 
     /**
-     * Optional ID of a single complication slot to render highlighted, only used with
-     * {@link #ELEMENT_TYPE_COMPLICATION}.
+     * Optional ID of a single complication slot to render highlighted, only used with {@link
+     * #ELEMENT_TYPE_COMPLICATION}.
      */
     @ParcelField(4)
     int mElementComplicationSlotId;
 
     /**
-     * Optional UserStyleSetting to render highlighted, only non-null with
-     * {@link #ELEMENT_TYPE_USER_STYLE}.
+     * Optional UserStyleSetting to render highlighted, only non-null with {@link
+     * #ELEMENT_TYPE_USER_STYLE}.
      */
     @ParcelField(5)
     @Nullable
@@ -103,8 +103,8 @@
     int mHighlightTint;
 
     /**
-     * Specifies the tint for everything else. Only used when {@link #mElementType} isn't
-     * {@link #ELEMENT_TYPE_NONE}.
+     * Specifies the tint for everything else. Only used when {@link #mElementType} isn't {@link
+     * #ELEMENT_TYPE_NONE}.
      */
     @ParcelField(7)
     @ColorInt
@@ -117,8 +117,7 @@
     @Nullable
     List<IdAndTapEventWireFormat> mIdAndTapEventWireFormats;
 
-    RenderParametersWireFormat() {
-    }
+    RenderParametersWireFormat() {}
 
     public RenderParametersWireFormat(
             int drawMode,
@@ -213,5 +212,4 @@
                     return new RenderParametersWireFormat[size];
                 }
             };
-
 }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchFaceColorsWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchFaceColorsWireFormat.java
index 19a72c7..8e4e8ca 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchFaceColorsWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchFaceColorsWireFormat.java
@@ -43,13 +43,9 @@
     int mTertiaryColor;
 
     /** Used by VersionedParcelable. */
-    WatchFaceColorsWireFormat() {
-    }
+    WatchFaceColorsWireFormat() {}
 
-    public WatchFaceColorsWireFormat(
-            int primaryColor,
-            int secondaryColor,
-            int tertiaryColor) {
+    public WatchFaceColorsWireFormat(int primaryColor, int secondaryColor, int tertiaryColor) {
         mPrimaryColor = primaryColor;
         mSecondaryColor = secondaryColor;
         mTertiaryColor = tertiaryColor;
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchFaceOverlayStyleWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchFaceOverlayStyleWireFormat.java
index 35cafa0..34e1673 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchFaceOverlayStyleWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchFaceOverlayStyleWireFormat.java
@@ -37,7 +37,7 @@
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @VersionedParcelize
 @SuppressLint("BanParcelableUsage")
-public class WatchFaceOverlayStyleWireFormat implements VersionedParcelable, Parcelable  {
+public class WatchFaceOverlayStyleWireFormat implements VersionedParcelable, Parcelable {
     @ParcelField(1)
     boolean mHasBackgroundColor;
 
@@ -53,8 +53,7 @@
     WatchFaceOverlayStyleWireFormat() {}
 
     public WatchFaceOverlayStyleWireFormat(
-            @Nullable Color backgroundColor,
-            @Nullable Color foregroundColor) {
+            @Nullable Color backgroundColor, @Nullable Color foregroundColor) {
         if (backgroundColor == null) {
             mHasBackgroundColor = false;
         } else {
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchUiState.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchUiState.java
index 41ec071..ea6ce3c 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchUiState.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/data/WatchUiState.java
@@ -45,9 +45,7 @@
     /** Used by VersionedParcelable. */
     WatchUiState() {}
 
-    public WatchUiState(
-            boolean inAmbientMode,
-            int interruptionFilter) {
+    public WatchUiState(boolean inAmbientMode, int interruptionFilter) {
         mInAmbientMode = inAmbientMode;
         mInterruptionFilter = interruptionFilter;
     }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/editor/data/EditorStateWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/editor/data/EditorStateWireFormat.java
index 5a9ea93..83608f1 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/editor/data/EditorStateWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/editor/data/EditorStateWireFormat.java
@@ -62,8 +62,7 @@
     Bundle mPreviewImageBundle;
 
     /** Used by VersionedParcelable. */
-    EditorStateWireFormat() {
-    }
+    EditorStateWireFormat() {}
 
     public EditorStateWireFormat(
             @Nullable String watchFaceInstanceId,
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/BooleanOptionWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/BooleanOptionWireFormat.java
index f2675ac..68d5fdc 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/BooleanOptionWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/BooleanOptionWireFormat.java
@@ -29,8 +29,7 @@
 @VersionedParcelize
 public class BooleanOptionWireFormat extends OptionWireFormat {
 
-    BooleanOptionWireFormat() {
-    }
+    BooleanOptionWireFormat() {}
 
     // WARNING: This class is held in a list and can't change due to flaws in VersionedParcelable.
 
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/BooleanUserStyleSettingWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/BooleanUserStyleSettingWireFormat.java
index a25fc96..68aea9c 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/BooleanUserStyleSettingWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/BooleanUserStyleSettingWireFormat.java
@@ -37,7 +37,9 @@
 
     BooleanUserStyleSettingWireFormat() {}
 
-    /** @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles. */
+    /**
+     * @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles.
+     */
     @Deprecated
     public BooleanUserStyleSettingWireFormat(
             @NonNull String id,
@@ -60,7 +62,15 @@
             @NonNull List<Integer> affectsLayers,
             @Nullable Bundle onWatchFaceEditorBundle,
             @Nullable List<Bundle> perOptionOnWatchFaceEditorBundles) {
-        super(id, displayName, description, icon, options, defaultOptionIndex, affectsLayers,
-                onWatchFaceEditorBundle, perOptionOnWatchFaceEditorBundles);
+        super(
+                id,
+                displayName,
+                description,
+                icon,
+                options,
+                defaultOptionIndex,
+                affectsLayers,
+                onWatchFaceEditorBundle,
+                perOptionOnWatchFaceEditorBundles);
     }
 }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationOverlayWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationOverlayWireFormat.java
index b64f7ac..8807f86 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationOverlayWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationOverlayWireFormat.java
@@ -45,8 +45,8 @@
     public int mComplicationSlotId;
 
     /**
-     * VersionedParcelable doesn't support boxed Boolean so we set this to one of
-     * ENABLED_UNKNOWN, ENABLED_YES, ENABLED_NO.
+     * VersionedParcelable doesn't support boxed Boolean so we set this to one of ENABLED_UNKNOWN,
+     * ENABLED_YES, ENABLED_NO.
      */
     @ParcelField(2)
     public int mEnabled;
@@ -62,15 +62,13 @@
     // IMPORTANT: DO NOT EXTEND THIS FILE! IT WILL NOT BE BACKWARDS COMPATIBLE :(
     // Instead extend ComplicationsOptionWireFormat.
 
-    ComplicationOverlayWireFormat() {
-    }
+    ComplicationOverlayWireFormat() {}
 
     public ComplicationOverlayWireFormat(
             int complicationSlotId,
             @Nullable Boolean enabled,
             @Nullable Map<Integer, RectF> perComplicationTypeBounds,
-            @Nullable Integer accessibilityTraversalIndex
-    ) {
+            @Nullable Integer accessibilityTraversalIndex) {
         mComplicationSlotId = complicationSlotId;
         if (enabled != null) {
             mEnabled = enabled ? ENABLED_YES : ENABLED_NO;
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationsOptionWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationsOptionWireFormat.java
index 3cf7353..712b4fd 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationsOptionWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationsOptionWireFormat.java
@@ -46,9 +46,8 @@
     // WARNING: This class is held in a list and can't change due to flaws in VersionedParcelable.
 
     /**
-     * Great care should be taken to ensure backwards compatibility of the versioned parcelable
-     * if {@link ComplicationOverlayWireFormat} is ever
-     * extended.
+     * Great care should be taken to ensure backwards compatibility of the versioned parcelable if
+     * {@link ComplicationOverlayWireFormat} is ever extended.
      */
     @ParcelField(100)
     @NonNull
@@ -67,8 +66,7 @@
     @Nullable
     public List<Integer> mComplicationScreenReaderNameResourceIds;
 
-    ComplicationsOptionWireFormat() {
-    }
+    ComplicationsOptionWireFormat() {}
 
     public ComplicationsOptionWireFormat(
             @NonNull byte[] id,
@@ -77,8 +75,7 @@
             @NonNull ComplicationOverlayWireFormat[] complicationOverlays,
             @Nullable List<PerComplicationTypeMargins> complicationOverlaysMargins,
             @Nullable List<Integer> complicationNameResourceIds,
-            @Nullable List<Integer> complicationScreenReaderNameResourceIds
-    ) {
+            @Nullable List<Integer> complicationScreenReaderNameResourceIds) {
         super(id);
         mDisplayName = displayName;
         mIcon = icon;
@@ -88,15 +85,15 @@
         mComplicationScreenReaderNameResourceIds = complicationScreenReaderNameResourceIds;
     }
 
-    /** @deprecated Use a constructor with perComplicationTypeMargins instead. */
+    /**
+     * @deprecated Use a constructor with perComplicationTypeMargins instead.
+     */
     @Deprecated
     public ComplicationsOptionWireFormat(
             @NonNull byte[] id,
             @NonNull CharSequence displayName,
             @Nullable Icon icon,
-            @NonNull ComplicationOverlayWireFormat[]
-                    complicationOverlays
-    ) {
+            @NonNull ComplicationOverlayWireFormat[] complicationOverlays) {
         super(id);
         mDisplayName = displayName;
         mIcon = icon;
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationsUserStyleSettingWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationsUserStyleSettingWireFormat.java
index d7c9869..243f172 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationsUserStyleSettingWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ComplicationsUserStyleSettingWireFormat.java
@@ -40,8 +40,7 @@
     @ParcelField(104)
     public List<CharSequence> mPerOptionScreenReaderNames;
 
-    ComplicationsUserStyleSettingWireFormat() {
-    }
+    ComplicationsUserStyleSettingWireFormat() {}
 
     public ComplicationsUserStyleSettingWireFormat(
             @NonNull String id,
@@ -54,8 +53,16 @@
             @Nullable Bundle onWatchFaceEditorBundle,
             @Nullable List<Bundle> perOptionOnWatchFaceEditorBundles,
             @Nullable List<CharSequence> perOptionScreenReaderNames) {
-        super(id, displayName, description, icon, options, defaultOptionIndex, affectsLayers,
-                onWatchFaceEditorBundle, perOptionOnWatchFaceEditorBundles);
+        super(
+                id,
+                displayName,
+                description,
+                icon,
+                options,
+                defaultOptionIndex,
+                affectsLayers,
+                onWatchFaceEditorBundle,
+                perOptionOnWatchFaceEditorBundles);
         mPerOptionScreenReaderNames = perOptionScreenReaderNames;
     }
 }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueOption2WireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueOption2WireFormat.java
index dacb1c0..4697b4f 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueOption2WireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueOption2WireFormat.java
@@ -21,16 +21,14 @@
 import androidx.versionedparcelable.VersionedParcelize;
 
 /**
- * Wire format for {@link
- * androidx.wear.watchface.style.CustomValueStyleSetting.CustomValueOption2}.
+ * Wire format for {@link androidx.wear.watchface.style.CustomValueStyleSetting.CustomValueOption2}.
  *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @VersionedParcelize
 public class CustomValueOption2WireFormat extends OptionWireFormat {
-    CustomValueOption2WireFormat() {
-    }
+    CustomValueOption2WireFormat() {}
 
     // WARNING: This class is held in a list and can't change due to flaws in VersionedParcelable.
 
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueOptionWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueOptionWireFormat.java
index e9bde47..442b66f 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueOptionWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueOptionWireFormat.java
@@ -21,16 +21,14 @@
 import androidx.versionedparcelable.VersionedParcelize;
 
 /**
- * Wire format for {@link
- * androidx.wear.watchface.style.CustomValueStyleSetting.CustomValueOption}.
+ * Wire format for {@link androidx.wear.watchface.style.CustomValueStyleSetting.CustomValueOption}.
  *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @VersionedParcelize
 public class CustomValueOptionWireFormat extends OptionWireFormat {
-    CustomValueOptionWireFormat() {
-    }
+    CustomValueOptionWireFormat() {}
 
     // WARNING: This class is held in a list and can't change due to flaws in VersionedParcelable.
 
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueUserStyleSetting2WireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueUserStyleSetting2WireFormat.java
index acc3593..119c11b 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueUserStyleSetting2WireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueUserStyleSetting2WireFormat.java
@@ -35,10 +35,11 @@
 @VersionedParcelize
 public class CustomValueUserStyleSetting2WireFormat extends UserStyleSettingWireFormat {
 
-    CustomValueUserStyleSetting2WireFormat() {
-    }
+    CustomValueUserStyleSetting2WireFormat() {}
 
-    /** @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles. */
+    /**
+     * @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles.
+     */
     @Deprecated
     public CustomValueUserStyleSetting2WireFormat(
             @NonNull String id,
@@ -59,7 +60,15 @@
             @NonNull List<Integer> affectsLayers,
             @Nullable Bundle onWatchFaceEditorBundle,
             @Nullable List<Bundle> perOptionOnWatchFaceEditorBundles) {
-        super(id, displayName, description, icon, options, 0, affectsLayers,
-                onWatchFaceEditorBundle, perOptionOnWatchFaceEditorBundles);
+        super(
+                id,
+                displayName,
+                description,
+                icon,
+                options,
+                0,
+                affectsLayers,
+                onWatchFaceEditorBundle,
+                perOptionOnWatchFaceEditorBundles);
     }
 }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueUserStyleSettingWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueUserStyleSettingWireFormat.java
index b0b2c4b..99ef84f 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueUserStyleSettingWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/CustomValueUserStyleSettingWireFormat.java
@@ -35,10 +35,11 @@
 @VersionedParcelize
 public class CustomValueUserStyleSettingWireFormat extends UserStyleSettingWireFormat {
 
-    CustomValueUserStyleSettingWireFormat() {
-    }
+    CustomValueUserStyleSettingWireFormat() {}
 
-    /** @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles. */
+    /**
+     * @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles.
+     */
     @Deprecated
     public CustomValueUserStyleSettingWireFormat(
             @NonNull String id,
@@ -59,7 +60,15 @@
             @NonNull List<Integer> affectsLayers,
             @Nullable Bundle onWatchFaceEditorBundle,
             @Nullable List<Bundle> perOptionOnWatchFaceEditorBundles) {
-        super(id, displayName, description, icon, options, 0, affectsLayers,
-                onWatchFaceEditorBundle, perOptionOnWatchFaceEditorBundles);
+        super(
+                id,
+                displayName,
+                description,
+                icon,
+                options,
+                0,
+                affectsLayers,
+                onWatchFaceEditorBundle,
+                perOptionOnWatchFaceEditorBundles);
     }
 }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/DoubleRangeOptionWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/DoubleRangeOptionWireFormat.java
index 4a35f5e..b77747b 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/DoubleRangeOptionWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/DoubleRangeOptionWireFormat.java
@@ -21,16 +21,15 @@
 import androidx.versionedparcelable.VersionedParcelize;
 
 /**
- * Wire format for
- * {@link androidx.wear.watchface.style.DoubleRangeUserStyleSetting.DoubleRangeOption}.
+ * Wire format for {@link
+ * androidx.wear.watchface.style.DoubleRangeUserStyleSetting.DoubleRangeOption}.
  *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @VersionedParcelize
 public class DoubleRangeOptionWireFormat extends OptionWireFormat {
-    DoubleRangeOptionWireFormat() {
-    }
+    DoubleRangeOptionWireFormat() {}
 
     // WARNING: This class is held in a list and can't change due to flaws in VersionedParcelable.
 
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/DoubleRangeUserStyleSettingWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/DoubleRangeUserStyleSettingWireFormat.java
index 6d80e69..7d41075 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/DoubleRangeUserStyleSettingWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/DoubleRangeUserStyleSettingWireFormat.java
@@ -37,7 +37,9 @@
 
     DoubleRangeUserStyleSettingWireFormat() {}
 
-    /** @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles. */
+    /**
+     * @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles.
+     */
     @Deprecated
     public DoubleRangeUserStyleSettingWireFormat(
             @NonNull String id,
@@ -46,7 +48,7 @@
             @Nullable Icon icon,
             @NonNull List<OptionWireFormat> options,
             int defaultOptionIndex,
-            @NonNull List<Integer> affectsLayers)  {
+            @NonNull List<Integer> affectsLayers) {
         super(id, displayName, description, icon, options, defaultOptionIndex, affectsLayers);
     }
 
@@ -59,8 +61,16 @@
             int defaultOptionIndex,
             @NonNull List<Integer> affectsLayers,
             @Nullable Bundle onWatchFaceEditorBundle,
-            @Nullable List<Bundle> perOptionOnWatchFaceEditorBundles)  {
-        super(id, displayName, description, icon, options, defaultOptionIndex, affectsLayers,
-                onWatchFaceEditorBundle, perOptionOnWatchFaceEditorBundles);
+            @Nullable List<Bundle> perOptionOnWatchFaceEditorBundles) {
+        super(
+                id,
+                displayName,
+                description,
+                icon,
+                options,
+                defaultOptionIndex,
+                affectsLayers,
+                onWatchFaceEditorBundle,
+                perOptionOnWatchFaceEditorBundles);
     }
 }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ListOptionWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ListOptionWireFormat.java
index 9f98992..a2b74b2 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ListOptionWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ListOptionWireFormat.java
@@ -25,8 +25,7 @@
 import androidx.versionedparcelable.VersionedParcelize;
 
 /**
- * Wire format for
- * {@link androidx.wear.watchface.style.ListUserStyleSetting.ListOption}.
+ * Wire format for {@link androidx.wear.watchface.style.ListUserStyleSetting.ListOption}.
  *
  * @hide
  */
@@ -45,14 +44,10 @@
 
     // WARNING: This class is held in a list and can't change due to flaws in VersionedParcelable.
 
-    ListOptionWireFormat() {
-    }
+    ListOptionWireFormat() {}
 
     public ListOptionWireFormat(
-            @NonNull byte[] id,
-            @NonNull CharSequence displayName,
-            @Nullable Icon icon
-    ) {
+            @NonNull byte[] id, @NonNull CharSequence displayName, @Nullable Icon icon) {
         super(id);
         this.mDisplayName = displayName;
         this.mIcon = icon;
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ListUserStyleSettingWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ListUserStyleSettingWireFormat.java
index 7669556..d5692bd 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ListUserStyleSettingWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/ListUserStyleSettingWireFormat.java
@@ -53,8 +53,16 @@
             @Nullable Bundle onWatchFaceEditorBundle,
             @Nullable List<Bundle> perOptionOnWatchFaceEditorBundles,
             @Nullable List<CharSequence> perOptionScreenReaderNames) {
-        super(id, displayName, description, icon, options, defaultOptionIndex, affectsLayers,
-                onWatchFaceEditorBundle, perOptionOnWatchFaceEditorBundles);
+        super(
+                id,
+                displayName,
+                description,
+                icon,
+                options,
+                defaultOptionIndex,
+                affectsLayers,
+                onWatchFaceEditorBundle,
+                perOptionOnWatchFaceEditorBundles);
         mPerOptionScreenReaderNames = perOptionScreenReaderNames;
     }
 }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/LongRangeOptionWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/LongRangeOptionWireFormat.java
index 8819bef..1e8fe19 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/LongRangeOptionWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/LongRangeOptionWireFormat.java
@@ -21,16 +21,14 @@
 import androidx.versionedparcelable.VersionedParcelize;
 
 /**
- * Wire format for
- * {@link androidx.wear.watchface.style.LongRangeUserStyleSetting.LongRangeOption}.
+ * Wire format for {@link androidx.wear.watchface.style.LongRangeUserStyleSetting.LongRangeOption}.
  *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @VersionedParcelize
 public class LongRangeOptionWireFormat extends OptionWireFormat {
-    LongRangeOptionWireFormat() {
-    }
+    LongRangeOptionWireFormat() {}
 
     // WARNING: This class is held in a list and can't change due to flaws in VersionedParcelable.
 
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/LongRangeUserStyleSettingWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/LongRangeUserStyleSettingWireFormat.java
index 8931d18..29b16c2 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/LongRangeUserStyleSettingWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/LongRangeUserStyleSettingWireFormat.java
@@ -37,7 +37,9 @@
 
     LongRangeUserStyleSettingWireFormat() {}
 
-    /** @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles. */
+    /**
+     * @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles.
+     */
     @Deprecated
     public LongRangeUserStyleSettingWireFormat(
             @NonNull String id,
@@ -60,7 +62,15 @@
             @NonNull List<Integer> affectsLayers,
             @Nullable Bundle onWatchFaceEditorBundle,
             @Nullable List<Bundle> perOptionOnWatchFaceEditorBundles) {
-        super(id, displayName, description, icon, options, defaultOptionIndex, affectsLayers,
-                onWatchFaceEditorBundle, perOptionOnWatchFaceEditorBundles);
+        super(
+                id,
+                displayName,
+                description,
+                icon,
+                options,
+                defaultOptionIndex,
+                affectsLayers,
+                onWatchFaceEditorBundle,
+                perOptionOnWatchFaceEditorBundles);
     }
 }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/OptionWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/OptionWireFormat.java
index d3469fb..bbd3f90 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/OptionWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/OptionWireFormat.java
@@ -43,8 +43,7 @@
 
     // WARNING: This class is held in a list and can't change due to flaws in VersionedParcelable.
 
-    OptionWireFormat() {
-    }
+    OptionWireFormat() {}
 
     public OptionWireFormat(@NonNull byte[] id) {
         mId = id;
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/PerComplicationTypeMargins.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/PerComplicationTypeMargins.java
index 6d13989..6fc142b 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/PerComplicationTypeMargins.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/PerComplicationTypeMargins.java
@@ -34,12 +34,9 @@
     @NonNull
     public Map<Integer, RectF> mPerComplicationTypeMargins;
 
-    PerComplicationTypeMargins() {
-    }
+    PerComplicationTypeMargins() {}
 
-    public PerComplicationTypeMargins(
-            @NonNull Map<Integer, RectF> perComplicationTypeMargins
-    ) {
+    public PerComplicationTypeMargins(@NonNull Map<Integer, RectF> perComplicationTypeMargins) {
         mPerComplicationTypeMargins = perComplicationTypeMargins;
     }
 }
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleFlavorWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleFlavorWireFormat.java
index 38d23cd..ca2cbb2 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleFlavorWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleFlavorWireFormat.java
@@ -31,9 +31,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-/**
- * @hide
- */
+/** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @VersionedParcelize
 @SuppressLint("BanParcelableUsage") // TODO(b/169214666): Remove Parcelable
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleFlavorsWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleFlavorsWireFormat.java
index fb96d27..d524df0 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleFlavorsWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleFlavorsWireFormat.java
@@ -30,9 +30,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-/**
- * @hide
- */
+/** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @VersionedParcelize
 @SuppressLint("BanParcelableUsage") // TODO(b/169214666): Remove Parcelable
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleSchemaWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleSchemaWireFormat.java
index 2bb0ad5..6647729 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleSchemaWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleSchemaWireFormat.java
@@ -30,9 +30,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-/**
- * @hide
- */
+/** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @VersionedParcelize
 @SuppressLint("BanParcelableUsage") // TODO(b/169214666): Remove Parcelable
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleSettingWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleSettingWireFormat.java
index 13609b0..30b8b3e 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleSettingWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleSettingWireFormat.java
@@ -62,15 +62,11 @@
     @Nullable
     public Icon mIcon = null;
 
-    /**
-     * The default option index, used if nothing has been selected within the options list.
-     */
+    /** The default option index, used if nothing has been selected within the options list. */
     @ParcelField(5)
     public int mDefaultOptionIndex;
 
-    /**
-     * Used by the style configuration UI. Describes which rendering layers this style affects.
-     */
+    /** Used by the style configuration UI. Describes which rendering layers this style affects. */
     @ParcelField(6)
     @NonNull
     public List<Integer> mAffectsLayers;
@@ -80,7 +76,7 @@
      * may be an exhaustive list, or just examples to populate a ListView in case the
      * UserStyleCategory isn't supported by the UI (e.g. a new WatchFace with an old Companion).
      *
-     * OptionWireFormat can't change because VersionedParcelable has a design flaw, if the format
+     * <p>OptionWireFormat can't change because VersionedParcelable has a design flaw, if the format
      * changes the reader can't determine the correct size of the list and data afterwards
      * (including elements of this list) will get corrupted.
      */
@@ -96,9 +92,7 @@
     @ParcelField(101)
     public List<Integer> mOptionChildIndices = null;
 
-    /**
-     * Contains OnWatchFaceData.
-     */
+    /** Contains OnWatchFaceData. */
     @Nullable
     @ParcelField(102)
     public Bundle mOnWatchFaceEditorBundle = null;
@@ -115,7 +109,9 @@
 
     UserStyleSettingWireFormat() {}
 
-    /** @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles. */
+    /**
+     * @deprecated use a constructor with List<Bundle> perOptionOnWatchFaceEditorBundles.
+     */
     @Deprecated
     public UserStyleSettingWireFormat(
             @NonNull String id,
diff --git a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleWireFormat.java b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleWireFormat.java
index f64c168..9798b92 100644
--- a/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleWireFormat.java
+++ b/wear/watchface/watchface-data/src/main/java/androidx/wear/watchface/style/data/UserStyleWireFormat.java
@@ -30,9 +30,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-/**
- * @hide
- */
+/** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @VersionedParcelize(allowSerialization = true)
 @SuppressLint("BanParcelableUsage") // TODO(b/169214666): Remove Parcelable
diff --git a/wear/watchface/watchface-editor-guava/src/main/java/androidx/wear/watchface/editor/ListenableEditorSession.kt b/wear/watchface/watchface-editor-guava/src/main/java/androidx/wear/watchface/editor/ListenableEditorSession.kt
index 8709b6d..28f4655 100644
--- a/wear/watchface/watchface-editor-guava/src/main/java/androidx/wear/watchface/editor/ListenableEditorSession.kt
+++ b/wear/watchface/watchface-editor-guava/src/main/java/androidx/wear/watchface/editor/ListenableEditorSession.kt
@@ -24,30 +24,27 @@
 import androidx.annotation.RequiresApi
 import androidx.annotation.UiThread
 import androidx.concurrent.futures.ResolvableFuture
-import androidx.wear.watchface.complications.ComplicationDataSourceInfo
-import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.RenderParameters
 import androidx.wear.watchface.client.ComplicationSlotState
 import androidx.wear.watchface.client.HeadlessWatchFaceClient
 import androidx.wear.watchface.client.WatchFaceId
+import androidx.wear.watchface.complications.ComplicationDataSourceInfo
+import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.style.UserStyle
 import androidx.wear.watchface.style.UserStyleSchema
 import com.google.common.util.concurrent.ListenableFuture
+import java.time.Instant
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.TimeoutCancellationException
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.launch
-import java.time.Instant
-import kotlin.coroutines.CoroutineContext
 
-/**
- * [ListenableFuture]-based compatibility wrapper around [EditorSession]'s suspending methods.
- */
-public class ListenableEditorSession(
-    private val wrappedEditorSession: EditorSession
-) : EditorSession {
+/** [ListenableFuture]-based compatibility wrapper around [EditorSession]'s suspending methods. */
+public class ListenableEditorSession(private val wrappedEditorSession: EditorSession) :
+    EditorSession {
     public companion object {
         /**
          * Constructs a [ListenableFuture] for a [ListenableEditorSession] for an on watch face
@@ -68,17 +65,17 @@
         ): ListenableFuture<ListenableEditorSession?> {
             val result = ResolvableFuture.create<ListenableEditorSession?>()
             val coroutineScope =
-                CoroutineScope(object : CoroutineDispatcher() {
-                    override fun dispatch(context: CoroutineContext, block: Runnable) {
-                        block.run()
+                CoroutineScope(
+                    object : CoroutineDispatcher() {
+                        override fun dispatch(context: CoroutineContext, block: Runnable) {
+                            block.run()
+                        }
                     }
-                })
+                )
             coroutineScope.launch {
                 try {
                     result.set(
-                        ListenableEditorSession(
-                            EditorSession.createOnWatchEditorSession(activity)
-                        )
+                        ListenableEditorSession(EditorSession.createOnWatchEditorSession(activity))
                     )
                 } catch (e: Exception) {
                     result.setException(e)
@@ -93,7 +90,7 @@
          * @param activity The [ComponentActivity] associated with the EditorSession.
          * @param editIntent [Intent] sent by SysUI to launch the editing session.
          * @param headlessWatchFaceClient The [HeadlessWatchFaceClient] that backs the constructed
-         * EditorSession.
+         *   EditorSession.
          */
         @JvmStatic
         @RequiresApi(27)
@@ -102,13 +99,14 @@
             activity: ComponentActivity,
             editIntent: Intent,
             headlessWatchFaceClient: HeadlessWatchFaceClient
-        ): ListenableEditorSession = ListenableEditorSession(
-            EditorSession.createHeadlessEditorSession(
-                activity,
-                editIntent,
-                headlessWatchFaceClient
+        ): ListenableEditorSession =
+            ListenableEditorSession(
+                EditorSession.createHeadlessEditorSession(
+                    activity,
+                    editIntent,
+                    headlessWatchFaceClient
+                )
             )
-        )
     }
 
     private fun getCoroutineScope(): CoroutineScope =
@@ -127,13 +125,13 @@
     override val userStyleSchema: UserStyleSchema by wrappedEditorSession::userStyleSchema
 
     override val complicationSlotsState: StateFlow<Map<Int, ComplicationSlotState>> by
-    wrappedEditorSession::complicationSlotsState
+        wrappedEditorSession::complicationSlotsState
 
     override val complicationsPreviewData: StateFlow<Map<Int, ComplicationData>> by
-    wrappedEditorSession::complicationsPreviewData
+        wrappedEditorSession::complicationsPreviewData
 
     override val complicationsDataSourceInfo: StateFlow<Map<Int, ComplicationDataSourceInfo?>> by
-    wrappedEditorSession::complicationsDataSourceInfo
+        wrappedEditorSession::complicationsDataSourceInfo
 
     @Suppress("INAPPLICABLE_JVM_NAME")
     @get:JvmName("isCommitChangesOnClose")
@@ -141,7 +139,7 @@
 
     @get:SuppressWarnings("AutoBoxing")
     override val backgroundComplicationSlotId: Int? by
-    wrappedEditorSession::backgroundComplicationSlotId
+        wrappedEditorSession::backgroundComplicationSlotId
 
     @SuppressWarnings("AutoBoxing")
     override fun getComplicationSlotIdAt(x: Int, y: Int): Int? =
@@ -151,11 +149,12 @@
         renderParameters: RenderParameters,
         instant: Instant,
         slotIdToComplicationData: Map<Int, ComplicationData>?
-    ): Bitmap = wrappedEditorSession.renderWatchFaceToBitmap(
-        renderParameters,
-        instant,
-        slotIdToComplicationData
-    )
+    ): Bitmap =
+        wrappedEditorSession.renderWatchFaceToBitmap(
+            renderParameters,
+            instant,
+            slotIdToComplicationData
+        )
 
     /** [ListenableFuture] wrapper around [EditorSession.openComplicationDataSourceChooser]. */
     public fun listenableOpenComplicationDataSourceChooser(
@@ -174,9 +173,10 @@
         return future
     }
 
-    override suspend fun openComplicationDataSourceChooser(complicationSlotId: Int):
-        ChosenComplicationDataSource? =
-            wrappedEditorSession.openComplicationDataSourceChooser(complicationSlotId)
+    override suspend fun openComplicationDataSourceChooser(
+        complicationSlotId: Int
+    ): ChosenComplicationDataSource? =
+        wrappedEditorSession.openComplicationDataSourceChooser(complicationSlotId)
 
     override fun close() {
         wrappedEditorSession.close()
diff --git a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ComplicationConfigFragment.kt b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ComplicationConfigFragment.kt
index 796e82ca..1c3d8e7 100644
--- a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ComplicationConfigFragment.kt
+++ b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ComplicationConfigFragment.kt
@@ -28,10 +28,10 @@
 import android.widget.Button
 import androidx.annotation.RestrictTo
 import androidx.fragment.app.Fragment
-import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.DrawMode
 import androidx.wear.watchface.RenderParameters
 import androidx.wear.watchface.RenderParameters.HighlightLayer
+import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.editor.ChosenComplicationDataSource
 import androidx.wear.watchface.style.WatchFaceLayer
 import androidx.wear.widget.SwipeDismissFrameLayout
@@ -39,9 +39,7 @@
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.launch
 
-/**
- * This fragment lets the user select a non-background complication to configure.
- */
+/** This fragment lets the user select a non-background complication to configure. */
 internal class ComplicationConfigFragment : Fragment() {
 
     override fun onCreateView(
@@ -49,10 +47,7 @@
         container: ViewGroup?,
         savedInstanceState: Bundle?
     ): View {
-        return ConfigView(
-            requireContext(),
-            activity as WatchFaceConfigActivity
-        ).apply {
+        return ConfigView(requireContext(), activity as WatchFaceConfigActivity).apply {
             isSwipeable = true
             addCallback(
                 object : SwipeDismissFrameLayout.Callback() {
@@ -77,7 +72,6 @@
 )
 internal class ConfigView(
     context: Context,
-
     private val watchFaceConfigActivity: WatchFaceConfigActivity
 ) : SwipeDismissFrameLayout(context) {
 
@@ -88,9 +82,10 @@
     private val complicationButtons =
         watchFaceConfigActivity.editorSession.complicationSlotsState.value.mapValues { entry ->
             // TODO(alexclarke): This button is a Rect which makes the tap animation look bad.
-            if (entry.value.fixedComplicationDataSource ||
-                !entry.value.isEnabled ||
-                entry.key == watchFaceConfigActivity.editorSession.backgroundComplicationSlotId
+            if (
+                entry.value.fixedComplicationDataSource ||
+                    !entry.value.isEnabled ||
+                    entry.key == watchFaceConfigActivity.editorSession.backgroundComplicationSlotId
             ) {
                 // Do not create a button for fixed complicationSlots, disabled complicationSlots,
                 // or background complicationSlots.
@@ -99,20 +94,22 @@
                 Button(context).apply {
                     // Make the button transparent unless tapped upon.
                     setBackgroundResource(
-                        TypedValue().apply {
-                            context.theme.resolveAttribute(
-                                android.R.attr.selectableItemBackground,
-                                this,
-                                true
-                            )
-                        }.resourceId
+                        TypedValue()
+                            .apply {
+                                context.theme.resolveAttribute(
+                                    android.R.attr.selectableItemBackground,
+                                    this,
+                                    true
+                                )
+                            }
+                            .resourceId
                     )
                     setOnClickListener { onComplicationButtonClicked(entry.key) }
                     setOnLongClickListener {
                         watchFaceConfigActivity.coroutineScope.launch {
                             val dataSourceInfo =
-                                watchFaceConfigActivity.editorSession
-                                    .complicationsDataSourceInfo.value[entry.key]
+                                watchFaceConfigActivity.editorSession.complicationsDataSourceInfo
+                                    .value[entry.key]
                             it.tooltipText =
                                 dataSourceInfo?.name ?: "Empty complication data source"
                         }
@@ -120,9 +117,7 @@
                         // default handler.
                         false
                     }
-                    entry.value.nameResourceId?.let {
-                        contentDescription = context.getString(it)
-                    }
+                    entry.value.nameResourceId?.let { contentDescription = context.getString(it) }
                     addView(this)
                 }
             }
@@ -147,12 +142,7 @@
             button?.width = rect.width()
             button?.height = rect.width()
             button?.layoutParams = LayoutParams(rect.width(), rect.height())
-            button?.layout(
-                rect.left,
-                rect.top,
-                rect.right,
-                rect.bottom
-            )
+            button?.layout(rect.left, rect.top, rect.right, rect.bottom)
         }
     }
 
@@ -172,25 +162,25 @@
 
     override fun onDraw(canvas: Canvas) {
         val editingSession = watchFaceConfigActivity.editorSession
-        val bitmap = editingSession.renderWatchFaceToBitmap(
-            RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                HighlightLayer(
-                    RenderParameters.HighlightedElement.AllComplicationSlots,
-                    Color.RED, // Red complication highlight.
-                    Color.argb(128, 0, 0, 0) // Darken everything else.
-                )
-            ),
-            editingSession.previewReferenceInstant,
-            previewComplicationData.value
-        )
+        val bitmap =
+            editingSession.renderWatchFaceToBitmap(
+                RenderParameters(
+                    DrawMode.INTERACTIVE,
+                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                    HighlightLayer(
+                        RenderParameters.HighlightedElement.AllComplicationSlots,
+                        Color.RED, // Red complication highlight.
+                        Color.argb(128, 0, 0, 0) // Darken everything else.
+                    )
+                ),
+                editingSession.previewReferenceInstant,
+                previewComplicationData.value
+            )
         canvas.drawBitmap(bitmap, drawRect, drawRect, null)
     }
 
     private fun updateUi(
-        @Suppress("UNUSED_PARAMETER")
-        chosenComplicationDataSource: ChosenComplicationDataSource?
+        @Suppress("UNUSED_PARAMETER") chosenComplicationDataSource: ChosenComplicationDataSource?
     ) {
         // The fragment can use the chosen complication to update the UI.
     }
diff --git a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ConfigFragment.kt b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ConfigFragment.kt
index c3ba72d..6050261 100644
--- a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ConfigFragment.kt
+++ b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ConfigFragment.kt
@@ -64,13 +64,10 @@
     companion object {
         const val SETTINGS_ID = "SETTINGS_ID"
 
-        fun newInstance(
-            settingIds: ArrayList<String>
-        ) = ConfigFragment().apply {
-            arguments = Bundle().apply {
-                this.putStringArrayList(SETTINGS_ID, settingIds)
+        fun newInstance(settingIds: ArrayList<String>) =
+            ConfigFragment().apply {
+                arguments = Bundle().apply { this.putStringArrayList(SETTINGS_ID, settingIds) }
             }
-        }
     }
 
     private var lifecycleObserver = LifecycleEventObserver { _, event ->
@@ -91,14 +88,15 @@
     ): View {
         settingIds = requireArguments().getStringArrayList(SETTINGS_ID)!!
 
-        view = inflater.inflate(R.layout.config_layout, container, false) as
-            SwipeDismissFrameLayout
+        view = inflater.inflate(R.layout.config_layout, container, false) as SwipeDismissFrameLayout
 
-        view.addCallback(object : SwipeDismissFrameLayout.Callback() {
-            override fun onDismissed(layout: SwipeDismissFrameLayout) {
-                parentFragmentManager.popBackStackImmediate()
+        view.addCallback(
+            object : SwipeDismissFrameLayout.Callback() {
+                override fun onDismissed(layout: SwipeDismissFrameLayout) {
+                    parentFragmentManager.popBackStackImmediate()
+                }
             }
-        })
+        )
 
         return view
     }
@@ -115,10 +113,11 @@
             configOptions.add(
                 ConfigOption(
                     id = Constants.KEY_COMPLICATIONS_SETTINGS,
-                    icon = Icon.createWithResource(
-                        context,
-                        R.drawable.ic_elements_settings_complications
-                    ),
+                    icon =
+                        Icon.createWithResource(
+                            context,
+                            R.drawable.ic_elements_settings_complications
+                        ),
                     title = resources.getString(R.string.settings_complications),
                     summary = "",
                     highlight = false
@@ -143,11 +142,7 @@
             )
         }
 
-        configViewAdapter = ConfigViewAdapter(
-            requireContext(),
-            configOptions,
-            this::onItemClick
-        )
+        configViewAdapter = ConfigViewAdapter(requireContext(), configOptions, this::onItemClick)
         view.findViewById<WearableRecyclerView>(R.id.configOptionsList).apply {
             adapter = configViewAdapter
             isEdgeItemsCenteringEnabled = true
@@ -159,30 +154,27 @@
 
     private fun createBackgroundConfigOption(): ConfigOption {
         // Initially assume there is no background image data source.
-        val backgroundConfigOption = ConfigOption(
-            id = Constants.KEY_BACKGROUND_IMAGE_SETTINGS,
-            icon = Icon.createWithResource(
-                context,
-                R.drawable.ic_elements_comps_bg
-            ),
-            title = getResources().getString(R.string.settings_background_image),
-            summary = resources.getString(R.string.none_background_image_provider),
-            highlight = false
-        )
+        val backgroundConfigOption =
+            ConfigOption(
+                id = Constants.KEY_BACKGROUND_IMAGE_SETTINGS,
+                icon = Icon.createWithResource(context, R.drawable.ic_elements_comps_bg),
+                title = getResources().getString(R.string.settings_background_image),
+                summary = resources.getString(R.string.none_background_image_provider),
+                highlight = false
+            )
 
         // Update the summary with the actual background complication data source name, if there is
         // one.
         watchFaceConfigActivity.coroutineScope.launch {
             val dataSourceInfoRetriever =
                 ComplicationDataSourceInfoRetriever(activity as WatchFaceConfigActivity)
-            val infoArray = dataSourceInfoRetriever.retrieveComplicationDataSourceInfo(
-                watchFaceConfigActivity.editorSession.watchFaceComponentName,
-                intArrayOf(watchFaceConfigActivity.editorSession.backgroundComplicationSlotId!!)
-            )
+            val infoArray =
+                dataSourceInfoRetriever.retrieveComplicationDataSourceInfo(
+                    watchFaceConfigActivity.editorSession.watchFaceComponentName,
+                    intArrayOf(watchFaceConfigActivity.editorSession.backgroundComplicationSlotId!!)
+                )
             infoArray?.let {
-                it[0].info?.apply {
-                    backgroundConfigOption.summary = name
-                }
+                it[0].info?.apply { backgroundConfigOption.summary = name }
                 configViewAdapter.notifyDataSetChanged()
             }
             dataSourceInfoRetriever.close()
@@ -199,7 +191,6 @@
         when (configOption.id) {
             Constants.KEY_COMPLICATIONS_SETTINGS ->
                 watchFaceConfigActivity.fragmentController.showComplicationConfigSelectionFragment()
-
             Constants.KEY_BACKGROUND_IMAGE_SETTINGS -> {
                 watchFaceConfigActivity.coroutineScope.launch {
                     watchFaceConfigActivity.fragmentController.showComplicationConfig(
@@ -207,7 +198,6 @@
                     )
                 }
             }
-
             else -> {
                 watchFaceConfigActivity.fragmentController.showStyleConfigFragment(
                     configOption.id,
@@ -242,10 +232,7 @@
          * @param icon the icon to wrap.
          * @return the wrapped icon.
          */
-        fun wrapIcon(
-            context: Context,
-            icon: Drawable
-        ): Drawable {
+        fun wrapIcon(context: Context, icon: Drawable): Drawable {
             if (icon is LayerDrawable && icon.findDrawableByLayerId(R.id.nested_icon) != null) {
                 return icon // icon was already wrapped, return the icon without modifying it
             }
@@ -272,15 +259,12 @@
         }
     }
 
-    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ConfigViewHolder(
-        LayoutInflater.from(parent.context).inflate(
-            R.layout.configlist_item_layout,
-            parent,
-            false
-        )
-    ).apply {
-        itemView.setOnClickListener { clickListener(configOption!!) }
-    }
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
+        ConfigViewHolder(
+                LayoutInflater.from(parent.context)
+                    .inflate(R.layout.configlist_item_layout, parent, false)
+            )
+            .apply { itemView.setOnClickListener { clickListener(configOption!!) } }
 
     override fun onBindViewHolder(holder: ConfigViewHolder, position: Int) {
         val configOption = configOptions[position]
diff --git a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/StyleConfigFragment.kt b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/StyleConfigFragment.kt
index 5264a84..924ec20 100644
--- a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/StyleConfigFragment.kt
+++ b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/StyleConfigFragment.kt
@@ -52,9 +52,7 @@
 import androidx.wear.widget.WearableLinearLayoutManager
 import androidx.wear.widget.WearableRecyclerView
 
-/**
- * Fragment for selecting a userStyle setting within a particular setting.
- */
+/** Fragment for selecting a userStyle setting within a particular setting. */
 internal class StyleConfigFragment : Fragment(), ClickListener {
 
     private lateinit var settingId: String
@@ -67,20 +65,21 @@
         const val USER_STYLE = "USER_STYLE"
         const val STYLE_SCHEMA = "STYLE_SCHEMA"
 
-        fun newInstance(
-            settingId: String,
-            styleSchema: UserStyleSchema,
-            userStyle: UserStyle
-        ) = StyleConfigFragment().apply {
-            arguments = Bundle().apply {
-                putCharSequence(SETTING_ID, settingId)
-                putParcelable(
-                    STYLE_SCHEMA,
-                    ParcelUtils.toParcelable(styleSchema.toWireFormat())
-                )
-                putParcelable(USER_STYLE, ParcelUtils.toParcelable(userStyle.toWireFormat()))
+        fun newInstance(settingId: String, styleSchema: UserStyleSchema, userStyle: UserStyle) =
+            StyleConfigFragment().apply {
+                arguments =
+                    Bundle().apply {
+                        putCharSequence(SETTING_ID, settingId)
+                        putParcelable(
+                            STYLE_SCHEMA,
+                            ParcelUtils.toParcelable(styleSchema.toWireFormat())
+                        )
+                        putParcelable(
+                            USER_STYLE,
+                            ParcelUtils.toParcelable(userStyle.toWireFormat())
+                        )
+                    }
             }
-        }
     }
 
     override fun onCreateView(
@@ -107,7 +106,6 @@
                 }
                 booleanStyle.visibility = View.VISIBLE
             }
-
             is ListUserStyleSetting -> {
                 styleOptionsList.adapter =
                     ListStyleSettingViewAdapter(
@@ -120,7 +118,6 @@
                 styleOptionsList.layoutManager = WearableLinearLayoutManager(context)
                 styleOptionsList.visibility = View.VISIBLE
             }
-
             is ComplicationSlotsUserStyleSetting -> {
                 styleOptionsList.adapter =
                     ComplicationsStyleSettingViewAdapter(
@@ -132,21 +129,16 @@
                 styleOptionsList.layoutManager = WearableLinearLayoutManager(context)
                 styleOptionsList.visibility = View.VISIBLE
             }
-
             is CustomValueUserStyleSetting -> {
                 // Not supported, ignore.
             }
-
             is CustomValueUserStyleSetting2 -> {
                 // Not supported, ignore.
             }
-
             is DoubleRangeUserStyleSetting -> {
                 val rangedStyleSetting = styleSetting as DoubleRangeUserStyleSetting
-                val minValue =
-                    (rangedStyleSetting.options.first() as DoubleRangeOption).value
-                val maxValue =
-                    (rangedStyleSetting.options.last() as DoubleRangeOption).value
+                val minValue = (rangedStyleSetting.options.first() as DoubleRangeOption).value
+                val maxValue = (rangedStyleSetting.options.last() as DoubleRangeOption).value
                 val delta = (maxValue - minValue) / 100.0f
                 val value = (userStyleOption as DoubleRangeOption).value.toFloat()
                 rangedStyle.progress = ((value - minValue) / delta).toInt()
@@ -154,23 +146,22 @@
                     setUserStyleOption(DoubleRangeOption(minValue + delta * it.toFloat()))
                 }
             }
-
             is LongRangeUserStyleSetting -> {
                 val longRangeStyleSetting = styleSetting as LongRangeUserStyleSetting
                 rangedStyle.min = longRangeStyleSetting.minimumValue.toInt()
                 rangedStyle.max = longRangeStyleSetting.maximumValue.toInt()
                 rangedStyle.progress = (userStyleOption as LongRangeOption).value.toInt()
-                setupRangedStyle(rangedStyle) {
-                    setUserStyleOption(LongRangeOption(it.toLong()))
-                }
+                setupRangedStyle(rangedStyle) { setUserStyleOption(LongRangeOption(it.toLong())) }
             }
         }
 
-        view.addCallback(object : SwipeDismissFrameLayout.Callback() {
-            override fun onDismissed(layout: SwipeDismissFrameLayout) {
-                parentFragmentManager.popBackStackImmediate()
+        view.addCallback(
+            object : SwipeDismissFrameLayout.Callback() {
+                override fun onDismissed(layout: SwipeDismissFrameLayout) {
+                    parentFragmentManager.popBackStackImmediate()
+                }
             }
-        })
+        )
 
         return view
     }
@@ -178,11 +169,8 @@
     private fun setupRangedStyle(rangedStyle: SeekBar, onProgressChanged: (progress: Int) -> Unit) {
         rangedStyle.setOnSeekBarChangeListener(
             object : SeekBar.OnSeekBarChangeListener {
-                override fun onProgressChanged(
-                    seekBar: SeekBar,
-                    progress: Int,
-                    fromUser: Boolean
-                ) = onProgressChanged(progress)
+                override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) =
+                    onProgressChanged(progress)
 
                 override fun onStartTrackingTouch(seekBar: SeekBar) {}
 
@@ -197,20 +185,22 @@
     private fun readOptionsFromArguments() {
         settingId = requireArguments().getCharSequence(SETTING_ID).toString()
 
-        styleSchema = UserStyleSchema(
-            ParcelUtils.fromParcelable<UserStyleSchemaWireFormat>(
-                requireArguments().getParcelable(STYLE_SCHEMA)!!
-            )!!
-        )
-
-        userStyle = UserStyle(
-            UserStyleData(
-                ParcelUtils.fromParcelable<UserStyleWireFormat>(
-                    requireArguments().getParcelable(USER_STYLE)!!
+        styleSchema =
+            UserStyleSchema(
+                ParcelUtils.fromParcelable<UserStyleSchemaWireFormat>(
+                    requireArguments().getParcelable(STYLE_SCHEMA)!!
                 )!!
-            ),
-            styleSchema
-        )
+            )
+
+        userStyle =
+            UserStyle(
+                UserStyleData(
+                    ParcelUtils.fromParcelable<UserStyleWireFormat>(
+                        requireArguments().getParcelable(USER_STYLE)!!
+                    )!!
+                ),
+                styleSchema
+            )
 
         styleSetting = styleSchema[UserStyleSetting.Id(settingId)]!!
     }
@@ -218,9 +208,11 @@
     internal fun setUserStyleOption(userStyleOption: UserStyleSetting.Option) {
         val watchFaceConfigActivity = (activity as WatchFaceConfigActivity)
         val editorSession = watchFaceConfigActivity.editorSession
-        editorSession.userStyle.value = editorSession.userStyle.value.toMutableUserStyle().apply {
-            this[styleSetting] = userStyleOption
-        }.toUserStyle()
+        editorSession.userStyle.value =
+            editorSession.userStyle.value
+                .toMutableUserStyle()
+                .apply { this[styleSetting] = userStyleOption }
+                .toUserStyle()
     }
 
     override fun onItemClick(userStyleOption: UserStyleSetting.Option) {
@@ -282,17 +274,18 @@
 
     private val handler = Handler(Looper.getMainLooper())
 
-    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = StyleSettingViewHolder(
-        LayoutInflater.from(parent.context).inflate(
-            R.layout.stylelist_item_layout, parent, false
-        )
-    ).apply {
-        itemView.setOnClickListener {
-            currentSelection = userStyleOption!!
-            this@ListStyleSettingViewAdapter.notifyDataSetChanged()
-            clickListener.onItemClick(userStyleOption!!)
-        }
-    }
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
+        StyleSettingViewHolder(
+                LayoutInflater.from(parent.context)
+                    .inflate(R.layout.stylelist_item_layout, parent, false)
+            )
+            .apply {
+                itemView.setOnClickListener {
+                    currentSelection = userStyleOption!!
+                    this@ListStyleSettingViewAdapter.notifyDataSetChanged()
+                    clickListener.onItemClick(userStyleOption!!)
+                }
+            }
 
     override fun onBindViewHolder(holder: StyleSettingViewHolder, position: Int) {
         val styleOption = styleOptions[position]
@@ -320,25 +313,21 @@
     override fun getItemCount() = styleOptions.size
 }
 
-/**
- * An adapter for [ComplicationSlotsUserStyleSetting]. This is a very minimal placeholder UI.
- */
+/** An adapter for [ComplicationSlotsUserStyleSetting]. This is a very minimal placeholder UI. */
 internal class ComplicationsStyleSettingViewAdapter(
     private val context: Context,
     private val styleOptions: List<ComplicationSlotsOption>,
     private val clickListener: ClickListener
-) :
-    RecyclerView.Adapter<StyleSettingViewHolder>() {
+) : RecyclerView.Adapter<StyleSettingViewHolder>() {
 
     private val handler = Handler(Looper.getMainLooper())
 
-    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = StyleSettingViewHolder(
-        LayoutInflater.from(parent.context).inflate(
-            R.layout.stylelist_item_layout, parent, false
-        )
-    ).apply {
-        itemView.setOnClickListener { clickListener.onItemClick(userStyleOption!!) }
-    }
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
+        StyleSettingViewHolder(
+                LayoutInflater.from(parent.context)
+                    .inflate(R.layout.stylelist_item_layout, parent, false)
+            )
+            .apply { itemView.setOnClickListener { clickListener.onItemClick(userStyleOption!!) } }
 
     override fun onBindViewHolder(holder: StyleSettingViewHolder, position: Int) {
         val styleOption = styleOptions[position]
diff --git a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/WatchFaceConfigActivity.kt b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/WatchFaceConfigActivity.kt
index 947000c..90c5e0e 100644
--- a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/WatchFaceConfigActivity.kt
+++ b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/WatchFaceConfigActivity.kt
@@ -38,8 +38,8 @@
     fun showConfigFragment()
 
     /**
-     * Show the [ComplicationConfigFragment] which lets the user select the complication
-     * they want to configure.
+     * Show the [ComplicationConfigFragment] which lets the user select the complication they want
+     * to configure.
      */
     fun showComplicationConfigSelectionFragment()
 
@@ -112,13 +112,12 @@
                     }
 
                     /**
-                     * Displays a config screen which allows the user to select the data source for the
-                     * complication.
+                     * Displays a config screen which allows the user to select the data source for
+                     * the complication.
                      */
                     @SuppressWarnings("deprecation")
-                    override suspend fun showComplicationConfig(
-                        complicationSlotId: Int
-                    ) = editorSession.openComplicationDataSourceChooser(complicationSlotId)
+                    override suspend fun showComplicationConfig(complicationSlotId: Int) =
+                        editorSession.openComplicationDataSourceChooser(complicationSlotId)
                 }
             )
         }
@@ -127,8 +126,7 @@
     private fun focusCurrentFragment() {
         val curFragment = supportFragmentManager.findFragmentById(android.R.id.content)
         if (curFragment != null) {
-            curFragment.view?.importantForAccessibility =
-                View.IMPORTANT_FOR_ACCESSIBILITY_YES
+            curFragment.view?.importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_YES
         }
 
         // Clear focus on the old fragment that is behind the new one, and announce the new title.
@@ -149,21 +147,17 @@
             .commit()
     }
 
-    private fun init(
-        editorSession: EditorSession,
-        fragmentController: FragmentController
-    ) {
+    private fun init(editorSession: EditorSession, fragmentController: FragmentController) {
         this.editorSession = editorSession
         this.fragmentController = fragmentController
 
-        supportFragmentManager
-            .addOnBackStackChangedListener {
-                if (supportFragmentManager.backStackEntryCount == 0) {
-                    finish()
-                } else {
-                    focusCurrentFragment()
-                }
+        supportFragmentManager.addOnBackStackChangedListener {
+            if (supportFragmentManager.backStackEntryCount == 0) {
+                finish()
+            } else {
+                focusCurrentFragment()
             }
+        }
 
         var topLevelOptionCount = editorSession.userStyleSchema.rootUserStyleSettings.size
         val hasBackgroundComplication = editorSession.backgroundComplicationSlotId != null
@@ -184,8 +178,7 @@
 
             // For a single complication go directly to the complication data source selector.
             numComplications == 1 -> {
-                val onlyComplication =
-                    editorSession.complicationSlotsState.value.entries.first()
+                val onlyComplication = editorSession.complicationSlotsState.value.entries.first()
                 coroutineScope.launch {
                     val chosenComplicationProvider =
                         fragmentController.showComplicationConfig(onlyComplication.key)
@@ -199,8 +192,7 @@
             // For a single style, go select the option.
             editorSession.userStyleSchema.rootUserStyleSettings.size == 1 -> {
                 // There should only be a single userStyle setting if we get here.
-                val onlyStyleSetting =
-                    editorSession.userStyleSchema.rootUserStyleSettings.first()
+                val onlyStyleSetting = editorSession.userStyleSchema.rootUserStyleSettings.first()
                 fragmentController.showStyleConfigFragment(
                     onlyStyleSetting.id.value,
                     editorSession.userStyleSchema,
diff --git a/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionGuavaTest.kt b/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionGuavaTest.kt
index 2b85444..943df16 100644
--- a/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionGuavaTest.kt
+++ b/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionGuavaTest.kt
@@ -30,12 +30,6 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
-import androidx.wear.watchface.complications.ComplicationDataSourceInfo
-import androidx.wear.watchface.complications.ComplicationSlotBounds
-import androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy
-import androidx.wear.watchface.complications.SystemDataSources
-import androidx.wear.watchface.complications.data.ComplicationType
-import androidx.wear.watchface.complications.data.LongTextComplicationData
 import androidx.wear.watchface.CanvasComplication
 import androidx.wear.watchface.ComplicationDataSourceChooserIntent
 import androidx.wear.watchface.ComplicationHelperActivity
@@ -45,20 +39,26 @@
 import androidx.wear.watchface.WatchFace
 import androidx.wear.watchface.client.WatchFaceId
 import androidx.wear.watchface.client.asApiEditorState
+import androidx.wear.watchface.complications.ComplicationDataSourceInfo
+import androidx.wear.watchface.complications.ComplicationSlotBounds
+import androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy
+import androidx.wear.watchface.complications.SystemDataSources
+import androidx.wear.watchface.complications.data.ComplicationType
+import androidx.wear.watchface.complications.data.LongTextComplicationData
 import androidx.wear.watchface.complications.rendering.CanvasComplicationDrawable
 import androidx.wear.watchface.complications.rendering.ComplicationDrawable
 import androidx.wear.watchface.style.CurrentUserStyleRepository
 import androidx.wear.watchface.style.UserStyleSchema
 import androidx.wear.watchface.style.UserStyleSetting
 import com.google.common.truth.Truth.assertThat
+import java.time.Instant
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.CompletableDeferred
 import org.junit.After
 import org.junit.Assert
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.Mockito
-import java.time.Instant
-import java.util.concurrent.TimeUnit
 
 private const val TIMEOUT_MS = 500L
 
@@ -83,18 +83,22 @@
     private val leftComplication =
         @Suppress("DEPRECATION")
         ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            LEFT_COMPLICATION_ID,
-            { _, _, -> mockLeftCanvasComplication },
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.LONG_TEXT,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET),
-            ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
-        ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                LEFT_COMPLICATION_ID,
+                { _, _,
+                    ->
+                    mockLeftCanvasComplication
+                },
+                listOf(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.LONG_TEXT,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    ComplicationType.SMALL_IMAGE
+                ),
+                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET),
+                ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
+            )
+            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
             .build()
 
     private val mockRightCanvasComplication =
@@ -106,23 +110,25 @@
     private val rightComplication =
         @Suppress("DEPRECATION")
         ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            RIGHT_COMPLICATION_ID,
-            { _, _, -> mockRightCanvasComplication },
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.LONG_TEXT,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK),
-            ComplicationSlotBounds(RectF(0.6f, 0.4f, 0.8f, 0.6f))
-        ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                RIGHT_COMPLICATION_ID,
+                { _, _,
+                    ->
+                    mockRightCanvasComplication
+                },
+                listOf(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.LONG_TEXT,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    ComplicationType.SMALL_IMAGE
+                ),
+                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK),
+                ComplicationSlotBounds(RectF(0.6f, 0.4f, 0.8f, 0.6f))
+            )
+            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
             .build()
 
-    private val backgroundHandlerThread = HandlerThread("TestBackgroundThread").apply {
-        start()
-    }
+    private val backgroundHandlerThread = HandlerThread("TestBackgroundThread").apply { start() }
 
     private val backgroundHandler = Handler(backgroundHandlerThread.looper)
 
@@ -150,22 +156,25 @@
             TestComplicationDataSourceInfoRetrieverProvider()
 
         return ActivityScenario.launch(
-            WatchFaceEditorContract().createIntent(
-                ApplicationProvider.getApplicationContext<Context>(),
-                EditorRequest(
-                    testComponentName,
-                    testEditorPackageName,
-                    null,
-                    watchFaceId,
-                    null,
-                    null
-                )
-            ).apply {
-                component = ComponentName(
+            WatchFaceEditorContract()
+                .createIntent(
                     ApplicationProvider.getApplicationContext<Context>(),
-                    OnWatchFaceEditingTestActivity::class.java
+                    EditorRequest(
+                        testComponentName,
+                        testEditorPackageName,
+                        null,
+                        watchFaceId,
+                        null,
+                        null
+                    )
                 )
-            }
+                .apply {
+                    component =
+                        ComponentName(
+                            ApplicationProvider.getApplicationContext<Context>(),
+                            OnWatchFaceEditingTestActivity::class.java
+                        )
+                }
         )
     }
 
@@ -181,27 +190,28 @@
     @Test
     public fun listenableOpenComplicationDataSourceChooser() {
         ComplicationDataSourceChooserContract.useTestComplicationHelperActivity = true
-        val chosenComplicationDataSourceInfo = ComplicationDataSourceInfo(
-            "TestDataSource3App",
-            "TestDataSource3",
-            Icon.createWithBitmap(
-                Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
-            ),
-            ComplicationType.LONG_TEXT,
-            dataSource3
-        )
-        TestComplicationHelperActivity.resultIntent = CompletableDeferred(
-            Intent().apply {
-                putExtra(
-                    ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
-                    chosenComplicationDataSourceInfo.toWireComplicationProviderInfo()
-                )
-            }
-        )
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication)
-        )
+        val chosenComplicationDataSourceInfo =
+            ComplicationDataSourceInfo(
+                "TestDataSource3App",
+                "TestDataSource3",
+                Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)),
+                ComplicationType.LONG_TEXT,
+                dataSource3
+            )
+        TestComplicationHelperActivity.resultIntent =
+            CompletableDeferred(
+                Intent().apply {
+                    putExtra(
+                        ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
+                        chosenComplicationDataSourceInfo.toWireComplicationProviderInfo()
+                    )
+                }
+            )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication)
+            )
 
         lateinit var listenableEditorSession: ListenableEditorSession
         scenario.onActivity { activity ->
@@ -209,13 +219,13 @@
         }
 
         /**
-         * Invoke [TestComplicationHelperActivity] which will change the data source (and hence
-         * the preview data) for [LEFT_COMPLICATION_ID].
+         * Invoke [TestComplicationHelperActivity] which will change the data source (and hence the
+         * preview data) for [LEFT_COMPLICATION_ID].
          */
         val chosenComplicationDataSource =
-            listenableEditorSession.listenableOpenComplicationDataSourceChooser(
-                LEFT_COMPLICATION_ID
-            ).get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+            listenableEditorSession
+                .listenableOpenComplicationDataSourceChooser(LEFT_COMPLICATION_ID)
+                .get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
         assertThat(chosenComplicationDataSource).isNotNull()
         checkNotNull(chosenComplicationDataSource)
         assertThat(chosenComplicationDataSource.complicationSlotId).isEqualTo(LEFT_COMPLICATION_ID)
@@ -230,20 +240,22 @@
                 as LongTextComplicationData
 
         assertThat(
-            previewComplication.text.getTextAt(
-                ApplicationProvider.getApplicationContext<Context>().resources,
-                Instant.EPOCH
+                previewComplication.text.getTextAt(
+                    ApplicationProvider.getApplicationContext<Context>().resources,
+                    Instant.EPOCH
+                )
             )
-        ).isEqualTo("DataSource3")
+            .isEqualTo("DataSource3")
     }
 
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun doNotCommitChangesOnClose() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            emptyList()
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                emptyList()
+            )
 
         val editorObserver = TestEditorObserver()
         val observerId = EditorService.globalEditorService.registerObserver(editorObserver)
@@ -260,11 +272,14 @@
             // Select [blueStyleOption] and [gothicStyleOption], which are the last options in the
             // corresponding setting definitions.
             listenableEditorSession.userStyle.value =
-                listenableEditorSession.userStyle.value.toMutableUserStyle().apply {
-                    listenableEditorSession.userStyleSchema.userStyleSettings.forEach {
-                        this[it] = it.options.last()
+                listenableEditorSession.userStyle.value
+                    .toMutableUserStyle()
+                    .apply {
+                        listenableEditorSession.userStyleSchema.userStyleSettings.forEach {
+                            this[it] = it.options.last()
+                        }
                     }
-                }.toUserStyle()
+                    .toUserStyle()
 
             // This should cause the style on the to be reverted back to the initial style.
             listenableEditorSession.commitChangesOnClose = false
@@ -272,10 +287,10 @@
             activity.finish()
         }
 
-        val result = editorObserver.awaitEditorStateChange(
-            TIMEOUT_MS,
-            TimeUnit.MILLISECONDS
-        ).asApiEditorState()
+        val result =
+            editorObserver
+                .awaitEditorStateChange(TIMEOUT_MS, TimeUnit.MILLISECONDS)
+                .asApiEditorState()
         assertThat(result.userStyle.userStyleMap[colorStyleSetting.id.value])
             .isEqualTo(blueStyleOption.id.value)
         assertThat(result.userStyle.userStyleMap[watchHandStyleSetting.id.value])
diff --git a/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionTest.kt b/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionTest.kt
index fb6ed5d..58e4a50 100644
--- a/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionTest.kt
+++ b/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionTest.kt
@@ -16,7 +16,6 @@
 
 package androidx.wear.watchface.editor
 
-import android.support.wearable.complications.ComplicationProviderInfo as WireComplicationProviderInfo
 import android.annotation.SuppressLint
 import android.app.Activity
 import android.content.ComponentName
@@ -36,6 +35,7 @@
 import android.os.HandlerThread
 import android.os.IBinder
 import android.os.Looper
+import android.support.wearable.complications.ComplicationProviderInfo as WireComplicationProviderInfo
 import android.support.wearable.complications.IPreviewComplicationDataCallback
 import android.support.wearable.complications.IProviderInfoService
 import android.support.wearable.watchface.Constants
@@ -47,27 +47,19 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
-import androidx.wear.watchface.complications.ComplicationDataSourceInfo
-import androidx.wear.watchface.complications.ComplicationDataSourceInfoRetriever
-import androidx.wear.watchface.complications.ComplicationSlotBounds
-import androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy
-import androidx.wear.watchface.complications.SystemDataSources
-import androidx.wear.watchface.complications.data.ComplicationText
-import androidx.wear.watchface.complications.data.ComplicationType
-import androidx.wear.watchface.complications.data.EmptyComplicationData
-import androidx.wear.watchface.complications.data.LongTextComplicationData
-import androidx.wear.watchface.complications.data.PlainComplicationText
-import androidx.wear.watchface.complications.data.ShortTextComplicationData
 import androidx.wear.watchface.BroadcastsObserver
 import androidx.wear.watchface.CanvasComplication
 import androidx.wear.watchface.CanvasType
 import androidx.wear.watchface.ComplicationDataSourceChooserIntent
 import androidx.wear.watchface.ComplicationHelperActivity
 import androidx.wear.watchface.ComplicationSlot
+import androidx.wear.watchface.ComplicationSlotBoundsType
 import androidx.wear.watchface.ComplicationSlotsManager
+import androidx.wear.watchface.DEFAULT_INSTANCE_ID
 import androidx.wear.watchface.MutableWatchState
 import androidx.wear.watchface.RenderParameters
 import androidx.wear.watchface.Renderer
+import androidx.wear.watchface.SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX
 import androidx.wear.watchface.WatchFace
 import androidx.wear.watchface.WatchFaceHostApi
 import androidx.wear.watchface.WatchFaceImpl
@@ -77,12 +69,20 @@
 import androidx.wear.watchface.client.DeviceConfig
 import androidx.wear.watchface.client.WatchFaceId
 import androidx.wear.watchface.client.asApiEditorState
+import androidx.wear.watchface.complications.ComplicationDataSourceInfo
+import androidx.wear.watchface.complications.ComplicationDataSourceInfoRetriever
+import androidx.wear.watchface.complications.ComplicationSlotBounds
+import androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy
+import androidx.wear.watchface.complications.SystemDataSources
+import androidx.wear.watchface.complications.data.ComplicationData
+import androidx.wear.watchface.complications.data.ComplicationText
+import androidx.wear.watchface.complications.data.ComplicationType
+import androidx.wear.watchface.complications.data.EmptyComplicationData
+import androidx.wear.watchface.complications.data.LongTextComplicationData
+import androidx.wear.watchface.complications.data.PlainComplicationText
+import androidx.wear.watchface.complications.data.ShortTextComplicationData
 import androidx.wear.watchface.complications.rendering.CanvasComplicationDrawable
 import androidx.wear.watchface.complications.rendering.ComplicationDrawable
-import androidx.wear.watchface.ComplicationSlotBoundsType
-import androidx.wear.watchface.DEFAULT_INSTANCE_ID
-import androidx.wear.watchface.SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX
-import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.editor.EditorSession.Companion.EDITING_SESSION_TIMEOUT
 import androidx.wear.watchface.editor.data.EditorStateWireFormat
 import androidx.wear.watchface.style.CurrentUserStyleRepository
@@ -94,6 +94,13 @@
 import androidx.wear.watchface.style.UserStyleSetting.Option
 import androidx.wear.watchface.style.WatchFaceLayer
 import com.google.common.truth.Truth.assertThat
+import java.lang.IllegalArgumentException
+import java.time.Instant
+import java.time.ZonedDateTime
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.TimeUnit.MILLISECONDS
+import kotlin.test.assertFailsWith
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
@@ -106,7 +113,6 @@
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.withContext
-import kotlin.test.assertFailsWith
 import org.junit.After
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertNotNull
@@ -115,21 +121,15 @@
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.ArgumentCaptor
 import org.mockito.ArgumentMatchers.any
+import org.mockito.ArgumentMatchers.anyInt
 import org.mockito.ArgumentMatchers.eq
 import org.mockito.Mockito
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.doAnswer
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.verify
-import java.lang.IllegalArgumentException
-import java.time.Instant
-import java.time.ZonedDateTime
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.TimeUnit.MILLISECONDS
-import org.mockito.ArgumentCaptor
-import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.Mockito.`when`
 
 public const val LEFT_COMPLICATION_ID: Int = 1000
 public const val RIGHT_COMPLICATION_ID: Int = 1001
@@ -147,18 +147,18 @@
 private const val PROVIDER_CHOOSER_RESULT_EXTRA_VALUE = "PROVIDER_CHOOSER_RESULT_EXTRA_VALUE"
 
 internal val redStyleOption = ListOption(Option.Id("red_style"), "Red", "Red", icon = null)
-internal val greenStyleOption =
-    ListOption(Option.Id("green_style"), "Green", "Green", icon = null)
+internal val greenStyleOption = ListOption(Option.Id("green_style"), "Green", "Green", icon = null)
 internal val blueStyleOption = ListOption(Option.Id("blue_style"), "Blue", "Blue", icon = null)
 internal val colorStyleList = listOf(redStyleOption, greenStyleOption, blueStyleOption)
-internal val colorStyleSetting = UserStyleSetting.ListUserStyleSetting(
-    UserStyleSetting.Id("color_style_setting"),
-    "Colors",
-    "Watchface colorization", /* icon = */
-    null,
-    colorStyleList,
-    listOf(WatchFaceLayer.BASE)
-)
+internal val colorStyleSetting =
+    UserStyleSetting.ListUserStyleSetting(
+        UserStyleSetting.Id("color_style_setting"),
+        "Colors",
+        "Watchface colorization",
+        /* icon = */ null,
+        colorStyleList,
+        listOf(WatchFaceLayer.BASE)
+    )
 
 internal val classicStyleOption =
     ListOption(Option.Id("classic_style"), "Classic", "Classic", icon = null)
@@ -166,30 +166,31 @@
     ListOption(Option.Id("modern_style"), "Modern", "Modern", icon = null)
 internal val gothicStyleOption =
     ListOption(Option.Id("gothic_style"), "Gothic", "Gothic", icon = null)
-internal val watchHandStyleList =
-    listOf(classicStyleOption, modernStyleOption, gothicStyleOption)
-internal val watchHandStyleSetting = UserStyleSetting.ListUserStyleSetting(
-    UserStyleSetting.Id("hand_style_setting"),
-    "Hand Style",
-    "Hand visual look", /* icon = */
-    null,
-    watchHandStyleList,
-    listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-)
+internal val watchHandStyleList = listOf(classicStyleOption, modernStyleOption, gothicStyleOption)
+internal val watchHandStyleSetting =
+    UserStyleSetting.ListUserStyleSetting(
+        UserStyleSetting.Id("hand_style_setting"),
+        "Hand Style",
+        "Hand visual look",
+        /* icon = */ null,
+        watchHandStyleList,
+        listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+    )
 
-private val mockInvalidateCallback =
-    Mockito.mock(CanvasComplication.InvalidateCallback::class.java)
+private val mockInvalidateCallback = Mockito.mock(CanvasComplication.InvalidateCallback::class.java)
 private val placeholderWatchState = MutableWatchState().asWatchState()
-private val mockLeftCanvasComplication = CanvasComplicationDrawable(
-    ComplicationDrawable(),
-    placeholderWatchState,
-    mockInvalidateCallback
-)
-private val mockRightCanvasComplication = CanvasComplicationDrawable(
-    ComplicationDrawable(),
-    placeholderWatchState,
-    mockInvalidateCallback
-)
+private val mockLeftCanvasComplication =
+    CanvasComplicationDrawable(
+        ComplicationDrawable(),
+        placeholderWatchState,
+        mockInvalidateCallback
+    )
+private val mockRightCanvasComplication =
+    CanvasComplicationDrawable(
+        ComplicationDrawable(),
+        placeholderWatchState,
+        mockInvalidateCallback
+    )
 private val mockBackgroundCanvasComplication =
     CanvasComplicationDrawable(
         ComplicationDrawable(),
@@ -198,11 +199,13 @@
     )
 private val backgroundComplication =
     ComplicationSlot.createBackgroundComplicationSlotBuilder(
-        BACKGROUND_COMPLICATION_ID,
-        { _, _ -> mockBackgroundCanvasComplication },
-        emptyList(),
-        DefaultComplicationDataSourcePolicy()
-    ).setEnabled(false).build()
+            BACKGROUND_COMPLICATION_ID,
+            { _, _ -> mockBackgroundCanvasComplication },
+            emptyList(),
+            DefaultComplicationDataSourcePolicy()
+        )
+        .setEnabled(false)
+        .build()
 
 private val bothComplicationsOption =
     UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
@@ -221,8 +224,10 @@
         null,
         listOf(
             UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay.Builder(
-                RIGHT_COMPLICATION_ID
-            ).setEnabled(false).build()
+                    RIGHT_COMPLICATION_ID
+                )
+                .setEnabled(false)
+                .build()
         )
     )
 private val rightOnlyComplicationsOption =
@@ -233,22 +238,26 @@
         null,
         listOf(
             UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay.Builder(
-                LEFT_COMPLICATION_ID
-            ).setEnabled(false).build()
+                    LEFT_COMPLICATION_ID
+                )
+                .setEnabled(false)
+                .build()
         )
     )
-private val complicationsStyleSetting = UserStyleSetting.ComplicationSlotsUserStyleSetting(
-    UserStyleSetting.Id("complications_style_setting"),
-    "AllComplicationSlots",
-    "Number and position",
-    icon = null,
-    complicationConfig = listOf(
-        bothComplicationsOption,
-        leftOnlyComplicationsOption,
-        rightOnlyComplicationsOption
-    ),
-    affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
-)
+private val complicationsStyleSetting =
+    UserStyleSetting.ComplicationSlotsUserStyleSetting(
+        UserStyleSetting.Id("complications_style_setting"),
+        "AllComplicationSlots",
+        "Number and position",
+        icon = null,
+        complicationConfig =
+            listOf(
+                bothComplicationsOption,
+                leftOnlyComplicationsOption,
+                rightOnlyComplicationsOption
+            ),
+        affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
+    )
 
 /** A trivial [WatchFaceService] used for testing headless editor instances. */
 public class TestHeadlessWatchFaceService : WatchFaceService() {
@@ -264,33 +273,35 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.ANALOG,
-        @Suppress("deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.SOFTWARE,
-            100
-        ) {
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
-                when (currentUserStyleRepository.userStyle.value[colorStyleSetting]!!) {
-                    redStyleOption -> canvas.drawColor(Color.RED)
-                    greenStyleOption -> canvas.drawColor(Color.GREEN)
-                    blueStyleOption -> canvas.drawColor(Color.BLUE)
+    ) =
+        WatchFace(
+            WatchFaceType.ANALOG,
+            @Suppress("deprecation")
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.SOFTWARE,
+                    100
+                ) {
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
+                    when (currentUserStyleRepository.userStyle.value[colorStyleSetting]!!) {
+                        redStyleOption -> canvas.drawColor(Color.RED)
+                        greenStyleOption -> canvas.drawColor(Color.GREEN)
+                        blueStyleOption -> canvas.drawColor(Color.BLUE)
+                    }
+                }
+
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {
+                    // NOP
                 }
             }
-
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
-                // NOP
-            }
-        }
-    )
+        )
 }
 
 /** Trivial "editor" which exposes the EditorSession for testing. */
@@ -306,7 +317,8 @@
 
     internal companion object {
         internal var complicationDataSourceInfoRetrieverProvider:
-            ComplicationDataSourceInfoRetrieverProvider? = null
+            ComplicationDataSourceInfoRetrieverProvider? =
+            null
     }
 
     public val immediateCoroutineScope: CoroutineScope = CoroutineScope(Dispatchers.Main.immediate)
@@ -315,11 +327,12 @@
         super.onCreate(savedInstanceState)
         immediateCoroutineScope.launch {
             try {
-                editorSession = EditorSession.createOnWatchEditorSessionImpl(
-                    this@OnWatchFaceEditingTestActivity,
-                    intent!!,
-                    complicationDataSourceInfoRetrieverProvider!!
-                )
+                editorSession =
+                    EditorSession.createOnWatchEditorSessionImpl(
+                        this@OnWatchFaceEditingTestActivity,
+                        intent!!,
+                        complicationDataSourceInfoRetrieverProvider!!
+                    )
             } catch (e: Exception) {
                 onCreateException = e
             } finally {
@@ -340,39 +353,49 @@
         Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888))
 
     private val watchFaceComponent = ComponentName("test.package", "test.class")
-    private val dataSourceInfos = mapOf(
-        LEFT_COMPLICATION_ID to ComplicationDataSourceInfo(
-            "DataSourceApp1",
-            "DataSource1",
-            dataSourceIcon1,
-            ComplicationType.SHORT_TEXT,
-            dataSource1
-        ),
-        RIGHT_COMPLICATION_ID to ComplicationDataSourceInfo(
-            "DataSourceApp2",
-            "DataSource2",
-            dataSourceIcon2,
-            ComplicationType.LONG_TEXT,
-            dataSource2
+    private val dataSourceInfos =
+        mapOf(
+            LEFT_COMPLICATION_ID to
+                ComplicationDataSourceInfo(
+                    "DataSourceApp1",
+                    "DataSource1",
+                    dataSourceIcon1,
+                    ComplicationType.SHORT_TEXT,
+                    dataSource1
+                ),
+            RIGHT_COMPLICATION_ID to
+                ComplicationDataSourceInfo(
+                    "DataSourceApp2",
+                    "DataSource2",
+                    dataSourceIcon2,
+                    ComplicationType.LONG_TEXT,
+                    dataSource2
+                )
         )
-    )
-    private val previewData = mapOf(
-        dataSource1 to
-            ShortTextComplicationData.Builder(
-                PlainComplicationText.Builder("Left").build(),
-                ComplicationText.EMPTY
-            ).build().asWireComplicationData(),
-        dataSource2 to
-            LongTextComplicationData.Builder(
-                PlainComplicationText.Builder("Right").build(),
-                ComplicationText.EMPTY
-            ).build().asWireComplicationData(),
-        dataSource3 to
-            LongTextComplicationData.Builder(
-                PlainComplicationText.Builder("DataSource3").build(),
-                ComplicationText.EMPTY
-            ).build().asWireComplicationData(),
-    )
+    private val previewData =
+        mapOf(
+            dataSource1 to
+                ShortTextComplicationData.Builder(
+                        PlainComplicationText.Builder("Left").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .build()
+                    .asWireComplicationData(),
+            dataSource2 to
+                LongTextComplicationData.Builder(
+                        PlainComplicationText.Builder("Right").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .build()
+                    .asWireComplicationData(),
+            dataSource3 to
+                LongTextComplicationData.Builder(
+                        PlainComplicationText.Builder("DataSource3").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .build()
+                    .asWireComplicationData(),
+        )
 
     public lateinit var lastComplicationDataSourceInfoRetriever: ComplicationDataSourceInfoRetriever
 
@@ -389,11 +412,13 @@
         if (watchFaceComponent != this.watchFaceComponent) {
             return null
         }
-        return ArrayList<WireComplicationProviderInfo?>().apply {
-            for (id in ids) {
-                add(dataSourceInfos[id]?.toWireComplicationProviderInfo())
+        return ArrayList<WireComplicationProviderInfo?>()
+            .apply {
+                for (id in ids) {
+                    add(dataSourceInfos[id]?.toWireComplicationProviderInfo())
+                }
             }
-        }.toTypedArray()
+            .toTypedArray()
     }
 
     override fun getApiVersion(): Int = 1
@@ -468,10 +493,8 @@
 @RunWith(AndroidJUnit4::class)
 @MediumTest
 public class EditorSessionTest {
-    private val headlessWatchFaceComponentName = ComponentName(
-        "test.package",
-        TestHeadlessWatchFaceService::class.qualifiedName!!
-    )
+    private val headlessWatchFaceComponentName =
+        ComponentName("test.package", TestHeadlessWatchFaceService::class.qualifiedName!!)
     private val testEditorPackageName = "test.package"
     private val testInstanceId = WatchFaceId(SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "1")
     private lateinit var editorDelegate: WatchFace.EditorDelegate
@@ -487,66 +510,65 @@
 
     private val leftComplication =
         ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            LEFT_COMPLICATION_ID,
-            { _, _ -> mockLeftCanvasComplication },
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.LONG_TEXT,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-
-            DefaultComplicationDataSourcePolicy(
-                ComponentName("com.primary.package", "com.primary.app"),
-                ComplicationType.LONG_TEXT,
-                SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
-                ComplicationType.SHORT_TEXT
-            ),
-            ComplicationSlotBounds(
-                ComplicationType.values().associateWith {
-                    if (it == ComplicationType.LONG_TEXT) {
-                        RectF(0.1f, 0.4f, 0.4f, 0.6f)
-                    } else {
-                        RectF(0.3f, 0.4f, 0.4f, 0.6f)
-                    }
-                },
-                ComplicationType.values().associateWith { RectF() }
+                LEFT_COMPLICATION_ID,
+                { _, _ -> mockLeftCanvasComplication },
+                listOf(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.LONG_TEXT,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    ComplicationType.SMALL_IMAGE
+                ),
+                DefaultComplicationDataSourcePolicy(
+                    ComponentName("com.primary.package", "com.primary.app"),
+                    ComplicationType.LONG_TEXT,
+                    SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
+                    ComplicationType.SHORT_TEXT
+                ),
+                ComplicationSlotBounds(
+                    ComplicationType.values().associateWith {
+                        if (it == ComplicationType.LONG_TEXT) {
+                            RectF(0.1f, 0.4f, 0.4f, 0.6f)
+                        } else {
+                            RectF(0.3f, 0.4f, 0.4f, 0.6f)
+                        }
+                    },
+                    ComplicationType.values().associateWith { RectF() }
+                )
             )
-        )
             .build()
 
     private val rightComplication =
         ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            RIGHT_COMPLICATION_ID,
-            { _, _ -> mockRightCanvasComplication },
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.LONG_TEXT,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy(
-                ComponentName("com.primary.package", "com.primary.app"),
-                ComplicationType.LONG_TEXT,
-                ComponentName("com.secondary.package", "com.secondary.app"),
-                ComplicationType.PHOTO_IMAGE,
-                SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
-                ComplicationType.SHORT_TEXT
-            ),
-            @Suppress("DEPRECATION")
-            ComplicationSlotBounds(
-                ComplicationType.values().associateWith {
-                    if (it == ComplicationType.LONG_TEXT) {
-                        RectF(0.6f, 0.4f, 0.9f, 0.6f)
-                    } else {
-                        RectF(0.6f, 0.4f, 0.7f, 0.6f)
-                    }
-                },
-                ComplicationType.values().associateWith { RectF() }
+                RIGHT_COMPLICATION_ID,
+                { _, _ -> mockRightCanvasComplication },
+                listOf(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.LONG_TEXT,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    ComplicationType.SMALL_IMAGE
+                ),
+                DefaultComplicationDataSourcePolicy(
+                    ComponentName("com.primary.package", "com.primary.app"),
+                    ComplicationType.LONG_TEXT,
+                    ComponentName("com.secondary.package", "com.secondary.app"),
+                    ComplicationType.PHOTO_IMAGE,
+                    SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
+                    ComplicationType.SHORT_TEXT
+                ),
+                @Suppress("DEPRECATION")
+                ComplicationSlotBounds(
+                    ComplicationType.values().associateWith {
+                        if (it == ComplicationType.LONG_TEXT) {
+                            RectF(0.6f, 0.4f, 0.9f, 0.6f)
+                        } else {
+                            RectF(0.6f, 0.4f, 0.7f, 0.6f)
+                        }
+                    },
+                    ComplicationType.values().associateWith { RectF() }
+                )
             )
-        )
             .setConfigExtras(
                 Bundle().apply {
                     putString(PROVIDER_CHOOSER_EXTRA_KEY, PROVIDER_CHOOSER_EXTRA_VALUE)
@@ -576,47 +598,46 @@
         complicationSlotsManager.listenForStyleChanges(CoroutineScope(Dispatchers.Main.immediate))
 
         // Mocking getters and setters with mockito at the same time is hard so we do this instead.
-        editorDelegate = object : WatchFace.EditorDelegate {
-            private val backgroundHandlerThread = HandlerThread("TestBackgroundThread").apply {
-                start()
-            }
+        editorDelegate =
+            object : WatchFace.EditorDelegate {
+                private val backgroundHandlerThread =
+                    HandlerThread("TestBackgroundThread").apply { start() }
 
-            private val backgroundHandler = Handler(backgroundHandlerThread.looper)
+                private val backgroundHandler = Handler(backgroundHandlerThread.looper)
 
-            override val userStyleSchema = userStyleRepository.schema
-            override var userStyle: UserStyle
-                get() = userStyleRepository.userStyle.value
-                set(value) {
-                    userStyleRepository.updateUserStyle(value)
+                override val userStyleSchema = userStyleRepository.schema
+                override var userStyle: UserStyle
+                    get() = userStyleRepository.userStyle.value
+                    set(value) {
+                        userStyleRepository.updateUserStyle(value)
+                    }
+
+                override val complicationSlotsManager = complicationSlotsManager
+                override val screenBounds = this@EditorSessionTest.screenBounds
+                override val previewReferenceInstant = previewReferenceInstant
+                override val backgroundThreadHandler = backgroundHandler
+                override val complicationDeniedDialogIntent =
+                    this@EditorSessionTest.complicationDeniedDialogIntent
+                override val complicationRationaleDialogIntent =
+                    this@EditorSessionTest.complicationRationaleDialogIntent
+
+                override fun renderWatchFaceToBitmap(
+                    renderParameters: RenderParameters,
+                    instant: Instant,
+                    slotIdToComplicationData: Map<Int, ComplicationData>?
+                ) = fakeBitmap
+
+                override fun onDestroy() {
+                    onDestroyLatch.countDown()
+                    backgroundHandlerThread.quitSafely()
                 }
 
-            override val complicationSlotsManager = complicationSlotsManager
-            override val screenBounds = this@EditorSessionTest.screenBounds
-            override val previewReferenceInstant = previewReferenceInstant
-            override val backgroundThreadHandler = backgroundHandler
-            override val complicationDeniedDialogIntent =
-                this@EditorSessionTest.complicationDeniedDialogIntent
-            override val complicationRationaleDialogIntent =
-                this@EditorSessionTest.complicationRationaleDialogIntent
-
-            override fun renderWatchFaceToBitmap(
-                renderParameters: RenderParameters,
-                instant: Instant,
-                slotIdToComplicationData:
-                    Map<Int, ComplicationData>?
-            ) = fakeBitmap
-
-            override fun onDestroy() {
-                onDestroyLatch.countDown()
-                backgroundHandlerThread.quitSafely()
+                override fun setComplicationSlotConfigExtrasChangeCallback(
+                    callback: WatchFace.ComplicationSlotConfigExtrasChangeCallback?
+                ) {
+                    complicationSlotsManager.configExtrasChangeCallback = callback
+                }
             }
-
-            override fun setComplicationSlotConfigExtrasChangeCallback(
-                callback: WatchFace.ComplicationSlotConfigExtrasChangeCallback?
-            ) {
-                complicationSlotsManager.configExtrasChangeCallback = callback
-            }
-        }
         if (!shouldTimeout) {
             WatchFace.registerEditorDelegate(watchComponentName, editorDelegate)
         }
@@ -628,39 +649,45 @@
             return ActivityScenario.launch(
                 Intent().apply {
                     putExtra(Constants.EXTRA_WATCH_FACE_COMPONENT, watchComponentName)
-                    component = ComponentName(
-                        ApplicationProvider.getApplicationContext<Context>(),
-                        OnWatchFaceEditingTestActivity::class.java
-                    )
+                    component =
+                        ComponentName(
+                            ApplicationProvider.getApplicationContext<Context>(),
+                            OnWatchFaceEditingTestActivity::class.java
+                        )
                 }
             )
         }
 
         return ActivityScenario.launch(
-            WatchFaceEditorContract().createIntent(
-                ApplicationProvider.getApplicationContext<Context>(),
-                EditorRequest(
-                    watchComponentName,
-                    testEditorPackageName,
-                    initialUserStyle,
-                    watchFaceId,
-                    headlessDeviceConfig,
-                    previewScreenshotParams
-                )
-            ).apply {
-                component = ComponentName(
+            WatchFaceEditorContract()
+                .createIntent(
                     ApplicationProvider.getApplicationContext<Context>(),
-                    OnWatchFaceEditingTestActivity::class.java
+                    EditorRequest(
+                        watchComponentName,
+                        testEditorPackageName,
+                        initialUserStyle,
+                        watchFaceId,
+                        headlessDeviceConfig,
+                        previewScreenshotParams
+                    )
                 )
-            }
+                .apply {
+                    component =
+                        ComponentName(
+                            ApplicationProvider.getApplicationContext<Context>(),
+                            OnWatchFaceEditingTestActivity::class.java
+                        )
+                }
         )
     }
 
     private fun createOnWatchFaceEditingTestActivityThatThrowsTimeoutException():
         ActivityScenario<OnWatchFaceEditingTestActivity> =
-            createOnWatchFaceEditingTestActivity(
-                emptyList(), emptyList(), /* other params are default */ shouldTimeout = true
-            )
+        createOnWatchFaceEditingTestActivity(
+            emptyList(),
+            emptyList(), /* other params are default */
+            shouldTimeout = true
+        )
 
     @After
     public fun tearDown() {
@@ -692,19 +719,16 @@
 
     @Test
     public fun watchFaceComponentName_headless() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            emptyList(),
-            headlessDeviceConfig = DeviceConfig(false, false, 0, 0),
-            watchComponentName = headlessWatchFaceComponentName
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                emptyList(),
+                headlessDeviceConfig = DeviceConfig(false, false, 0, 0),
+                watchComponentName = headlessWatchFaceComponentName
+            )
         lateinit var activity: OnWatchFaceEditingTestActivity
-        scenario.onActivity {
-            activity = it
-        }
-        runBlocking {
-            activity.deferredDone.await()
-        }
+        scenario.onActivity { activity = it }
+        runBlocking { activity.deferredDone.await() }
         assertThat(activity.editorSession.watchFaceComponentName)
             .isEqualTo(headlessWatchFaceComponentName)
     }
@@ -719,19 +743,16 @@
 
     @Test
     public fun instanceId_headless() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            emptyList(),
-            headlessDeviceConfig = DeviceConfig(false, false, 0, 0),
-            watchComponentName = headlessWatchFaceComponentName
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                emptyList(),
+                headlessDeviceConfig = DeviceConfig(false, false, 0, 0),
+                watchComponentName = headlessWatchFaceComponentName
+            )
         lateinit var activity: OnWatchFaceEditingTestActivity
-        scenario.onActivity {
-            activity = it
-        }
-        runBlocking {
-            activity.deferredDone.await()
-        }
+        scenario.onActivity { activity = it }
+        runBlocking { activity.deferredDone.await() }
         assertThat(activity.editorSession.watchFaceId.id).isEqualTo(testInstanceId.id)
     }
 
@@ -745,25 +766,26 @@
 
     @Test
     public fun previewReferenceInstant() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            emptyList(),
-            previewReferenceInstant = Instant.ofEpochMilli(54321L)
-        )
-        scenario.onActivity {
-            assertThat(it.editorSession.previewReferenceInstant).isEqualTo(
-                Instant.ofEpochMilli(54321L)
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                emptyList(),
+                previewReferenceInstant = Instant.ofEpochMilli(54321L)
             )
+        scenario.onActivity {
+            assertThat(it.editorSession.previewReferenceInstant)
+                .isEqualTo(Instant.ofEpochMilli(54321L))
         }
     }
 
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun userStyleSchema() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            emptyList()
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                emptyList()
+            )
         scenario.onActivity {
             val userStyleSchema = it.editorSession.userStyleSchema
             assertThat(userStyleSchema.userStyleSettings.size).isEqualTo(2)
@@ -781,24 +803,22 @@
 
     @Test
     public fun backgroundComplicationId() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(backgroundComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(emptyList(), listOf(backgroundComplication))
         scenario.onActivity {
-            assertThat(it.editorSession.backgroundComplicationSlotId).isEqualTo(
-                BACKGROUND_COMPLICATION_ID
-            )
+            assertThat(it.editorSession.backgroundComplicationSlotId)
+                .isEqualTo(BACKGROUND_COMPLICATION_ID)
         }
     }
 
     @Test
     @Suppress("DEPRECATION") // defaultDataSourceType
     public fun complicationState() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication, backgroundComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication, backgroundComplication)
+            )
         scenario.onActivity {
             val complicationSlotsState = it.editorSession.complicationSlotsState.value
             assertThat(complicationSlotsState.size).isEqualTo(3)
@@ -812,14 +832,11 @@
             assertThat(leftSlot.defaultDataSourcePolicy.primaryDataSourceDefaultType)
                 .isEqualTo(ComplicationType.LONG_TEXT)
             assertThat(leftSlot.defaultDataSourcePolicy.secondaryDataSource).isNull()
-            assertThat(leftSlot.defaultDataSourcePolicy.secondaryDataSourceDefaultType)
-                .isNull()
-            assertThat(leftSlot.defaultDataSourcePolicy.systemDataSourceFallback).isEqualTo(
-                SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
-            )
-            assertThat(
-                leftSlot.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
-            ).isEqualTo(ComplicationType.SHORT_TEXT)
+            assertThat(leftSlot.defaultDataSourcePolicy.secondaryDataSourceDefaultType).isNull()
+            assertThat(leftSlot.defaultDataSourcePolicy.systemDataSourceFallback)
+                .isEqualTo(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET)
+            assertThat(leftSlot.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType)
+                .isEqualTo(ComplicationType.SHORT_TEXT)
             assertThat(leftSlot.defaultDataSourceType).isEqualTo(ComplicationType.SHORT_TEXT)
 
             val rightSlot = complicationSlotsState[RIGHT_COMPLICATION_ID]!!
@@ -835,9 +852,8 @@
                 .isEqualTo(ComponentName("com.secondary.package", "com.secondary.app"))
             assertThat(rightSlot.defaultDataSourcePolicy.secondaryDataSourceDefaultType)
                 .isEqualTo(ComplicationType.PHOTO_IMAGE)
-            assertThat(
-                rightSlot.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
-            ).isEqualTo(ComplicationType.SHORT_TEXT)
+            assertThat(rightSlot.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType)
+                .isEqualTo(ComplicationType.SHORT_TEXT)
             assertThat(rightSlot.defaultDataSourceType).isEqualTo(ComplicationType.SHORT_TEXT)
 
             val backgroundSlot = complicationSlotsState[BACKGROUND_COMPLICATION_ID]!!
@@ -860,30 +876,30 @@
             )
         val fixedLeftComplication =
             ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                LEFT_COMPLICATION_ID,
-                { _, _ -> mockLeftCanvasComplication },
-                listOf(
-                    ComplicationType.RANGED_VALUE,
-                    ComplicationType.LONG_TEXT,
-                    ComplicationType.SHORT_TEXT,
-                    ComplicationType.MONOCHROMATIC_IMAGE,
-                    ComplicationType.SMALL_IMAGE
-                ),
-                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET),
-                ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
-            ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                    LEFT_COMPLICATION_ID,
+                    { _, _ -> mockLeftCanvasComplication },
+                    listOf(
+                        ComplicationType.RANGED_VALUE,
+                        ComplicationType.LONG_TEXT,
+                        ComplicationType.SHORT_TEXT,
+                        ComplicationType.MONOCHROMATIC_IMAGE,
+                        ComplicationType.SMALL_IMAGE
+                    ),
+                    DefaultComplicationDataSourcePolicy(
+                        SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
+                    ),
+                    ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
+                )
+                .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
                 .setFixedComplicationDataSource(true)
                 .build()
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(fixedLeftComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(emptyList(), listOf(fixedLeftComplication))
         scenario.onActivity {
             assertTrue(
-                it.editorSession.complicationSlotsState.value[
-                    LEFT_COMPLICATION_ID
-                ]!!.fixedComplicationDataSource
+                it.editorSession.complicationSlotsState.value[LEFT_COMPLICATION_ID]!!
+                    .fixedComplicationDataSource
             )
 
             try {
@@ -903,10 +919,11 @@
 
     @Test
     public fun getPreviewData_null_dataSourceInfo() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication, backgroundComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication, backgroundComplication)
+            )
         scenario.onActivity {
             runBlocking {
                 val editorSession = it.editorSession as OnWatchFaceEditorSessionImpl
@@ -914,9 +931,7 @@
 
                 val dataSourceInfoRetriever =
                     ComplicationDataSourceInfoRetriever(mockProviderInfoService)
-                assertThat(
-                    editorSession.getPreviewData(dataSourceInfoRetriever, null)
-                ).isNull()
+                assertThat(editorSession.getPreviewData(dataSourceInfoRetriever, null)).isNull()
                 dataSourceInfoRetriever.close()
             }
         }
@@ -924,10 +939,11 @@
 
     @Test
     public fun getPreviewData() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication, backgroundComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication, backgroundComplication)
+            )
         scenario.onActivity {
             runBlocking {
                 val editorSession = it.editorSession as OnWatchFaceEditorSessionImpl
@@ -940,19 +956,23 @@
                 `when`(mockProviderInfoService.asBinder()).thenReturn(mockBinder)
 
                 doAnswer {
-                    val callback = it.arguments[2] as IPreviewComplicationDataCallback
-                    callback.updateComplicationData(
-                        ShortTextComplicationData.Builder(
-                            PlainComplicationText.Builder(complicationText).build(),
-                            ComplicationText.EMPTY
-                        ).build().asWireComplicationData()
+                        val callback = it.arguments[2] as IPreviewComplicationDataCallback
+                        callback.updateComplicationData(
+                            ShortTextComplicationData.Builder(
+                                    PlainComplicationText.Builder(complicationText).build(),
+                                    ComplicationText.EMPTY
+                                )
+                                .build()
+                                .asWireComplicationData()
+                        )
+                        true
+                    }
+                    .`when`(mockProviderInfoService)
+                    .requestPreviewComplicationData(
+                        eq(dataSourceComponentName),
+                        eq(complicationType.toWireComplicationType()),
+                        any()
                     )
-                    true
-                }.`when`(mockProviderInfoService).requestPreviewComplicationData(
-                    eq(dataSourceComponentName),
-                    eq(complicationType.toWireComplicationType()),
-                    any()
-                )
 
                 val complicationDataSourceInfoRetriever =
                     ComplicationDataSourceInfoRetriever(mockProviderInfoService)
@@ -972,11 +992,14 @@
                 val result = deferredPreviewData.await()
                 assertThat(result).isInstanceOf(ShortTextComplicationData::class.java)
                 assertThat(
-                    (result as ShortTextComplicationData).text.getTextAt(
-                        ApplicationProvider.getApplicationContext<Context>().resources,
-                        Instant.EPOCH
+                        (result as ShortTextComplicationData)
+                            .text
+                            .getTextAt(
+                                ApplicationProvider.getApplicationContext<Context>().resources,
+                                Instant.EPOCH
+                            )
                     )
-                ).isEqualTo(complicationText)
+                    .isEqualTo(complicationText)
 
                 complicationDataSourceInfoRetriever.close()
             }
@@ -985,10 +1008,11 @@
 
     @Test
     public fun getPreviewData_dataSourceSendsWrongType() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication, backgroundComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication, backgroundComplication)
+            )
         scenario.onActivity {
             runBlocking {
                 val editorSession = it.editorSession as OnWatchFaceEditorSessionImpl
@@ -1001,19 +1025,23 @@
                 `when`(mockProviderInfoService.asBinder()).thenReturn(mockBinder)
 
                 doAnswer {
-                    val callback = it.arguments[2] as IPreviewComplicationDataCallback
-                    callback.updateComplicationData(
-                        ShortTextComplicationData.Builder(
-                            PlainComplicationText.Builder(complicationText).build(),
-                            ComplicationText.EMPTY
-                        ).build().asWireComplicationData()
+                        val callback = it.arguments[2] as IPreviewComplicationDataCallback
+                        callback.updateComplicationData(
+                            ShortTextComplicationData.Builder(
+                                    PlainComplicationText.Builder(complicationText).build(),
+                                    ComplicationText.EMPTY
+                                )
+                                .build()
+                                .asWireComplicationData()
+                        )
+                        true
+                    }
+                    .`when`(mockProviderInfoService)
+                    .requestPreviewComplicationData(
+                        eq(dataSourceComponentName),
+                        eq(complicationType.toWireComplicationType()),
+                        any()
                     )
-                    true
-                }.`when`(mockProviderInfoService).requestPreviewComplicationData(
-                    eq(dataSourceComponentName),
-                    eq(complicationType.toWireComplicationType()),
-                    any()
-                )
 
                 val complicationDataSourceInfoRetriever =
                     ComplicationDataSourceInfoRetriever(mockProviderInfoService)
@@ -1033,11 +1061,14 @@
                 val result = deferredPreviewData.await()
                 assertThat(result).isInstanceOf(LongTextComplicationData::class.java)
                 assertThat(
-                    (result as LongTextComplicationData).text.getTextAt(
-                        ApplicationProvider.getApplicationContext<Context>().resources,
-                        Instant.EPOCH
+                        (result as LongTextComplicationData)
+                            .text
+                            .getTextAt(
+                                ApplicationProvider.getApplicationContext<Context>().resources,
+                                Instant.EPOCH
+                            )
                     )
-                ).isEqualTo("dataSource") // Fallback has been used.
+                    .isEqualTo("dataSource") // Fallback has been used.
 
                 complicationDataSourceInfoRetriever.close()
             }
@@ -1047,10 +1078,11 @@
     @Test
     @SdkSuppress(maxSdkVersion = 28)
     public fun getPreviewData_preRFallback() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication, backgroundComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication, backgroundComplication)
+            )
         scenario.onActivity {
             runBlocking {
                 val editorSession = it.editorSession as OnWatchFaceEditorSessionImpl
@@ -1059,24 +1091,26 @@
 
                 val complicationDataSourceInfoRetriever =
                     ComplicationDataSourceInfoRetriever(mockProviderInfoService)
-                val previewComplication = editorSession.getPreviewData(
-                    complicationDataSourceInfoRetriever,
-                    // Construct a ComplicationDataSourceInfo with null componentName.
-                    ComplicationDataSourceInfo(
-                        "dataSource.app",
-                        "dataSource",
-                        dataSourceIcon,
-                        complicationType,
-                        null,
-                    )
-                ) as ShortTextComplicationData
+                val previewComplication =
+                    editorSession.getPreviewData(
+                        complicationDataSourceInfoRetriever,
+                        // Construct a ComplicationDataSourceInfo with null componentName.
+                        ComplicationDataSourceInfo(
+                            "dataSource.app",
+                            "dataSource",
+                            dataSourceIcon,
+                            complicationType,
+                            null,
+                        )
+                    ) as ShortTextComplicationData
 
                 assertThat(
-                    previewComplication.text.getTextAt(
-                        ApplicationProvider.getApplicationContext<Context>().resources,
-                        Instant.EPOCH
+                        previewComplication.text.getTextAt(
+                            ApplicationProvider.getApplicationContext<Context>().resources,
+                            Instant.EPOCH
+                        )
                     )
-                ).isEqualTo("dataSou")
+                    .isEqualTo("dataSou")
 
                 complicationDataSourceInfoRetriever.close()
             }
@@ -1086,10 +1120,11 @@
     @Test
     @SdkSuppress(minSdkVersion = 30)
     public fun getPreviewData_postRFallback() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication, backgroundComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication, backgroundComplication)
+            )
         scenario.onActivity {
             runBlocking {
                 val editorSession = it.editorSession as OnWatchFaceEditorSessionImpl
@@ -1098,30 +1133,33 @@
 
                 `when`(mockProviderInfoService.apiVersion).thenReturn(1)
                 `when`(
-                    mockProviderInfoService.requestPreviewComplicationData(
-                        eq(dataSourceComponentName),
-                        eq(complicationType.toWireComplicationType()),
-                        any(IPreviewComplicationDataCallback::class.java)
+                        mockProviderInfoService.requestPreviewComplicationData(
+                            eq(dataSourceComponentName),
+                            eq(complicationType.toWireComplicationType()),
+                            any(IPreviewComplicationDataCallback::class.java)
+                        )
                     )
-                ).thenReturn(false) // Triggers the ExecutionException.
+                    .thenReturn(false) // Triggers the ExecutionException.
 
-                val previewComplication = editorSession.getPreviewData(
-                    ComplicationDataSourceInfoRetriever(mockProviderInfoService),
-                    ComplicationDataSourceInfo(
-                        "dataSource.app",
-                        "dataSource",
-                        dataSourceIcon,
-                        complicationType,
-                        dataSourceComponentName
-                    )
-                ) as ShortTextComplicationData
+                val previewComplication =
+                    editorSession.getPreviewData(
+                        ComplicationDataSourceInfoRetriever(mockProviderInfoService),
+                        ComplicationDataSourceInfo(
+                            "dataSource.app",
+                            "dataSource",
+                            dataSourceIcon,
+                            complicationType,
+                            dataSourceComponentName
+                        )
+                    ) as ShortTextComplicationData
 
                 assertThat(
-                    previewComplication.text.getTextAt(
-                        ApplicationProvider.getApplicationContext<Context>().resources,
-                        Instant.EPOCH
+                        previewComplication.text.getTextAt(
+                            ApplicationProvider.getApplicationContext<Context>().resources,
+                            Instant.EPOCH
+                        )
                     )
-                ).isEqualTo("dataSou") // Fallback truncates for short text.
+                    .isEqualTo("dataSou") // Fallback truncates for short text.
             }
         }
     }
@@ -1130,41 +1168,38 @@
     @Test
     public fun launchComplicationDataSourceChooser() {
         ComplicationDataSourceChooserContract.useTestComplicationHelperActivity = true
-        val chosenComplicationDataSourceInfo = ComplicationDataSourceInfo(
-            "TestDataSource3App",
-            "TestDataSource3",
-            Icon.createWithBitmap(
-                Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
-            ),
-            ComplicationType.LONG_TEXT,
-            dataSource3
-        )
-        TestComplicationHelperActivity.resultIntent = CompletableDeferred(
-            Intent().apply {
-                putExtra(
-                    ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
-                    chosenComplicationDataSourceInfo.toWireComplicationProviderInfo()
-                )
-            }
-        )
+        val chosenComplicationDataSourceInfo =
+            ComplicationDataSourceInfo(
+                "TestDataSource3App",
+                "TestDataSource3",
+                Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)),
+                ComplicationType.LONG_TEXT,
+                dataSource3
+            )
+        TestComplicationHelperActivity.resultIntent =
+            CompletableDeferred(
+                Intent().apply {
+                    putExtra(
+                        ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
+                        chosenComplicationDataSourceInfo.toWireComplicationProviderInfo()
+                    )
+                }
+            )
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication)
+            )
 
         lateinit var editorSession: EditorSession
-        scenario.onActivity { activity ->
-            editorSession = activity.editorSession
-        }
+        scenario.onActivity { activity -> editorSession = activity.editorSession }
 
         runBlocking {
-            assertThat(
-                editorSession.complicationSlotsState.value[LEFT_COMPLICATION_ID]!!.bounds
-            ).isEqualTo(Rect(120, 160, 160, 240))
-            assertThat(
-                editorSession.complicationsDataSourceInfo.value[LEFT_COMPLICATION_ID]!!.name
-            ).isEqualTo("DataSource1")
+            assertThat(editorSession.complicationSlotsState.value[LEFT_COMPLICATION_ID]!!.bounds)
+                .isEqualTo(Rect(120, 160, 160, 240))
+            assertThat(editorSession.complicationsDataSourceInfo.value[LEFT_COMPLICATION_ID]!!.name)
+                .isEqualTo("DataSource1")
 
             /**
              * Invoke [TestComplicationHelperActivity] which will change the complication data
@@ -1187,75 +1222,76 @@
                     as LongTextComplicationData
 
             assertThat(
-                previewComplication.text.getTextAt(
-                    ApplicationProvider.getApplicationContext<Context>().resources,
-                    Instant.EPOCH
+                    previewComplication.text.getTextAt(
+                        ApplicationProvider.getApplicationContext<Context>().resources,
+                        Instant.EPOCH
+                    )
                 )
-            ).isEqualTo("DataSource3")
+                .isEqualTo("DataSource3")
+
+            assertThat(editorSession.complicationsDataSourceInfo.value[LEFT_COMPLICATION_ID]!!.name)
+                .isEqualTo("TestDataSource3")
 
             assertThat(
-                editorSession.complicationsDataSourceInfo.value[LEFT_COMPLICATION_ID]!!.name
-            ).isEqualTo("TestDataSource3")
-
-            assertThat(
-                TestComplicationHelperActivity.lastIntent?.extras?.getString(
-                    ComplicationDataSourceChooserIntent.EXTRA_WATCHFACE_INSTANCE_ID
+                    TestComplicationHelperActivity.lastIntent
+                        ?.extras
+                        ?.getString(ComplicationDataSourceChooserIntent.EXTRA_WATCHFACE_INSTANCE_ID)
                 )
-            ).isEqualTo(testInstanceId.id)
+                .isEqualTo(testInstanceId.id)
 
             assertThat(
-                (TestComplicationHelperActivity.lastIntent?.getParcelableExtra(
-                    ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_DENIED
-                ) as Intent?)?.action
-            ).isEqualTo(
-                complicationDeniedDialogIntent.action
-            )
+                    (TestComplicationHelperActivity.lastIntent?.getParcelableExtra(
+                            ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_DENIED
+                        ) as Intent?)
+                        ?.action
+                )
+                .isEqualTo(complicationDeniedDialogIntent.action)
 
             assertThat(
-                (TestComplicationHelperActivity.lastIntent?.getParcelableExtra(
-                    ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_RATIONALE
-                ) as Intent?)?.action
-            ).isEqualTo(
-                complicationRationaleDialogIntent.action
-            )
+                    (TestComplicationHelperActivity.lastIntent?.getParcelableExtra(
+                            ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_RATIONALE
+                        ) as Intent?)
+                        ?.action
+                )
+                .isEqualTo(complicationRationaleDialogIntent.action)
 
             // Selecting a LONG_TEXT complication should enlarge the complication's bounds due to
             // it's set up.
-            assertThat(
-                editorSession.complicationSlotsState.value[LEFT_COMPLICATION_ID]!!.bounds
-            ).isEqualTo(Rect(40, 160, 160, 240))
+            assertThat(editorSession.complicationSlotsState.value[LEFT_COMPLICATION_ID]!!.bounds)
+                .isEqualTo(Rect(40, 160, 160, 240))
         }
     }
 
     @Test
     public fun launchComplicationDataSourceChooserTwiceBackToBack() {
         ComplicationDataSourceChooserContract.useTestComplicationHelperActivity = true
-        TestComplicationHelperActivity.resultIntent = CompletableDeferred(
-            Intent().apply {
-                putExtra(
-                    ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
-                    ComplicationDataSourceInfo(
-                        "TestDataSource3App",
-                        "TestDataSource3",
-                        Icon.createWithBitmap(
-                            Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
-                        ),
-                        ComplicationType.LONG_TEXT,
-                        dataSource3
-                    ).toWireComplicationProviderInfo()
-                )
-            }
-        )
+        TestComplicationHelperActivity.resultIntent =
+            CompletableDeferred(
+                Intent().apply {
+                    putExtra(
+                        ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
+                        ComplicationDataSourceInfo(
+                                "TestDataSource3App",
+                                "TestDataSource3",
+                                Icon.createWithBitmap(
+                                    Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
+                                ),
+                                ComplicationType.LONG_TEXT,
+                                dataSource3
+                            )
+                            .toWireComplicationProviderInfo()
+                    )
+                }
+            )
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication)
+            )
 
         lateinit var editorSession: EditorSession
-        scenario.onActivity { activity ->
-            editorSession = activity.editorSession
-        }
+        scenario.onActivity { activity -> editorSession = activity.editorSession }
 
         runBlocking {
             assertThat(editorSession.openComplicationDataSourceChooser(LEFT_COMPLICATION_ID))
@@ -1272,15 +1308,14 @@
         ComplicationDataSourceChooserContract.useTestComplicationHelperActivity = true
         TestComplicationHelperActivity.resultIntent = CompletableDeferred()
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication)
+            )
 
         lateinit var editorSession: EditorSession
-        scenario.onActivity { activity ->
-            editorSession = activity.editorSession
-        }
+        scenario.onActivity { activity -> editorSession = activity.editorSession }
 
         runBlocking {
             // This won't complete till later.
@@ -1302,14 +1337,15 @@
                         putExtra(
                             ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
                             ComplicationDataSourceInfo(
-                                "TestDataSource3App",
-                                "TestDataSource3",
-                                Icon.createWithBitmap(
-                                    Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
-                                ),
-                                ComplicationType.LONG_TEXT,
-                                dataSource3
-                            ).toWireComplicationProviderInfo()
+                                    "TestDataSource3App",
+                                    "TestDataSource3",
+                                    Icon.createWithBitmap(
+                                        Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
+                                    ),
+                                    ComplicationType.LONG_TEXT,
+                                    dataSource3
+                                )
+                                .toWireComplicationProviderInfo()
                         )
                     }
                 )
@@ -1324,15 +1360,14 @@
         ComplicationDataSourceChooserContract.useTestComplicationHelperActivity = true
         TestComplicationHelperActivity.resultIntent = CompletableDeferred(Intent())
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication)
+            )
 
         lateinit var editorSession: EditorSession
-        scenario.onActivity { activity ->
-            editorSession = activity.editorSession
-        }
+        scenario.onActivity { activity -> editorSession = activity.editorSession }
 
         runBlocking {
             /**
@@ -1355,24 +1390,20 @@
     public fun launchComplicationDataSourceChooser_cancel() {
         ComplicationDataSourceChooserContract.useTestComplicationHelperActivity = true
         // NB CompletableDeferred(null) doesn't do what we expect...
-        TestComplicationHelperActivity.resultIntent = CompletableDeferred<Intent?>().apply {
-            complete(null)
-        }
+        TestComplicationHelperActivity.resultIntent =
+            CompletableDeferred<Intent?>().apply { complete(null) }
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication)
+            )
 
         lateinit var editorSession: EditorSession
-        scenario.onActivity { activity ->
-            editorSession = activity.editorSession
-        }
+        scenario.onActivity { activity -> editorSession = activity.editorSession }
 
         runBlocking {
-            /**
-             * Invoke [TestComplicationHelperActivity] which will simulate the user canceling.
-             */
+            /** Invoke [TestComplicationHelperActivity] which will simulate the user canceling. */
             assertThat(editorSession.openComplicationDataSourceChooser(LEFT_COMPLICATION_ID))
                 .isNull()
         }
@@ -1382,34 +1413,33 @@
     @Test
     public fun launchComplicationDataSourceChooser_ComplicationConfigExtrasToHelper() {
         ComplicationDataSourceChooserContract.useTestComplicationHelperActivity = true
-        val chosenComplicationDataSourceInfo = ComplicationDataSourceInfo(
-            "TestDataSource3App",
-            "TestDataSource3",
-            Icon.createWithBitmap(
-                Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
-            ),
-            ComplicationType.LONG_TEXT,
-            dataSource3
-        )
-        TestComplicationHelperActivity.resultIntent = CompletableDeferred(
-            Intent().apply {
-                putExtra(
-                    ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
-                    chosenComplicationDataSourceInfo.toWireComplicationProviderInfo()
-                )
-                putExtra(PROVIDER_CHOOSER_RESULT_EXTRA_KEY, PROVIDER_CHOOSER_RESULT_EXTRA_VALUE)
-            }
-        )
+        val chosenComplicationDataSourceInfo =
+            ComplicationDataSourceInfo(
+                "TestDataSource3App",
+                "TestDataSource3",
+                Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)),
+                ComplicationType.LONG_TEXT,
+                dataSource3
+            )
+        TestComplicationHelperActivity.resultIntent =
+            CompletableDeferred(
+                Intent().apply {
+                    putExtra(
+                        ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
+                        chosenComplicationDataSourceInfo.toWireComplicationProviderInfo()
+                    )
+                    putExtra(PROVIDER_CHOOSER_RESULT_EXTRA_KEY, PROVIDER_CHOOSER_RESULT_EXTRA_VALUE)
+                }
+            )
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication)
+            )
 
         lateinit var editorSession: EditorSession
-        scenario.onActivity { activity ->
-            editorSession = activity.editorSession
-        }
+        scenario.onActivity { activity -> editorSession = activity.editorSession }
 
         runBlocking {
             val chosenComplicationDataSource =
@@ -1422,15 +1452,15 @@
                 chosenComplicationDataSourceInfo,
                 chosenComplicationDataSource.complicationDataSourceInfo
             )
-            assertThat(
-                chosenComplicationDataSource.extras[PROVIDER_CHOOSER_RESULT_EXTRA_KEY]
-            ).isEqualTo(PROVIDER_CHOOSER_RESULT_EXTRA_VALUE)
+            assertThat(chosenComplicationDataSource.extras[PROVIDER_CHOOSER_RESULT_EXTRA_KEY])
+                .isEqualTo(PROVIDER_CHOOSER_RESULT_EXTRA_VALUE)
 
             assertThat(
-                TestComplicationHelperActivity.lastIntent?.extras?.getString(
-                    PROVIDER_CHOOSER_EXTRA_KEY
+                    TestComplicationHelperActivity.lastIntent
+                        ?.extras
+                        ?.getString(PROVIDER_CHOOSER_EXTRA_KEY)
                 )
-            ).isEqualTo(PROVIDER_CHOOSER_EXTRA_VALUE)
+                .isEqualTo(PROVIDER_CHOOSER_EXTRA_VALUE)
         }
     }
 
@@ -1442,32 +1472,31 @@
         // Invoke the data source chooser without checking for permissions first.
         ComplicationHelperActivity.skipPermissionCheck = true
 
-        val chosenComplicationDataSourceInfo = ComplicationDataSourceInfo(
-            "TestDataSource3App",
-            "TestDataSource3",
-            Icon.createWithBitmap(
-                Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
-            ),
-            ComplicationType.LONG_TEXT,
-            dataSource3
-        )
-        TestComplicationDataSourceChooserActivity.resultIntent = Intent().apply {
-            putExtra(
-                ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
-                chosenComplicationDataSourceInfo.toWireComplicationProviderInfo()
+        val chosenComplicationDataSourceInfo =
+            ComplicationDataSourceInfo(
+                "TestDataSource3App",
+                "TestDataSource3",
+                Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)),
+                ComplicationType.LONG_TEXT,
+                dataSource3
             )
-            putExtra(PROVIDER_CHOOSER_RESULT_EXTRA_KEY, PROVIDER_CHOOSER_RESULT_EXTRA_VALUE)
-        }
+        TestComplicationDataSourceChooserActivity.resultIntent =
+            Intent().apply {
+                putExtra(
+                    ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
+                    chosenComplicationDataSourceInfo.toWireComplicationProviderInfo()
+                )
+                putExtra(PROVIDER_CHOOSER_RESULT_EXTRA_KEY, PROVIDER_CHOOSER_RESULT_EXTRA_VALUE)
+            }
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication)
+            )
 
         lateinit var editorSession: EditorSession
-        scenario.onActivity { activity ->
-            editorSession = activity.editorSession
-        }
+        scenario.onActivity { activity -> editorSession = activity.editorSession }
 
         runBlocking {
             val chosenComplicationDataSource =
@@ -1480,15 +1509,15 @@
                 chosenComplicationDataSourceInfo,
                 chosenComplicationDataSource.complicationDataSourceInfo
             )
-            assertThat(
-                chosenComplicationDataSource.extras[PROVIDER_CHOOSER_RESULT_EXTRA_KEY]
-            ).isEqualTo(PROVIDER_CHOOSER_RESULT_EXTRA_VALUE)
+            assertThat(chosenComplicationDataSource.extras[PROVIDER_CHOOSER_RESULT_EXTRA_KEY])
+                .isEqualTo(PROVIDER_CHOOSER_RESULT_EXTRA_VALUE)
 
             assertThat(
-                TestComplicationDataSourceChooserActivity.lastIntent?.extras?.getString(
-                    PROVIDER_CHOOSER_EXTRA_KEY
+                    TestComplicationDataSourceChooserActivity.lastIntent
+                        ?.extras
+                        ?.getString(PROVIDER_CHOOSER_EXTRA_KEY)
                 )
-            ).isEqualTo(PROVIDER_CHOOSER_EXTRA_VALUE)
+                .isEqualTo(PROVIDER_CHOOSER_EXTRA_VALUE)
         }
     }
 
@@ -1499,56 +1528,56 @@
         // Invoke the data source chooser without checking for permissions first.
         ComplicationHelperActivity.skipPermissionCheck = true
 
-        val chosenComplicationDataSourceInfo = ComplicationDataSourceInfo(
-            "TestDataSource3App",
-            "TestDataSource3",
-            Icon.createWithBitmap(
-                Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
-            ),
-            ComplicationType.LONG_TEXT,
-            dataSource3
-        )
-        TestComplicationDataSourceChooserActivity.lastIntent = null
-        TestComplicationDataSourceChooserActivity.resultIntent = Intent().apply {
-            putExtra(
-                ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
-                chosenComplicationDataSourceInfo.toWireComplicationProviderInfo()
+        val chosenComplicationDataSourceInfo =
+            ComplicationDataSourceInfo(
+                "TestDataSource3App",
+                "TestDataSource3",
+                Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)),
+                ComplicationType.LONG_TEXT,
+                dataSource3
             )
-        }
+        TestComplicationDataSourceChooserActivity.lastIntent = null
+        TestComplicationDataSourceChooserActivity.resultIntent =
+            Intent().apply {
+                putExtra(
+                    ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
+                    chosenComplicationDataSourceInfo.toWireComplicationProviderInfo()
+                )
+            }
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication)
+            )
 
         lateinit var editorSession: EditorSession
-        scenario.onActivity { activity ->
-            editorSession = activity.editorSession
-        }
+        scenario.onActivity { activity -> editorSession = activity.editorSession }
 
         runBlocking {
-            rightComplication.configExtras = Bundle().apply {
-                putString(PROVIDER_CHOOSER_EXTRA_KEY, "Updated")
-            }
+            rightComplication.configExtras =
+                Bundle().apply { putString(PROVIDER_CHOOSER_EXTRA_KEY, "Updated") }
 
             val chosenComplicationDataSource =
                 editorSession.openComplicationDataSourceChooser(RIGHT_COMPLICATION_ID)
             assertThat(chosenComplicationDataSource).isNotNull()
 
             assertThat(
-                TestComplicationDataSourceChooserActivity.lastIntent?.extras?.getString(
-                    PROVIDER_CHOOSER_EXTRA_KEY
+                    TestComplicationDataSourceChooserActivity.lastIntent
+                        ?.extras
+                        ?.getString(PROVIDER_CHOOSER_EXTRA_KEY)
                 )
-            ).isEqualTo("Updated")
+                .isEqualTo("Updated")
         }
     }
 
     @Test
     public fun getComplicationIdAt() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication, backgroundComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication, backgroundComplication)
+            )
         scenario.onActivity {
             assertThat(it.editorSession.getComplicationSlotIdAt(0, 0)).isEqualTo(null)
             assertThat(it.editorSession.getComplicationSlotIdAt(125, 165))
@@ -1564,27 +1593,30 @@
 
         scenario.onActivity {
             assertThat(
-                it.editorSession.renderWatchFaceToBitmap(
-                    RenderParameters.DEFAULT_INTERACTIVE,
-                    Instant.ofEpochMilli(1234L),
-                    null
+                    it.editorSession.renderWatchFaceToBitmap(
+                        RenderParameters.DEFAULT_INTERACTIVE,
+                        Instant.ofEpochMilli(1234L),
+                        null
+                    )
                 )
-            ).isEqualTo(fakeBitmap)
+                .isEqualTo(fakeBitmap)
         }
     }
 
     @Test
     public fun initialUserStyle() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            listOf(leftComplication, rightComplication),
-            initialUserStyle = UserStyleData(
-                mapOf(
-                    colorStyleSetting.id.value to greenStyleOption.id.value,
-                    watchHandStyleSetting.id.value to modernStyleOption.id.value,
-                )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                listOf(leftComplication, rightComplication),
+                initialUserStyle =
+                    UserStyleData(
+                        mapOf(
+                            colorStyleSetting.id.value to greenStyleOption.id.value,
+                            watchHandStyleSetting.id.value to modernStyleOption.id.value,
+                        )
+                    )
             )
-        )
 
         scenario.onActivity { activity ->
             assertThat(activity.editorSession.userStyle.value[colorStyleSetting])
@@ -1597,10 +1629,11 @@
     @Suppress("NewApi", "Deprecation") // result.watchFaceId,  deprecation: userStyleSettings
     @Test
     public fun userStyleAndComplicationPreviewDataInEditorObserver() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                listOf(leftComplication, rightComplication)
+            )
 
         val editorObserver = TestEditorObserver()
         val observerId = EditorService.globalEditorService.registerObserver(editorObserver)
@@ -1616,10 +1649,10 @@
             activity.finish()
         }
 
-        val result = editorObserver.awaitEditorStateChange(
-            TIMEOUT_MILLIS,
-            TimeUnit.MILLISECONDS
-        ).asApiEditorState()
+        val result =
+            editorObserver
+                .awaitEditorStateChange(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                .asApiEditorState()
 
         assertThat(result.userStyle.userStyleMap[colorStyleSetting.id.value])
             .isEqualTo(blueStyleOption.id.value)
@@ -1635,23 +1668,25 @@
             .isEqualTo(gothicStyleOption.id.value)
 
         assertThat(result.previewComplicationsData.size).isEqualTo(2)
-        val leftComplicationData = result.previewComplicationsData[LEFT_COMPLICATION_ID] as
-            ShortTextComplicationData
+        val leftComplicationData =
+            result.previewComplicationsData[LEFT_COMPLICATION_ID] as ShortTextComplicationData
         assertThat(
-            leftComplicationData.text.getTextAt(
-                ApplicationProvider.getApplicationContext<Context>().resources,
-                Instant.EPOCH
+                leftComplicationData.text.getTextAt(
+                    ApplicationProvider.getApplicationContext<Context>().resources,
+                    Instant.EPOCH
+                )
             )
-        ).isEqualTo("Left")
+            .isEqualTo("Left")
 
-        val rightComplicationData = result.previewComplicationsData[RIGHT_COMPLICATION_ID] as
-            LongTextComplicationData
+        val rightComplicationData =
+            result.previewComplicationsData[RIGHT_COMPLICATION_ID] as LongTextComplicationData
         assertThat(
-            rightComplicationData.text.getTextAt(
-                ApplicationProvider.getApplicationContext<Context>().resources,
-                Instant.EPOCH
+                rightComplicationData.text.getTextAt(
+                    ApplicationProvider.getApplicationContext<Context>().resources,
+                    Instant.EPOCH
+                )
             )
-        ).isEqualTo("Right")
+            .isEqualTo("Right")
 
         EditorService.globalEditorService.unregisterObserver(observerId)
     }
@@ -1659,10 +1694,11 @@
     @Suppress("NewApi") // result.watchFaceId
     @Test
     public fun editorStatePreviewComplicationData_onlyContainsEnabledComplications() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(complicationsStyleSetting),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(complicationsStyleSetting),
+                listOf(leftComplication, rightComplication)
+            )
 
         val editorObserver = TestEditorObserver()
         val observerId = EditorService.globalEditorService.registerObserver(editorObserver)
@@ -1676,10 +1712,10 @@
             activity.finish()
         }
 
-        val result = editorObserver.awaitEditorStateChange(
-            TIMEOUT_MILLIS,
-            TimeUnit.MILLISECONDS
-        ).asApiEditorState()
+        val result =
+            editorObserver
+                .awaitEditorStateChange(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                .asApiEditorState()
 
         assertThat(result.previewComplicationsData.size).isEqualTo(1)
         assertThat(result.previewComplicationsData[RIGHT_COMPLICATION_ID]).isNotNull()
@@ -1689,11 +1725,12 @@
     @SuppressLint("NewApi") // result.watchFaceId
     @Test
     public fun emptyInstanceId() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            emptyList(),
-            watchFaceId = WatchFaceId("")
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                emptyList(),
+                watchFaceId = WatchFaceId("")
+            )
 
         val editorObserver = TestEditorObserver()
         val observerId = EditorService.globalEditorService.registerObserver(editorObserver)
@@ -1706,10 +1743,10 @@
             }
         }
 
-        val result = editorObserver.awaitEditorStateChange(
-            TIMEOUT_MILLIS,
-            TimeUnit.MILLISECONDS
-        ).asApiEditorState()
+        val result =
+            editorObserver
+                .awaitEditorStateChange(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                .asApiEditorState()
 
         // We need to return the same ID we were sent (or lack there of).
         assertThat(result.watchFaceId.id).isEmpty()
@@ -1720,11 +1757,12 @@
     @SuppressLint("NewApi") // result.watchFaceId
     @Test
     public fun invalidOldStyleInstanceId() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            emptyList(),
-            watchFaceId = WatchFaceId("instance-1")
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                emptyList(),
+                watchFaceId = WatchFaceId("instance-1")
+            )
 
         val editorObserver = TestEditorObserver()
         val observerId = EditorService.globalEditorService.registerObserver(editorObserver)
@@ -1737,10 +1775,10 @@
             }
         }
 
-        val result = editorObserver.awaitEditorStateChange(
-            TIMEOUT_MILLIS,
-            TimeUnit.MILLISECONDS
-        ).asApiEditorState()
+        val result =
+            editorObserver
+                .awaitEditorStateChange(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                .asApiEditorState()
 
         // We need to return the same ID we were sent.
         assertThat(result.watchFaceId.id).isEqualTo("instance-1")
@@ -1760,10 +1798,10 @@
             }
         }
 
-        val result = editorObserver.awaitEditorStateChange(
-            TIMEOUT_MILLIS,
-            TimeUnit.MILLISECONDS
-        ).asApiEditorState()
+        val result =
+            editorObserver
+                .awaitEditorStateChange(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                .asApiEditorState()
         assertThat(result.previewComplicationsData).isEmpty()
 
         EditorService.globalEditorService.unregisterObserver(observerId)
@@ -1772,18 +1810,17 @@
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun commit_headless() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            emptyList(),
-            headlessDeviceConfig = DeviceConfig(false, false, 0, 0),
-            watchComponentName = headlessWatchFaceComponentName
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                emptyList(),
+                headlessDeviceConfig = DeviceConfig(false, false, 0, 0),
+                watchComponentName = headlessWatchFaceComponentName
+            )
         val editorObserver = TestEditorObserver()
         val observerId = EditorService.globalEditorService.registerObserver(editorObserver)
         scenario.onActivity { activity ->
-            runBlocking {
-                activity.deferredDone.await()
-            }
+            runBlocking { activity.deferredDone.await() }
             assertThat(editorDelegate.userStyle[colorStyleSetting]!!.id.value)
                 .isEqualTo(redStyleOption.id.value)
             assertThat(editorDelegate.userStyle[watchHandStyleSetting]!!.id.value)
@@ -1807,10 +1844,10 @@
             activity.finish()
         }
 
-        val result = editorObserver.awaitEditorStateChange(
-            TIMEOUT_MILLIS,
-            TimeUnit.MILLISECONDS
-        ).asApiEditorState()
+        val result =
+            editorObserver
+                .awaitEditorStateChange(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                .asApiEditorState()
         assertThat(result.userStyle.userStyleMap[colorStyleSetting.id.value])
             .isEqualTo(blueStyleOption.id.value)
         assertThat(result.userStyle.userStyleMap[watchHandStyleSetting.id.value])
@@ -1825,22 +1862,19 @@
     @Suppress("Deprecation") // userStyleSettings
     @Test
     public fun commitWithPreviewImage() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            emptyList(),
-            headlessDeviceConfig = DeviceConfig(false, false, 0, 0),
-            watchComponentName = headlessWatchFaceComponentName,
-            previewScreenshotParams = PreviewScreenshotParams(
-                RenderParameters.DEFAULT_INTERACTIVE,
-                Instant.EPOCH
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                emptyList(),
+                headlessDeviceConfig = DeviceConfig(false, false, 0, 0),
+                watchComponentName = headlessWatchFaceComponentName,
+                previewScreenshotParams =
+                    PreviewScreenshotParams(RenderParameters.DEFAULT_INTERACTIVE, Instant.EPOCH)
             )
-        )
         val editorObserver = TestEditorObserver()
         val observerId = EditorService.globalEditorService.registerObserver(editorObserver)
         scenario.onActivity { activity ->
-            runBlocking {
-                activity.deferredDone.await()
-            }
+            runBlocking { activity.deferredDone.await() }
             // Select [blueStyleOption] and [gothicStyleOption].
             val mutableUserStyle = activity.editorSession.userStyle.value.toMutableUserStyle()
             for (userStyleSetting in activity.editorSession.userStyleSchema.userStyleSettings) {
@@ -1851,10 +1885,10 @@
             activity.finish()
         }
 
-        val result = editorObserver.awaitEditorStateChange(
-            TIMEOUT_MILLIS,
-            TimeUnit.MILLISECONDS
-        ).asApiEditorState()
+        val result =
+            editorObserver
+                .awaitEditorStateChange(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                .asApiEditorState()
 
         // previewImage is only supported from API 27 onwards.
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
@@ -1870,14 +1904,13 @@
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun doNotCommit() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            emptyList(),
-            previewScreenshotParams = PreviewScreenshotParams(
-                RenderParameters.DEFAULT_INTERACTIVE,
-                Instant.EPOCH
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                emptyList(),
+                previewScreenshotParams =
+                    PreviewScreenshotParams(RenderParameters.DEFAULT_INTERACTIVE, Instant.EPOCH)
             )
-        )
         val editorObserver = TestEditorObserver()
         val observerId = EditorService.globalEditorService.registerObserver(editorObserver)
         scenario.onActivity { activity ->
@@ -1899,10 +1932,10 @@
             activity.finish()
         }
 
-        val result = editorObserver.awaitEditorStateChange(
-            TIMEOUT_MILLIS,
-            TimeUnit.MILLISECONDS
-        ).asApiEditorState()
+        val result =
+            editorObserver
+                .awaitEditorStateChange(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                .asApiEditorState()
         assertThat(result.userStyle.userStyleMap[colorStyleSetting.id.value])
             .isEqualTo(blueStyleOption.id.value)
         assertThat(result.userStyle.userStyleMap[watchHandStyleSetting.id.value])
@@ -1923,11 +1956,12 @@
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun commitChanges_preRFlow() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            emptyList(),
-            preRFlow = true
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                emptyList(),
+                preRFlow = true
+            )
         val editorObserver = TestEditorObserver()
         val observerId = EditorService.globalEditorService.registerObserver(editorObserver)
         scenario.onActivity { activity ->
@@ -1947,10 +1981,10 @@
             activity.finish()
         }
 
-        val result = editorObserver.awaitEditorStateChange(
-            TIMEOUT_MILLIS,
-            TimeUnit.MILLISECONDS
-        ).asApiEditorState()
+        val result =
+            editorObserver
+                .awaitEditorStateChange(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                .asApiEditorState()
         assertThat(result.userStyle.userStyleMap[colorStyleSetting.id.value])
             .isEqualTo(blueStyleOption.id.value)
         assertThat(result.userStyle.userStyleMap[watchHandStyleSetting.id.value])
@@ -1970,17 +2004,19 @@
     @Test
     public fun watchFaceEditorContract_createIntent() {
         val testComponentName = ComponentName("test.package", "test.class")
-        val intent = WatchFaceEditorContract().createIntent(
-            ApplicationProvider.getApplicationContext<Context>(),
-            EditorRequest(
-                testComponentName,
-                testEditorPackageName,
-                null,
-                testInstanceId,
-                null,
-                null
-            )
-        )
+        val intent =
+            WatchFaceEditorContract()
+                .createIntent(
+                    ApplicationProvider.getApplicationContext<Context>(),
+                    EditorRequest(
+                        testComponentName,
+                        testEditorPackageName,
+                        null,
+                        testInstanceId,
+                        null,
+                        null
+                    )
+                )
         assertThat(intent.getPackage()).isEqualTo(testEditorPackageName)
 
         val editorRequest = EditorRequest.createFromIntent(intent)
@@ -1996,12 +2032,13 @@
         val complicationDataSourceInfoRetrieverProvider =
             TestComplicationDataSourceInfoRetrieverProvider(getProviderInfosLatch)
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            listOf(leftComplication, rightComplication),
-            complicationDataSourceInfoRetrieverProvider =
-                complicationDataSourceInfoRetrieverProvider
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                listOf(leftComplication, rightComplication),
+                complicationDataSourceInfoRetrieverProvider =
+                    complicationDataSourceInfoRetrieverProvider
+            )
 
         scenario.onActivity { activity ->
             activity.immediateCoroutineScope.launch {
@@ -2024,10 +2061,11 @@
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun forceCloseEditorSession() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                listOf(leftComplication, rightComplication)
+            )
 
         val editorObserver = TestEditorObserver()
         val observerId = EditorService.globalEditorService.registerObserver(editorObserver)
@@ -2059,10 +2097,11 @@
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun observedDeathForceClosesEditorSession() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                listOf(leftComplication, rightComplication)
+            )
 
         val editorObserver = Mockito.mock(IEditorObserver::class.java)
         val mockBinder = Mockito.mock(IBinder::class.java)
@@ -2102,24 +2141,28 @@
         val testComponentName = ComponentName("test.package", "test.class")
         OnWatchFaceEditingTestActivity.complicationDataSourceInfoRetrieverProvider =
             TestComplicationDataSourceInfoRetrieverProvider()
-        val session: ActivityScenario<OnWatchFaceEditingTestActivity> = ActivityScenario.launch(
-            WatchFaceEditorContract().createIntent(
-                ApplicationProvider.getApplicationContext<Context>(),
-                EditorRequest(
-                    testComponentName,
-                    testEditorPackageName,
-                    null,
-                    WatchFaceId("instanceId"),
-                    null,
-                    null
-                )
-            ).apply {
-                component = ComponentName(
-                    ApplicationProvider.getApplicationContext<Context>(),
-                    OnWatchFaceEditingTestActivity::class.java
-                )
-            }
-        )
+        val session: ActivityScenario<OnWatchFaceEditingTestActivity> =
+            ActivityScenario.launch(
+                WatchFaceEditorContract()
+                    .createIntent(
+                        ApplicationProvider.getApplicationContext<Context>(),
+                        EditorRequest(
+                            testComponentName,
+                            testEditorPackageName,
+                            null,
+                            WatchFaceId("instanceId"),
+                            null,
+                            null
+                        )
+                    )
+                    .apply {
+                        component =
+                            ComponentName(
+                                ApplicationProvider.getApplicationContext<Context>(),
+                                OnWatchFaceEditingTestActivity::class.java
+                            )
+                    }
+            )
 
         session.onActivity {
             // This shouldn't throw an exception.
@@ -2130,61 +2173,68 @@
     @Test
     public fun cancelDuring_updatePreviewData() {
         ComplicationDataSourceChooserContract.useTestComplicationHelperActivity = true
-        TestComplicationHelperActivity.resultIntent = CompletableDeferred(
-            Intent().apply {
-                putExtra(
-                    ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
-                    ComplicationDataSourceInfo(
-                        "TestDataSource3App",
-                        "TestDataSource3",
-                        Icon.createWithBitmap(
-                            Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
-                        ),
-                        ComplicationType.LONG_TEXT,
-                        dataSource3
-                    ).toWireComplicationProviderInfo()
-                )
-            }
-        )
+        TestComplicationHelperActivity.resultIntent =
+            CompletableDeferred(
+                Intent().apply {
+                    putExtra(
+                        ComplicationDataSourceChooserIntent.EXTRA_PROVIDER_INFO,
+                        ComplicationDataSourceInfo(
+                                "TestDataSource3App",
+                                "TestDataSource3",
+                                Icon.createWithBitmap(
+                                    Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
+                                ),
+                                ComplicationType.LONG_TEXT,
+                                dataSource3
+                            )
+                            .toWireComplicationProviderInfo()
+                    )
+                }
+            )
 
         lateinit var baseEditorSession: BaseEditorSession
         lateinit var complicationDataSourceInfoRetriever: ComplicationDataSourceInfoRetriever
         var requestPreviewComplicationDataCount = 0
-        val scenario = createOnWatchFaceEditingTestActivity(
-            emptyList(),
-            listOf(leftComplication, rightComplication),
-            complicationDataSourceInfoRetrieverProvider = object :
-                TestComplicationDataSourceInfoRetrieverProvider() {
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                emptyList(),
+                listOf(leftComplication, rightComplication),
+                complicationDataSourceInfoRetrieverProvider =
+                    object : TestComplicationDataSourceInfoRetrieverProvider() {
 
-                override fun getComplicationDataSourceInfoRetriever():
-                    ComplicationDataSourceInfoRetriever {
-                        complicationDataSourceInfoRetriever =
-                            super.getComplicationDataSourceInfoRetriever()
-                        return complicationDataSourceInfoRetriever
-                    }
+                        override fun getComplicationDataSourceInfoRetriever():
+                            ComplicationDataSourceInfoRetriever {
+                            complicationDataSourceInfoRetriever =
+                                super.getComplicationDataSourceInfoRetriever()
+                            return complicationDataSourceInfoRetriever
+                        }
 
-                override fun requestPreviewComplicationData(
-                    dataSourceComponent: ComponentName,
-                    complicationType: Int,
-                    previewComplicationDataCallback: IPreviewComplicationDataCallback
-                ): Boolean {
-                    // Force close the third time this is invoked in response to
-                    // openComplicationDataSourceChooser and a result being selected. The previous two
-                    // invocations where done to prime the map for getComplicationsPreviewData().
-                    if (++requestPreviewComplicationDataCount == 3) {
-                        baseEditorSession.forceClose()
-                    } else {
-                        previewComplicationDataCallback.updateComplicationData(
-                            ShortTextComplicationData.Builder(
-                                PlainComplicationText.Builder("TestData").build(),
-                                ComplicationText.EMPTY
-                            ).build().asWireComplicationData()
-                        )
+                        override fun requestPreviewComplicationData(
+                            dataSourceComponent: ComponentName,
+                            complicationType: Int,
+                            previewComplicationDataCallback: IPreviewComplicationDataCallback
+                        ): Boolean {
+                            // Force close the third time this is invoked in response to
+                            // openComplicationDataSourceChooser and a result being selected. The
+                            // previous two
+                            // invocations where done to prime the map for
+                            // getComplicationsPreviewData().
+                            if (++requestPreviewComplicationDataCount == 3) {
+                                baseEditorSession.forceClose()
+                            } else {
+                                previewComplicationDataCallback.updateComplicationData(
+                                    ShortTextComplicationData.Builder(
+                                            PlainComplicationText.Builder("TestData").build(),
+                                            ComplicationText.EMPTY
+                                        )
+                                        .build()
+                                        .asWireComplicationData()
+                                )
+                            }
+                            return true
+                        }
                     }
-                    return true
-                }
-            }
-        )
+            )
 
         scenario.onActivity { activity ->
             baseEditorSession = activity.editorSession as BaseEditorSession
@@ -2212,10 +2262,11 @@
 
     @Test
     public fun getComplicationsPreviewData() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                listOf(leftComplication, rightComplication)
+            )
 
         scenario.onActivity { activity ->
             runBlocking {
@@ -2226,31 +2277,34 @@
                 val leftComplicationData =
                     previewData[LEFT_COMPLICATION_ID] as ShortTextComplicationData
                 assertThat(
-                    leftComplicationData.text.getTextAt(
-                        ApplicationProvider.getApplicationContext<Context>().resources,
-                        Instant.EPOCH
+                        leftComplicationData.text.getTextAt(
+                            ApplicationProvider.getApplicationContext<Context>().resources,
+                            Instant.EPOCH
+                        )
                     )
-                ).isEqualTo("Left")
+                    .isEqualTo("Left")
 
                 assertThat(previewData[RIGHT_COMPLICATION_ID])
                     .isInstanceOf(LongTextComplicationData::class.java)
                 val rightComplicationData =
                     previewData[RIGHT_COMPLICATION_ID] as LongTextComplicationData
                 assertThat(
-                    rightComplicationData.text.getTextAt(
-                        ApplicationProvider.getApplicationContext<Context>().resources,
-                        Instant.EPOCH
+                        rightComplicationData.text.getTextAt(
+                            ApplicationProvider.getApplicationContext<Context>().resources,
+                            Instant.EPOCH
+                        )
                     )
-                ).isEqualTo("Right")
+                    .isEqualTo("Right")
             }
         }
     }
 
     public fun getComplicationsPreviewData_withEmptyBackgroundComplication() {
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            listOf(leftComplication, backgroundComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                listOf(leftComplication, backgroundComplication)
+            )
 
         scenario.onActivity { activity ->
             runBlocking {
@@ -2261,11 +2315,12 @@
                 val leftComplicationData =
                     previewData[LEFT_COMPLICATION_ID] as ShortTextComplicationData
                 assertThat(
-                    leftComplicationData.text.getTextAt(
-                        ApplicationProvider.getApplicationContext<Context>().resources,
-                        Instant.EPOCH
+                        leftComplicationData.text.getTextAt(
+                            ApplicationProvider.getApplicationContext<Context>().resources,
+                            Instant.EPOCH
+                        )
                     )
-                ).isEqualTo("Left")
+                    .isEqualTo("Left")
 
                 // TestComplicationDataSourceInfoRetrieverProvider isn't configured with a data
                 // source for the background complication which means it behaves as if it was an
@@ -2285,32 +2340,35 @@
         OnWatchFaceEditingTestActivity.complicationDataSourceInfoRetrieverProvider =
             TestComplicationDataSourceInfoRetrieverProvider()
 
-        val scenario: ActivityScenario<OnWatchFaceEditingTestActivity> = ActivityScenario.launch(
-            WatchFaceEditorContract().createIntent(
-                ApplicationProvider.getApplicationContext<Context>(),
-                EditorRequest(
-                    testComponentName,
-                    testEditorPackageName,
-                    null,
-                    watchFaceId,
-                    null,
-                    null
-                )
-            ).apply {
-                component = ComponentName(
-                    ApplicationProvider.getApplicationContext<Context>(),
-                    OnWatchFaceEditingTestActivity::class.java
-                )
-            }
-        )
+        val scenario: ActivityScenario<OnWatchFaceEditingTestActivity> =
+            ActivityScenario.launch(
+                WatchFaceEditorContract()
+                    .createIntent(
+                        ApplicationProvider.getApplicationContext<Context>(),
+                        EditorRequest(
+                            testComponentName,
+                            testEditorPackageName,
+                            null,
+                            watchFaceId,
+                            null,
+                            null
+                        )
+                    )
+                    .apply {
+                        component =
+                            ComponentName(
+                                ApplicationProvider.getApplicationContext<Context>(),
+                                OnWatchFaceEditingTestActivity::class.java
+                            )
+                    }
+            )
 
         scenario.onActivity { activity ->
             val mockWatchFaceHostApi = mock(WatchFaceHostApi::class.java)
             val handler = Handler(Looper.myLooper()!!)
             `when`(mockWatchFaceHostApi.getUiThreadHandler()).thenReturn(handler)
-            `when`(mockWatchFaceHostApi.getContext()).thenReturn(
-                ApplicationProvider.getApplicationContext<Context>()
-            )
+            `when`(mockWatchFaceHostApi.getContext())
+                .thenReturn(ApplicationProvider.getApplicationContext<Context>())
             val watchState = MutableWatchState().asWatchState()
             val currentUserStyleRepository =
                 CurrentUserStyleRepository(UserStyleSchema(emptyList()))
@@ -2326,12 +2384,14 @@
                 WatchFace(
                     WatchFaceType.DIGITAL,
                     @Suppress("deprecation")
-                    object : Renderer.CanvasRenderer(
-                        mockSurfaceHolder,
-                        currentUserStyleRepository,
-                        watchState, CanvasType.SOFTWARE,
-                        16
-                    ) {
+                    object :
+                        Renderer.CanvasRenderer(
+                            mockSurfaceHolder,
+                            currentUserStyleRepository,
+                            watchState,
+                            CanvasType.SOFTWARE,
+                            16
+                        ) {
                         override fun render(
                             canvas: Canvas,
                             bounds: Rect,
@@ -2342,8 +2402,7 @@
                             canvas: Canvas,
                             bounds: Rect,
                             zonedDateTime: ZonedDateTime
-                        ) {
-                        }
+                        ) {}
                     }
                 ),
                 mockWatchFaceHostApi,
@@ -2362,11 +2421,12 @@
             )
 
             assertThat(activity.onCreateException).isInstanceOf(IllegalStateException::class.java)
-            assertThat(activity.onCreateException.message).isEqualTo(
-                "Expected ComponentInfo{test.package/test.class} to be created but " +
-                    "got ComponentInfo{androidx.wear.watchface.editor.test/" +
-                    "android.app.Application}"
-            )
+            assertThat(activity.onCreateException.message)
+                .isEqualTo(
+                    "Expected ComponentInfo{test.package/test.class} to be created but " +
+                        "got ComponentInfo{androidx.wear.watchface.editor.test/" +
+                        "android.app.Application}"
+                )
         }
     }
 
@@ -2376,21 +2436,22 @@
         val mockPackageManager = Mockito.mock(PackageManager::class.java)
 
         `when`(
-            mockPackageManager.getServiceInfo(
-                ComponentName("test.package", EditorRequest.WATCHFACE_CONTROL_SERVICE),
-                PackageManager.GET_META_DATA
+                mockPackageManager.getServiceInfo(
+                    ComponentName("test.package", EditorRequest.WATCHFACE_CONTROL_SERVICE),
+                    PackageManager.GET_META_DATA
+                )
             )
-        ).thenReturn(
-            ServiceInfo().apply {
-                metaData = Bundle().apply {
-                    putInt(EditorRequest.ANDROIDX_WATCHFACE_API_VERSION, 4)
+            .thenReturn(
+                ServiceInfo().apply {
+                    metaData =
+                        Bundle().apply { putInt(EditorRequest.ANDROIDX_WATCHFACE_API_VERSION, 4) }
                 }
-            }
-        )
+            )
 
         assertThat(
-            EditorRequest.supportsWatchFaceHeadlessEditing(mockPackageManager, "test.package")
-        ).isTrue()
+                EditorRequest.supportsWatchFaceHeadlessEditing(mockPackageManager, "test.package")
+            )
+            .isTrue()
     }
 
     @Test
@@ -2399,21 +2460,22 @@
         val mockPackageManager = Mockito.mock(PackageManager::class.java)
 
         `when`(
-            mockPackageManager.getServiceInfo(
-                ComponentName("test.package", EditorRequest.WATCHFACE_CONTROL_SERVICE),
-                PackageManager.GET_META_DATA
+                mockPackageManager.getServiceInfo(
+                    ComponentName("test.package", EditorRequest.WATCHFACE_CONTROL_SERVICE),
+                    PackageManager.GET_META_DATA
+                )
             )
-        ).thenReturn(
-            ServiceInfo().apply {
-                metaData = Bundle().apply {
-                    putInt(EditorRequest.ANDROIDX_WATCHFACE_API_VERSION, 3)
+            .thenReturn(
+                ServiceInfo().apply {
+                    metaData =
+                        Bundle().apply { putInt(EditorRequest.ANDROIDX_WATCHFACE_API_VERSION, 3) }
                 }
-            }
-        )
+            )
 
         assertThat(
-            EditorRequest.supportsWatchFaceHeadlessEditing(mockPackageManager, "test.package")
-        ).isFalse()
+                EditorRequest.supportsWatchFaceHeadlessEditing(mockPackageManager, "test.package")
+            )
+            .isFalse()
     }
 
     @Test
@@ -2421,19 +2483,21 @@
         val redOption = ListOption(Option.Id("red"), "Red", "Red", icon = null)
         val greenOption = ListOption(Option.Id("green"), "Green", "Green", icon = null)
         val colorStyleList = listOf(redOption, greenOption)
-        val watchColorSetting = UserStyleSetting.ListUserStyleSetting(
-            UserStyleSetting.Id("color_id"),
-            "Color",
-            "Watch face color", /* icon = */
-            null,
-            colorStyleList,
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-        )
+        val watchColorSetting =
+            UserStyleSetting.ListUserStyleSetting(
+                UserStyleSetting.Id("color_id"),
+                "Color",
+                "Watch face color",
+                /* icon = */ null,
+                colorStyleList,
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+            )
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                listOf(leftComplication, rightComplication)
+            )
 
         scenario.onActivity { activity ->
             try {
@@ -2454,19 +2518,21 @@
         val redOption = ListOption(Option.Id("red"), "Red", "Red", icon = null)
         val greenOption = ListOption(Option.Id("green"), "Green", "Green", icon = null)
         val colorStyleList = listOf(redOption, greenOption)
-        val watchColorSetting = UserStyleSetting.ListUserStyleSetting(
-            UserStyleSetting.Id("color_id"),
-            "Color",
-            "Watch face color", /* icon = */
-            null,
-            colorStyleList,
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-        )
+        val watchColorSetting =
+            UserStyleSetting.ListUserStyleSetting(
+                UserStyleSetting.Id("color_id"),
+                "Color",
+                "Watch face color",
+                /* icon = */ null,
+                colorStyleList,
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+            )
 
-        val scenario = createOnWatchFaceEditingTestActivity(
-            listOf(colorStyleSetting, watchHandStyleSetting),
-            listOf(leftComplication, rightComplication)
-        )
+        val scenario =
+            createOnWatchFaceEditingTestActivity(
+                listOf(colorStyleSetting, watchHandStyleSetting),
+                listOf(leftComplication, rightComplication)
+            )
 
         scenario.onActivity { activity ->
             try {
@@ -2489,15 +2555,16 @@
 internal fun assertEquals(
     expected: ComplicationDataSourceInfo?,
     actual: ComplicationDataSourceInfo?
-) = when (expected) {
-    null -> assertThat(actual).isNull()
-    else -> {
-        assertThat(actual).isNotNull()
-        checkNotNull(actual)
-        assertThat(actual.appName).isEqualTo(expected.appName)
-        assertThat(actual.name).isEqualTo(expected.name)
-        // Check the type as a proxy for it being the same icon.
-        assertThat(actual.icon.type).isEqualTo(expected.icon.type)
-        assertThat(actual.componentName).isEqualTo(expected.componentName)
+) =
+    when (expected) {
+        null -> assertThat(actual).isNull()
+        else -> {
+            assertThat(actual).isNotNull()
+            checkNotNull(actual)
+            assertThat(actual.appName).isEqualTo(expected.appName)
+            assertThat(actual.name).isEqualTo(expected.name)
+            // Check the type as a proxy for it being the same icon.
+            assertThat(actual.icon.type).isEqualTo(expected.icon.type)
+            assertThat(actual.componentName).isEqualTo(expected.componentName)
+        }
     }
-}
diff --git a/wear/watchface/watchface-editor/src/main/java/androidx/wear/watchface/editor/EditorSession.kt b/wear/watchface/watchface-editor/src/main/java/androidx/wear/watchface/editor/EditorSession.kt
index bd12e2f..e7d4961 100644
--- a/wear/watchface/watchface-editor/src/main/java/androidx/wear/watchface/editor/EditorSession.kt
+++ b/wear/watchface/watchface-editor/src/main/java/androidx/wear/watchface/editor/EditorSession.kt
@@ -38,15 +38,8 @@
 import androidx.lifecycle.DefaultLifecycleObserver
 import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.lifecycleScope
-import androidx.wear.watchface.complications.ComplicationDataSourceInfo
-import androidx.wear.watchface.complications.ComplicationDataSourceInfoRetriever
-import androidx.wear.watchface.complications.data.ComplicationData
-import androidx.wear.watchface.complications.data.EmptyComplicationData
-import androidx.wear.watchface.complications.toApiComplicationDataSourceInfo
-import androidx.wear.watchface.utility.AsyncTraceEvent
-import androidx.wear.watchface.utility.TraceEvent
-import androidx.wear.watchface.utility.launchWithTracing
 import androidx.wear.watchface.ComplicationHelperActivity
+import androidx.wear.watchface.ComplicationSlotBoundsType
 import androidx.wear.watchface.DrawMode
 import androidx.wear.watchface.RenderParameters
 import androidx.wear.watchface.WatchFace
@@ -56,15 +49,26 @@
 import androidx.wear.watchface.client.EditorState
 import androidx.wear.watchface.client.HeadlessWatchFaceClient
 import androidx.wear.watchface.client.WatchFaceId
-import androidx.wear.watchface.control.data.HeadlessWatchFaceInstanceParams
-import androidx.wear.watchface.ComplicationSlotBoundsType
+import androidx.wear.watchface.complications.ComplicationDataSourceInfo
+import androidx.wear.watchface.complications.ComplicationDataSourceInfoRetriever
+import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.complications.data.ComplicationExperimental
+import androidx.wear.watchface.complications.data.EmptyComplicationData
+import androidx.wear.watchface.complications.toApiComplicationDataSourceInfo
+import androidx.wear.watchface.control.data.HeadlessWatchFaceInstanceParams
 import androidx.wear.watchface.data.IdAndComplicationDataWireFormat
 import androidx.wear.watchface.editor.data.EditorStateWireFormat
 import androidx.wear.watchface.sanitizeWatchFaceId
 import androidx.wear.watchface.style.UserStyle
 import androidx.wear.watchface.style.UserStyleData
 import androidx.wear.watchface.style.UserStyleSchema
+import androidx.wear.watchface.utility.AsyncTraceEvent
+import androidx.wear.watchface.utility.TraceEvent
+import androidx.wear.watchface.utility.launchWithTracing
+import java.lang.reflect.Proxy
+import java.time.Duration
+import java.time.Instant
+import kotlin.coroutines.resume
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
@@ -80,10 +84,6 @@
 import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlinx.coroutines.withContext
 import kotlinx.coroutines.withTimeout
-import java.lang.reflect.Proxy
-import java.time.Duration
-import java.time.Instant
-import kotlin.coroutines.resume
 
 private const val TAG = "EditorSession"
 
@@ -95,11 +95,11 @@
  * registered via [EditorServiceClient.addListener].
  *
  * For EditorSessions backed by a headless instance (see [createHeadlessEditorSession] and
- * [EditorRequest.headlessDeviceConfig]), style changes are not applied to the interactive
- * instance and it's up to the system to apply them. For EditorSessions backed by an interactive
- * instance style changes are applied immediately. Its possible the system might fail to persist
- * the style changes (e.g. to data base write failure or a crash) and if this happens it's the
- * responsibility of the system to revert the style change.
+ * [EditorRequest.headlessDeviceConfig]), style changes are not applied to the interactive instance
+ * and it's up to the system to apply them. For EditorSessions backed by an interactive instance
+ * style changes are applied immediately. Its possible the system might fail to persist the style
+ * changes (e.g. to data base write failure or a crash) and if this happens it's the responsibility
+ * of the system to revert the style change.
  */
 public interface EditorSession : AutoCloseable {
     /** The [ComponentName] of the watch face being edited. */
@@ -115,8 +115,8 @@
      * The current [UserStyle]. Assigning to this will cause the style to update. However, styling
      * changes to the watch face will be reverted upon exit.
      *
-     * If accessed from java, consider using
-     * [androidx.lifecycle.FlowLiveDataConversions.asLiveData] to observe changes.
+     * If accessed from java, consider using [androidx.lifecycle.FlowLiveDataConversions.asLiveData]
+     * to observe changes.
      */
     public val userStyle: MutableStateFlow<UserStyle>
 
@@ -130,8 +130,8 @@
      * A [Flow] of a Map of complication slot ids to [ComplicationSlotState] for each complication
      * slot.
      *
-     * If accessed from java, consider using
-     * [androidx.lifecycle.FlowLiveDataConversions.asLiveData] to observe changes.
+     * If accessed from java, consider using [androidx.lifecycle.FlowLiveDataConversions.asLiveData]
+     * to observe changes.
      */
     public val complicationSlotsState: StateFlow<Map<Int, ComplicationSlotState>>
 
@@ -164,16 +164,16 @@
      * Note if a slot is configured to be empty then the map will contain an instance of
      * [EmptyComplicationData] for that slot. Disabled complicationSlots are included in the map.
      *
-     * If accessed from java, consider using
-     * [androidx.lifecycle.FlowLiveDataConversions.asLiveData] to observe changes.
+     * If accessed from java, consider using [androidx.lifecycle.FlowLiveDataConversions.asLiveData]
+     * to observe changes.
      */
     public val complicationsPreviewData: StateFlow<Map<Int, ComplicationData>>
 
     /**
      * Returns a flow of maps of [androidx.wear.watchface.ComplicationSlot] ids to
-     * [ComplicationDataSourceInfo] that represent the information available about the data
-     * source for each complication. This data is fetched asynchronously and the map will initially
-     * be empty. For watch faces without complications this will always be empty.
+     * [ComplicationDataSourceInfo] that represent the information available about the data source
+     * for each complication. This data is fetched asynchronously and the map will initially be
+     * empty. For watch faces without complications this will always be empty.
      *
      * Note new data may be pushed as result of running [openComplicationDataSourceChooser].
      *
@@ -184,13 +184,12 @@
     public val complicationsDataSourceInfo: StateFlow<Map<Int, ComplicationDataSourceInfo?>>
 
     /** The ID of the background complication or `null` if there isn't one. */
-    @get:SuppressWarnings("AutoBoxing")
-    public val backgroundComplicationSlotId: Int?
+    @get:SuppressWarnings("AutoBoxing") public val backgroundComplicationSlotId: Int?
 
     /**
      * Returns the ID of the complication at the given coordinates or `null` if there isn't one.
-     * Only [androidx.wear.watchface.ComplicationSlot]s with
-     * [ComplicationSlotBoundsType.ROUND_RECT] are supported by this function.
+     * Only [androidx.wear.watchface.ComplicationSlot]s with [ComplicationSlotBoundsType.ROUND_RECT]
+     * are supported by this function.
      */
     @SuppressWarnings("AutoBoxing")
     @UiThread
@@ -202,7 +201,7 @@
      * @param renderParameters The [RenderParameters] to render with. Must be [DrawMode.INTERACTIVE]
      * @param instant The [Instant] to render with
      * @param slotIdToComplicationData The [ComplicationData] for each
-     * [androidx.wear.watchface.ComplicationSlot] to render with
+     *   [androidx.wear.watchface.ComplicationSlot] to render with
      */
     @UiThread
     public fun renderWatchFaceToBitmap(
@@ -215,26 +214,25 @@
      * Opens the complication data source chooser and returns the chosen complication data source
      * for the specified [androidx.wear.watchface.ComplicationSlot].
      *
-     * The result returns `null` if the operation was cancelled and otherwise returned an
-     * instance of [ChosenComplicationDataSource] that contains information about the chosen
-     * data source.
+     * The result returns `null` if the operation was cancelled and otherwise returned an instance
+     * of [ChosenComplicationDataSource] that contains information about the chosen data source.
      *
      * @param complicationSlotId The id of the [androidx.wear.watchface.ComplicationSlot] to select
-     * a complication data source for.
+     *   a complication data source for.
      * @throws IllegalStateException if a previous invocation of openComplicationDataSourceChooser
-     * is still running when openComplicationDataSourceChooser is called.
+     *   is still running when openComplicationDataSourceChooser is called.
      */
     @UiThread
-    public suspend fun openComplicationDataSourceChooser(complicationSlotId: Int):
-        ChosenComplicationDataSource?
+    public suspend fun openComplicationDataSourceChooser(
+        complicationSlotId: Int
+    ): ChosenComplicationDataSource?
 
     public companion object {
         /**
          * If passed [renderWatchFaceToBitmap] this will signal that the watch face's default
          * preview time should be used.
          */
-        @JvmField
-        val DEFAULT_PREVIEW_INSTANT: Instant = Instant.ofEpochMilli(-1L)
+        @JvmField val DEFAULT_PREVIEW_INSTANT: Instant = Instant.ofEpochMilli(-1L)
 
         /**
          * Constructs an [EditorSession] for an on watch face editor. This registers an activity
@@ -244,9 +242,9 @@
          *
          * @param activity The [ComponentActivity] associated with the [EditorSession].
          * @return Deferred<EditorSession?> which is resolved with either the [EditorSession] or
-         * `null` if it can't be constructed.
-         * @throws [TimeoutCancellationException] if it takes longer than
-         * [EDITING_SESSION_TIMEOUT] to create a watch face editor.
+         *   `null` if it can't be constructed.
+         * @throws [TimeoutCancellationException] if it takes longer than [EDITING_SESSION_TIMEOUT]
+         *   to create a watch face editor.
          */
         @JvmStatic
         @UiThread
@@ -268,14 +266,15 @@
                     }
                 )
             }
-            editorSession = createOnWatchEditorSessionImpl(
-                activity,
-                activity.intent,
-                object : ComplicationDataSourceInfoRetrieverProvider {
-                    override fun getComplicationDataSourceInfoRetriever() =
-                        ComplicationDataSourceInfoRetriever(activity)
-                }
-            )
+            editorSession =
+                createOnWatchEditorSessionImpl(
+                    activity,
+                    activity.intent,
+                    object : ComplicationDataSourceInfoRetrieverProvider {
+                        override fun getComplicationDataSourceInfoRetriever() =
+                            ComplicationDataSourceInfoRetriever(activity)
+                    }
+                )
             return editorSession!!
         }
 
@@ -286,65 +285,66 @@
             activity: ComponentActivity,
             editIntent: Intent,
             complicationDataSourceInfoRetrieverProvider: ComplicationDataSourceInfoRetrieverProvider
-        ): EditorSession = TraceEvent(
-            "EditorSession.createOnWatchEditorSessionAsyncImpl"
-        ).use {
-            try {
-                val editorRequest = editIntent.getParcelableExtra<ComponentName>(
-                    Constants.EXTRA_WATCH_FACE_COMPONENT
-                )?.let {
-                    EditorRequest(it, "", null)
-                } ?: EditorRequest.createFromIntent(editIntent)
-                Log.d(
-                    TAG,
-                    "createOnWatchEditorSession ${editorRequest.watchFaceComponentName} " +
-                        "${editorRequest.watchFaceId}"
-                )
-                // We need to respect the lifecycle and register the ActivityResultListener now.
-                val session = OnWatchFaceEditorSessionImpl(
-                    activity,
-                    editorRequest.watchFaceComponentName,
-                    editorRequest.watchFaceId,
-                    editorRequest.initialUserStyle,
-                    complicationDataSourceInfoRetrieverProvider,
-                    activity.lifecycleScope,
-                    editorRequest.previewScreenshotParams
-                )
-                // But full initialization has to be deferred because
-                // [WatchFace.getOrCreateEditorDelegate] is async.
-                // Resolve only after init has been completed.
-                withContext(activity.lifecycleScope.coroutineContext) {
-                    withTimeout(EDITING_SESSION_TIMEOUT.toMillis()) {
-                        session.setEditorDelegate(
-                            // Either create a delegate for a new headless client or await an
-                            // interactive one.
-                            if (editorRequest.headlessDeviceConfig != null) {
-                                WatchFace.createHeadlessSessionDelegate(
-                                    editorRequest.watchFaceComponentName,
-                                    HeadlessWatchFaceInstanceParams(
-                                        editorRequest.watchFaceComponentName,
-                                        editorRequest.headlessDeviceConfig.asWireDeviceConfig(),
-                                        activity.resources.displayMetrics.widthPixels,
-                                        activity.resources.displayMetrics.heightPixels,
-                                        editorRequest.watchFaceId.id
-                                    ),
-                                    activity
-                                )
-                            } else {
-                                WatchFace.getOrCreateEditorDelegate(
-                                    editorRequest.watchFaceComponentName
-                                ).await()
-                            }
+        ): EditorSession =
+            TraceEvent("EditorSession.createOnWatchEditorSessionAsyncImpl").use {
+                try {
+                    val editorRequest =
+                        editIntent
+                            .getParcelableExtra<ComponentName>(Constants.EXTRA_WATCH_FACE_COMPONENT)
+                            ?.let { EditorRequest(it, "", null) }
+                            ?: EditorRequest.createFromIntent(editIntent)
+                    Log.d(
+                        TAG,
+                        "createOnWatchEditorSession ${editorRequest.watchFaceComponentName} " +
+                            "${editorRequest.watchFaceId}"
+                    )
+                    // We need to respect the lifecycle and register the ActivityResultListener now.
+                    val session =
+                        OnWatchFaceEditorSessionImpl(
+                            activity,
+                            editorRequest.watchFaceComponentName,
+                            editorRequest.watchFaceId,
+                            editorRequest.initialUserStyle,
+                            complicationDataSourceInfoRetrieverProvider,
+                            activity.lifecycleScope,
+                            editorRequest.previewScreenshotParams
                         )
-                        // Resolve only after init has been completed.
-                        session
+                    // But full initialization has to be deferred because
+                    // [WatchFace.getOrCreateEditorDelegate] is async.
+                    // Resolve only after init has been completed.
+                    withContext(activity.lifecycleScope.coroutineContext) {
+                        withTimeout(EDITING_SESSION_TIMEOUT.toMillis()) {
+                            session.setEditorDelegate(
+                                // Either create a delegate for a new headless client or await an
+                                // interactive one.
+                                if (editorRequest.headlessDeviceConfig != null) {
+                                    WatchFace.createHeadlessSessionDelegate(
+                                        editorRequest.watchFaceComponentName,
+                                        HeadlessWatchFaceInstanceParams(
+                                            editorRequest.watchFaceComponentName,
+                                            editorRequest.headlessDeviceConfig.asWireDeviceConfig(),
+                                            activity.resources.displayMetrics.widthPixels,
+                                            activity.resources.displayMetrics.heightPixels,
+                                            editorRequest.watchFaceId.id
+                                        ),
+                                        activity
+                                    )
+                                } else {
+                                    WatchFace.getOrCreateEditorDelegate(
+                                            editorRequest.watchFaceComponentName
+                                        )
+                                        .await()
+                                }
+                            )
+                            // Resolve only after init has been completed.
+                            session
+                        }
                     }
+                } catch (e: Exception) {
+                    Log.e(TAG, "createOnWatchEditorSessionImpl failed", e)
+                    throw e
                 }
-            } catch (e: Exception) {
-                Log.e(TAG, "createOnWatchEditorSessionImpl failed", e)
-                throw e
             }
-        }
 
         /**
          * Constructs an [EditorSession] for a remote watch face editor.
@@ -361,33 +361,33 @@
             activity: ComponentActivity,
             editIntent: Intent,
             headlessWatchFaceClient: HeadlessWatchFaceClient
-        ): EditorSession = TraceEvent("EditorSession.createHeadlessEditorSession").use {
-            EditorRequest.createFromIntent(editIntent).let {
-                Log.d(
-                    TAG,
-                    "createHeadlessEditorSession ${it.watchFaceComponentName} ${it.watchFaceId}"
-                )
-                HeadlessEditorSession(
-                    activity,
-                    headlessWatchFaceClient,
-                    it.watchFaceComponentName,
-                    it.watchFaceId,
-                    it.initialUserStyle!!,
-                    object : ComplicationDataSourceInfoRetrieverProvider {
-                        override fun getComplicationDataSourceInfoRetriever() =
-                            ComplicationDataSourceInfoRetriever(activity)
-                    },
-                    CoroutineScope(
-                        Handler(Looper.getMainLooper()).asCoroutineDispatcher().immediate
-                    ),
-                    it.previewScreenshotParams
-                )
+        ): EditorSession =
+            TraceEvent("EditorSession.createHeadlessEditorSession").use {
+                EditorRequest.createFromIntent(editIntent).let {
+                    Log.d(
+                        TAG,
+                        "createHeadlessEditorSession ${it.watchFaceComponentName} ${it.watchFaceId}"
+                    )
+                    HeadlessEditorSession(
+                        activity,
+                        headlessWatchFaceClient,
+                        it.watchFaceComponentName,
+                        it.watchFaceId,
+                        it.initialUserStyle!!,
+                        object : ComplicationDataSourceInfoRetrieverProvider {
+                            override fun getComplicationDataSourceInfoRetriever() =
+                                ComplicationDataSourceInfoRetriever(activity)
+                        },
+                        CoroutineScope(
+                            Handler(Looper.getMainLooper()).asCoroutineDispatcher().immediate
+                        ),
+                        it.previewScreenshotParams
+                    )
+                }
             }
-        }
 
         /** Timeout allowed for waiting for creating the watch face editing session. */
-        @JvmField
-        public val EDITING_SESSION_TIMEOUT: Duration = Duration.ofSeconds(4)
+        @JvmField public val EDITING_SESSION_TIMEOUT: Duration = Duration.ofSeconds(4)
     }
 }
 
@@ -398,7 +398,7 @@
  *
  * @param complicationSlotId The ID of the complication slot that was configured.
  * @param complicationDataSourceInfo The complication data source that was chosen for this slot, or
- * `null` if the empty complication source was was chosen.
+ *   `null` if the empty complication source was was chosen.
  * @param extras Any additional extras returned by the complication data source chooser.
  */
 public class ChosenComplicationDataSource(
@@ -415,14 +415,13 @@
     fun getComplicationDataSourceInfoRetriever(): ComplicationDataSourceInfoRetriever
 }
 
-/**
- * @hide
- */
+/** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-public abstract class BaseEditorSession internal constructor(
+public abstract class BaseEditorSession
+internal constructor(
     private var activity: ComponentActivity?,
     private var complicationDataSourceInfoRetrieverProvider:
-    ComplicationDataSourceInfoRetrieverProvider?,
+        ComplicationDataSourceInfoRetrieverProvider?,
     public val coroutineScope: CoroutineScope,
     private val previewScreenshotParams: PreviewScreenshotParams?,
     internal val watchFaceIdInternal: WatchFaceId
@@ -431,15 +430,15 @@
     protected var forceClosed: Boolean = false
 
     private val editorSessionTraceEvent = AsyncTraceEvent("EditorSession")
-    private val closeCallback = object : EditorService.CloseCallback() {
-        override fun onClose() {
-            // onClose could be called on any thread but forceClose needs to be called from the UI
-            // thread.
-            coroutineScope.launch {
-                forceClose()
+    private val closeCallback =
+        object : EditorService.CloseCallback() {
+            override fun onClose() {
+                // onClose could be called on any thread but forceClose needs to be called from the
+                // UI
+                // thread.
+                coroutineScope.launch { forceClose() }
             }
         }
-    }
 
     override val watchFaceId = WatchFaceId(sanitizeWatchFaceId(watchFaceIdInternal.id))
 
@@ -468,7 +467,8 @@
 
     /** Pending result for ComplicationDataSourceChooserRequest. */
     internal var pendingComplicationDataSourceChooserResult:
-        CompletableDeferred<ComplicationDataSourceChooserResult?>? = null
+        CompletableDeferred<ComplicationDataSourceChooserResult?>? =
+        null
 
     private var chooseComplicationDataSource:
         ActivityResultLauncher<ComplicationDataSourceChooserRequest>? =
@@ -495,127 +495,133 @@
         complicationDataSourceChooserResult: ComplicationDataSourceChooserResult?
     ) {
         synchronized(this) {
-            val deferredResult = pendingComplicationDataSourceChooserResult
-            if (deferredResult == null) {
-                Log.w(
-                    TAG,
-                    "Ignoring onComplicationDataSourceChooserResult due to null " +
-                        "pendingComplicationDataSourceChooserResult"
-                )
-                return
+                val deferredResult = pendingComplicationDataSourceChooserResult
+                if (deferredResult == null) {
+                    Log.w(
+                        TAG,
+                        "Ignoring onComplicationDataSourceChooserResult due to null " +
+                            "pendingComplicationDataSourceChooserResult"
+                    )
+                    return
+                }
+                Log.d(TAG, "onComplicationDataSourceChooserResult")
+                pendingComplicationDataSourceChooserResult = null
+                deferredResult
             }
-            Log.d(TAG, "onComplicationDataSourceChooserResult")
-            pendingComplicationDataSourceChooserResult = null
-            deferredResult
-        }.complete(complicationDataSourceChooserResult)
+            .complete(complicationDataSourceChooserResult)
     }
 
     override suspend fun openComplicationDataSourceChooser(
         complicationSlotId: Int
-    ): ChosenComplicationDataSource? = TraceEvent(
-        "BaseEditorSession.openComplicationDataSourceChooser $complicationSlotId"
-    ).use {
-        Log.d(TAG, "openComplicationDataSourceChooser")
-        requireNotClosed()
-        require(
-            !complicationSlotsState.value[complicationSlotId]!!
-                .fixedComplicationDataSource
-        ) {
-            "Can't configure fixed complication ID $complicationSlotId"
-        }
-
-        val deferredResult = CompletableDeferred<ComplicationDataSourceChooserResult?>()
-
-        synchronized(this) {
-            // The ComplicationDataSourceChooser is modal so it doesn't make sense to allow
-            // concurrent invocations so bail out if there's a pending result.
-            if (pendingComplicationDataSourceChooserResult != null) {
-                throw IllegalStateException(
-                    "Concurrent openComplicationDataSourceChooser invocation is not supported"
-                )
+    ): ChosenComplicationDataSource? =
+        TraceEvent("BaseEditorSession.openComplicationDataSourceChooser $complicationSlotId").use {
+            Log.d(TAG, "openComplicationDataSourceChooser")
+            requireNotClosed()
+            require(
+                !complicationSlotsState.value[complicationSlotId]!!.fixedComplicationDataSource
+            ) {
+                "Can't configure fixed complication ID $complicationSlotId"
             }
-            pendingComplicationDataSourceChooserResult = deferredResult
 
-            chooseComplicationDataSource!!.launch(
-                ComplicationDataSourceChooserRequest(
-                    this,
-                    complicationSlotId,
-                    watchFaceIdInternal.id,
-                    showComplicationDeniedDialogIntent,
-                    showComplicationRationaleDialogIntent
-                )
-            )
-        }
+            val deferredResult = CompletableDeferred<ComplicationDataSourceChooserResult?>()
 
-        val complicationDataSourceChooserResult = try {
-            deferredResult.await()
-        } finally {
             synchronized(this) {
-                pendingComplicationDataSourceChooserResult = null
+                // The ComplicationDataSourceChooser is modal so it doesn't make sense to allow
+                // concurrent invocations so bail out if there's a pending result.
+                if (pendingComplicationDataSourceChooserResult != null) {
+                    throw IllegalStateException(
+                        "Concurrent openComplicationDataSourceChooser invocation is not supported"
+                    )
+                }
+                pendingComplicationDataSourceChooserResult = deferredResult
+
+                chooseComplicationDataSource!!.launch(
+                    ComplicationDataSourceChooserRequest(
+                        this,
+                        complicationSlotId,
+                        watchFaceIdInternal.id,
+                        showComplicationDeniedDialogIntent,
+                        showComplicationRationaleDialogIntent
+                    )
+                )
+            }
+
+            val complicationDataSourceChooserResult =
+                try {
+                    deferredResult.await()
+                } finally {
+                    synchronized(this) { pendingComplicationDataSourceChooserResult = null }
+                }
+
+            // If deferredResult was null then the user canceled so return null.
+            if (complicationDataSourceChooserResult == null) {
+                return null
+            }
+
+            val complicationDataSourceInfoRetriever =
+                complicationDataSourceInfoRetrieverProvider!!
+                    .getComplicationDataSourceInfoRetriever()
+
+            try {
+                deferredComplicationPreviewDataAvailable.await()
+
+                // Emit an updated complicationsDataSourceInfoMap.
+                complicationsDataSourceInfo.value =
+                    HashMap(complicationsDataSourceInfo.value).apply {
+                        this[complicationSlotId] =
+                            complicationDataSourceChooserResult.dataSourceInfo
+                    }
+
+                val previewData =
+                    getPreviewData(
+                        complicationDataSourceInfoRetriever,
+                        complicationDataSourceChooserResult.dataSourceInfo
+                    )
+
+                // Emit an updated complicationPreviewDataMap.
+                complicationsPreviewData.value =
+                    HashMap(complicationsPreviewData.value).apply {
+                        this[complicationSlotId] = previewData ?: EmptyComplicationData()
+                    }
+
+                return ChosenComplicationDataSource(
+                    complicationSlotId,
+                    complicationDataSourceChooserResult.dataSourceInfo,
+                    complicationDataSourceChooserResult.extras,
+                )
+            } finally {
+                // This gets called after the above coroutine has finished.
+                complicationDataSourceInfoRetriever.close()
+
+                // Changing a complication data source could result in the type and therefore the
+                // bounds
+                // changing. This needs to be done after updating the preview data in case that
+                // affects
+                // the ComplicationType and hence the bounds of the complication.
+                maybeUpdateComplicationSlotsState()
             }
         }
 
-        // If deferredResult was null then the user canceled so return null.
-        if (complicationDataSourceChooserResult == null) {
-            return null
-        }
-
-        val complicationDataSourceInfoRetriever =
-            complicationDataSourceInfoRetrieverProvider!!.getComplicationDataSourceInfoRetriever()
-
-        try {
-            deferredComplicationPreviewDataAvailable.await()
-
-            // Emit an updated complicationsDataSourceInfoMap.
-            complicationsDataSourceInfo.value =
-                HashMap(complicationsDataSourceInfo.value).apply {
-                    this[complicationSlotId] = complicationDataSourceChooserResult.dataSourceInfo
-                }
-
-            val previewData = getPreviewData(
-                complicationDataSourceInfoRetriever,
-                complicationDataSourceChooserResult.dataSourceInfo
-            )
-
-            // Emit an updated complicationPreviewDataMap.
-            complicationsPreviewData.value =
-                HashMap(complicationsPreviewData.value).apply {
-                    this[complicationSlotId] = previewData ?: EmptyComplicationData()
-                }
-
-            return ChosenComplicationDataSource(
-                complicationSlotId,
-                complicationDataSourceChooserResult.dataSourceInfo,
-                complicationDataSourceChooserResult.extras,
-            )
-        } finally {
-            // This gets called after the above coroutine has finished.
-            complicationDataSourceInfoRetriever.close()
-
-            // Changing a complication data source could result in the type and therefore the bounds
-            // changing. This needs to be done after updating the preview data in case that affects
-            // the ComplicationType and hence the bounds of the complication.
-            maybeUpdateComplicationSlotsState()
-        }
-    }
-
     override val backgroundComplicationSlotId: Int? by lazy {
         requireNotClosed()
-        complicationSlotsState.value.entries.firstOrNull {
-            it.value.boundsType == ComplicationSlotBoundsType.BACKGROUND
-        }?.key
+        complicationSlotsState.value.entries
+            .firstOrNull { it.value.boundsType == ComplicationSlotBoundsType.BACKGROUND }
+            ?.key
     }
 
     override fun getComplicationSlotIdAt(@Px x: Int, @Px y: Int): Int? {
         requireNotClosed()
-        return complicationSlotsState.value.entries.firstOrNull {
-            it.value.isEnabled && when (it.value.boundsType) {
-                ComplicationSlotBoundsType.ROUND_RECT -> it.value.bounds.contains(x, y)
-                ComplicationSlotBoundsType.BACKGROUND -> false
-                ComplicationSlotBoundsType.EDGE -> false
-                else -> false
+        return complicationSlotsState.value.entries
+            .firstOrNull {
+                it.value.isEnabled &&
+                    when (it.value.boundsType) {
+                        ComplicationSlotBoundsType.ROUND_RECT -> it.value.bounds.contains(x, y)
+                        ComplicationSlotBoundsType.BACKGROUND -> false
+                        ComplicationSlotBoundsType.EDGE -> false
+                        else -> false
+                    }
             }
-        }?.key
+            ?.key
     }
 
     /**
@@ -631,38 +637,37 @@
     internal suspend fun getPreviewData(
         complicationDataSourceInfoRetriever: ComplicationDataSourceInfoRetriever,
         dataSourceInfo: ComplicationDataSourceInfo?
-    ): ComplicationData? = TraceEvent("BaseEditorSession.getPreviewData").use {
-        if (dataSourceInfo == null) {
-            return null
-        }
-        // Fetch preview ComplicationData if possible.
-        if (dataSourceInfo.componentName == null) {
-            return dataSourceInfo.fallbackPreviewData
-        }
-        try {
-            val previewData =
-                complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
-                    dataSourceInfo.componentName!!,
-                    dataSourceInfo.type
-                )
-            // If the data source sends us ComplicationData of the wrong type then use fallback
-            // data.
-            if (previewData == null || previewData.type != dataSourceInfo.type) {
+    ): ComplicationData? =
+        TraceEvent("BaseEditorSession.getPreviewData").use {
+            if (dataSourceInfo == null) {
+                return null
+            }
+            // Fetch preview ComplicationData if possible.
+            if (dataSourceInfo.componentName == null) {
                 return dataSourceInfo.fallbackPreviewData
             }
-            return previewData
-        } catch (e: Exception) {
-            // Something went wrong, so use fallback preview data.
-            return dataSourceInfo.fallbackPreviewData
+            try {
+                val previewData =
+                    complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
+                        dataSourceInfo.componentName!!,
+                        dataSourceInfo.type
+                    )
+                // If the data source sends us ComplicationData of the wrong type then use fallback
+                // data.
+                if (previewData == null || previewData.type != dataSourceInfo.type) {
+                    return dataSourceInfo.fallbackPreviewData
+                }
+                return previewData
+            } catch (e: Exception) {
+                // Something went wrong, so use fallback preview data.
+                return dataSourceInfo.fallbackPreviewData
+            }
         }
-    }
 
     protected fun fetchComplicationsData(fetchCoroutineScope: CoroutineScope): Job {
         val complicationDataSourceInfoRetriever =
             complicationDataSourceInfoRetrieverProvider!!.getComplicationDataSourceInfoRetriever()
-        return fetchCoroutineScope.launchWithTracing(
-            "BaseEditorSession.fetchComplicationsData"
-        ) {
+        return fetchCoroutineScope.launchWithTracing("BaseEditorSession.fetchComplicationsData") {
             try {
                 // Unlikely but WCS could conceivably crash during this call. We could retry but
                 // it's not obvious if that'd succeed or if WCS session state is recoverable,
@@ -676,18 +681,20 @@
                     extractComplicationsDataSourceInfoMap(dataSourceInfoArray) ?: emptyMap()
 
                 // Parallel fetch preview ComplicationData.
-                complicationsPreviewData.value = dataSourceInfoArray?.associateBy(
-                    { it.slotId },
-                    {
-                        async {
-                            getPreviewData(complicationDataSourceInfoRetriever, it.info)
-                        }
-                    }
-                    // Coerce to a Map<Int, ComplicationData> omitting null values.
-                    // If mapNotNullValues existed we would use it here.
-                )?.mapValues {
-                    it.value.await() ?: EmptyComplicationData()
-                } ?: emptyMap()
+                complicationsPreviewData.value =
+                    dataSourceInfoArray
+                        ?.associateBy(
+                            { it.slotId },
+                            {
+                                async {
+                                    getPreviewData(complicationDataSourceInfoRetriever, it.info)
+                                }
+                            }
+                            // Coerce to a Map<Int, ComplicationData> omitting null values.
+                            // If mapNotNullValues existed we would use it here.
+                        )
+                        ?.mapValues { it.value.await() ?: EmptyComplicationData() }
+                        ?: emptyMap()
                 deferredComplicationPreviewDataAvailable.complete(Unit)
             } catch (e: Exception) {
                 Log.w(TAG, "fetchComplicationsData failed", e)
@@ -714,8 +721,10 @@
                 withTimeout(CLOSE_BROADCAST_TIMEOUT_MILLIS) {
                     deferredComplicationPreviewDataAvailable.await()
                     val previewImage =
-                        if (commitChangesOnClose && previewScreenshotParams != null &&
-                            Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1
+                        if (
+                            commitChangesOnClose &&
+                                previewScreenshotParams != null &&
+                                Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1
                         ) {
                             SharedMemoryImage.ashmemWriteImageBundle(
                                 renderWatchFaceToBitmap(
@@ -774,13 +783,10 @@
     }
 
     protected fun requireNotClosed() {
-        require(!closed or forceClosed) {
-            "EditorSession method called after close()"
-        }
+        require(!closed or forceClosed) { "EditorSession method called after close()" }
     }
 
-    @UiThread
-    protected abstract fun releaseResources()
+    @UiThread protected abstract fun releaseResources()
 
     protected open val showComplicationDeniedDialogIntent: Intent? = null
 
@@ -790,9 +796,9 @@
 /**
  * @param activity The editor's [ComponentActivity].
  * @param watchFaceIdInternal The original ID sent to us in the [WatchFaceEditorContract]. We need
- * this because the system expects [EditorState.watchFaceId] to match.
+ *   this because the system expects [EditorState.watchFaceId] to match.
  * @param complicationDataSourceInfoRetrieverProvider Used to obtain
- * [ComplicationDataSourceInfoRetriever]
+ *   [ComplicationDataSourceInfoRetriever]
  * @param coroutineScope The main thread [CoroutineScope]
  * @param previewScreenshotParams Optional [PreviewScreenshotParams]
  */
@@ -804,13 +810,14 @@
     complicationDataSourceInfoRetrieverProvider: ComplicationDataSourceInfoRetrieverProvider,
     coroutineScope: CoroutineScope,
     previewScreenshotParams: PreviewScreenshotParams?
-) : BaseEditorSession(
-    activity,
-    complicationDataSourceInfoRetrieverProvider,
-    coroutineScope,
-    previewScreenshotParams,
-    watchFaceIdInternal
-) {
+) :
+    BaseEditorSession(
+        activity,
+        complicationDataSourceInfoRetrieverProvider,
+        coroutineScope,
+        previewScreenshotParams,
+        watchFaceIdInternal
+    ) {
     private lateinit var editorDelegate: WatchFace.EditorDelegate
 
     private companion object {
@@ -822,9 +829,7 @@
         editorDelegate.userStyleSchema
     }
 
-    override val previewReferenceInstant: Instant by lazy {
-        editorDelegate.previewReferenceInstant
-    }
+    override val previewReferenceInstant: Instant by lazy { editorDelegate.previewReferenceInstant }
 
     override val watchFaceId = WatchFaceId(sanitizeWatchFaceId(watchFaceIdInternal.id))
 
@@ -835,9 +840,10 @@
             // Get the ComplicationType from the preview data if available. This is important
             // because the type and therefore bounds may change based on the selected complication
             // data source.
-            val type = complicationsPreviewData.value.let { previewDataMap ->
-                previewDataMap[it.key]?.type ?: it.value.complicationData.value.type
-            }
+            val type =
+                complicationsPreviewData.value.let { previewDataMap ->
+                    previewDataMap[it.key]?.type ?: it.value.complicationData.value.type
+                }
             ComplicationSlotState(
                 it.value.computeBounds(editorDelegate.screenBounds, type, applyMargins = false),
                 it.value.boundsType,
@@ -861,32 +867,33 @@
     // exceptions thrown within a coroutine are lost and the MutableStateFlow interface includes
     // internal unstable methods so we can't use a static proxy...
     @Suppress("BanUncheckedReflection", "UNCHECKED_CAST")
-    override val userStyle = Proxy.newProxyInstance(
-        MutableStateFlow::class.java.classLoader,
-        arrayOf<Class<*>>(MutableStateFlow::class.java)
-    ) { _, method, args ->
-        if (args == null) {
-            method?.invoke(wrappedUserStyle)
-        } else {
-            val result = method?.invoke(wrappedUserStyle, *args)
-            when (method?.name) {
-                "setValue" -> validateAndUpdateUserStyle(args[0] as UserStyle)
-                "compareAndSet" -> {
-                    if (result is Boolean && result == true) {
-                        validateAndUpdateUserStyle(args[1] as UserStyle)
+    override val userStyle =
+        Proxy.newProxyInstance(
+            MutableStateFlow::class.java.classLoader,
+            arrayOf<Class<*>>(MutableStateFlow::class.java)
+        ) { _, method, args ->
+            if (args == null) {
+                method?.invoke(wrappedUserStyle)
+            } else {
+                val result = method?.invoke(wrappedUserStyle, *args)
+                when (method?.name) {
+                    "setValue" -> validateAndUpdateUserStyle(args[0] as UserStyle)
+                    "compareAndSet" -> {
+                        if (result is Boolean && result == true) {
+                            validateAndUpdateUserStyle(args[1] as UserStyle)
+                        }
+                    }
+                    else -> {
+                        Log.e(
+                            TAG,
+                            "userStyle proxy encountered unexpected method name '${method.name}'" +
+                                " please check your proguard rules."
+                        )
                     }
                 }
-                else -> {
-                    Log.e(
-                        TAG,
-                        "userStyle proxy encountered unexpected method name '${method.name}'" +
-                            " please check your proguard rules."
-                    )
-                }
+                result
             }
-            result
-        }
-    } as MutableStateFlow<UserStyle>
+        } as MutableStateFlow<UserStyle>
 
     @Suppress("Deprecation") // userStyleSettings
     internal fun validateAndUpdateUserStyle(userStyle: UserStyle) {
@@ -970,9 +977,8 @@
                 UserStyle(initialEditorUserStyle, editorDelegate.userStyleSchema)
         }
 
-        backgroundCoroutineScope = CoroutineScope(
-            editorDelegate.backgroundThreadHandler.asCoroutineDispatcher().immediate
-        )
+        backgroundCoroutineScope =
+            CoroutineScope(editorDelegate.backgroundThreadHandler.asCoroutineDispatcher().immediate)
 
         fetchComplicationsDataJob = fetchComplicationsData(backgroundCoroutineScope)
 
@@ -1002,13 +1008,14 @@
     complicationDataSourceInfoRetrieverProvider: ComplicationDataSourceInfoRetrieverProvider,
     coroutineScope: CoroutineScope,
     previewScreenshotParams: PreviewScreenshotParams?
-) : BaseEditorSession(
-    activity,
-    complicationDataSourceInfoRetrieverProvider,
-    coroutineScope,
-    previewScreenshotParams,
-    watchFaceIdInternal
-) {
+) :
+    BaseEditorSession(
+        activity,
+        complicationDataSourceInfoRetrieverProvider,
+        coroutineScope,
+        previewScreenshotParams,
+        watchFaceIdInternal
+    ) {
     override val userStyleSchema = headlessWatchFaceClient.userStyleSchema
 
     override val userStyle = MutableStateFlow(UserStyle(initialUserStyle, userStyleSchema))
@@ -1079,8 +1086,10 @@
  * An [ActivityResultContract] for invoking the complication data source chooser. If the user
  * cancels the data source chooser than the result will be `null`.
  */
-internal class ComplicationDataSourceChooserContract : ActivityResultContract<
-    ComplicationDataSourceChooserRequest, ComplicationDataSourceChooserResult?>() {
+internal class ComplicationDataSourceChooserContract :
+    ActivityResultContract<
+        ComplicationDataSourceChooserRequest, ComplicationDataSourceChooserResult?
+    >() {
 
     internal companion object {
         const val EXTRA_PROVIDER_INFO = "android.support.wearable.complications.EXTRA_PROVIDER_INFO"
@@ -1098,40 +1107,48 @@
         input: ComplicationDataSourceChooserRequest
     ): Intent {
         val complicationSlotsState = input.editorSession.complicationSlotsState.value
-        val intent = ComplicationHelperActivity.createComplicationDataSourceChooserHelperIntent(
-            context,
-            input.editorSession.watchFaceComponentName,
-            input.complicationSlotId,
-            complicationSlotsState[input.complicationSlotId]!!.supportedTypes,
-            input.instanceId,
-            input.showComplicationDeniedDialogIntent,
-            input.showComplicationRationaleDialogIntent,
-        )
+        val intent =
+            ComplicationHelperActivity.createComplicationDataSourceChooserHelperIntent(
+                context,
+                input.editorSession.watchFaceComponentName,
+                input.complicationSlotId,
+                complicationSlotsState[input.complicationSlotId]!!.supportedTypes,
+                input.instanceId,
+                input.showComplicationDeniedDialogIntent,
+                input.showComplicationRationaleDialogIntent,
+            )
         val complicationState = complicationSlotsState[input.complicationSlotId]!!
         intent.replaceExtras(
             Bundle(complicationState.complicationConfigExtras).apply { putAll(intent.extras!!) }
         )
         if (useTestComplicationHelperActivity) {
-            intent.component = ComponentName(
-                "androidx.wear.watchface.editor.test",
-                "androidx.wear.watchface.editor.TestComplicationHelperActivity"
-            )
+            intent.component =
+                ComponentName(
+                    "androidx.wear.watchface.editor.test",
+                    "androidx.wear.watchface.editor.TestComplicationHelperActivity"
+                )
         }
         return intent
     }
 
     @Suppress("DEPRECATION")
-    override fun parseResult(resultCode: Int, intent: Intent?) = intent?.let {
-        val extras = intent.extras?.let { extras ->
-            Bundle(extras).apply { remove(EXTRA_PROVIDER_INFO) }
-        } ?: Bundle.EMPTY
-        ComplicationDataSourceChooserResult(
-            it.getParcelableExtra<android.support.wearable.complications.ComplicationProviderInfo>(
-                EXTRA_PROVIDER_INFO
-            )?.toApiComplicationDataSourceInfo(),
-            extras
-        )
-    }
+    override fun parseResult(resultCode: Int, intent: Intent?) =
+        intent?.let {
+            val extras =
+                intent.extras?.let { extras ->
+                    Bundle(extras).apply { remove(EXTRA_PROVIDER_INFO) }
+                }
+                    ?: Bundle.EMPTY
+            ComplicationDataSourceChooserResult(
+                it.getParcelableExtra<
+                        android.support.wearable.complications.ComplicationProviderInfo
+                    >(
+                        EXTRA_PROVIDER_INFO
+                    )
+                    ?.toApiComplicationDataSourceInfo(),
+                extras
+            )
+        }
 }
 
 /**
@@ -1140,11 +1157,6 @@
  */
 internal fun extractComplicationsDataSourceInfoMap(
     resultArray: Array<ComplicationDataSourceInfoRetriever.Result>?
-): Map<Int, ComplicationDataSourceInfo?>? =
-    resultArray?.associateBy(
-        { it.slotId },
-        { it.info }
-    )
+): Map<Int, ComplicationDataSourceInfo?>? = resultArray?.associateBy({ it.slotId }, { it.info })
 
-@Suppress("DEPRECATION")
-internal fun Bundle.asString() = keySet().map { "$it: ${get(it)}" }
+@Suppress("DEPRECATION") internal fun Bundle.asString() = keySet().map { "$it: ${get(it)}" }
diff --git a/wear/watchface/watchface-editor/src/main/java/androidx/wear/watchface/editor/WatchFaceEditorContract.kt b/wear/watchface/watchface-editor/src/main/java/androidx/wear/watchface/editor/WatchFaceEditorContract.kt
index 88edba6..8d78fa6 100644
--- a/wear/watchface/watchface-editor/src/main/java/androidx/wear/watchface/editor/WatchFaceEditorContract.kt
+++ b/wear/watchface/watchface-editor/src/main/java/androidx/wear/watchface/editor/WatchFaceEditorContract.kt
@@ -16,7 +16,6 @@
 
 package androidx.wear.watchface.editor
 
-import androidx.wear.watchface.data.DeviceConfig as WireDeviceConfig
 import android.annotation.SuppressLint
 import android.app.Activity
 import android.content.ComponentName
@@ -34,11 +33,12 @@
 import androidx.wear.watchface.client.WatchFaceControlClient
 import androidx.wear.watchface.client.WatchFaceId
 import androidx.wear.watchface.client.asApiDeviceConfig
+import androidx.wear.watchface.data.DeviceConfig as WireDeviceConfig
 import androidx.wear.watchface.data.RenderParametersWireFormat
 import androidx.wear.watchface.style.UserStyle
 import androidx.wear.watchface.style.UserStyleData
-import kotlinx.coroutines.TimeoutCancellationException
 import java.time.Instant
+import kotlinx.coroutines.TimeoutCancellationException
 
 internal const val INSTANCE_ID_KEY: String = "INSTANCE_ID_KEY"
 internal const val COMPONENT_NAME_KEY: String = "COMPONENT_NAME_KEY"
@@ -84,24 +84,25 @@
  * @param watchFaceComponentName The [ComponentName] of the watch face being edited.
  * @param editorPackageName The package name of the watch face editor APK.
  * @param initialUserStyle The initial [UserStyle] stored as a [UserStyleData] or `null`. Only
- * required for a headless [EditorSession].
+ *   required for a headless [EditorSession].
  * @param watchFaceId Unique ID for the instance of the watch face being edited, only defined for
- * Android R and beyond, it's `null` on Android P and earlier. Note each distinct [ComponentName]
- * can have multiple instances.
- * @param headlessDeviceConfig If `non-null` then this is the [DeviceConfig] to use when creating
- * a headless instance to back the [EditorSession]. If `null` then the current interactive instance
- * will be used. If there isn't one then the [EditorSession] won't launch until it's been created.
- * Note [supportsWatchFaceHeadlessEditing] can be used to determine if this feature is supported.
- * If it's not supported this parameter will be ignored.
- * @param previewScreenshotParams If `non-null` then [EditorSession] upon
- * closing will render a screenshot with [PreviewScreenshotParams] using the existing interactive
- * or headless instance which will be sent in [EditorState] to any registered clients.
+ *   Android R and beyond, it's `null` on Android P and earlier. Note each distinct [ComponentName]
+ *   can have multiple instances.
+ * @param headlessDeviceConfig If `non-null` then this is the [DeviceConfig] to use when creating a
+ *   headless instance to back the [EditorSession]. If `null` then the current interactive instance
+ *   will be used. If there isn't one then the [EditorSession] won't launch until it's been created.
+ *   Note [supportsWatchFaceHeadlessEditing] can be used to determine if this feature is supported.
+ *   If it's not supported this parameter will be ignored.
+ * @param previewScreenshotParams If `non-null` then [EditorSession] upon closing will render a
+ *   screenshot with [PreviewScreenshotParams] using the existing interactive or headless instance
+ *   which will be sent in [EditorState] to any registered clients.
  */
-public class EditorRequest @RequiresApi(Build.VERSION_CODES.R) constructor(
+public class EditorRequest
+@RequiresApi(Build.VERSION_CODES.R)
+constructor(
     public val watchFaceComponentName: ComponentName,
     public val editorPackageName: String,
     public val initialUserStyle: UserStyleData?,
-
     @get:RequiresApi(Build.VERSION_CODES.R)
     @RequiresApi(Build.VERSION_CODES.R)
     public val watchFaceId: WatchFaceId,
@@ -114,8 +115,7 @@
      * @param watchFaceComponentName The [ComponentName] of the watch face being edited.
      * @param editorPackageName The package name of the watch face editor APK.
      * @param initialUserStyle The initial [UserStyle] stored as a [UserStyleData] or `null`. Only
-     * required for a headless [EditorSession].
-     * [EditorSession].
+     *   required for a headless [EditorSession]. [EditorSession].
      */
     @SuppressLint("NewApi")
     public constructor(
@@ -135,39 +135,45 @@
         /**
          * Returns an [EditorRequest] saved to a [Intent] by [WatchFaceEditorContract.createIntent]
          * if there is one or `null` otherwise. Intended for use by the watch face editor activity.
+         *
          * @throws [TimeoutCancellationException] in case of en error.
          */
         @Suppress("DEPRECATION")
         @SuppressLint("NewApi")
         @JvmStatic
         @Throws(TimeoutCancellationException::class)
-        public fun createFromIntent(intent: Intent): EditorRequest = EditorRequest(
-            watchFaceComponentName = intent.getParcelableExtra<ComponentName>(COMPONENT_NAME_KEY)!!,
-            editorPackageName = intent.getPackage() ?: "",
-            initialUserStyle = intent.getStringArrayExtra(USER_STYLE_KEY)?.let {
-                UserStyleData(
-                    HashMap<String, ByteArray>().apply {
-                        for (i in it.indices) {
-                            val userStyleValue =
-                                intent.getByteArrayExtra(USER_STYLE_VALUES + i)!!
-                            put(it[i], userStyleValue)
+        public fun createFromIntent(intent: Intent): EditorRequest =
+            EditorRequest(
+                watchFaceComponentName =
+                    intent.getParcelableExtra<ComponentName>(COMPONENT_NAME_KEY)!!,
+                editorPackageName = intent.getPackage() ?: "",
+                initialUserStyle =
+                    intent.getStringArrayExtra(USER_STYLE_KEY)?.let {
+                        UserStyleData(
+                            HashMap<String, ByteArray>().apply {
+                                for (i in it.indices) {
+                                    val userStyleValue =
+                                        intent.getByteArrayExtra(USER_STYLE_VALUES + i)!!
+                                    put(it[i], userStyleValue)
+                                }
+                            }
+                        )
+                    },
+                watchFaceId = WatchFaceId(intent.getStringExtra(INSTANCE_ID_KEY) ?: ""),
+                headlessDeviceConfig =
+                    intent
+                        .getParcelableExtra<WireDeviceConfig>(HEADLESS_DEVICE_CONFIG_KEY)
+                        ?.asApiDeviceConfig(),
+                previewScreenshotParams =
+                    intent
+                        .getParcelableExtra<RenderParametersWireFormat>(RENDER_PARAMETERS_KEY)
+                        ?.let {
+                            PreviewScreenshotParams(
+                                RenderParameters(it),
+                                Instant.ofEpochMilli(intent.getLongExtra(RENDER_TIME_MILLIS_KEY, 0))
+                            )
                         }
-                    }
-                )
-            },
-            watchFaceId = WatchFaceId(intent.getStringExtra(INSTANCE_ID_KEY) ?: ""),
-            headlessDeviceConfig = intent.getParcelableExtra<WireDeviceConfig>(
-                HEADLESS_DEVICE_CONFIG_KEY
-            )?.asApiDeviceConfig(),
-            previewScreenshotParams = intent.getParcelableExtra<RenderParametersWireFormat>(
-                RENDER_PARAMETERS_KEY
-            )?.let {
-                PreviewScreenshotParams(
-                    RenderParameters(it),
-                    Instant.ofEpochMilli(intent.getLongExtra(RENDER_TIME_MILLIS_KEY, 0))
-                )
-            }
-        )
+            )
 
         internal const val ANDROIDX_WATCHFACE_API_VERSION = "androidx.wear.watchface.api_version"
         internal const val WATCHFACE_CONTROL_SERVICE =
@@ -179,7 +185,7 @@
          *
          * @param packageManager The [PackageManager].
          * @param watchfacePackageName The package name of the watchface, see
-         * [ComponentName.getPackageName].
+         *   [ComponentName.getPackageName].
          * @throws [PackageManager.NameNotFoundException] if watchfacePackageName is not recognized.
          * @hide
          */
@@ -191,10 +197,14 @@
             packageManager: PackageManager,
             watchfacePackageName: String
         ): Boolean {
-            val metaData = packageManager.getServiceInfo(
-                ComponentName(watchfacePackageName, WATCHFACE_CONTROL_SERVICE),
-                PackageManager.GET_META_DATA
-            ).metaData ?: return false
+            val metaData =
+                packageManager
+                    .getServiceInfo(
+                        ComponentName(watchfacePackageName, WATCHFACE_CONTROL_SERVICE),
+                        PackageManager.GET_META_DATA
+                    )
+                    .metaData
+                    ?: return false
             return metaData.getInt(ANDROIDX_WATCHFACE_API_VERSION) >= 4
         }
     }
@@ -214,10 +224,7 @@
             "androidx.wear.watchface.editor.action.WATCH_FACE_EDITOR"
     }
 
-    override fun createIntent(
-        context: Context,
-        input: EditorRequest
-    ): Intent {
+    override fun createIntent(context: Context, input: EditorRequest): Intent {
         return Intent(ACTION_WATCH_FACE_EDITOR).apply {
             setPackage(input.editorPackageName)
             putExtra(COMPONENT_NAME_KEY, input.watchFaceComponentName)
diff --git a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableCanvasRenderer2Test.kt b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableCanvasRenderer2Test.kt
index a7e832d..c831044 100644
--- a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableCanvasRenderer2Test.kt
+++ b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableCanvasRenderer2Test.kt
@@ -30,17 +30,16 @@
 import com.google.common.truth.Truth.assertThat
 import com.google.common.util.concurrent.ListenableFuture
 import com.google.common.util.concurrent.SettableFuture
-import kotlinx.coroutines.async
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.time.ZoneId
 import java.time.ZonedDateTime
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import kotlinx.coroutines.async
+import org.junit.Test
+import org.junit.runner.RunWith
 
 public class TestSharedAssets : Renderer.SharedAssets {
-    override fun onDestroy() {
-    }
+    override fun onDestroy() {}
 }
 
 internal class TestAsyncCanvasRenderWithSharedAssetsTestWatchFaceService(
@@ -69,107 +68,106 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        object : ListenableCanvasRenderer2<TestSharedAssets>(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override fun initFuture(): ListenableFuture<Unit> {
-                initFutureLatch.countDown()
-                return initFuture
-            }
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            object :
+                ListenableCanvasRenderer2<TestSharedAssets>(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override fun initFuture(): ListenableFuture<Unit> {
+                    initFutureLatch.countDown()
+                    return initFuture
+                }
 
-            override fun createSharedAssetsFuture(): ListenableFuture<TestSharedAssets> {
-                sharedAssetsFutureLatch.countDown()
-                return sharedAssetsFuture
-            }
+                override fun createSharedAssetsFuture(): ListenableFuture<TestSharedAssets> {
+                    sharedAssetsFutureLatch.countDown()
+                    return sharedAssetsFuture
+                }
 
-            override fun render(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime,
-                sharedAssets: TestSharedAssets
-            ) {
-                // Actually rendering something isn't required.
-                synchronized(lock) {
-                    hasRendered = true
-                    sharedAssetsPassedToRenderer = sharedAssets
+                override fun render(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime,
+                    sharedAssets: TestSharedAssets
+                ) {
+                    // Actually rendering something isn't required.
+                    synchronized(lock) {
+                        hasRendered = true
+                        sharedAssetsPassedToRenderer = sharedAssets
+                    }
+                }
+
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime,
+                    sharedAssets: TestSharedAssets
+                ) {
+                    // NOP
                 }
             }
+        )
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime,
-                sharedAssets: TestSharedAssets
-            ) {
-                // NOP
-            }
+    override fun getSystemTimeProvider() =
+        object : SystemTimeProvider {
+            override fun getSystemTimeMillis() = 123456789L
+
+            override fun getSystemTimeZoneId() = ZoneId.of("UTC")
         }
-    )
-
-    override fun getSystemTimeProvider() = object : SystemTimeProvider {
-        override fun getSystemTimeMillis() = 123456789L
-
-        override fun getSystemTimeZoneId() = ZoneId.of("UTC")
-    }
 }
 
 @MediumTest
 @RequiresApi(Build.VERSION_CODES.O_MR1)
 @RunWith(AndroidJUnit4::class)
-public class AsyncListenableCanvasRenderer2Test :
-    WatchFaceControlClientServiceTest() {
+public class AsyncListenableCanvasRenderer2Test : WatchFaceControlClientServiceTest() {
     @Test
     public fun asyncTest() {
         val testSharedAssets = TestSharedAssets()
         val initFuture = SettableFuture.create<Unit>()
         val sharedAssetsFuture = SettableFuture.create<TestSharedAssets>()
-        val watchFaceService = TestAsyncCanvasRenderWithSharedAssetsTestWatchFaceService(
-            context,
-            surfaceHolder,
-            initFuture,
-            sharedAssetsFuture
-        )
-
-        val deferredClient = handlerCoroutineScope.async {
-            @Suppress("deprecation")
-            watchFaceControlClientService.getOrCreateInteractiveWatchFaceClient(
-                "testId",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
-                WatchUiState(false, 0),
-                null,
-                emptyMap()
+        val watchFaceService =
+            TestAsyncCanvasRenderWithSharedAssetsTestWatchFaceService(
+                context,
+                surfaceHolder,
+                initFuture,
+                sharedAssetsFuture
             )
-        }
 
-        handler.post {
-            watchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
-        }
+        val deferredClient =
+            handlerCoroutineScope.async {
+                @Suppress("deprecation")
+                watchFaceControlClientService.getOrCreateInteractiveWatchFaceClient(
+                    "testId",
+                    DeviceConfig(false, false, 0, 0),
+                    WatchUiState(false, 0),
+                    null,
+                    emptyMap()
+                )
+            }
+
+        handler.post { watchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper }
 
         val client = awaitWithTimeout(deferredClient)
 
         try {
             assertThat(
-                watchFaceService.sharedAssetsFutureLatch.await(
-                    TIMEOUT_MILLIS,
-                    TimeUnit.MILLISECONDS
+                    watchFaceService.sharedAssetsFutureLatch.await(
+                        TIMEOUT_MILLIS,
+                        TimeUnit.MILLISECONDS
+                    )
                 )
-            ).isTrue()
+                .isTrue()
             sharedAssetsFuture.set(testSharedAssets)
 
             assertThat(
-                watchFaceService.initFutureLatch.await(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
-            ).isTrue()
+                    watchFaceService.initFutureLatch.await(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                )
+                .isTrue()
 
             synchronized(watchFaceService.lock) {
                 assertThat(watchFaceService.hasRendered).isFalse()
diff --git a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableCanvasRendererTest.kt b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableCanvasRendererTest.kt
index 1f371f0..66ce0b7 100644
--- a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableCanvasRendererTest.kt
+++ b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableCanvasRendererTest.kt
@@ -30,13 +30,13 @@
 import com.google.common.truth.Truth.assertThat
 import com.google.common.util.concurrent.ListenableFuture
 import com.google.common.util.concurrent.SettableFuture
-import kotlinx.coroutines.async
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.time.ZoneId
 import java.time.ZonedDateTime
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import kotlinx.coroutines.async
+import org.junit.Test
+import org.junit.runner.RunWith
 
 internal class TestAsyncCanvasRenderInitWatchFaceService(
     testContext: Context,
@@ -59,43 +59,44 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("Deprecation")
-        object : ListenableCanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override fun initFuture(): ListenableFuture<Unit> {
-                initFutureLatch.countDown()
-                return initFuture
-            }
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("Deprecation")
+            object :
+                ListenableCanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override fun initFuture(): ListenableFuture<Unit> {
+                    initFutureLatch.countDown()
+                    return initFuture
+                }
 
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
-                // Actually rendering something isn't required.
-                synchronized(lock) {
-                    hasRendered = true
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
+                    // Actually rendering something isn't required.
+                    synchronized(lock) { hasRendered = true }
+                }
+
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {
+                    // NOP
                 }
             }
+        )
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
-                // NOP
-            }
+    override fun getSystemTimeProvider() =
+        object : SystemTimeProvider {
+            override fun getSystemTimeMillis() = 123456789L
+
+            override fun getSystemTimeZoneId() = ZoneId.of("UTC")
         }
-    )
-
-    override fun getSystemTimeProvider() = object : SystemTimeProvider {
-        override fun getSystemTimeMillis() = 123456789L
-
-        override fun getSystemTimeZoneId() = ZoneId.of("UTC")
-    }
 }
 
 @MediumTest
@@ -109,32 +110,27 @@
         val watchFaceService =
             TestAsyncCanvasRenderInitWatchFaceService(context, surfaceHolder, initFuture)
 
-        val deferredClient = handlerCoroutineScope.async {
-            @Suppress("deprecation")
-            watchFaceControlClientService.getOrCreateInteractiveWatchFaceClient(
-                "testId",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
-                WatchUiState(false, 0),
-                null,
-                emptyMap()
-            )
-        }
+        val deferredClient =
+            handlerCoroutineScope.async {
+                @Suppress("deprecation")
+                watchFaceControlClientService.getOrCreateInteractiveWatchFaceClient(
+                    "testId",
+                    DeviceConfig(false, false, 0, 0),
+                    WatchUiState(false, 0),
+                    null,
+                    emptyMap()
+                )
+            }
 
-        handler.post {
-            watchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
-        }
+        handler.post { watchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper }
 
         val client = awaitWithTimeout(deferredClient)
 
         try {
             assertThat(
-                watchFaceService.initFutureLatch.await(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
-            ).isTrue()
+                    watchFaceService.initFutureLatch.await(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
+                )
+                .isTrue()
             synchronized(watchFaceService.lock) {
                 assertThat(watchFaceService.hasRendered).isFalse()
             }
diff --git a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableGlesRenderer2Test.kt b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableGlesRenderer2Test.kt
index 68b7879..b7edca4 100644
--- a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableGlesRenderer2Test.kt
+++ b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableGlesRenderer2Test.kt
@@ -28,12 +28,12 @@
 import com.google.common.truth.Truth.assertThat
 import com.google.common.util.concurrent.ListenableFuture
 import com.google.common.util.concurrent.SettableFuture
-import kotlinx.coroutines.async
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.time.ZonedDateTime
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import kotlinx.coroutines.async
+import org.junit.Test
+import org.junit.runner.RunWith
 
 internal class TestAsyncGlesRenderWithSharedAssetsTestWatchFaceService(
     testContext: Context,
@@ -61,49 +61,51 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        object : ListenableGlesRenderer2<TestSharedAssets>(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            16
-        ) {
-            override fun onUiThreadGlSurfaceCreatedFuture(
-                width: Int,
-                height: Int
-            ): ListenableFuture<Unit> {
-                onUiThreadGlSurfaceCreatedFutureLatch.countDown()
-                return onUiThreadGlSurfaceCreatedFuture
-            }
-
-            override fun createSharedAssetsFuture(): ListenableFuture<TestSharedAssets> {
-                sharedAssetsFutureLatch.countDown()
-                return sharedAssetsFuture
-            }
-
-            override fun onBackgroundThreadGlContextCreatedFuture(): ListenableFuture<Unit> {
-                onBackgroundThreadGlContextFutureLatch.countDown()
-                return onBackgroundThreadGlContextFuture
-            }
-
-            override fun render(zonedDateTime: ZonedDateTime, sharedAssets: TestSharedAssets) {
-                // GLES rendering is complicated and not strictly necessary for our test.
-                synchronized(lock) {
-                    hasRendered = true
-                    sharedAssetsPassedToRenderer = sharedAssets
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            object :
+                ListenableGlesRenderer2<TestSharedAssets>(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    16
+                ) {
+                override fun onUiThreadGlSurfaceCreatedFuture(
+                    width: Int,
+                    height: Int
+                ): ListenableFuture<Unit> {
+                    onUiThreadGlSurfaceCreatedFutureLatch.countDown()
+                    return onUiThreadGlSurfaceCreatedFuture
                 }
-                renderLatch.countDown()
-            }
 
-            override fun renderHighlightLayer(
-                zonedDateTime: ZonedDateTime,
-                sharedAssets: TestSharedAssets
-            ) {
-                // NOP
+                override fun createSharedAssetsFuture(): ListenableFuture<TestSharedAssets> {
+                    sharedAssetsFutureLatch.countDown()
+                    return sharedAssetsFuture
+                }
+
+                override fun onBackgroundThreadGlContextCreatedFuture(): ListenableFuture<Unit> {
+                    onBackgroundThreadGlContextFutureLatch.countDown()
+                    return onBackgroundThreadGlContextFuture
+                }
+
+                override fun render(zonedDateTime: ZonedDateTime, sharedAssets: TestSharedAssets) {
+                    // GLES rendering is complicated and not strictly necessary for our test.
+                    synchronized(lock) {
+                        hasRendered = true
+                        sharedAssetsPassedToRenderer = sharedAssets
+                    }
+                    renderLatch.countDown()
+                }
+
+                override fun renderHighlightLayer(
+                    zonedDateTime: ZonedDateTime,
+                    sharedAssets: TestSharedAssets
+                ) {
+                    // NOP
+                }
             }
-        }
-    )
+        )
 }
 
 @MediumTest
@@ -117,72 +119,66 @@
         val onUiThreadGlSurfaceCreatedFuture = SettableFuture.create<Unit>()
         val onBackgroundThreadGlContextFuture = SettableFuture.create<Unit>()
         val sharedAssetsFuture = SettableFuture.create<TestSharedAssets>()
-        val watchFaceService = TestAsyncGlesRenderWithSharedAssetsTestWatchFaceService(
-            context,
-            glSurfaceHolder,
-            onUiThreadGlSurfaceCreatedFuture,
-            onBackgroundThreadGlContextFuture,
-            sharedAssetsFuture
-        )
-
-        val deferredClient = handlerCoroutineScope.async {
-            @Suppress("deprecation")
-            watchFaceControlClientService.getOrCreateInteractiveWatchFaceClient(
-                "testId",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
-                WatchUiState(false, 0),
-                null,
-                emptyMap()
+        val watchFaceService =
+            TestAsyncGlesRenderWithSharedAssetsTestWatchFaceService(
+                context,
+                glSurfaceHolder,
+                onUiThreadGlSurfaceCreatedFuture,
+                onBackgroundThreadGlContextFuture,
+                sharedAssetsFuture
             )
-        }
 
-        handler.post {
-            watchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
-        }
+        val deferredClient =
+            handlerCoroutineScope.async {
+                @Suppress("deprecation")
+                watchFaceControlClientService.getOrCreateInteractiveWatchFaceClient(
+                    "testId",
+                    DeviceConfig(false, false, 0, 0),
+                    WatchUiState(false, 0),
+                    null,
+                    emptyMap()
+                )
+            }
+
+        handler.post { watchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper }
 
         val client = awaitWithTimeout(deferredClient)
         try {
             assertThat(
-                watchFaceService.sharedAssetsFutureLatch.await(
-                    TIMEOUT_MILLIS,
-                    TimeUnit.MILLISECONDS
+                    watchFaceService.sharedAssetsFutureLatch.await(
+                        TIMEOUT_MILLIS,
+                        TimeUnit.MILLISECONDS
+                    )
                 )
-            ).isTrue()
+                .isTrue()
             sharedAssetsFuture.set(testSharedAssets)
 
             assertThat(
-                watchFaceService.onBackgroundThreadGlContextFutureLatch.await(
-                    TIMEOUT_MILLIS,
-                    TimeUnit.MILLISECONDS
+                    watchFaceService.onBackgroundThreadGlContextFutureLatch.await(
+                        TIMEOUT_MILLIS,
+                        TimeUnit.MILLISECONDS
+                    )
                 )
-            ).isTrue()
+                .isTrue()
             synchronized(watchFaceService.lock) {
                 assertThat(watchFaceService.hasRendered).isFalse()
             }
             onBackgroundThreadGlContextFuture.set(Unit)
 
             assertThat(
-                watchFaceService.onUiThreadGlSurfaceCreatedFutureLatch.await(
-                    TIMEOUT_MILLIS,
-                    TimeUnit.MILLISECONDS
+                    watchFaceService.onUiThreadGlSurfaceCreatedFutureLatch.await(
+                        TIMEOUT_MILLIS,
+                        TimeUnit.MILLISECONDS
+                    )
                 )
-            ).isTrue()
+                .isTrue()
             synchronized(watchFaceService.lock) {
                 assertThat(watchFaceService.hasRendered).isFalse()
             }
             onUiThreadGlSurfaceCreatedFuture.set(Unit)
 
-            assertThat(
-                watchFaceService.renderLatch.await(
-                    TIMEOUT_MILLIS,
-                    TimeUnit.MILLISECONDS
-                )
-            ).isTrue()
+            assertThat(watchFaceService.renderLatch.await(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS))
+                .isTrue()
 
             assertThat(watchFaceService.sharedAssetsPassedToRenderer).isEqualTo(testSharedAssets)
         } finally {
@@ -194,4 +190,4 @@
             client.close()
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableGlesRendererTest.kt b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableGlesRendererTest.kt
index 429b07c..21de436 100644
--- a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableGlesRendererTest.kt
+++ b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableGlesRendererTest.kt
@@ -28,12 +28,12 @@
 import com.google.common.truth.Truth.assertThat
 import com.google.common.util.concurrent.ListenableFuture
 import com.google.common.util.concurrent.SettableFuture
-import kotlinx.coroutines.async
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.time.ZonedDateTime
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import kotlinx.coroutines.async
+import org.junit.Test
+import org.junit.runner.RunWith
 
 internal class TestAsyncGlesRenderInitWatchFaceService(
     testContext: Context,
@@ -58,41 +58,36 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("Deprecation")
-        object : ListenableGlesRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            16
-        ) {
-            override fun onUiThreadGlSurfaceCreatedFuture(
-                width: Int,
-                height: Int
-            ): ListenableFuture<Unit> {
-                onUiThreadGlSurfaceCreatedFutureLatch.countDown()
-                return onUiThreadGlSurfaceCreatedFuture
-            }
-
-            override fun onBackgroundThreadGlContextCreatedFuture(): ListenableFuture<Unit> {
-                onBackgroundThreadGlContextFutureLatch.countDown()
-                return onBackgroundThreadGlContextFuture
-            }
-
-            override fun render(zonedDateTime: ZonedDateTime) {
-                // GLES rendering is complicated and not strictly necessary for our test.
-                synchronized(lock) {
-                    hasRendered = true
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("Deprecation")
+            object :
+                ListenableGlesRenderer(surfaceHolder, currentUserStyleRepository, watchState, 16) {
+                override fun onUiThreadGlSurfaceCreatedFuture(
+                    width: Int,
+                    height: Int
+                ): ListenableFuture<Unit> {
+                    onUiThreadGlSurfaceCreatedFutureLatch.countDown()
+                    return onUiThreadGlSurfaceCreatedFuture
                 }
-                renderLatch.countDown()
-            }
 
-            override fun renderHighlightLayer(zonedDateTime: ZonedDateTime) {
-                // NOP
+                override fun onBackgroundThreadGlContextCreatedFuture(): ListenableFuture<Unit> {
+                    onBackgroundThreadGlContextFutureLatch.countDown()
+                    return onBackgroundThreadGlContextFuture
+                }
+
+                override fun render(zonedDateTime: ZonedDateTime) {
+                    // GLES rendering is complicated and not strictly necessary for our test.
+                    synchronized(lock) { hasRendered = true }
+                    renderLatch.countDown()
+                }
+
+                override fun renderHighlightLayer(zonedDateTime: ZonedDateTime) {
+                    // NOP
+                }
             }
-        }
-    )
+        )
 }
 
 @MediumTest
@@ -104,63 +99,56 @@
     public fun asyncTest() {
         val onUiThreadGlSurfaceCreatedFuture = SettableFuture.create<Unit>()
         val onBackgroundThreadGlContextFuture = SettableFuture.create<Unit>()
-        val watchFaceService = TestAsyncGlesRenderInitWatchFaceService(
-            context,
-            glSurfaceHolder,
-            onUiThreadGlSurfaceCreatedFuture,
-            onBackgroundThreadGlContextFuture
-        )
-
-        val deferredClient = handlerCoroutineScope.async {
-            @Suppress("deprecation")
-            watchFaceControlClientService.getOrCreateInteractiveWatchFaceClient(
-                "testId",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
-                WatchUiState(false, 0),
-                null,
-                emptyMap()
+        val watchFaceService =
+            TestAsyncGlesRenderInitWatchFaceService(
+                context,
+                glSurfaceHolder,
+                onUiThreadGlSurfaceCreatedFuture,
+                onBackgroundThreadGlContextFuture
             )
-        }
 
-        handler.post {
-            watchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
-        }
+        val deferredClient =
+            handlerCoroutineScope.async {
+                @Suppress("deprecation")
+                watchFaceControlClientService.getOrCreateInteractiveWatchFaceClient(
+                    "testId",
+                    DeviceConfig(false, false, 0, 0),
+                    WatchUiState(false, 0),
+                    null,
+                    emptyMap()
+                )
+            }
+
+        handler.post { watchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper }
 
         val client = awaitWithTimeout(deferredClient)
         try {
             assertThat(
-                watchFaceService.onBackgroundThreadGlContextFutureLatch.await(
-                    TIMEOUT_MILLIS,
-                    TimeUnit.MILLISECONDS
+                    watchFaceService.onBackgroundThreadGlContextFutureLatch.await(
+                        TIMEOUT_MILLIS,
+                        TimeUnit.MILLISECONDS
+                    )
                 )
-            ).isTrue()
+                .isTrue()
             synchronized(watchFaceService.lock) {
                 assertThat(watchFaceService.hasRendered).isFalse()
             }
             onBackgroundThreadGlContextFuture.set(Unit)
 
             assertThat(
-                watchFaceService.onUiThreadGlSurfaceCreatedFutureLatch.await(
-                    TIMEOUT_MILLIS,
-                    TimeUnit.MILLISECONDS
+                    watchFaceService.onUiThreadGlSurfaceCreatedFutureLatch.await(
+                        TIMEOUT_MILLIS,
+                        TimeUnit.MILLISECONDS
+                    )
                 )
-            ).isTrue()
+                .isTrue()
             synchronized(watchFaceService.lock) {
                 assertThat(watchFaceService.hasRendered).isFalse()
             }
             onUiThreadGlSurfaceCreatedFuture.set(Unit)
 
-            assertThat(
-                watchFaceService.renderLatch.await(
-                    TIMEOUT_MILLIS,
-                    TimeUnit.MILLISECONDS
-                )
-            ).isTrue()
+            assertThat(watchFaceService.renderLatch.await(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS))
+                .isTrue()
         } finally {
             // Make sure we don't deadlock in case of a timeout which aborts the test mid way
             // leaving these futures incomplete.
@@ -169,4 +157,4 @@
             client.close()
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableWatchFaceServiceTest.kt b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableWatchFaceServiceTest.kt
index 56c39d2..c4a385b 100644
--- a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableWatchFaceServiceTest.kt
+++ b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableWatchFaceServiceTest.kt
@@ -26,14 +26,14 @@
 import com.google.common.truth.Truth.assertThat
 import com.google.common.util.concurrent.ListenableFuture
 import com.google.common.util.concurrent.SettableFuture
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.Mockito
 import java.time.Instant
 import java.time.ZonedDateTime
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mockito
 
 private val REFERENCE_PREVIEW_TIME = Instant.ofEpochMilli(123456L)
 
@@ -42,20 +42,20 @@
     surfaceHolder: SurfaceHolder,
     watchState: WatchState,
     currentUserStyleRepository: CurrentUserStyleRepository
-) : Renderer.CanvasRenderer(
-    surfaceHolder,
-    currentUserStyleRepository,
-    watchState,
-    CanvasType.SOFTWARE,
-    16
-) {
+) :
+    Renderer.CanvasRenderer(
+        surfaceHolder,
+        currentUserStyleRepository,
+        watchState,
+        CanvasType.SOFTWARE,
+        16
+    ) {
     override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
 
     override fun renderHighlightLayer(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
 }
 
-private class TestAsyncListenableWatchFaceService :
-    ListenableWatchFaceService() {
+private class TestAsyncListenableWatchFaceService : ListenableWatchFaceService() {
     override fun createWatchFaceFuture(
         surfaceHolder: SurfaceHolder,
         watchState: WatchState,
@@ -67,9 +67,10 @@
         getUiThreadHandler().post {
             future.set(
                 WatchFace(
-                    WatchFaceType.DIGITAL,
-                    FakeRenderer(surfaceHolder, watchState, currentUserStyleRepository)
-                ).apply { setOverridePreviewReferenceInstant(REFERENCE_PREVIEW_TIME) }
+                        WatchFaceType.DIGITAL,
+                        FakeRenderer(surfaceHolder, watchState, currentUserStyleRepository)
+                    )
+                    .apply { setOverridePreviewReferenceInstant(REFERENCE_PREVIEW_TIME) }
             )
         }
         return future
@@ -80,12 +81,13 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = createWatchFaceFuture(
-        surfaceHolder,
-        watchState,
-        complicationSlotsManager,
-        currentUserStyleRepository
-    )
+    ) =
+        createWatchFaceFuture(
+            surfaceHolder,
+            watchState,
+            complicationSlotsManager,
+            currentUserStyleRepository
+        )
 }
 
 /**
@@ -102,32 +104,25 @@
         val mockSurfaceHolder = Mockito.mock(SurfaceHolder::class.java)
         Mockito.`when`(mockSurfaceHolder.surfaceFrame).thenReturn(Rect(0, 0, 100, 100))
 
-        val currentUserStyleRepository =
-            CurrentUserStyleRepository(UserStyleSchema(emptyList()))
+        val currentUserStyleRepository = CurrentUserStyleRepository(UserStyleSchema(emptyList()))
         val complicationSlotsManager =
             ComplicationSlotsManager(emptyList(), currentUserStyleRepository)
-        val future = service.createWatchFaceFutureForTest(
-            mockSurfaceHolder,
-            MutableWatchState().asWatchState(),
-            complicationSlotsManager,
-            currentUserStyleRepository
-        )
+        val future =
+            service.createWatchFaceFutureForTest(
+                mockSurfaceHolder,
+                MutableWatchState().asWatchState(),
+                complicationSlotsManager,
+                currentUserStyleRepository
+            )
 
         val latch = CountDownLatch(1)
-        future.addListener(
-            {
-                latch.countDown()
-            },
-            { runnable -> runnable.run() }
-        )
+        future.addListener({ latch.countDown() }, { runnable -> runnable.run() })
 
         Assert.assertTrue(latch.await(TIME_OUT_MILLIS, TimeUnit.MILLISECONDS))
 
         val watchFace = future.get()
 
         // Simple check that [watchFace] looks sensible.
-        assertThat(watchFace.overridePreviewReferenceInstant).isEqualTo(
-            REFERENCE_PREVIEW_TIME
-        )
+        assertThat(watchFace.overridePreviewReferenceInstant).isEqualTo(REFERENCE_PREVIEW_TIME)
     }
 }
diff --git a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableXmlWatchfaceServiceTest.kt b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableXmlWatchfaceServiceTest.kt
index ee97782..6ed9fff 100644
--- a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableXmlWatchfaceServiceTest.kt
+++ b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/AsyncListenableXmlWatchfaceServiceTest.kt
@@ -29,20 +29,19 @@
 import com.google.common.truth.Truth.assertThat
 import com.google.common.util.concurrent.ListenableFuture
 import com.google.common.util.concurrent.SettableFuture
+import java.time.Instant
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.Mockito
-import java.time.Instant
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 val TIME_OUT_MILLIS = 500L
 private val REFERENCE_PREVIEW_TIME = Instant.ofEpochMilli(123456L)
 
-private class TestAsyncXmlListenableWatchFaceService(
-    testContext: Context
-) : ListenableWatchFaceService() {
+private class TestAsyncXmlListenableWatchFaceService(testContext: Context) :
+    ListenableWatchFaceService() {
 
     init {
         attachBaseContext(testContext)
@@ -52,16 +51,16 @@
 
     override fun getComplicationSlotInflationFactory(
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = object : ComplicationSlotInflationFactory() {
-            override fun getCanvasComplicationFactory(
-                slotId: Int
-            ) = CanvasComplicationFactory { watchState, invalidateCallback ->
-                CanvasComplicationDrawable(
-                    ComplicationDrawable(),
-                    watchState,
-                    invalidateCallback
-                )
-            }
+    ) =
+        object : ComplicationSlotInflationFactory() {
+            override fun getCanvasComplicationFactory(slotId: Int) =
+                CanvasComplicationFactory { watchState, invalidateCallback ->
+                    CanvasComplicationDrawable(
+                        ComplicationDrawable(),
+                        watchState,
+                        invalidateCallback
+                    )
+                }
         }
 
     fun createUserStyleSchemaForTest() = createUserStyleSchema()
@@ -75,12 +74,13 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = createWatchFaceFuture(
-        surfaceHolder,
-        watchState,
-        complicationSlotsManager,
-        currentUserStyleRepository
-    )
+    ) =
+        createWatchFaceFuture(
+            surfaceHolder,
+            watchState,
+            complicationSlotsManager,
+            currentUserStyleRepository
+        )
 
     override fun createWatchFaceFuture(
         surfaceHolder: SurfaceHolder,
@@ -93,9 +93,10 @@
         getUiThreadHandler().post {
             future.set(
                 WatchFace(
-                    WatchFaceType.DIGITAL,
-                    FakeRenderer(surfaceHolder, watchState, currentUserStyleRepository)
-                ).apply { setOverridePreviewReferenceInstant(REFERENCE_PREVIEW_TIME) }
+                        WatchFaceType.DIGITAL,
+                        FakeRenderer(surfaceHolder, watchState, currentUserStyleRepository)
+                    )
+                    .apply { setOverridePreviewReferenceInstant(REFERENCE_PREVIEW_TIME) }
             )
         }
         return future
@@ -108,9 +109,10 @@
 
     @Test
     public fun asyncTest() {
-        val service = TestAsyncXmlListenableWatchFaceService(
-            ApplicationProvider.getApplicationContext<Context>()
-        )
+        val service =
+            TestAsyncXmlListenableWatchFaceService(
+                ApplicationProvider.getApplicationContext<Context>()
+            )
         val mockSurfaceHolder = Mockito.mock(SurfaceHolder::class.java)
         Mockito.`when`(mockSurfaceHolder.surfaceFrame).thenReturn(Rect(0, 0, 100, 100))
 
@@ -120,32 +122,26 @@
         val complicationSlotsManager =
             service.createComplicationSlotsManagerForTest(currentUserStyleRepository)
 
-        val future = service.createWatchFaceFutureForTest(
-            mockSurfaceHolder,
-            MutableWatchState().asWatchState(),
-            complicationSlotsManager,
-            currentUserStyleRepository
-        )
+        val future =
+            service.createWatchFaceFutureForTest(
+                mockSurfaceHolder,
+                MutableWatchState().asWatchState(),
+                complicationSlotsManager,
+                currentUserStyleRepository
+            )
 
         val latch = CountDownLatch(1)
-        future.addListener(
-            {
-                latch.countDown()
-            },
-            { runnable -> runnable.run() }
-        )
+        future.addListener({ latch.countDown() }, { runnable -> runnable.run() })
 
         assertTrue(latch.await(TIME_OUT_MILLIS, TimeUnit.MILLISECONDS))
 
         val watchFace = future.get()
 
         // Simple check that [watchFace] looks sensible.
-        assertThat(watchFace.overridePreviewReferenceInstant).isEqualTo(
-            REFERENCE_PREVIEW_TIME)
+        assertThat(watchFace.overridePreviewReferenceInstant).isEqualTo(REFERENCE_PREVIEW_TIME)
 
-        assertThat(currentUserStyleRepository.schema.toString()).isEqualTo(
-            "[{TimeStyle : minimal, seconds}]"
-        )
+        assertThat(currentUserStyleRepository.schema.toString())
+            .isEqualTo("[{TimeStyle : minimal, seconds}]")
 
         assertThat(complicationSlotsManager.complicationSlots.size).isEqualTo(2)
     }
diff --git a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/WatchFaceControlTestService.kt b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/WatchFaceControlTestService.kt
index 7c0031a..9ebc13c 100644
--- a/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/WatchFaceControlTestService.kt
+++ b/wear/watchface/watchface-guava/src/androidTest/java/androidx/wear/watchface/WatchFaceControlTestService.kt
@@ -33,17 +33,17 @@
 import androidx.wear.watchface.client.WatchFaceControlClient
 import androidx.wear.watchface.control.IWatchFaceInstanceServiceStub
 import androidx.wear.watchface.control.WatchFaceControlService
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.TimeoutException
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Deferred
+import kotlinx.coroutines.MainScope
 import kotlinx.coroutines.android.asCoroutineDispatcher
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
 import org.mockito.Mockito
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.TimeoutException
-import kotlinx.coroutines.MainScope
 
 internal const val TIMEOUT_MILLIS = 1000L
 
@@ -63,10 +63,8 @@
     private val realService =
         object : WatchFaceControlService() {
             override fun createServiceStub(): IWatchFaceInstanceServiceStub =
-                object : IWatchFaceInstanceServiceStub(
-                    this@WatchFaceControlTestService,
-                    MainScope()
-                ) {
+                object :
+                    IWatchFaceInstanceServiceStub(this@WatchFaceControlTestService, MainScope()) {
                     override fun getApiVersion(): Int = apiVersionOverride ?: super.getApiVersion()
                 }
 
@@ -111,20 +109,14 @@
         val canvas = Canvas(bitmap)
         Mockito.`when`(surfaceHolder.lockHardwareCanvas()).thenReturn(canvas)
 
-        Mockito.`when`(surfaceHolder.unlockCanvasAndPost(canvas)).then {
-            renderLatch.countDown()
-        }
+        Mockito.`when`(surfaceHolder.unlockCanvasAndPost(canvas)).then { renderLatch.countDown() }
 
         surfaceTexture.setDefaultBufferSize(10, 10)
         Mockito.`when`(glSurfaceHolder.surface).thenReturn(glSurface)
-        Mockito.`when`(glSurfaceHolder.surfaceFrame)
-            .thenReturn(Rect(0, 0, 10, 10))
+        Mockito.`when`(glSurfaceHolder.surfaceFrame).thenReturn(Rect(0, 0, 10, 10))
     }
 
-    fun <X> awaitWithTimeout(
-        thing: Deferred<X>,
-        timeoutMillis: Long = TIMEOUT_MILLIS
-    ): X {
+    fun <X> awaitWithTimeout(thing: Deferred<X>, timeoutMillis: Long = TIMEOUT_MILLIS): X {
         var value: X? = null
         val latch = CountDownLatch(1)
         handlerCoroutineScope.launch {
@@ -136,4 +128,4 @@
         }
         return value!!
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableCanvasRenderer.kt b/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableCanvasRenderer.kt
index 62278bc..dc503c9 100644
--- a/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableCanvasRenderer.kt
+++ b/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableCanvasRenderer.kt
@@ -24,8 +24,8 @@
 import androidx.wear.watchface.style.CurrentUserStyleRepository
 import com.google.common.util.concurrent.ListenableFuture
 import com.google.common.util.concurrent.SettableFuture
-import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlin.coroutines.resume
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * [ListenableFuture]-based compatibility wrapper around [Renderer.CanvasRenderer]'s suspending
@@ -33,97 +33,88 @@
  */
 @Deprecated(message = "Use ListenableCanvasRenderer2 instead")
 @Suppress("Deprecation")
-public abstract class ListenableCanvasRenderer @JvmOverloads constructor(
+public abstract class ListenableCanvasRenderer
+@JvmOverloads
+constructor(
     surfaceHolder: SurfaceHolder,
     currentUserStyleRepository: CurrentUserStyleRepository,
     watchState: WatchState,
     @CanvasType private val canvasType: Int,
-    @IntRange(from = 0, to = 60000)
-    interactiveDrawModeUpdateDelayMillis: Long,
+    @IntRange(from = 0, to = 60000) interactiveDrawModeUpdateDelayMillis: Long,
     clearWithBackgroundTintBeforeRenderingHighlightLayer: Boolean = false
-) : Renderer.CanvasRenderer(
-    surfaceHolder,
-    currentUserStyleRepository,
-    watchState,
-    canvasType,
-    interactiveDrawModeUpdateDelayMillis,
-    clearWithBackgroundTintBeforeRenderingHighlightLayer
-) {
+) :
+    Renderer.CanvasRenderer(
+        surfaceHolder,
+        currentUserStyleRepository,
+        watchState,
+        canvasType,
+        interactiveDrawModeUpdateDelayMillis,
+        clearWithBackgroundTintBeforeRenderingHighlightLayer
+    ) {
     /**
-     * Perform UiThread specific initialization.  Will be called once during initialization
-     * before any subsequent calls to [render].  Note cancellation of the returned future is not
-     * supported.
+     * Perform UiThread specific initialization. Will be called once during initialization before
+     * any subsequent calls to [render]. Note cancellation of the returned future is not supported.
      *
      * @return A ListenableFuture<Unit> which is resolved when UiThread has completed. Rendering
-     * will be blocked until this has resolved.
+     *   will be blocked until this has resolved.
      */
     @UiThread
     @Suppress("AsyncSuffixFuture") // This is the guava wrapper for a suspend function
     public open fun initFuture(): ListenableFuture<Unit> {
-        return SettableFuture.create<Unit>().apply {
-            set(Unit)
-        }
+        return SettableFuture.create<Unit>().apply { set(Unit) }
     }
 
     override suspend fun init(): Unit = suspendCancellableCoroutine {
         val future = initFuture()
-        future.addListener(
-            { it.resume(future.get()) },
-            { runnable -> runnable.run() }
-        )
+        future.addListener({ it.resume(future.get()) }, { runnable -> runnable.run() })
     }
 }
 
 /**
- * [ListenableFuture]-based compatibility wrapper around
- * [Renderer.CanvasRenderer2]'s suspending methods.
+ * [ListenableFuture]-based compatibility wrapper around [Renderer.CanvasRenderer2]'s suspending
+ * methods.
  */
-public abstract class ListenableCanvasRenderer2<SharedAssetsT> @JvmOverloads constructor(
+public abstract class ListenableCanvasRenderer2<SharedAssetsT>
+@JvmOverloads
+constructor(
     surfaceHolder: SurfaceHolder,
     currentUserStyleRepository: CurrentUserStyleRepository,
     watchState: WatchState,
     @CanvasType private val canvasType: Int,
-    @IntRange(from = 0, to = 60000)
-    interactiveDrawModeUpdateDelayMillis: Long,
+    @IntRange(from = 0, to = 60000) interactiveDrawModeUpdateDelayMillis: Long,
     clearWithBackgroundTintBeforeRenderingHighlightLayer: Boolean = false
-) : Renderer.CanvasRenderer2<SharedAssetsT>(
-    surfaceHolder,
-    currentUserStyleRepository,
-    watchState,
-    canvasType,
-    interactiveDrawModeUpdateDelayMillis,
-    clearWithBackgroundTintBeforeRenderingHighlightLayer
-) where SharedAssetsT : SharedAssets {
+) :
+    Renderer.CanvasRenderer2<SharedAssetsT>(
+        surfaceHolder,
+        currentUserStyleRepository,
+        watchState,
+        canvasType,
+        interactiveDrawModeUpdateDelayMillis,
+        clearWithBackgroundTintBeforeRenderingHighlightLayer
+    ) where SharedAssetsT : SharedAssets {
     /**
-     * Perform UiThread specific initialization.  Will be called once during initialization
-     * before any subsequent calls to [render].  Note cancellation of the returned future is not
-     * supported.
+     * Perform UiThread specific initialization. Will be called once during initialization before
+     * any subsequent calls to [render]. Note cancellation of the returned future is not supported.
      *
      * @return A ListenableFuture<Unit> which is resolved when UiThread has completed. Rendering
-     * will be blocked until this has resolved.
+     *   will be blocked until this has resolved.
      */
     @UiThread
     @Suppress("AsyncSuffixFuture") // This is the guava wrapper for a suspend function
     public open fun initFuture(): ListenableFuture<Unit> {
-        return SettableFuture.create<Unit>().apply {
-            set(Unit)
-        }
+        return SettableFuture.create<Unit>().apply { set(Unit) }
     }
 
     final override suspend fun init(): Unit = suspendCancellableCoroutine {
         val future = initFuture()
-        future.addListener(
-            { it.resume(future.get()) },
-            { runnable -> runnable.run() }
-        )
+        future.addListener({ it.resume(future.get()) }, { runnable -> runnable.run() })
     }
 
     /**
-     * Implement to allow your Renderers to share data with SharedAssets.
-     * When editing multiple [WatchFaceService], instances and hence Renderers can exist
-     * concurrently (e.g. a headless instance and an interactive instance). Using
-     * [SharedAssets] allows memory to be saved by sharing immutable data (e.g. Bitmaps,
-     * shaders, etc...) between them.
+     * Implement to allow your Renderers to share data with SharedAssets. When editing multiple
+     * [WatchFaceService], instances and hence Renderers can exist concurrently (e.g. a headless
+     * instance and an interactive instance). Using [SharedAssets] allows memory to be saved by
+     * sharing immutable data (e.g. Bitmaps, shaders, etc...) between them.
      *
      * To take advantage of SharedAssets, override this method. The constructed SharedAssets are
      * passed into the [render] as an argument (NB you'll have to cast this to your type).
@@ -135,7 +126,7 @@
      * used on the main thread and subsequently destroyed there.
      *
      * @return A [ListenableFuture] for the [SharedAssetsT] that will be passed into [render] and
-     * [renderHighlightLayer]
+     *   [renderHighlightLayer]
      */
     @WorkerThread
     @Suppress("AsyncSuffixFuture") // This is the guava wrapper for a suspend function
@@ -143,9 +134,6 @@
 
     final override suspend fun createSharedAssets(): SharedAssetsT = suspendCancellableCoroutine {
         val future = createSharedAssetsFuture()
-        future.addListener(
-            { it.resume(future.get()) },
-            { runnable -> runnable.run() }
-        )
+        future.addListener({ it.resume(future.get()) }, { runnable -> runnable.run() })
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableGlesRenderer.kt b/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableGlesRenderer.kt
index e080ede..2c28802 100644
--- a/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableGlesRenderer.kt
+++ b/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableGlesRenderer.kt
@@ -26,24 +26,25 @@
 import androidx.wear.watchface.style.CurrentUserStyleRepository
 import com.google.common.util.concurrent.ListenableFuture
 import com.google.common.util.concurrent.SettableFuture
+import kotlin.coroutines.resume
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlinx.coroutines.sync.Mutex
-import kotlin.coroutines.resume
 
-internal val EGL_CONFIG_ATTRIB_LIST = intArrayOf(
-    EGL14.EGL_RENDERABLE_TYPE,
-    EGL14.EGL_OPENGL_ES2_BIT,
-    EGL14.EGL_RED_SIZE,
-    8,
-    EGL14.EGL_GREEN_SIZE,
-    8,
-    EGL14.EGL_BLUE_SIZE,
-    8,
-    EGL14.EGL_ALPHA_SIZE,
-    8,
-    EGL14.EGL_NONE
-)
+internal val EGL_CONFIG_ATTRIB_LIST =
+    intArrayOf(
+        EGL14.EGL_RENDERABLE_TYPE,
+        EGL14.EGL_OPENGL_ES2_BIT,
+        EGL14.EGL_RED_SIZE,
+        8,
+        EGL14.EGL_GREEN_SIZE,
+        8,
+        EGL14.EGL_BLUE_SIZE,
+        8,
+        EGL14.EGL_ALPHA_SIZE,
+        8,
+        EGL14.EGL_NONE
+    )
 
 internal val EGL_SURFACE_ATTRIB_LIST = intArrayOf(EGL14.EGL_NONE)
 
@@ -54,119 +55,105 @@
 @Deprecated(message = "Use ListenableGlesRenderer2 instead")
 @Suppress("Deprecation")
 public abstract class ListenableGlesRenderer
-@Throws(GlesException::class) @JvmOverloads constructor(
+@Throws(GlesException::class)
+@JvmOverloads
+constructor(
     surfaceHolder: SurfaceHolder,
     currentUserStyleRepository: CurrentUserStyleRepository,
     watchState: WatchState,
-    @IntRange(from = 0, to = 60000)
-    interactiveDrawModeUpdateDelayMillis: Long,
+    @IntRange(from = 0, to = 60000) interactiveDrawModeUpdateDelayMillis: Long,
     eglConfigAttribList: IntArray = EGL_CONFIG_ATTRIB_LIST,
     eglSurfaceAttribList: IntArray = EGL_SURFACE_ATTRIB_LIST
-) : Renderer.GlesRenderer(
-    surfaceHolder,
-    currentUserStyleRepository,
-    watchState,
-    interactiveDrawModeUpdateDelayMillis,
-    eglConfigAttribList,
-    eglSurfaceAttribList
-) {
+) :
+    Renderer.GlesRenderer(
+        surfaceHolder,
+        currentUserStyleRepository,
+        watchState,
+        interactiveDrawModeUpdateDelayMillis,
+        eglConfigAttribList,
+        eglSurfaceAttribList
+    ) {
     /**
      * Inside of a [Mutex] this function sets the GL context associated with the
-     * [WatchFaceService.getBackgroundThreadHandler]'s looper thread as the current one,
-     * executes [runnable] and finally unsets the GL context.
+     * [WatchFaceService.getBackgroundThreadHandler]'s looper thread as the current one, executes
+     * [runnable] and finally unsets the GL context.
      *
-     * Access to the GL context this way is necessary because GL contexts are not shared
-     * between renderers and there can be multiple watch face instances existing concurrently
-     * (e.g. headless and interactive, potentially from different watch faces if an APK
-     * contains more than one [WatchFaceService]).
+     * Access to the GL context this way is necessary because GL contexts are not shared between
+     * renderers and there can be multiple watch face instances existing concurrently (e.g. headless
+     * and interactive, potentially from different watch faces if an APK contains more than one
+     * [WatchFaceService]).
      *
-     * NB this function is called by the library before running
-     * [runBackgroundThreadGlCommands] so there's no need to use this directly in client
-     * code unless you need to make GL calls outside of those methods.
+     * NB this function is called by the library before running [runBackgroundThreadGlCommands] so
+     * there's no need to use this directly in client code unless you need to make GL calls outside
+     * of those methods.
      *
      * @throws [IllegalStateException] if the calls to [EGL14.eglMakeCurrent] fails
      */
     @WorkerThread
     public fun runBackgroundThreadGlCommands(runnable: Runnable) {
-        runBlocking {
-            runBackgroundThreadGlCommands {
-                runnable.run()
-            }
-        }
+        runBlocking { runBackgroundThreadGlCommands { runnable.run() } }
     }
 
     /**
-     * Inside of a [Mutex] this function sets the UiThread GL context as the current
-     * one, executes [runnable] and finally unsets the GL context.
+     * Inside of a [Mutex] this function sets the UiThread GL context as the current one, executes
+     * [runnable] and finally unsets the GL context.
      *
-     * Access to the GL context this way is necessary because GL contexts are not shared
-     * between renderers and there can be multiple watch face instances existing concurrently
-     * (e.g. headless and interactive, potentially from different watch faces if an APK
-     * contains more than one [WatchFaceService]).
+     * Access to the GL context this way is necessary because GL contexts are not shared between
+     * renderers and there can be multiple watch face instances existing concurrently (e.g. headless
+     * and interactive, potentially from different watch faces if an APK contains more than one
+     * [WatchFaceService]).
      *
      * @throws [IllegalStateException] if the calls to [EGL14.eglMakeCurrent] fails
      */
     @UiThread
     public fun runUiThreadGlCommands(runnable: Runnable) {
-        runBlocking {
-            runUiThreadGlCommands {
-                runnable.run()
-            }
-        }
+        runBlocking { runUiThreadGlCommands { runnable.run() } }
     }
 
     /**
-     * Called once a background thread when a new GL context is created on the background
-     * thread, before any subsequent calls to [render]. Note this function is called inside a
-     * lambda passed to [runBackgroundThreadGlCommands] which has synchronized access to the
-     * GL context. Note cancellation of the returned future is not supported.
+     * Called once a background thread when a new GL context is created on the background thread,
+     * before any subsequent calls to [render]. Note this function is called inside a lambda passed
+     * to [runBackgroundThreadGlCommands] which has synchronized access to the GL context. Note
+     * cancellation of the returned future is not supported.
      *
-     * @return A ListenableFuture<Unit> which is resolved when background thread work has
-     * completed. Rendering will be blocked until this has resolved.
+     * @return A ListenableFuture<Unit> which is resolved when background thread work has completed.
+     *   Rendering will be blocked until this has resolved.
      */
     @Suppress("AsyncSuffixFuture") // This is the guava wrapper for a suspend function
     protected open fun onBackgroundThreadGlContextCreatedFuture(): ListenableFuture<Unit> {
-        return SettableFuture.create<Unit>().apply {
-            set(Unit)
-        }
+        return SettableFuture.create<Unit>().apply { set(Unit) }
     }
 
     override suspend fun onBackgroundThreadGlContextCreated(): Unit = suspendCancellableCoroutine {
         val future = onBackgroundThreadGlContextCreatedFuture()
-        future.addListener(
-            { it.resume(future.get()) },
-            { runnable -> runnable.run() }
-        )
+        future.addListener({ it.resume(future.get()) }, { runnable -> runnable.run() })
     }
 
     /**
-     * Called when a new GL surface is created on the UiThread, before any subsequent calls
-     * to [render] and in response to [SurfaceHolder.Callback.surfaceChanged]. Note this function
-     * is called inside a lambda passed to [Renderer.GlesRenderer.runUiThreadGlCommands] which
-     * has synchronized access to the GL context.  Note cancellation of the returned future is not
+     * Called when a new GL surface is created on the UiThread, before any subsequent calls to
+     * [render] and in response to [SurfaceHolder.Callback.surfaceChanged]. Note this function is
+     * called inside a lambda passed to [Renderer.GlesRenderer.runUiThreadGlCommands] which has
+     * synchronized access to the GL context. Note cancellation of the returned future is not
      * supported.
      *
      * @param width width of surface in pixels
      * @param height height of surface in pixels
      * @return A ListenableFuture<Unit> which is resolved when UI thread work has completed.
-     * Rendering will be blocked until this has resolved.
+     *   Rendering will be blocked until this has resolved.
      */
     @UiThread
     @Suppress("AsyncSuffixFuture") // This is the guava wrapper for a suspend function
-    protected open fun
-        onUiThreadGlSurfaceCreatedFuture(@Px width: Int, @Px height: Int): ListenableFuture<Unit> {
-        return SettableFuture.create<Unit>().apply {
-            set(Unit)
-        }
+    protected open fun onUiThreadGlSurfaceCreatedFuture(
+        @Px width: Int,
+        @Px height: Int
+    ): ListenableFuture<Unit> {
+        return SettableFuture.create<Unit>().apply { set(Unit) }
     }
 
     override suspend fun onUiThreadGlSurfaceCreated(@Px width: Int, @Px height: Int): Unit =
         suspendCancellableCoroutine {
             val future = onUiThreadGlSurfaceCreatedFuture(width, height)
-            future.addListener(
-                { it.resume(future.get()) },
-                { runnable -> runnable.run() }
-            )
+            future.addListener({ it.resume(future.get()) }, { runnable -> runnable.run() })
         }
 }
 
@@ -175,141 +162,126 @@
  * methods.
  */
 public abstract class ListenableGlesRenderer2<SharedAssetsT>
-@Throws(GlesException::class) @JvmOverloads constructor(
+@Throws(GlesException::class)
+@JvmOverloads
+constructor(
     surfaceHolder: SurfaceHolder,
     currentUserStyleRepository: CurrentUserStyleRepository,
     watchState: WatchState,
-    @IntRange(from = 0, to = 60000)
-    interactiveDrawModeUpdateDelayMillis: Long,
+    @IntRange(from = 0, to = 60000) interactiveDrawModeUpdateDelayMillis: Long,
     eglConfigAttribList: IntArray = EGL_CONFIG_ATTRIB_LIST,
     eglSurfaceAttribList: IntArray = EGL_SURFACE_ATTRIB_LIST
-) : Renderer.GlesRenderer2<SharedAssetsT>(
-    surfaceHolder,
-    currentUserStyleRepository,
-    watchState,
-    interactiveDrawModeUpdateDelayMillis,
-    eglConfigAttribList,
-    eglSurfaceAttribList
-) where SharedAssetsT : SharedAssets {
+) :
+    Renderer.GlesRenderer2<SharedAssetsT>(
+        surfaceHolder,
+        currentUserStyleRepository,
+        watchState,
+        interactiveDrawModeUpdateDelayMillis,
+        eglConfigAttribList,
+        eglSurfaceAttribList
+    ) where SharedAssetsT : SharedAssets {
     /**
      * Inside of a [Mutex] this function sets the GL context associated with the
-     * [WatchFaceService.getBackgroundThreadHandler]'s looper thread as the current one,
-     * executes [runnable] and finally unsets the GL context.
+     * [WatchFaceService.getBackgroundThreadHandler]'s looper thread as the current one, executes
+     * [runnable] and finally unsets the GL context.
      *
-     * Access to the GL context this way is necessary because GL contexts are not shared
-     * between renderers and there can be multiple watch face instances existing concurrently
-     * (e.g. headless and interactive, potentially from different watch faces if an APK
-     * contains more than one [WatchFaceService]).
+     * Access to the GL context this way is necessary because GL contexts are not shared between
+     * renderers and there can be multiple watch face instances existing concurrently (e.g. headless
+     * and interactive, potentially from different watch faces if an APK contains more than one
+     * [WatchFaceService]).
      *
-     * NB this function is called by the library before running
-     * [runBackgroundThreadGlCommands] so there's no need to use this directly in client
-     * code unless you need to make GL calls outside of those methods.
+     * NB this function is called by the library before running [runBackgroundThreadGlCommands] so
+     * there's no need to use this directly in client code unless you need to make GL calls outside
+     * of those methods.
      *
      * @throws [IllegalStateException] if the calls to [EGL14.eglMakeCurrent] fails
      */
     @WorkerThread
     public fun runBackgroundThreadGlCommands(runnable: Runnable) {
-        runBlocking {
-            runBackgroundThreadGlCommands {
-                runnable.run()
-            }
-        }
+        runBlocking { runBackgroundThreadGlCommands { runnable.run() } }
     }
 
     /**
-     * Inside of a [Mutex] this function sets the UiThread GL context as the current
-     * one, executes [runnable] and finally unsets the GL context.
+     * Inside of a [Mutex] this function sets the UiThread GL context as the current one, executes
+     * [runnable] and finally unsets the GL context.
      *
-     * Access to the GL context this way is necessary because GL contexts are not shared
-     * between renderers and there can be multiple watch face instances existing concurrently
-     * (e.g. headless and interactive, potentially from different watch faces if an APK
-     * contains more than one [WatchFaceService]).
+     * Access to the GL context this way is necessary because GL contexts are not shared between
+     * renderers and there can be multiple watch face instances existing concurrently (e.g. headless
+     * and interactive, potentially from different watch faces if an APK contains more than one
+     * [WatchFaceService]).
      *
      * @throws [IllegalStateException] if the calls to [EGL14.eglMakeCurrent] fails
      */
     @UiThread
     public fun runUiThreadGlCommands(runnable: Runnable) {
-        runBlocking {
-            runUiThreadGlCommands {
-                runnable.run()
-            }
-        }
+        runBlocking { runUiThreadGlCommands { runnable.run() } }
     }
 
     /**
-     * Called once a background thread when a new GL context is created on the background
-     * thread, before any subsequent calls to [render]. Note this function is called inside a
-     * lambda passed to [runBackgroundThreadGlCommands] which has synchronized access to the
-     * GL context. Note cancellation of the returned future is not supported.
+     * Called once a background thread when a new GL context is created on the background thread,
+     * before any subsequent calls to [render]. Note this function is called inside a lambda passed
+     * to [runBackgroundThreadGlCommands] which has synchronized access to the GL context. Note
+     * cancellation of the returned future is not supported.
      *
-     * @return A ListenableFuture<Unit> which is resolved when background thread work has
-     * completed. Rendering will be blocked until this has resolved.
+     * @return A ListenableFuture<Unit> which is resolved when background thread work has completed.
+     *   Rendering will be blocked until this has resolved.
      */
     @Suppress("AsyncSuffixFuture") // This is the guava wrapper for a suspend function
     protected open fun onBackgroundThreadGlContextCreatedFuture(): ListenableFuture<Unit> {
-        return SettableFuture.create<Unit>().apply {
-            set(Unit)
-        }
+        return SettableFuture.create<Unit>().apply { set(Unit) }
     }
 
     final override suspend fun onBackgroundThreadGlContextCreated(): Unit =
         suspendCancellableCoroutine {
             val future = onBackgroundThreadGlContextCreatedFuture()
-            future.addListener(
-                { it.resume(future.get()) },
-                { runnable -> runnable.run() }
-            )
+            future.addListener({ it.resume(future.get()) }, { runnable -> runnable.run() })
         }
 
     /**
-     * Called when a new GL surface is created on the UiThread, before any subsequent calls
-     * to [render] and in response to [SurfaceHolder.Callback.surfaceChanged]. Note this function
-     * is called inside a lambda passed to [Renderer.GlesRenderer.runUiThreadGlCommands] which
-     * has synchronized access to the GL context.  Note cancellation of the returned future is not
+     * Called when a new GL surface is created on the UiThread, before any subsequent calls to
+     * [render] and in response to [SurfaceHolder.Callback.surfaceChanged]. Note this function is
+     * called inside a lambda passed to [Renderer.GlesRenderer.runUiThreadGlCommands] which has
+     * synchronized access to the GL context. Note cancellation of the returned future is not
      * supported.
      *
      * @param width width of surface in pixels
      * @param height height of surface in pixels
      * @return A ListenableFuture<Unit> which is resolved when UI thread work has completed.
-     * Rendering will be blocked until this has resolved.
+     *   Rendering will be blocked until this has resolved.
      */
     @UiThread
     @Suppress("AsyncSuffixFuture") // This is the guava wrapper for a suspend function
-    protected open fun
-        onUiThreadGlSurfaceCreatedFuture(@Px width: Int, @Px height: Int): ListenableFuture<Unit> {
-        return SettableFuture.create<Unit>().apply {
-            set(Unit)
-        }
+    protected open fun onUiThreadGlSurfaceCreatedFuture(
+        @Px width: Int,
+        @Px height: Int
+    ): ListenableFuture<Unit> {
+        return SettableFuture.create<Unit>().apply { set(Unit) }
     }
 
     final override suspend fun onUiThreadGlSurfaceCreated(@Px width: Int, @Px height: Int): Unit =
         suspendCancellableCoroutine {
             val future = onUiThreadGlSurfaceCreatedFuture(width, height)
-            future.addListener(
-                { it.resume(future.get()) },
-                { runnable -> runnable.run() }
-            )
+            future.addListener({ it.resume(future.get()) }, { runnable -> runnable.run() })
         }
 
     /**
-     * When editing multiple [WatchFaceService] instances and hence Renderers can exist
-     * concurrently (e.g. a headless instance and an interactive instance) and using
-     * [SharedAssets] allows memory to be saved by sharing immutable data (e.g. Bitmaps,
-     * shaders, etc...) between them.
+     * When editing multiple [WatchFaceService] instances and hence Renderers can exist concurrently
+     * (e.g. a headless instance and an interactive instance) and using [SharedAssets] allows memory
+     * to be saved by sharing immutable data (e.g. Bitmaps, shaders, etc...) between them.
      *
      * To take advantage of SharedAssets, override this method. The constructed SharedAssets are
-     * passed into the [render] as an argument (NB you'll have to cast this to your type).
-     * It is safe to make GLES calls within this method.
+     * passed into the [render] as an argument (NB you'll have to cast this to your type). It is
+     * safe to make GLES calls within this method.
      *
      * When all instances using SharedAssets have been closed, [SharedAssets.onDestroy] will be
      * called.
      *
      * Note that while SharedAssets are constructed on a background thread, they'll typically be
-     * used on the main thread and subsequently destroyed there. The watch face library
-     * constructs shared GLES contexts to allow resource sharing between threads.
+     * used on the main thread and subsequently destroyed there. The watch face library constructs
+     * shared GLES contexts to allow resource sharing between threads.
      *
      * @return A [ListenableFuture] for the [SharedAssetsT] that will be passed into [render] and
-     * [renderHighlightLayer]
+     *   [renderHighlightLayer]
      */
     @WorkerThread
     @Suppress("AsyncSuffixFuture") // This is the guava wrapper for a suspend function
@@ -317,9 +289,6 @@
 
     final override suspend fun createSharedAssets(): SharedAssetsT = suspendCancellableCoroutine {
         val future = createSharedAssetsFuture()
-        future.addListener(
-            { it.resume(future.get()) },
-            { runnable -> runnable.run() }
-        )
+        future.addListener({ it.resume(future.get()) }, { runnable -> runnable.run() })
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableWatchFaceService.kt b/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableWatchFaceService.kt
index 04c6615..a1e25de 100644
--- a/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableWatchFaceService.kt
+++ b/wear/watchface/watchface-guava/src/main/java/androidx/wear/watchface/ListenableWatchFaceService.kt
@@ -21,8 +21,8 @@
 import androidx.wear.watchface.style.CurrentUserStyleRepository
 import androidx.wear.watchface.style.UserStyleSchema
 import com.google.common.util.concurrent.ListenableFuture
-import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlin.coroutines.resume
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * [ListenableFuture]-based compatibility wrapper around [WatchFaceService]'s suspending
@@ -44,11 +44,11 @@
      * @param surfaceHolder The [SurfaceHolder] to pass to the [Renderer]'s constructor.
      * @param watchState The [WatchState] for the watch face.
      * @param complicationSlotsManager The [ComplicationSlotsManager] returned by
-     * [createComplicationSlotsManager].
+     *   [createComplicationSlotsManager].
      * @param currentUserStyleRepository The [CurrentUserStyleRepository] constructed using the
-     * [UserStyleSchema] returned by [createUserStyleSchema].
+     *   [UserStyleSchema] returned by [createUserStyleSchema].
      * @return A [ListenableFuture] for a [WatchFace] whose [Renderer] uses the provided
-     * [surfaceHolder].
+     *   [surfaceHolder].
      */
     protected abstract fun createWatchFaceFuture(
         surfaceHolder: SurfaceHolder,
@@ -63,15 +63,13 @@
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
     ): WatchFace = suspendCancellableCoroutine {
-        val future = createWatchFaceFuture(
-            surfaceHolder,
-            watchState,
-            complicationSlotsManager,
-            currentUserStyleRepository
-        )
-        future.addListener(
-            { it.resume(future.get()) },
-            { runnable -> runnable.run() }
-        )
+        val future =
+            createWatchFaceFuture(
+                surfaceHolder,
+                watchState,
+                complicationSlotsManager,
+                currentUserStyleRepository
+            )
+        future.addListener({ it.resume(future.get()) }, { runnable -> runnable.run() })
     }
 }
diff --git a/wear/watchface/watchface-guava/src/test/java/androidx/wear/watchface/GlesRenderer.java b/wear/watchface/watchface-guava/src/test/java/androidx/wear/watchface/GlesRenderer.java
index 90a3abc..7f70e72 100644
--- a/wear/watchface/watchface-guava/src/test/java/androidx/wear/watchface/GlesRenderer.java
+++ b/wear/watchface/watchface-guava/src/test/java/androidx/wear/watchface/GlesRenderer.java
@@ -33,15 +33,14 @@
             @NotNull SurfaceHolder surfaceHolder,
             @NotNull WatchState watchState,
             @NotNull CurrentUserStyleRepository currentUserStyleRepository,
-            long interactiveTickInterval) throws GlesException {
+            long interactiveTickInterval)
+            throws GlesException {
         super(surfaceHolder, currentUserStyleRepository, watchState, interactiveTickInterval);
     }
 
     @Override
-    public void render(@NonNull ZonedDateTime zonedDateTime) {
-    }
+    public void render(@NonNull ZonedDateTime zonedDateTime) {}
 
     @Override
-    public void renderHighlightLayer(@NonNull ZonedDateTime zonedDateTime) {
-    }
+    public void renderHighlightLayer(@NonNull ZonedDateTime zonedDateTime) {}
 }
diff --git a/wear/watchface/watchface-guava/src/test/java/androidx/wear/watchface/ListenableWatchFaceServiceTest.kt b/wear/watchface/watchface-guava/src/test/java/androidx/wear/watchface/ListenableWatchFaceServiceTest.kt
index 0bf1242..4d3ac61 100644
--- a/wear/watchface/watchface-guava/src/test/java/androidx/wear/watchface/ListenableWatchFaceServiceTest.kt
+++ b/wear/watchface/watchface-guava/src/test/java/androidx/wear/watchface/ListenableWatchFaceServiceTest.kt
@@ -24,6 +24,8 @@
 import com.google.common.truth.Truth.assertThat
 import com.google.common.util.concurrent.Futures
 import com.google.common.util.concurrent.ListenableFuture
+import java.time.Instant
+import java.time.ZonedDateTime
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -32,8 +34,6 @@
 import org.mockito.Mockito.`when`
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.internal.bytecode.InstrumentationConfiguration
-import java.time.Instant
-import java.time.ZonedDateTime
 
 private val REFERENCE_PREVIEW_TIME = Instant.ofEpochMilli(123456L)
 
@@ -46,28 +46,30 @@
     ): ListenableFuture<WatchFace> {
         return Futures.immediateFuture(
             WatchFace(
-                WatchFaceType.DIGITAL,
-                @Suppress("deprecation")
-                object : Renderer.CanvasRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    CanvasType.SOFTWARE,
-                    16
-                ) {
-                    override fun render(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime
-                    ) {}
+                    WatchFaceType.DIGITAL,
+                    @Suppress("deprecation")
+                    object :
+                        Renderer.CanvasRenderer(
+                            surfaceHolder,
+                            currentUserStyleRepository,
+                            watchState,
+                            CanvasType.SOFTWARE,
+                            16
+                        ) {
+                        override fun render(
+                            canvas: Canvas,
+                            bounds: Rect,
+                            zonedDateTime: ZonedDateTime
+                        ) {}
 
-                    override fun renderHighlightLayer(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime
-                    ) {}
-                }
-            ).apply { setOverridePreviewReferenceInstant(REFERENCE_PREVIEW_TIME) }
+                        override fun renderHighlightLayer(
+                            canvas: Canvas,
+                            bounds: Rect,
+                            zonedDateTime: ZonedDateTime
+                        ) {}
+                    }
+                )
+                .apply { setOverridePreviewReferenceInstant(REFERENCE_PREVIEW_TIME) }
         )
     }
 
@@ -76,12 +78,13 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ): WatchFace = createWatchFace(
-        surfaceHolder,
-        watchState,
-        complicationSlotsManager,
-        currentUserStyleRepository
-    )
+    ): WatchFace =
+        createWatchFace(
+            surfaceHolder,
+            watchState,
+            complicationSlotsManager,
+            currentUserStyleRepository
+        )
 }
 
 @RunWith(ListenableWatchFaceServiceTestRunner::class)
@@ -98,30 +101,26 @@
                 ComplicationSlotsManager(emptyList(), currentUserStyleRepository)
 
             // Make sure the ListenableFuture<> to kotlin coroutine bridge works.
-            val watchFace = service.createWatchFaceForTest(
-                mockSurfaceHolder,
-                MutableWatchState().asWatchState(),
-                complicationsSlotManager,
-                currentUserStyleRepository
-            )
+            val watchFace =
+                service.createWatchFaceForTest(
+                    mockSurfaceHolder,
+                    MutableWatchState().asWatchState(),
+                    complicationsSlotManager,
+                    currentUserStyleRepository
+                )
 
             // Simple check that [watchFace] looks sensible.
-            assertThat(watchFace.overridePreviewReferenceInstant).isEqualTo(
-                REFERENCE_PREVIEW_TIME
-            )
+            assertThat(watchFace.overridePreviewReferenceInstant).isEqualTo(REFERENCE_PREVIEW_TIME)
         }
     }
 }
 
 // Without this we get test failures with an error:
 // "failed to access class kotlin.jvm.internal.DefaultConstructorMarker".
-public class ListenableWatchFaceServiceTestRunner(
-    testClass: Class<*>
-) : RobolectricTestRunner(testClass) {
+public class ListenableWatchFaceServiceTestRunner(testClass: Class<*>) :
+    RobolectricTestRunner(testClass) {
     override fun createClassLoaderConfig(method: FrameworkMethod): InstrumentationConfiguration =
-        InstrumentationConfiguration.Builder(
-            super.createClassLoaderConfig(method)
-        )
+        InstrumentationConfiguration.Builder(super.createClassLoaderConfig(method))
             .doNotInstrumentPackage("androidx.wear.watchface")
             .build()
 }
diff --git a/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/ConfigActivity.java b/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/ConfigActivity.java
index f46584f..18132ad 100644
--- a/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/ConfigActivity.java
+++ b/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/ConfigActivity.java
@@ -45,8 +45,7 @@
     private ImageView mComplicationPreview;
     private ComplicationDrawable mComplicationPreviewDrawable;
 
-    @Nullable
-    private ListenableEditorSession mEditorSession;
+    @Nullable private ListenableEditorSession mEditorSession;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -75,61 +74,62 @@
     private void listenForEditorSession() {
         ListenableFuture<ListenableEditorSession> editorSessionFuture =
                 ListenableEditorSession.listenableCreateOnWatchEditorSession(this);
-        editorSessionFuture.addListener(() -> {
-            ListenableEditorSession editorSession;
-            try {
-                editorSession = editorSessionFuture.get();
-            } catch (ExecutionException | InterruptedException e) {
-                e.printStackTrace();
-                return;
-            }
-            if (editorSession == null) {
-                return;
-            }
-            mEditorSession = editorSession;
-            observeComplications();
-        }, ContextCompat.getMainExecutor(this));
+        editorSessionFuture.addListener(
+                () -> {
+                    ListenableEditorSession editorSession;
+                    try {
+                        editorSession = editorSessionFuture.get();
+                    } catch (ExecutionException | InterruptedException e) {
+                        e.printStackTrace();
+                        return;
+                    }
+                    if (editorSession == null) {
+                        return;
+                    }
+                    mEditorSession = editorSession;
+                    observeComplications();
+                },
+                ContextCompat.getMainExecutor(this));
     }
 
     private void observeComplications() {
-        FlowLiveDataConversions.asLiveData(mEditorSession.getComplicationsDataSourceInfo()).observe(
-                this,
-                complicationDataSourceInfoMap -> {
-                    if (!complicationDataSourceInfoMap.isEmpty()) {
-                        ComplicationDataSourceInfo info =
-                                complicationDataSourceInfoMap.get(
-                                        WatchFaceService.getComplicationId(getResources())
-                                );
-                        if (info == null) {
-                            mComplicationProviderName.setText(
-                                    getString(R.string.complication_none));
-                        } else {
-                            mComplicationProviderName.setText(info.getName());
-                        }
-                    }
-                }
-        );
+        FlowLiveDataConversions.asLiveData(mEditorSession.getComplicationsDataSourceInfo())
+                .observe(
+                        this,
+                        complicationDataSourceInfoMap -> {
+                            if (!complicationDataSourceInfoMap.isEmpty()) {
+                                ComplicationDataSourceInfo info =
+                                        complicationDataSourceInfoMap.get(
+                                                WatchFaceService.getComplicationId(getResources()));
+                                if (info == null) {
+                                    mComplicationProviderName.setText(
+                                            getString(R.string.complication_none));
+                                } else {
+                                    mComplicationProviderName.setText(info.getName());
+                                }
+                            }
+                        });
 
-        FlowLiveDataConversions.asLiveData(mEditorSession.getComplicationsPreviewData()).observe(
-                this,
-                complicationsPreviewData -> {
-                    if (complicationsPreviewData.isEmpty()) {
-                        mComplicationPreview.setImageResource(R.drawable.preview_loading);
-                    } else {
-                        ComplicationData preview =
-                                complicationsPreviewData.get(
-                                        WatchFaceService.getComplicationId(getResources())
-                                );
-                        if (preview != null) {
-                            mComplicationPreview.setImageDrawable(mComplicationPreviewDrawable);
-                            mComplicationPreviewDrawable.setComplicationData(preview, true);
-                        } else {
-                            mComplicationPreview.setImageResource(R.drawable.preview_unavailable);
-                        }
-                    }
-                }
-
-        );
+        FlowLiveDataConversions.asLiveData(mEditorSession.getComplicationsPreviewData())
+                .observe(
+                        this,
+                        complicationsPreviewData -> {
+                            if (complicationsPreviewData.isEmpty()) {
+                                mComplicationPreview.setImageResource(R.drawable.preview_loading);
+                            } else {
+                                ComplicationData preview =
+                                        complicationsPreviewData.get(
+                                                WatchFaceService.getComplicationId(getResources()));
+                                if (preview != null) {
+                                    mComplicationPreview.setImageDrawable(
+                                            mComplicationPreviewDrawable);
+                                    mComplicationPreviewDrawable.setComplicationData(preview, true);
+                                } else {
+                                    mComplicationPreview.setImageResource(
+                                            R.drawable.preview_unavailable);
+                                }
+                            }
+                        });
     }
 
     private void changeComplication() {
@@ -139,8 +139,11 @@
         }
         mEditorSession
                 .listenableOpenComplicationDataSourceChooser(
-                        WatchFaceService.getComplicationId(getResources())
-                ).addListener(() -> { /* Empty on purpose. */ },
+                        WatchFaceService.getComplicationId(getResources()))
+                .addListener(
+                        () -> {
+                            /* Empty on purpose. */
+                        },
                         ContextCompat.getMainExecutor(this));
     }
 }
diff --git a/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/WatchFaceRenderer.java b/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/WatchFaceRenderer.java
index b0a2ccf..68c796c 100644
--- a/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/WatchFaceRenderer.java
+++ b/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/WatchFaceRenderer.java
@@ -58,8 +58,7 @@
     private final Paint mPaint;
     private final Paint mHighlightPaint;
     private final Paint mHighlightFocusPaint;
-    @Px
-    private final float mHighlightExtraRadius;
+    @Px private final float mHighlightExtraRadius;
     private final char[] mTime = new char[5];
     private Bitmap mHighlightBitmap;
 
@@ -69,7 +68,8 @@
             @NonNull CurrentUserStyleRepository userStyleRepository,
             @NonNull WatchState watchState,
             @NonNull ComplicationSlotsManager complicationSlotsManager) {
-        super(surfaceHolder,
+        super(
+                surfaceHolder,
                 userStyleRepository,
                 watchState,
                 CanvasType.HARDWARE,
@@ -89,8 +89,8 @@
     }
 
     @Override
-    public void render(@NonNull Canvas canvas, @NonNull Rect rect,
-            @NonNull ZonedDateTime zonedDateTime) {
+    public void render(
+            @NonNull Canvas canvas, @NonNull Rect rect, @NonNull ZonedDateTime zonedDateTime) {
         mPaint.setColor(Color.BLACK);
         canvas.drawRect(rect, mPaint);
 
@@ -134,8 +134,8 @@
     @Override
     public void renderHighlightLayer(
             @NonNull Canvas canvas, @NonNull Rect rect, @NonNull ZonedDateTime zonedDateTime) {
-        renderHighlightLayer(canvas, rect, zonedDateTime,
-                getRenderParameters().getHighlightLayer());
+        renderHighlightLayer(
+                canvas, rect, zonedDateTime, getRenderParameters().getHighlightLayer());
     }
 
     private void renderHighlightLayer(
diff --git a/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/WatchFaceService.java b/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/WatchFaceService.java
index 11a71fe..091a976 100644
--- a/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/WatchFaceService.java
+++ b/wear/watchface/watchface-samples-minimal-complications/src/main/java/androidx/wear/watchface/samples/minimal/complications/WatchFaceService.java
@@ -46,9 +46,7 @@
 public class WatchFaceService extends ListenableWatchFaceService {
     public static final RectF COMPLICATION_BOUNDS = new RectF(.3f, 0.7f, .7f, .9f);
 
-    /**
-     * Returns complication id that was specified in XML.
-     */
+    /** Returns complication id that was specified in XML. */
     public static int getComplicationId(@NonNull Resources resources) {
         return resources.getInteger(R.integer.complication_slot_id);
     }
@@ -72,8 +70,7 @@
                         .setComplicationDeniedDialogIntent(
                                 new Intent(this, ComplicationDeniedActivity.class))
                         .setComplicationRationaleDialogIntent(
-                                new Intent(this, ComplicationRationalActivity.class))
-        );
+                                new Intent(this, ComplicationRationalActivity.class)));
     }
 
     @NotNull
@@ -87,9 +84,7 @@
             public CanvasComplicationFactory getCanvasComplicationFactory(int slotId) {
                 return (watchState, invalidateCallback) ->
                         new CanvasComplicationDrawable(
-                                new ComplicationDrawable(context),
-                                watchState,
-                                invalidateCallback);
+                                new ComplicationDrawable(context), watchState, invalidateCallback);
             }
         };
     }
diff --git a/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/ConfigActivity.java b/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/ConfigActivity.java
index fc4c23a..5c017bd 100644
--- a/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/ConfigActivity.java
+++ b/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/ConfigActivity.java
@@ -20,8 +20,6 @@
 import static androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting.ListOption;
 
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
 import android.util.Log;
 import android.widget.TextView;
 
@@ -37,7 +35,6 @@
 
 import java.util.Objects;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Executor;
 
 /** Configuration activity for the watch face. */
 public class ConfigActivity extends ComponentActivity {
@@ -48,8 +45,7 @@
     private TextView mStyleValue;
     private final UserStyleSetting.Id mTimeStyleId = new UserStyleSetting.Id("TimeStyle");
 
-    @Nullable
-    private ListenableEditorSession mEditorSession;
+    @Nullable private ListenableEditorSession mEditorSession;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -78,21 +74,23 @@
     private void listenForEditorSession() {
         ListenableFuture<ListenableEditorSession> editorSessionFuture =
                 ListenableEditorSession.listenableCreateOnWatchEditorSession(this);
-        editorSessionFuture.addListener(() -> {
-            ListenableEditorSession editorSession;
-            try {
-                editorSession = editorSessionFuture.get();
-            } catch (ExecutionException | InterruptedException e) {
-                e.printStackTrace();
-                return;
-            }
-            if (editorSession == null) {
-                return;
-            }
-            mEditorSession = editorSession;
-            updateInstanceId();
-            updateStyleValue();
-        }, ContextCompat.getMainExecutor(this));
+        editorSessionFuture.addListener(
+                () -> {
+                    ListenableEditorSession editorSession;
+                    try {
+                        editorSession = editorSessionFuture.get();
+                    } catch (ExecutionException | InterruptedException e) {
+                        e.printStackTrace();
+                        return;
+                    }
+                    if (editorSession == null) {
+                        return;
+                    }
+                    mEditorSession = editorSession;
+                    updateInstanceId();
+                    updateStyleValue();
+                },
+                ContextCompat.getMainExecutor(this));
     }
 
     private void changeStyle() {
@@ -104,9 +102,8 @@
         MutableUserStyle userStyle = mEditorSession.getUserStyle().getValue().toMutableUserStyle();
         ListOption currentOption = (ListOption) userStyle.get(mTimeStyleId);
         ListUserStyleSetting listUserStyleSetting =
-                (ListUserStyleSetting) mEditorSession.getUserStyleSchema()
-                        .getRootUserStyleSettings()
-                        .get(0);
+                (ListUserStyleSetting)
+                        mEditorSession.getUserStyleSchema().getRootUserStyleSettings().get(0);
 
         // Choose the first option in the list of options that isn't currentOption. We only expect
         // two options here, so this will flip flop between them.
@@ -131,8 +128,7 @@
         if (mEditorSession == null) {
             return;
         }
-        ListOption option =
-                (ListOption) mEditorSession.getUserStyle().getValue().get(mTimeStyleId);
+        ListOption option = (ListOption) mEditorSession.getUserStyle().getValue().get(mTimeStyleId);
         mStyleValue.setText(option.getDisplayName());
     }
 }
diff --git a/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/WatchFaceRenderer.java b/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/WatchFaceRenderer.java
index 42488a8..6b3406a 100644
--- a/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/WatchFaceRenderer.java
+++ b/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/WatchFaceRenderer.java
@@ -42,6 +42,8 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 
+import kotlin.Unit;
+
 import org.jetbrains.annotations.NotNull;
 
 import java.time.ZonedDateTime;
@@ -49,8 +51,6 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
 
-import kotlin.Unit;
-
 /**
  * Minimal rendered for the watch face, using canvas to render hours, minutes, and a blinking
  * separator.
@@ -75,7 +75,11 @@
             @NotNull CurrentUserStyleRepository currentUserStyleRepository,
             @NotNull WatchState watchState,
             @NotNull Resources resources) {
-        super(surfaceHolder, currentUserStyleRepository, watchState, CanvasType.HARDWARE,
+        super(
+                surfaceHolder,
+                currentUserStyleRepository,
+                watchState,
+                CanvasType.HARDWARE,
                 UPDATE_DELAY_MILLIS);
         mInstanceIdRenderer = new InstanceIdRenderer(watchState);
         mMinimalRenderer = new MinimalRenderer(watchState, mInstanceIdRenderer);
@@ -99,14 +103,14 @@
     }
 
     @Override
-    public void render(@NotNull Canvas canvas, @NotNull Rect rect,
-            @NotNull ZonedDateTime zonedDateTime) {
+    public void render(
+            @NotNull Canvas canvas, @NotNull Rect rect, @NotNull ZonedDateTime zonedDateTime) {
         mTimeRenderer.render(canvas, rect, zonedDateTime, getRenderParameters());
     }
 
     @Override
-    public void renderHighlightLayer(@NonNull Canvas canvas, @NonNull Rect bounds,
-            @NonNull ZonedDateTime zonedDateTime) {
+    public void renderHighlightLayer(
+            @NonNull Canvas canvas, @NonNull Rect bounds, @NonNull ZonedDateTime zonedDateTime) {
         RenderParameters.HighlightLayer highlightLayer = getRenderParameters().getHighlightLayer();
         canvas.drawColor(highlightLayer.getBackgroundTint());
         mHighlightPaint.setColor(highlightLayer.getHighlightTint());
@@ -126,7 +130,9 @@
 
     private interface TimeRenderer {
         void render(
-                @NotNull Canvas canvas, @NotNull Rect rect, @NotNull ZonedDateTime zonedDateTime,
+                @NotNull Canvas canvas,
+                @NotNull Rect rect,
+                @NotNull ZonedDateTime zonedDateTime,
                 RenderParameters renderParameters);
     }
 
@@ -145,8 +151,9 @@
             mInstanceIdPaint.setTextAlign(Align.CENTER);
             mInstanceIdPaint.setTextSize(20f);
             mInstanceIdPaint.setColor(Color.WHITE);
-            mInstanceId = new AtomicReference<>(
-                    Objects.toString(watchState.getWatchFaceInstanceId().getValue()));
+            mInstanceId =
+                    new AtomicReference<>(
+                            Objects.toString(watchState.getWatchFaceInstanceId().getValue()));
         }
 
         @UiThread
@@ -156,8 +163,11 @@
         }
 
         @Override
-        public void render(@NonNull Canvas canvas, @NonNull Rect rect,
-                @NonNull ZonedDateTime zonedDateTime, RenderParameters renderParameters) {
+        public void render(
+                @NonNull Canvas canvas,
+                @NonNull Rect rect,
+                @NonNull ZonedDateTime zonedDateTime,
+                RenderParameters renderParameters) {
             canvas.save();
             canvas.scale(0.9f, 0.9f);
             canvas.translate(0.144f * rect.width() / 2, 0.1f * rect.height() / 2);
@@ -185,7 +195,9 @@
 
         @Override
         public void render(
-                @NotNull Canvas canvas, @NotNull Rect rect, @NotNull ZonedDateTime zonedDateTime,
+                @NotNull Canvas canvas,
+                @NotNull Rect rect,
+                @NotNull ZonedDateTime zonedDateTime,
                 RenderParameters renderParameters) {
             mPaint.setColor(Color.BLACK);
             canvas.drawRect(rect, mPaint);
@@ -201,7 +213,8 @@
             mTimeText[2] = second % 2 == 0 ? ':' : ' ';
             mTimeText[3] = DIGITS[minute / 10];
             mTimeText[4] = DIGITS[minute % 10];
-            canvas.drawText(mTimeText,
+            canvas.drawText(
+                    mTimeText,
                     0,
                     5,
                     rect.centerX(),
@@ -213,26 +226,19 @@
     }
 
     private static class SecondsRenderer implements TimeRenderer {
-        @Px
-        public static final float SECONDS_TEXT_HEIGHT = 256f;
-        @Px
-        public static final float TIME_TEXT_ACTIVE_HEIGHT = 64f;
-        @Px
-        public static final float TIME_TEXT_AMBIENT_HEIGHT = 96f;
-        @Px
-        private static final int TEXT_PADDING = 12;
+        @Px public static final float SECONDS_TEXT_HEIGHT = 256f;
+        @Px public static final float TIME_TEXT_ACTIVE_HEIGHT = 64f;
+        @Px public static final float TIME_TEXT_AMBIENT_HEIGHT = 96f;
+        @Px private static final int TEXT_PADDING = 12;
 
         private final WatchState mWatchState;
         private final InstanceIdRenderer mInstanceIdRenderer;
         private final Paint mPaint;
-        private final char[] mTimeText = new char[]{'1', '0', ':', '0', '9'};
-        private final char[] mSecondsText = new char[]{'3', '0'};
-        @Px
-        private final int mTimeActiveOffset;
-        @Px
-        private final int mTimeAmbientOffset;
-        @Px
-        private final int mSecondsActiveOffset;
+        private final char[] mTimeText = new char[] {'1', '0', ':', '0', '9'};
+        private final char[] mSecondsText = new char[] {'3', '0'};
+        @Px private final int mTimeActiveOffset;
+        @Px private final int mTimeAmbientOffset;
+        @Px private final int mSecondsActiveOffset;
 
         private SecondsRenderer(WatchState watchState, InstanceIdRenderer instanceIdRenderer) {
             mWatchState = watchState;
@@ -263,7 +269,9 @@
 
         @Override
         public void render(
-                @NotNull Canvas canvas, @NotNull Rect rect, @NotNull ZonedDateTime zonedDateTime,
+                @NotNull Canvas canvas,
+                @NotNull Rect rect,
+                @NotNull ZonedDateTime zonedDateTime,
                 RenderParameters renderParameters) {
             boolean isActive = renderParameters.getDrawMode() != DrawMode.AMBIENT;
             int hour = zonedDateTime.getHour();
@@ -287,7 +295,8 @@
             mTimeText[4] = DIGITS[minute % 10];
             mPaint.setTextSize(isActive ? TIME_TEXT_ACTIVE_HEIGHT : TIME_TEXT_AMBIENT_HEIGHT);
             @Px int timeOffset = isActive ? mTimeActiveOffset : mTimeAmbientOffset;
-            canvas.drawText(mTimeText,
+            canvas.drawText(
+                    mTimeText,
                     0,
                     mTimeText.length,
                     rect.centerX(),
@@ -297,7 +306,8 @@
             if (isActive) {
                 mSecondsText[0] = DIGITS[second / 10];
                 mSecondsText[1] = DIGITS[second % 10];
-                canvas.drawText(mSecondsText,
+                canvas.drawText(
+                        mSecondsText,
                         0,
                         mSecondsText.length,
                         rect.centerX(),
diff --git a/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/WatchFaceService.java b/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/WatchFaceService.java
index 6dd1761..c52bde5 100644
--- a/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/WatchFaceService.java
+++ b/wear/watchface/watchface-samples-minimal-instances/src/main/java/androidx/wear/watchface/samples/minimal/instances/WatchFaceService.java
@@ -38,7 +38,8 @@
     @NotNull
     @Override
     protected ListenableFuture<WatchFace> createWatchFaceFuture(
-            @NotNull SurfaceHolder surfaceHolder, @NotNull WatchState watchState,
+            @NotNull SurfaceHolder surfaceHolder,
+            @NotNull WatchState watchState,
             @NonNull ComplicationSlotsManager complicationSlotsManager,
             @NonNull CurrentUserStyleRepository currentUserStyleRepository) {
         Renderer renderer =
diff --git a/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/ConfigActivity.java b/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/ConfigActivity.java
index ec29ff6..bc7d75b2 100644
--- a/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/ConfigActivity.java
+++ b/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/ConfigActivity.java
@@ -42,8 +42,7 @@
     private TextView mStyleValue;
     private final UserStyleSetting.Id mTimeStyleId = new UserStyleSetting.Id("TimeStyle");
 
-    @Nullable
-    private ListenableEditorSession mEditorSession;
+    @Nullable private ListenableEditorSession mEditorSession;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -71,20 +70,22 @@
     private void listenForEditorSession() {
         ListenableFuture<ListenableEditorSession> editorSessionFuture =
                 ListenableEditorSession.listenableCreateOnWatchEditorSession(this);
-        editorSessionFuture.addListener(() -> {
-            ListenableEditorSession editorSession;
-            try {
-                editorSession = editorSessionFuture.get();
-            } catch (ExecutionException | InterruptedException e) {
-                e.printStackTrace();
-                return;
-            }
-            if (editorSession == null) {
-                return;
-            }
-            mEditorSession = editorSession;
-            updateStyleValue();
-        }, ContextCompat.getMainExecutor(this));
+        editorSessionFuture.addListener(
+                () -> {
+                    ListenableEditorSession editorSession;
+                    try {
+                        editorSession = editorSessionFuture.get();
+                    } catch (ExecutionException | InterruptedException e) {
+                        e.printStackTrace();
+                        return;
+                    }
+                    if (editorSession == null) {
+                        return;
+                    }
+                    mEditorSession = editorSession;
+                    updateStyleValue();
+                },
+                ContextCompat.getMainExecutor(this));
     }
 
     private void changeStyle() {
@@ -96,9 +97,8 @@
         MutableUserStyle userStyle = mEditorSession.getUserStyle().getValue().toMutableUserStyle();
         ListOption currentOption = (ListOption) userStyle.get(mTimeStyleId);
         ListUserStyleSetting listUserStyleSetting =
-                (ListUserStyleSetting) mEditorSession.getUserStyleSchema()
-                        .getRootUserStyleSettings()
-                        .get(0);
+                (ListUserStyleSetting)
+                        mEditorSession.getUserStyleSchema().getRootUserStyleSettings().get(0);
 
         // Choose the first option in the list of options that isn't currentOption. We only expect
         // two options here, so this will flip flop between them.
@@ -116,8 +116,7 @@
         if (mEditorSession == null) {
             return;
         }
-        ListOption option =
-                (ListOption) mEditorSession.getUserStyle().getValue().get(mTimeStyleId);
+        ListOption option = (ListOption) mEditorSession.getUserStyle().getValue().get(mTimeStyleId);
         mStyleValue.setText(option.getDisplayName());
     }
 }
diff --git a/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/WatchFaceRenderer.java b/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/WatchFaceRenderer.java
index e15cdbf..9ee42df 100644
--- a/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/WatchFaceRenderer.java
+++ b/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/WatchFaceRenderer.java
@@ -40,13 +40,13 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 
+import kotlin.Unit;
+
 import org.jetbrains.annotations.NotNull;
 
 import java.time.ZonedDateTime;
 import java.util.concurrent.TimeUnit;
 
-import kotlin.Unit;
-
 /**
  * Minimal rendered for the watch face, using canvas to render hours, minutes, and a blinking
  * separator.
@@ -70,7 +70,11 @@
             @NotNull CurrentUserStyleRepository currentUserStyleRepository,
             @NotNull WatchState watchState,
             @NotNull Resources resources) {
-        super(surfaceHolder, currentUserStyleRepository, watchState, CanvasType.HARDWARE,
+        super(
+                surfaceHolder,
+                currentUserStyleRepository,
+                watchState,
+                CanvasType.HARDWARE,
                 UPDATE_DELAY_MILLIS);
         mMinimalRenderer = new MinimalRenderer(watchState);
         mSecondsRenderer = new SecondsRenderer(watchState);
@@ -92,14 +96,14 @@
     }
 
     @Override
-    public void render(@NotNull Canvas canvas, @NotNull Rect rect,
-            @NotNull ZonedDateTime zonedDateTime) {
+    public void render(
+            @NotNull Canvas canvas, @NotNull Rect rect, @NotNull ZonedDateTime zonedDateTime) {
         mTimeRenderer.render(canvas, rect, zonedDateTime, getRenderParameters());
     }
 
     @Override
-    public void renderHighlightLayer(@NonNull Canvas canvas, @NonNull Rect bounds,
-            @NonNull ZonedDateTime zonedDateTime) {
+    public void renderHighlightLayer(
+            @NonNull Canvas canvas, @NonNull Rect bounds, @NonNull ZonedDateTime zonedDateTime) {
         RenderParameters.HighlightLayer highlightLayer = getRenderParameters().getHighlightLayer();
         canvas.drawColor(highlightLayer.getBackgroundTint());
         mHighlightPaint.setColor(highlightLayer.getHighlightTint());
@@ -119,7 +123,9 @@
 
     private interface TimeRenderer {
         void render(
-                @NotNull Canvas canvas, @NotNull Rect rect, @NotNull ZonedDateTime zonedDateTime,
+                @NotNull Canvas canvas,
+                @NotNull Rect rect,
+                @NotNull ZonedDateTime zonedDateTime,
                 RenderParameters renderParameters);
     }
 
@@ -137,7 +143,9 @@
 
         @Override
         public void render(
-                @NotNull Canvas canvas, @NotNull Rect rect, @NotNull ZonedDateTime zonedDateTime,
+                @NotNull Canvas canvas,
+                @NotNull Rect rect,
+                @NotNull ZonedDateTime zonedDateTime,
                 RenderParameters renderParameters) {
             mPaint.setColor(Color.BLACK);
             canvas.drawRect(rect, mPaint);
@@ -153,7 +161,8 @@
             mTimeText[2] = second % 2 == 0 ? ':' : ' ';
             mTimeText[3] = DIGITS[minute / 10];
             mTimeText[4] = DIGITS[minute % 10];
-            canvas.drawText(mTimeText,
+            canvas.drawText(
+                    mTimeText,
                     0,
                     5,
                     rect.centerX(),
@@ -163,25 +172,18 @@
     }
 
     private static class SecondsRenderer implements TimeRenderer {
-        @Px
-        public static final float SECONDS_TEXT_HEIGHT = 256f;
-        @Px
-        public static final float TIME_TEXT_ACTIVE_HEIGHT = 64f;
-        @Px
-        public static final float TIME_TEXT_AMBIENT_HEIGHT = 96f;
-        @Px
-        private static final int TEXT_PADDING = 12;
+        @Px public static final float SECONDS_TEXT_HEIGHT = 256f;
+        @Px public static final float TIME_TEXT_ACTIVE_HEIGHT = 64f;
+        @Px public static final float TIME_TEXT_AMBIENT_HEIGHT = 96f;
+        @Px private static final int TEXT_PADDING = 12;
 
         private final WatchState mWatchState;
         private final Paint mPaint;
-        private final char[] mTimeText = new char[]{'1', '0', ':', '0', '9'};
-        private final char[] mSecondsText = new char[]{'3', '0'};
-        @Px
-        private final int mTimeActiveOffset;
-        @Px
-        private final int mTimeAmbientOffset;
-        @Px
-        private final int mSecondsActiveOffset;
+        private final char[] mTimeText = new char[] {'1', '0', ':', '0', '9'};
+        private final char[] mSecondsText = new char[] {'3', '0'};
+        @Px private final int mTimeActiveOffset;
+        @Px private final int mTimeAmbientOffset;
+        @Px private final int mSecondsActiveOffset;
 
         private SecondsRenderer(WatchState watchState) {
             mWatchState = watchState;
@@ -211,7 +213,9 @@
 
         @Override
         public void render(
-                @NotNull Canvas canvas, @NotNull Rect rect, @NotNull ZonedDateTime zonedDateTime,
+                @NotNull Canvas canvas,
+                @NotNull Rect rect,
+                @NotNull ZonedDateTime zonedDateTime,
                 RenderParameters renderParameters) {
             boolean isActive = renderParameters.getDrawMode() != DrawMode.AMBIENT;
             int hour = zonedDateTime.getHour();
@@ -235,7 +239,8 @@
             mTimeText[4] = DIGITS[minute % 10];
             mPaint.setTextSize(isActive ? TIME_TEXT_ACTIVE_HEIGHT : TIME_TEXT_AMBIENT_HEIGHT);
             @Px int timeOffset = isActive ? mTimeActiveOffset : mTimeAmbientOffset;
-            canvas.drawText(mTimeText,
+            canvas.drawText(
+                    mTimeText,
                     0,
                     mTimeText.length,
                     rect.centerX(),
@@ -245,7 +250,8 @@
             if (isActive) {
                 mSecondsText[0] = DIGITS[second / 10];
                 mSecondsText[1] = DIGITS[second % 10];
-                canvas.drawText(mSecondsText,
+                canvas.drawText(
+                        mSecondsText,
                         0,
                         mSecondsText.length,
                         rect.centerX(),
diff --git a/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/WatchFaceService.java b/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/WatchFaceService.java
index d36f01f..b1389cf 100644
--- a/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/WatchFaceService.java
+++ b/wear/watchface/watchface-samples-minimal-style/src/main/java/androidx/wear/watchface/samples/minimal/style/WatchFaceService.java
@@ -38,7 +38,8 @@
     @NotNull
     @Override
     protected ListenableFuture<WatchFace> createWatchFaceFuture(
-            @NotNull SurfaceHolder surfaceHolder, @NotNull WatchState watchState,
+            @NotNull SurfaceHolder surfaceHolder,
+            @NotNull WatchState watchState,
             @NonNull ComplicationSlotsManager complicationSlotsManager,
             @NonNull CurrentUserStyleRepository currentUserStyleRepository) {
         Renderer renderer =
diff --git a/wear/watchface/watchface-style/api/current.ignore b/wear/watchface/watchface-style/api/current.ignore
new file mode 100644
index 0000000..ac33402
--- /dev/null
+++ b/wear/watchface/watchface-style/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.style.UserStyleSettingKt:
+    Removed class androidx.wear.watchface.style.UserStyleSettingKt
diff --git a/wear/watchface/watchface-style/api/current.txt b/wear/watchface/watchface-style/api/current.txt
index 5cecba6..53940f3 100644
--- a/wear/watchface/watchface-style/api/current.txt
+++ b/wear/watchface/watchface-style/api/current.txt
@@ -296,9 +296,6 @@
     property public final android.graphics.drawable.Icon? icon;
   }
 
-  public final class UserStyleSettingKt {
-  }
-
   public enum WatchFaceLayer {
     method public static androidx.wear.watchface.style.WatchFaceLayer valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.wear.watchface.style.WatchFaceLayer[] values();
diff --git a/wear/watchface/watchface-style/api/public_plus_experimental_current.txt b/wear/watchface/watchface-style/api/public_plus_experimental_current.txt
index 5cecba6..53940f3 100644
--- a/wear/watchface/watchface-style/api/public_plus_experimental_current.txt
+++ b/wear/watchface/watchface-style/api/public_plus_experimental_current.txt
@@ -296,9 +296,6 @@
     property public final android.graphics.drawable.Icon? icon;
   }
 
-  public final class UserStyleSettingKt {
-  }
-
   public enum WatchFaceLayer {
     method public static androidx.wear.watchface.style.WatchFaceLayer valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.wear.watchface.style.WatchFaceLayer[] values();
diff --git a/wear/watchface/watchface-style/api/restricted_current.ignore b/wear/watchface/watchface-style/api/restricted_current.ignore
index 1c52092..76438c7 100644
--- a/wear/watchface/watchface-style/api/restricted_current.ignore
+++ b/wear/watchface/watchface-style/api/restricted_current.ignore
@@ -1,4 +1,8 @@
 // Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.style.UserStyleSettingKt:
+    Removed class androidx.wear.watchface.style.UserStyleSettingKt
+
+
 RemovedMethod: androidx.wear.watchface.style.UserStyle#toWireFormat():
     Removed method androidx.wear.watchface.style.UserStyle.toWireFormat()
 RemovedMethod: androidx.wear.watchface.style.UserStyleData#UserStyleData(androidx.wear.watchface.style.data.UserStyleWireFormat):
@@ -43,9 +47,3 @@
     Removed method androidx.wear.watchface.style.UserStyleSetting.Option.toWireFormat()
 RemovedMethod: androidx.wear.watchface.style.UserStyleSetting.Option.Companion#createFromWireFormat(androidx.wear.watchface.style.data.OptionWireFormat):
     Removed method androidx.wear.watchface.style.UserStyleSetting.Option.Companion.createFromWireFormat(androidx.wear.watchface.style.data.OptionWireFormat)
-RemovedMethod: androidx.wear.watchface.style.UserStyleSettingKt#getIntRefAttribute(android.content.res.Resources, android.content.res.XmlResourceParser, String):
-    Removed method androidx.wear.watchface.style.UserStyleSettingKt.getIntRefAttribute(android.content.res.Resources,android.content.res.XmlResourceParser,String)
-RemovedMethod: androidx.wear.watchface.style.UserStyleSettingKt#getStringRefAttribute(android.content.res.Resources, android.content.res.XmlResourceParser, String):
-    Removed method androidx.wear.watchface.style.UserStyleSettingKt.getStringRefAttribute(android.content.res.Resources,android.content.res.XmlResourceParser,String)
-RemovedMethod: androidx.wear.watchface.style.UserStyleSettingKt#moveToStart(org.xmlpull.v1.XmlPullParser, String):
-    Removed method androidx.wear.watchface.style.UserStyleSettingKt.moveToStart(org.xmlpull.v1.XmlPullParser,String)
diff --git a/wear/watchface/watchface-style/api/restricted_current.txt b/wear/watchface/watchface-style/api/restricted_current.txt
index 5cecba6..53940f3 100644
--- a/wear/watchface/watchface-style/api/restricted_current.txt
+++ b/wear/watchface/watchface-style/api/restricted_current.txt
@@ -296,9 +296,6 @@
     property public final android.graphics.drawable.Icon? icon;
   }
 
-  public final class UserStyleSettingKt {
-  }
-
   public enum WatchFaceLayer {
     method public static androidx.wear.watchface.style.WatchFaceLayer valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.wear.watchface.style.WatchFaceLayer[] values();
diff --git a/wear/watchface/watchface-style/old-api-test-service/src/main/java/androidx/wear/watchface/style/test/StyleEchoService.kt b/wear/watchface/watchface-style/old-api-test-service/src/main/java/androidx/wear/watchface/style/test/StyleEchoService.kt
index a38577b..a2f51cc 100644
--- a/wear/watchface/watchface-style/old-api-test-service/src/main/java/androidx/wear/watchface/style/test/StyleEchoService.kt
+++ b/wear/watchface/watchface-style/old-api-test-service/src/main/java/androidx/wear/watchface/style/test/StyleEchoService.kt
@@ -20,8 +20,8 @@
 import android.content.Intent
 import android.os.IBinder
 import android.util.Log
-import androidx.wear.watchface.style.data.UserStyleSchemaWireFormat
 import androidx.wear.watchface.style.UserStyleSchema
+import androidx.wear.watchface.style.data.UserStyleSchemaWireFormat
 
 public class StyleEchoService : Service() {
     override fun onBind(intent: Intent?): IBinder = IStyleEchoServiceStub()
@@ -39,4 +39,4 @@
     companion object {
         const val TAG = "IStyleEchoServiceStub"
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/IconWireSizeAndDimensionsTest.kt b/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/IconWireSizeAndDimensionsTest.kt
index 0fb4ec9..52f34d67 100644
--- a/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/IconWireSizeAndDimensionsTest.kt
+++ b/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/IconWireSizeAndDimensionsTest.kt
@@ -59,14 +59,15 @@
 
     @Test
     public fun estimateWireSizeInBytesAndValidateIconDimensions_BooleanUserStyleSetting_IconOK() {
-        val setting = UserStyleSetting.BooleanUserStyleSetting(
-            UserStyleSetting.Id("ID1"),
-            "displayName",
-            "description",
-            testIcon,
-            listOf(WatchFaceLayer.BASE),
-            false
-        )
+        val setting =
+            UserStyleSetting.BooleanUserStyleSetting(
+                UserStyleSetting.Id("ID1"),
+                "displayName",
+                "description",
+                testIcon,
+                listOf(WatchFaceLayer.BASE),
+                false
+            )
 
         val estimate = setting.estimateWireSizeInBytesAndValidateIconDimensions(context, 100, 100)
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@@ -78,77 +79,84 @@
 
     @Test
     public fun estimateWireSizeInBytesAndValidateIconDimensions_BooleanUserStyleSetting_IconBad() {
-        val setting = UserStyleSetting.BooleanUserStyleSetting(
-            UserStyleSetting.Id("ID1"),
-            "displayName",
-            "description",
-            testIcon,
-            listOf(WatchFaceLayer.BASE),
-            false
-        )
+        val setting =
+            UserStyleSetting.BooleanUserStyleSetting(
+                UserStyleSetting.Id("ID1"),
+                "displayName",
+                "description",
+                testIcon,
+                listOf(WatchFaceLayer.BASE),
+                false
+            )
 
         try {
             setting.estimateWireSizeInBytesAndValidateIconDimensions(context, 10, 20)
             fail("An exception should have been thrown because the icon is too big")
         } catch (e: Exception) {
-            Truth.assertThat(e.message).contains(
-                "UserStyleSetting id ID1 has a 72 x 72 icon. This is too big, the maximum size" +
-                    " is 10 x 20."
-            )
+            Truth.assertThat(e.message)
+                .contains(
+                    "UserStyleSetting id ID1 has a 72 x 72 icon. " +
+                        "This is too big, the maximum size is 10 x 20."
+                )
         }
     }
 
     @Test
     public fun estimateWireSizeInBytes_DoubleRangeUserStyleSetting() {
-        val setting = UserStyleSetting.DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("example_setting"),
-            "Example Ranged Setting",
-            "An example setting",
-            null,
-            0.0,
-            1.0,
-            listOf(WatchFaceLayer.BASE),
-            0.1
-        )
+        val setting =
+            UserStyleSetting.DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("example_setting"),
+                "Example Ranged Setting",
+                "An example setting",
+                null,
+                0.0,
+                1.0,
+                listOf(WatchFaceLayer.BASE),
+                0.1
+            )
         Truth.assertThat(
-            setting.estimateWireSizeInBytesAndValidateIconDimensions(context, 100, 100)
-        ).isEqualTo(87)
+                setting.estimateWireSizeInBytesAndValidateIconDimensions(context, 100, 100)
+            )
+            .isEqualTo(87)
     }
 
     @Test
     public fun estimateWireSizeInBytes_ListUserStyleSetting() {
-        val classicStyleOption = UserStyleSetting.ListUserStyleSetting.ListOption(
-            UserStyleSetting.Option.Id("classic_style"),
-            "Classic",
-            "Classic screen reader name",
-            testIcon
-        )
+        val classicStyleOption =
+            UserStyleSetting.ListUserStyleSetting.ListOption(
+                UserStyleSetting.Option.Id("classic_style"),
+                "Classic",
+                "Classic screen reader name",
+                testIcon
+            )
 
-        val modernStyleOption = UserStyleSetting.ListUserStyleSetting.ListOption(
-            UserStyleSetting.Option.Id("modern_style"),
-            "Modern",
-            "Modern screen reader name",
-            testIcon
-        )
+        val modernStyleOption =
+            UserStyleSetting.ListUserStyleSetting.ListOption(
+                UserStyleSetting.Option.Id("modern_style"),
+                "Modern",
+                "Modern screen reader name",
+                testIcon
+            )
 
-        val gothicStyleOption = UserStyleSetting.ListUserStyleSetting.ListOption(
-            UserStyleSetting.Option.Id("gothic_style"),
-            "Gothic",
-            "Gothic screen reader name",
-            testIcon
-        )
+        val gothicStyleOption =
+            UserStyleSetting.ListUserStyleSetting.ListOption(
+                UserStyleSetting.Option.Id("gothic_style"),
+                "Gothic",
+                "Gothic screen reader name",
+                testIcon
+            )
 
-        val watchHandStyleList =
-            listOf(classicStyleOption, modernStyleOption, gothicStyleOption)
+        val watchHandStyleList = listOf(classicStyleOption, modernStyleOption, gothicStyleOption)
 
-        val setting = UserStyleSetting.ListUserStyleSetting(
-            UserStyleSetting.Id("hand_style_setting"),
-            "Hand Style",
-            "Hand visual look", /* icon = */
-            testIcon,
-            watchHandStyleList,
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-        )
+        val setting =
+            UserStyleSetting.ListUserStyleSetting(
+                UserStyleSetting.Id("hand_style_setting"),
+                "Hand Style",
+                "Hand visual look",
+                /* icon = */ testIcon,
+                watchHandStyleList,
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+            )
 
         val estimate = setting.estimateWireSizeInBytesAndValidateIconDimensions(context, 100, 100)
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@@ -160,16 +168,17 @@
 
     @Test
     public fun estimateWireSizeInBytes_LongRangeUserStyleSetting() {
-        val setting = UserStyleSetting.LongRangeUserStyleSetting(
-            UserStyleSetting.Id("watch_hand_length_style_setting"),
-            "Hand length",
-            "Scale of watch hands",
-            testIcon,
-            1,
-            100,
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY),
-            2
-        )
+        val setting =
+            UserStyleSetting.LongRangeUserStyleSetting(
+                UserStyleSetting.Id("watch_hand_length_style_setting"),
+                "Hand length",
+                "Scale of watch hands",
+                testIcon,
+                1,
+                100,
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY),
+                2
+            )
 
         val estimate = setting.estimateWireSizeInBytesAndValidateIconDimensions(context, 100, 100)
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@@ -181,13 +190,15 @@
 
     @Test
     public fun estimateWireSizeInBytes_CustomValueUserStyleSetting() {
-        val setting = UserStyleSetting.CustomValueUserStyleSetting(
-            listOf(WatchFaceLayer.BASE),
-            "custom value".encodeToByteArray()
-        )
+        val setting =
+            UserStyleSetting.CustomValueUserStyleSetting(
+                listOf(WatchFaceLayer.BASE),
+                "custom value".encodeToByteArray()
+            )
         Truth.assertThat(
-            setting.estimateWireSizeInBytesAndValidateIconDimensions(context, 100, 100)
-        ).isEqualTo(31)
+                setting.estimateWireSizeInBytesAndValidateIconDimensions(context, 100, 100)
+            )
+            .isEqualTo(31)
     }
 
     @Test
@@ -195,62 +206,56 @@
     public fun estimateWireSizeInBytes_ComplicationSlotsUserStyleSetting() {
         val leftComplicationID = 101
         val rightComplicationID = 102
-        val setting = UserStyleSetting.ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting"),
-            "Complications",
-            "Number and position",
-            icon = testIcon,
-            complicationConfig = listOf(
-                UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
-                    "Both",
-                     "Both screen reader name",
-                    testIcon,
-                    listOf()
-                ),
-                UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("NO_COMPLICATIONS"),
-                    "None",
-                    "None screen reader name",
-                    testIcon,
+        val setting =
+            UserStyleSetting.ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting"),
+                "Complications",
+                "Number and position",
+                icon = testIcon,
+                complicationConfig =
                     listOf(
-                        UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            leftComplicationID,
-                            enabled = false
+                        UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                            UserStyleSetting.Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
+                            "Both",
+                            "Both screen reader name",
+                            testIcon,
+                            listOf()
                         ),
-                        UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            rightComplicationID,
-                            enabled = false
+                        UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                            UserStyleSetting.Option.Id("NO_COMPLICATIONS"),
+                            "None",
+                            "None screen reader name",
+                            testIcon,
+                            listOf(
+                                UserStyleSetting.ComplicationSlotsUserStyleSetting
+                                    .ComplicationSlotOverlay(leftComplicationID, enabled = false),
+                                UserStyleSetting.ComplicationSlotsUserStyleSetting
+                                    .ComplicationSlotOverlay(rightComplicationID, enabled = false)
+                            )
+                        ),
+                        UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                            UserStyleSetting.Option.Id("LEFT_COMPLICATION"),
+                            "Left",
+                            "Left screen reader name",
+                            testIcon,
+                            listOf(
+                                UserStyleSetting.ComplicationSlotsUserStyleSetting
+                                    .ComplicationSlotOverlay(rightComplicationID, enabled = false)
+                            )
+                        ),
+                        UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                            UserStyleSetting.Option.Id("RIGHT_COMPLICATION"),
+                            "Right",
+                            "Right screen reader name",
+                            testIcon,
+                            listOf(
+                                UserStyleSetting.ComplicationSlotsUserStyleSetting
+                                    .ComplicationSlotOverlay(leftComplicationID, enabled = false)
+                            )
                         )
-                    )
-                ),
-                UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("LEFT_COMPLICATION"),
-                    "Left",
-                    "Left screen reader name",
-                    testIcon,
-                    listOf(
-                        UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            rightComplicationID,
-                            enabled = false
-                        )
-                    )
-                ),
-                UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("RIGHT_COMPLICATION"),
-                    "Right",
-                    "Right screen reader name",
-                    testIcon,
-                    listOf(
-                        UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            leftComplicationID,
-                            enabled = false
-                        )
-                    )
-                )
-            ),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
+                    ),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
 
         val estimate = setting.estimateWireSizeInBytesAndValidateIconDimensions(context, 100, 100)
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
diff --git a/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/OldClientAidlCompatTest.kt b/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/OldClientAidlCompatTest.kt
index 5cf9133..cf6838f 100644
--- a/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/OldClientAidlCompatTest.kt
+++ b/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/OldClientAidlCompatTest.kt
@@ -25,12 +25,12 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.LargeTest
 import androidx.test.rule.ServiceTestRule
-import androidx.wear.watchface.style.test.IStyleEchoService
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption
 import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.Option
+import androidx.wear.watchface.style.test.IStyleEchoService
 import androidx.wear.watchface.style.test.R
 import com.google.common.truth.Truth.assertThat
 import kotlin.coroutines.resume
@@ -45,162 +45,164 @@
 
 @LargeTest
 class OldClientAidlCompatTest {
-    @get:Rule
-    val serviceRule = ServiceTestRule()
+    @get:Rule val serviceRule = ServiceTestRule()
 
     companion object {
         private val CONTEXT: Context = ApplicationProvider.getApplicationContext()
 
-        private val COLOR_STYLE_SETTING = ListUserStyleSetting(
-            UserStyleSetting.Id("COLOR_STYLE_SETTING"),
-            CONTEXT.resources,
-            R.string.colors_style_setting,
-            R.string.colors_style_setting_description,
-            icon = null,
-            options = listOf(
-                ListUserStyleSetting.ListOption(
-                    Option.Id("RED_STYLE"),
-                    CONTEXT.resources,
-                    R.string.colors_style_red,
-                    R.string.colors_style_red_screen_reader,
-                    Icon.createWithResource(CONTEXT, R.drawable.red_style)
-                ),
-                ListUserStyleSetting.ListOption(
-                    Option.Id("GREEN_STYLE"),
-                    CONTEXT.resources,
-                    R.string.colors_style_green,
-                    R.string.colors_style_green_screen_reader,
-                    Icon.createWithResource(CONTEXT, R.drawable.green_style)
-                ),
-                ListUserStyleSetting.ListOption(
-                    Option.Id("BLUE_STYLE"),
-                    CONTEXT.resources,
-                    R.string.colors_style_blue,
-                    R.string.colors_style_blue_screen_reader,
-                    Icon.createWithResource(CONTEXT, R.drawable.blue_style)
+        private val COLOR_STYLE_SETTING =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("COLOR_STYLE_SETTING"),
+                CONTEXT.resources,
+                R.string.colors_style_setting,
+                R.string.colors_style_setting_description,
+                icon = null,
+                options =
+                    listOf(
+                        ListUserStyleSetting.ListOption(
+                            Option.Id("RED_STYLE"),
+                            CONTEXT.resources,
+                            R.string.colors_style_red,
+                            R.string.colors_style_red_screen_reader,
+                            Icon.createWithResource(CONTEXT, R.drawable.red_style)
+                        ),
+                        ListUserStyleSetting.ListOption(
+                            Option.Id("GREEN_STYLE"),
+                            CONTEXT.resources,
+                            R.string.colors_style_green,
+                            R.string.colors_style_green_screen_reader,
+                            Icon.createWithResource(CONTEXT, R.drawable.green_style)
+                        ),
+                        ListUserStyleSetting.ListOption(
+                            Option.Id("BLUE_STYLE"),
+                            CONTEXT.resources,
+                            R.string.colors_style_blue,
+                            R.string.colors_style_blue_screen_reader,
+                            Icon.createWithResource(CONTEXT, R.drawable.blue_style)
+                        )
+                    ),
+                listOf(
+                    WatchFaceLayer.BASE,
+                    WatchFaceLayer.COMPLICATIONS,
+                    WatchFaceLayer.COMPLICATIONS_OVERLAY
                 )
-            ),
-            listOf(
-                WatchFaceLayer.BASE,
-                WatchFaceLayer.COMPLICATIONS,
-                WatchFaceLayer.COMPLICATIONS_OVERLAY
             )
-        )
 
-        private val DRAW_HOUR_PIPS_SETTING = UserStyleSetting.BooleanUserStyleSetting(
-            UserStyleSetting.Id("DRAW_HOUR_PIPS_STYLE_SETTING"),
-            CONTEXT.resources,
-            R.string.watchface_pips_setting,
-            R.string.watchface_pips_setting_description,
-            icon = null,
-            listOf(WatchFaceLayer.BASE),
-            true
-        )
+        private val DRAW_HOUR_PIPS_SETTING =
+            UserStyleSetting.BooleanUserStyleSetting(
+                UserStyleSetting.Id("DRAW_HOUR_PIPS_STYLE_SETTING"),
+                CONTEXT.resources,
+                R.string.watchface_pips_setting,
+                R.string.watchface_pips_setting_description,
+                icon = null,
+                listOf(WatchFaceLayer.BASE),
+                true
+            )
 
-        private val WATCH_HAND_LENGTH_SETTING = UserStyleSetting.DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("WATCH_HAND_LENGTH_STYLE_SETTING"),
-            CONTEXT.resources,
-            R.string.watchface_hand_length_setting,
-            R.string.watchface_hand_length_setting_description,
-            icon = null,
-            minimumValue = 0.25,
-            maximumValue = 1.0,
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY),
-            defaultValue = 0.75
-        )
+        private val WATCH_HAND_LENGTH_SETTING =
+            UserStyleSetting.DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("WATCH_HAND_LENGTH_STYLE_SETTING"),
+                CONTEXT.resources,
+                R.string.watchface_hand_length_setting,
+                R.string.watchface_hand_length_setting_description,
+                icon = null,
+                minimumValue = 0.25,
+                maximumValue = 1.0,
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY),
+                defaultValue = 0.75
+            )
 
         @Suppress("Deprecation")
-        private val COMPLICATIONS_STYLE_SETTING = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("COMPLICATIONS_STYLE_SETTING"),
-            CONTEXT.resources,
-            R.string.watchface_complications_setting,
-            R.string.watchface_complications_setting_description,
-            icon = null,
-            complicationConfig = listOf(
-                ComplicationSlotsOption(
-                    Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
-                    CONTEXT.resources,
-                    R.string.watchface_complications_setting_both,
-                    icon = null,
-                    // NB this list is empty because each [ComplicationSlotOverlay] is applied on
-                    // top of the initial config.
-                    listOf()
-                ),
-                ComplicationSlotsOption(
-                    Option.Id("NO_COMPLICATIONS"),
-                    CONTEXT.resources,
-                    R.string.watchface_complications_setting_none,
-                    icon = null,
+        private val COMPLICATIONS_STYLE_SETTING =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("COMPLICATIONS_STYLE_SETTING"),
+                CONTEXT.resources,
+                R.string.watchface_complications_setting,
+                R.string.watchface_complications_setting_description,
+                icon = null,
+                complicationConfig =
                     listOf(
-                        ComplicationSlotOverlay(complicationSlotId = 1, enabled = false),
-                        ComplicationSlotOverlay(complicationSlotId = 2, enabled = false)
-                    )
-                ),
-                ComplicationSlotsOption(
-                    Option.Id("LEFT_COMPLICATION"),
-                    CONTEXT.resources,
-                    R.string.watchface_complications_setting_left,
-                    icon = null,
-                    listOf(ComplicationSlotOverlay(complicationSlotId = 1, enabled = false))
-                ),
-                ComplicationSlotsOption(
-                    Option.Id("RIGHT_COMPLICATION"),
-                    CONTEXT.resources,
-                    R.string.watchface_complications_setting_right,
-                    icon = null,
-                    listOf(ComplicationSlotOverlay(complicationSlotId = 2, enabled = false))
-                )
-            ),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
-
-        private val LONG_RANGE_SETTING = UserStyleSetting.LongRangeUserStyleSetting(
-            UserStyleSetting.Id("HOURS_DRAW_FREQ_STYLE_SETTING"),
-            CONTEXT.resources,
-            R.string.watchface_draw_hours_freq_setting,
-            R.string.watchface_draw_hours_freq_setting_description,
-            icon = null,
-            minimumValue = 0,
-            maximumValue = 4,
-            listOf(WatchFaceLayer.BASE),
-            defaultValue = 1
-        )
-
-        private val SCHEMA = UserStyleSchema(
-            listOf(
-                COLOR_STYLE_SETTING,
-                DRAW_HOUR_PIPS_SETTING,
-                WATCH_HAND_LENGTH_SETTING,
-                COMPLICATIONS_STYLE_SETTING,
-                LONG_RANGE_SETTING
+                        ComplicationSlotsOption(
+                            Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
+                            CONTEXT.resources,
+                            R.string.watchface_complications_setting_both,
+                            icon = null,
+                            // NB this list is empty because each [ComplicationSlotOverlay] is
+                            // applied on
+                            // top of the initial config.
+                            listOf()
+                        ),
+                        ComplicationSlotsOption(
+                            Option.Id("NO_COMPLICATIONS"),
+                            CONTEXT.resources,
+                            R.string.watchface_complications_setting_none,
+                            icon = null,
+                            listOf(
+                                ComplicationSlotOverlay(complicationSlotId = 1, enabled = false),
+                                ComplicationSlotOverlay(complicationSlotId = 2, enabled = false)
+                            )
+                        ),
+                        ComplicationSlotsOption(
+                            Option.Id("LEFT_COMPLICATION"),
+                            CONTEXT.resources,
+                            R.string.watchface_complications_setting_left,
+                            icon = null,
+                            listOf(ComplicationSlotOverlay(complicationSlotId = 1, enabled = false))
+                        ),
+                        ComplicationSlotsOption(
+                            Option.Id("RIGHT_COMPLICATION"),
+                            CONTEXT.resources,
+                            R.string.watchface_complications_setting_right,
+                            icon = null,
+                            listOf(ComplicationSlotOverlay(complicationSlotId = 2, enabled = false))
+                        )
+                    ),
+                listOf(WatchFaceLayer.COMPLICATIONS)
             )
-        )
+
+        private val LONG_RANGE_SETTING =
+            UserStyleSetting.LongRangeUserStyleSetting(
+                UserStyleSetting.Id("HOURS_DRAW_FREQ_STYLE_SETTING"),
+                CONTEXT.resources,
+                R.string.watchface_draw_hours_freq_setting,
+                R.string.watchface_draw_hours_freq_setting_description,
+                icon = null,
+                minimumValue = 0,
+                maximumValue = 4,
+                listOf(WatchFaceLayer.BASE),
+                defaultValue = 1
+            )
+
+        private val SCHEMA =
+            UserStyleSchema(
+                listOf(
+                    COLOR_STYLE_SETTING,
+                    DRAW_HOUR_PIPS_SETTING,
+                    WATCH_HAND_LENGTH_SETTING,
+                    COMPLICATIONS_STYLE_SETTING,
+                    LONG_RANGE_SETTING
+                )
+            )
 
         private const val ACTON = "com.google.android.wearable.action.TEST"
         private const val TEXT_FIXTURE_APK = "watchface-style-old-api-test-service-release.apk"
         private const val PACKAGE_NAME = "androidx.wear.watchface.style.test.oldApiTestService"
     }
 
-    @Before
-    fun setUp() = withPackageName(PACKAGE_NAME) {
-        install(TEXT_FIXTURE_APK)
-    }
+    @Before fun setUp() = withPackageName(PACKAGE_NAME) { install(TEXT_FIXTURE_APK) }
 
-    @After
-    fun tearDown() = withPackageName(PACKAGE_NAME) {
-        uninstall()
-    }
+    @After fun tearDown() = withPackageName(PACKAGE_NAME) { uninstall() }
 
     @Test
     @Ignore // TODO(b/265425077): This test is failing on the bots, fix it.
     fun roundTripUserStyleSchema() = runBlocking {
-        val service = IStyleEchoService.Stub.asInterface(
-            bindService(Intent(ACTON).apply { setPackage(PACKAGE_NAME) })
-        )
+        val service =
+            IStyleEchoService.Stub.asInterface(
+                bindService(Intent(ACTON).apply { setPackage(PACKAGE_NAME) })
+            )
 
-        val result = UserStyleSchema(
-            service.roundTripToApiUserStyleSchemaWireFormat(SCHEMA.toWireFormat())
-        )
+        val result =
+            UserStyleSchema(service.roundTripToApiUserStyleSchemaWireFormat(SCHEMA.toWireFormat()))
 
         // We expect five root settings back. Some of the details will have been clipped which
         // is expected because not all the current features are supported by v1.1.1, the main
@@ -209,23 +211,21 @@
     }
 
     private suspend fun bindService(intent: Intent): IBinder = suspendCoroutine { continuation ->
-        val bound = CONTEXT.bindService(
-            intent,
-            object : ServiceConnection {
-                override fun onServiceConnected(componentName: ComponentName, binder: IBinder) {
-                    continuation.resume(binder)
-                }
+        val bound =
+            CONTEXT.bindService(
+                intent,
+                object : ServiceConnection {
+                    override fun onServiceConnected(componentName: ComponentName, binder: IBinder) {
+                        continuation.resume(binder)
+                    }
 
-                override fun onServiceDisconnected(p0: ComponentName?) {
-                }
-            },
-            Context.BIND_AUTO_CREATE or Context.BIND_IMPORTANT
-        )
+                    override fun onServiceDisconnected(p0: ComponentName?) {}
+                },
+                Context.BIND_AUTO_CREATE or Context.BIND_IMPORTANT
+            )
 
         if (!bound) {
-            continuation.resumeWithException(
-                IllegalStateException("No service found for $intent.")
-            )
+            continuation.resumeWithException(IllegalStateException("No service found for $intent."))
         }
     }
 }
diff --git a/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/TestHelper.kt b/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/TestHelper.kt
index 2f90085..adc51af 100644
--- a/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/TestHelper.kt
+++ b/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/TestHelper.kt
@@ -52,7 +52,8 @@
                 InstrumentationRegistry.getInstrumentation().context.cacheDir
             }
             else -> InstrumentationRegistry.getInstrumentation().context.externalCacheDir
-        } ?: throw IllegalStateException("Unable to select a directory for writing files.")
+        }
+            ?: throw IllegalStateException("Unable to select a directory for writing files.")
     }
 
     public fun uninstall() = executeCommand("pm uninstall $packageName")
@@ -63,12 +64,15 @@
 
         try {
             // First writes in a temp file the apk from the assets
-            val tmpApkFile = File(dirUsableByAppAndShell, "tmp_$apkName").also { file ->
-                file.delete()
-                file.createNewFile()
-                file.deleteOnExit()
-                file.outputStream().use { instrumentation.context.assets.open(apkName).copyTo(it) }
-            }
+            val tmpApkFile =
+                File(dirUsableByAppAndShell, "tmp_$apkName").also { file ->
+                    file.delete()
+                    file.createNewFile()
+                    file.deleteOnExit()
+                    file.outputStream().use {
+                        instrumentation.context.assets.open(apkName).copyTo(it)
+                    }
+                }
             cleanUpBlocks.add { tmpApkFile.delete() }
 
             // Then moves it to a destination that can be used to install it
@@ -82,11 +86,7 @@
 
             // Creates an install session
             val installCreateOutput = executeCommand("pm install-create -t").first().trim()
-            val sessionId = REGEX_SESSION_ID
-                .find(installCreateOutput)!!
-                .groups[1]!!
-                .value
-                .toLong()
+            val sessionId = REGEX_SESSION_ID.find(installCreateOutput)!!.groups[1]!!.value.toLong()
 
             // Adds the base apk to the install session
             val successBaseApk =
@@ -127,4 +127,4 @@
         private const val TEMP_DIR = "/data/local/tmp/"
         private val REGEX_SESSION_ID = """\[(\d+)\]""".toRegex()
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/UserStyleSchemaInflateTest.kt b/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/UserStyleSchemaInflateTest.kt
index e8bff3b..a1ab85d 100644
--- a/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/UserStyleSchemaInflateTest.kt
+++ b/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/UserStyleSchemaInflateTest.kt
@@ -27,8 +27,8 @@
 import androidx.wear.watchface.complications.data.ComplicationType
 import androidx.wear.watchface.complications.iterate
 import androidx.wear.watchface.complications.moveToStart
-import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting.ListOption
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption
+import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting.ListOption
 import androidx.wear.watchface.style.test.R
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
@@ -56,11 +56,12 @@
         assertThat(setting0.displayName).isEqualTo("Colors")
         assertThat(setting0.description).isEqualTo("Watchface colorization")
         assertThat(setting0.defaultOptionIndex).isEqualTo(1)
-        assertThat(setting0.affectedWatchFaceLayers).containsExactly(
-            WatchFaceLayer.BASE,
-            WatchFaceLayer.COMPLICATIONS,
-            WatchFaceLayer.COMPLICATIONS_OVERLAY
-        )
+        assertThat(setting0.affectedWatchFaceLayers)
+            .containsExactly(
+                WatchFaceLayer.BASE,
+                WatchFaceLayer.COMPLICATIONS,
+                WatchFaceLayer.COMPLICATIONS_OVERLAY
+            )
         assertThat(setting0.icon!!.resId).isEqualTo(R.drawable.color_style_icon)
         assertThat(setting0.watchFaceEditorData!!.icon!!.resId)
             .isEqualTo(R.drawable.color_style_icon_wf)
@@ -85,9 +86,8 @@
         assertThat(setting1.displayName).isEqualTo("thing2")
         assertThat(setting1.description).isEqualTo("description2")
         assertThat(setting1.defaultOptionIndex).isEqualTo(0)
-        assertThat(setting1.affectedWatchFaceLayers).containsExactly(
-            WatchFaceLayer.COMPLICATIONS_OVERLAY
-        )
+        assertThat(setting1.affectedWatchFaceLayers)
+            .containsExactly(WatchFaceLayer.COMPLICATIONS_OVERLAY)
         assertThat(setting1.icon).isNull()
         assertThat(setting1.watchFaceEditorData).isNull()
         assertThat(setting1.options.size).isEqualTo(2)
@@ -111,11 +111,12 @@
         assertThat(setting2.displayName).isEqualTo("A or B")
         assertThat(setting2.description).isEqualTo("Choose one")
         assertThat(setting2.defaultOptionIndex).isEqualTo(0)
-        assertThat(setting2.affectedWatchFaceLayers).containsExactly(
-            WatchFaceLayer.BASE,
-            WatchFaceLayer.COMPLICATIONS,
-            WatchFaceLayer.COMPLICATIONS_OVERLAY
-        )
+        assertThat(setting2.affectedWatchFaceLayers)
+            .containsExactly(
+                WatchFaceLayer.BASE,
+                WatchFaceLayer.COMPLICATIONS,
+                WatchFaceLayer.COMPLICATIONS_OVERLAY
+            )
         assertThat(setting1.icon).isNull()
         assertThat(setting1.options.size).isEqualTo(2)
         val option20 = (setting2.options[0] as ListOption)
@@ -157,9 +158,7 @@
         assertThat(setting1.id.value).isEqualTo("ComplicationsId")
         assertThat(setting1.displayName).isEqualTo("Complications")
         assertThat(setting1.description).isEqualTo("Controls complication layout")
-        assertThat(setting1.affectedWatchFaceLayers).containsExactly(
-            WatchFaceLayer.COMPLICATIONS
-        )
+        assertThat(setting1.affectedWatchFaceLayers).containsExactly(WatchFaceLayer.COMPLICATIONS)
         assertThat(setting1.icon).isNull()
         assertThat(setting1.options.size).isEqualTo(4)
         val option10 = (setting1.options[0] as ComplicationSlotsOption)
@@ -170,9 +169,8 @@
         val overlays10 = option10.complicationSlotOverlays.toTypedArray()
         assertThat(overlays10.size).isEqualTo(3)
         assertThat(overlays10[0].complicationSlotId).isEqualTo(1)
-        assertThat(overlays10[0].complicationSlotId).isEqualTo(context.resources.getInteger(
-            R.integer.complication_slot_id1
-        ))
+        assertThat(overlays10[0].complicationSlotId)
+            .isEqualTo(context.resources.getInteger(R.integer.complication_slot_id1))
         assertThat(overlays10[0].enabled).isFalse()
         assertThat(overlays10[0].accessibilityTraversalIndex).isNull()
         assertThat(overlays10[0].complicationSlotBounds).isNull()
@@ -194,10 +192,11 @@
         assertThat(overlays11[0].enabled).isNull()
         assertThat(overlays11[0].accessibilityTraversalIndex).isNull()
         assertThat(
-            overlays11[0].complicationSlotBounds!!.perComplicationTypeBounds[
-                ComplicationType.LONG_TEXT
-            ]
-        ).isEqualTo(RectF(0.2f, 0.4f, 0.3f, 0.1f))
+                overlays11[0]
+                    .complicationSlotBounds!!
+                    .perComplicationTypeBounds[ComplicationType.LONG_TEXT]
+            )
+            .isEqualTo(RectF(0.2f, 0.4f, 0.3f, 0.1f))
 
         val option12 = (setting1.options[2] as ComplicationSlotsOption)
         assertThat(option12.id).isEqualTo(UserStyleSetting.Option.Id("three"))
@@ -206,15 +205,17 @@
         assertThat(option12.complicationSlotOverlays.size).isEqualTo(1)
         val overlays12 = option12.complicationSlotOverlays.toTypedArray()
         assertThat(
-            overlays12[0].complicationSlotBounds!!.perComplicationTypeBounds[
-                ComplicationType.SHORT_TEXT
-            ]
-        ).isEqualTo(RectF(0.2f, 0.4f, 0.3f, 0.1f))
+                overlays12[0]
+                    .complicationSlotBounds!!
+                    .perComplicationTypeBounds[ComplicationType.SHORT_TEXT]
+            )
+            .isEqualTo(RectF(0.2f, 0.4f, 0.3f, 0.1f))
         assertThat(
-            overlays12[0].complicationSlotBounds!!.perComplicationTypeBounds[
-                ComplicationType.LONG_TEXT
-            ]
-        ).isEqualTo(RectF(0.6f, 0.8f, 0.7f, 0.5f))
+                overlays12[0]
+                    .complicationSlotBounds!!
+                    .perComplicationTypeBounds[ComplicationType.LONG_TEXT]
+            )
+            .isEqualTo(RectF(0.6f, 0.8f, 0.7f, 0.5f))
 
         val option13 = (setting1.options[3] as ComplicationSlotsOption)
         assertThat(option13.id).isEqualTo(UserStyleSetting.Option.Id("four"))
@@ -232,10 +233,8 @@
         assertThat(setting2.defaultValue).isEqualTo(2.5)
         assertThat(setting2.minimumValue).isEqualTo(-1.5)
         assertThat(setting2.maximumValue).isEqualTo(10.5)
-        assertThat(setting2.affectedWatchFaceLayers).containsExactly(
-            WatchFaceLayer.BASE,
-            WatchFaceLayer.COMPLICATIONS
-        )
+        assertThat(setting2.affectedWatchFaceLayers)
+            .containsExactly(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS)
         assertThat(setting2.icon).isNull()
 
         val setting3 = schema.userStyleSettings[3] as UserStyleSetting.LongRangeUserStyleSetting
@@ -245,10 +244,8 @@
         assertThat(setting3.defaultValue).isEqualTo(2)
         assertThat(setting3.minimumValue).isEqualTo(-1)
         assertThat(setting3.maximumValue).isEqualTo(10)
-        assertThat(setting3.affectedWatchFaceLayers).containsExactly(
-            WatchFaceLayer.COMPLICATIONS,
-            WatchFaceLayer.COMPLICATIONS_OVERLAY
-        )
+        assertThat(setting3.affectedWatchFaceLayers)
+            .containsExactly(WatchFaceLayer.COMPLICATIONS, WatchFaceLayer.COMPLICATIONS_OVERLAY)
         assertThat(setting3.icon).isNull()
 
         parser.close()
@@ -270,30 +267,26 @@
         assertThat(schema2.userStyleSettings.size).isEqualTo(2)
 
         // List
-        val simpleListWithParent1 = schema1.userStyleSettings[0]
-            as UserStyleSetting.ListUserStyleSetting
-        val simpleListWithParent2 = schema2.userStyleSettings[0]
-            as UserStyleSetting.ListUserStyleSetting
+        val simpleListWithParent1 =
+            schema1.userStyleSettings[0] as UserStyleSetting.ListUserStyleSetting
+        val simpleListWithParent2 =
+            schema2.userStyleSettings[0] as UserStyleSetting.ListUserStyleSetting
 
         assertThat(simpleListWithParent1).isEqualTo(simpleListWithParent2)
 
         val listParser = context.resources.getXml(R.xml.list_setting_common)
         listParser.moveToStart("ListUserStyleSetting")
 
-        val simpleListSetting = UserStyleSetting.ListUserStyleSetting.inflate(
-            context.resources, listParser, emptyMap()
-        )
+        val simpleListSetting =
+            UserStyleSetting.ListUserStyleSetting.inflate(context.resources, listParser, emptyMap())
 
         assertThat(simpleListWithParent1).isEqualTo(simpleListSetting)
-        assertThat(simpleListSetting.id.value).isEqualTo(
-            context.resources.getString(R.string.list_setting_common_id)
-        )
-        assertThat(simpleListSetting.options[0].id.toString()).isEqualTo(
-            context.resources.getString(R.string.list_setting_common_option_red_id)
-        )
-        assertThat(simpleListSetting.options[1].id.toString()).isEqualTo(
-            context.resources.getString(R.string.list_setting_common_option_green_id)
-        )
+        assertThat(simpleListSetting.id.value)
+            .isEqualTo(context.resources.getString(R.string.list_setting_common_id))
+        assertThat(simpleListSetting.options[0].id.toString())
+            .isEqualTo(context.resources.getString(R.string.list_setting_common_option_red_id))
+        assertThat(simpleListSetting.options[1].id.toString())
+            .isEqualTo(context.resources.getString(R.string.list_setting_common_option_green_id))
 
         // Check override
         val listSetting1 = schema1.userStyleSettings[1] as UserStyleSetting.ListUserStyleSetting
@@ -312,25 +305,24 @@
         assertThat(listSetting1.defaultOptionIndex).isEqualTo(simpleListSetting.defaultOptionIndex)
 
         // Double
-        val simpleDoubleWithParent1 = schema1.userStyleSettings[4]
-            as UserStyleSetting.DoubleRangeUserStyleSetting
-        val simpleDoubleWithParent2 = schema2.userStyleSettings[1]
-            as UserStyleSetting.DoubleRangeUserStyleSetting
+        val simpleDoubleWithParent1 =
+            schema1.userStyleSettings[4] as UserStyleSetting.DoubleRangeUserStyleSetting
+        val simpleDoubleWithParent2 =
+            schema2.userStyleSettings[1] as UserStyleSetting.DoubleRangeUserStyleSetting
 
         assertThat(simpleDoubleWithParent1).isEqualTo(simpleDoubleWithParent2)
 
         val doubleParser = context.resources.getXml(R.xml.double_setting_common)
         doubleParser.moveToStart("DoubleRangeUserStyleSetting")
 
-        val simpleDoubleSetting = UserStyleSetting.DoubleRangeUserStyleSetting.inflate(
-            context.resources, doubleParser
-        )
+        val simpleDoubleSetting =
+            UserStyleSetting.DoubleRangeUserStyleSetting.inflate(context.resources, doubleParser)
 
         assertThat(simpleDoubleWithParent1).isEqualTo(simpleDoubleSetting)
 
         // Check override
-        val doubleSetting1 = schema1.userStyleSettings[5]
-            as UserStyleSetting.DoubleRangeUserStyleSetting
+        val doubleSetting1 =
+            schema1.userStyleSettings[5] as UserStyleSetting.DoubleRangeUserStyleSetting
 
         assertThat(doubleSetting1.id.value).isEqualTo("double_id0")
         assertThat(doubleSetting1.defaultValue).isEqualTo(0.0)
@@ -338,9 +330,8 @@
         assertThat(doubleSetting1.minimumValue).isEqualTo(-1.0)
 
         assertThat(doubleSetting1.displayName).isEqualTo(simpleDoubleSetting.displayName)
-        assertThat(doubleSetting1.affectedWatchFaceLayers).isEqualTo(
-            simpleDoubleSetting.affectedWatchFaceLayers
-        )
+        assertThat(doubleSetting1.affectedWatchFaceLayers)
+            .isEqualTo(simpleDoubleSetting.affectedWatchFaceLayers)
 
         doubleParser.close()
         listParser.close()
@@ -370,8 +361,7 @@
         }
 
         assertThat(flavors!!.flavors.size).isEqualTo(2)
-        assertThat(flavors!!.flavors[0].style.userStyleMap.keys).containsExactly(
-            context.getString(R.string.list_setting_common_id)
-        )
+        assertThat(flavors!!.flavors[0].style.userStyleMap.keys)
+            .containsExactly(context.getString(R.string.list_setting_common_id))
     }
 }
diff --git a/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/UserStyleSettingWithStringResourcesTest.kt b/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/UserStyleSettingWithStringResourcesTest.kt
index 4fd0c50..9a7ea94 100644
--- a/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/UserStyleSettingWithStringResourcesTest.kt
+++ b/wear/watchface/watchface-style/src/androidTest/java/androidx/wear/watchface/style/UserStyleSettingWithStringResourcesTest.kt
@@ -20,51 +20,54 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
-import androidx.wear.watchface.style.test.R
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption
 import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting.ListOption
+import androidx.wear.watchface.style.test.R
 import com.google.common.truth.Truth
+import java.util.Locale
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.Locale
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
 public class UserStyleSettingWithStringResourcesTest {
 
     private val context =
-        ApplicationProvider.getApplicationContext<Context>().createConfigurationContext(
-            ApplicationProvider.getApplicationContext<Context>().resources.configuration.apply {
-                setLocale(Locale.ENGLISH)
-            }
-        )
-
-    private val colorStyleSetting = UserStyleSetting.ListUserStyleSetting(
-        UserStyleSetting.Id("color_style_setting"),
-        context.resources,
-        R.string.colors_style_setting,
-        R.string.colors_style_setting_description,
-        icon = null,
-        options = listOf(
-            UserStyleSetting.ListUserStyleSetting.ListOption(
-                UserStyleSetting.Option.Id("red_style"),
-                context.resources,
-                R.string.red_style_name,
-                R.string.red_style_name,
-                null
-            ),
-            UserStyleSetting.ListUserStyleSetting.ListOption(
-                UserStyleSetting.Option.Id("green_style"),
-                context.resources,
-                R.string.green_style_name,
-                R.string.green_style_name,
-                null
+        ApplicationProvider.getApplicationContext<Context>()
+            .createConfigurationContext(
+                ApplicationProvider.getApplicationContext<Context>().resources.configuration.apply {
+                    setLocale(Locale.ENGLISH)
+                }
             )
-        ),
-        listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS_OVERLAY)
-    )
+
+    private val colorStyleSetting =
+        UserStyleSetting.ListUserStyleSetting(
+            UserStyleSetting.Id("color_style_setting"),
+            context.resources,
+            R.string.colors_style_setting,
+            R.string.colors_style_setting_description,
+            icon = null,
+            options =
+                listOf(
+                    UserStyleSetting.ListUserStyleSetting.ListOption(
+                        UserStyleSetting.Option.Id("red_style"),
+                        context.resources,
+                        R.string.red_style_name,
+                        R.string.red_style_name,
+                        null
+                    ),
+                    UserStyleSetting.ListUserStyleSetting.ListOption(
+                        UserStyleSetting.Option.Id("green_style"),
+                        context.resources,
+                        R.string.green_style_name,
+                        R.string.green_style_name,
+                        null
+                    )
+                ),
+            listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS_OVERLAY)
+        )
 
     @Test
     public fun stringResources_en() {
@@ -72,18 +75,18 @@
         Truth.assertThat(colorStyleSetting.description).isEqualTo("Watchface colorization")
 
         Truth.assertThat(
-            (
-                colorStyleSetting.getOptionForId(UserStyleSetting.Option.Id("red_style")) as
-                    UserStyleSetting.ListUserStyleSetting.ListOption
-                ).displayName
-        ).isEqualTo("Red Style")
+                (colorStyleSetting.getOptionForId(UserStyleSetting.Option.Id("red_style"))
+                        as UserStyleSetting.ListUserStyleSetting.ListOption)
+                    .displayName
+            )
+            .isEqualTo("Red Style")
 
         Truth.assertThat(
-            (
-                colorStyleSetting.getOptionForId(UserStyleSetting.Option.Id("green_style")) as
-                    UserStyleSetting.ListUserStyleSetting.ListOption
-                ).displayName
-        ).isEqualTo("Green Style")
+                (colorStyleSetting.getOptionForId(UserStyleSetting.Option.Id("green_style"))
+                        as UserStyleSetting.ListUserStyleSetting.ListOption)
+                    .displayName
+            )
+            .isEqualTo("Green Style")
     }
 
     // We do want to call updateConfiguration here to test what happens when the locale changes.
@@ -91,62 +94,62 @@
     @Test
     public fun stringResources_it() {
         context.resources.updateConfiguration(
-            context.resources.configuration.apply {
-                setLocale(Locale.ITALIAN)
-            },
+            context.resources.configuration.apply { setLocale(Locale.ITALIAN) },
             context.resources.displayMetrics
         )
         Truth.assertThat(colorStyleSetting.displayName).isEqualTo("Colori")
         Truth.assertThat(colorStyleSetting.description).isEqualTo("Colorazione del quadrante")
 
         Truth.assertThat(
-            (
-                colorStyleSetting.getOptionForId(UserStyleSetting.Option.Id("red_style")) as
-                    UserStyleSetting.ListUserStyleSetting.ListOption
-                ).displayName
-        ).isEqualTo("Stile rosso")
+                (colorStyleSetting.getOptionForId(UserStyleSetting.Option.Id("red_style"))
+                        as UserStyleSetting.ListUserStyleSetting.ListOption)
+                    .displayName
+            )
+            .isEqualTo("Stile rosso")
 
         Truth.assertThat(
-            (
-                colorStyleSetting.getOptionForId(UserStyleSetting.Option.Id("green_style")) as
-                    UserStyleSetting.ListUserStyleSetting.ListOption
-                ).displayName
-        ).isEqualTo("Stile verde")
+                (colorStyleSetting.getOptionForId(UserStyleSetting.Option.Id("green_style"))
+                        as UserStyleSetting.ListUserStyleSetting.ListOption)
+                    .displayName
+            )
+            .isEqualTo("Stile verde")
     }
 
     @Test
     public fun listOptionsWithIndices() {
-        val listUserStyleSetting = ListUserStyleSetting(
-            UserStyleSetting.Id("list"),
-            context.resources,
-            R.string.colors_style_setting,
-            R.string.colors_style_setting_description,
-            icon = null,
-            options = listOf(
-                ListOption(
-                    UserStyleSetting.Option.Id("one"),
-                    context.resources,
-                    R.string.ith_option,
-                    R.string.ith_option_screen_reader_name,
-                    icon = null
-                ),
-                ListOption(
-                    UserStyleSetting.Option.Id("two"),
-                    context.resources,
-                    R.string.ith_option,
-                    R.string.ith_option_screen_reader_name,
-                    icon = null
-                ),
-                ListOption(
-                    UserStyleSetting.Option.Id("three"),
-                    context.resources,
-                    R.string.ith_option,
-                    R.string.ith_option_screen_reader_name,
-                    icon = null
-                )
-            ),
-            listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS_OVERLAY)
-        )
+        val listUserStyleSetting =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("list"),
+                context.resources,
+                R.string.colors_style_setting,
+                R.string.colors_style_setting_description,
+                icon = null,
+                options =
+                    listOf(
+                        ListOption(
+                            UserStyleSetting.Option.Id("one"),
+                            context.resources,
+                            R.string.ith_option,
+                            R.string.ith_option_screen_reader_name,
+                            icon = null
+                        ),
+                        ListOption(
+                            UserStyleSetting.Option.Id("two"),
+                            context.resources,
+                            R.string.ith_option,
+                            R.string.ith_option_screen_reader_name,
+                            icon = null
+                        ),
+                        ListOption(
+                            UserStyleSetting.Option.Id("three"),
+                            context.resources,
+                            R.string.ith_option,
+                            R.string.ith_option_screen_reader_name,
+                            icon = null
+                        )
+                    ),
+                listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS_OVERLAY)
+            )
 
         val option0 = listUserStyleSetting.options[0] as ListOption
         Truth.assertThat(option0.displayName).isEqualTo("1st option")
@@ -164,26 +167,27 @@
     @Test
     @Suppress("deprecation")
     public fun listUserStyleSettingWireFormatRoundTrip_noScreenReaderName() {
-        val listUserStyleSetting = ListUserStyleSetting(
-            UserStyleSetting.Id("list"),
-            context.resources,
-            R.string.colors_style_setting,
-            R.string.colors_style_setting_description,
-            icon = null,
-            options = listOf(
-                ListOption(
-                    UserStyleSetting.Option.Id("one"),
-                    context.resources,
-                    R.string.ith_option,
-                    icon = null
-                )
-            ),
-            listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS_OVERLAY)
-        )
+        val listUserStyleSetting =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("list"),
+                context.resources,
+                R.string.colors_style_setting,
+                R.string.colors_style_setting_description,
+                icon = null,
+                options =
+                    listOf(
+                        ListOption(
+                            UserStyleSetting.Option.Id("one"),
+                            context.resources,
+                            R.string.ith_option,
+                            icon = null
+                        )
+                    ),
+                listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS_OVERLAY)
+            )
 
-        val listUserStyleSettingAfterRoundTrip = ListUserStyleSetting(
-            listUserStyleSetting.toWireFormat()
-        )
+        val listUserStyleSettingAfterRoundTrip =
+            ListUserStyleSetting(listUserStyleSetting.toWireFormat())
 
         val option0 = listUserStyleSettingAfterRoundTrip.options[0] as ListOption
         Truth.assertThat(option0.displayName).isEqualTo("1st option")
@@ -193,39 +197,41 @@
 
     @Test
     public fun complicationSlotsOptionsWithIndices() {
-        val complicationSetting = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting1"),
-            displayName = "Complications",
-            description = "Number and position",
-            icon = null,
-            complicationConfig = listOf(
-                ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("one"),
-                    context.resources,
-                    R.string.ith_option,
-                    R.string.ith_option_screen_reader_name,
-                    icon = null,
-                    emptyList()
-                ),
-                ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("two"),
-                    context.resources,
-                    R.string.ith_option,
-                    R.string.ith_option_screen_reader_name,
-                    icon = null,
-                    emptyList()
-                ),
-                ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("three"),
-                    context.resources,
-                    R.string.ith_option,
-                    R.string.ith_option_screen_reader_name,
-                    icon = null,
-                    emptyList()
-                )
-            ),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
+        val complicationSetting =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting1"),
+                displayName = "Complications",
+                description = "Number and position",
+                icon = null,
+                complicationConfig =
+                    listOf(
+                        ComplicationSlotsOption(
+                            UserStyleSetting.Option.Id("one"),
+                            context.resources,
+                            R.string.ith_option,
+                            R.string.ith_option_screen_reader_name,
+                            icon = null,
+                            emptyList()
+                        ),
+                        ComplicationSlotsOption(
+                            UserStyleSetting.Option.Id("two"),
+                            context.resources,
+                            R.string.ith_option,
+                            R.string.ith_option_screen_reader_name,
+                            icon = null,
+                            emptyList()
+                        ),
+                        ComplicationSlotsOption(
+                            UserStyleSetting.Option.Id("three"),
+                            context.resources,
+                            R.string.ith_option,
+                            R.string.ith_option_screen_reader_name,
+                            icon = null,
+                            emptyList()
+                        )
+                    ),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
 
         val option0 = complicationSetting.options[0] as ComplicationSlotsOption
         Truth.assertThat(option0.displayName).isEqualTo("1st option")
@@ -244,45 +250,48 @@
     public fun complicationSettingsWithIndices() {
         val one = UserStyleSetting.Id("one")
         val two = UserStyleSetting.Id("two")
-        val schema = UserStyleSchema(
-            listOf(
-                ListUserStyleSetting(
-                    one,
-                    context.resources,
-                    R.string.ith_style,
-                    R.string.ith_style_screen_reader_name,
-                    icon = null,
-                    options = listOf(
-                        ListOption(
-                            UserStyleSetting.Option.Id("one"),
-                            context.resources,
-                            R.string.ith_option,
-                            R.string.ith_option_screen_reader_name,
-                            icon = null
-                        )
+        val schema =
+            UserStyleSchema(
+                listOf(
+                    ListUserStyleSetting(
+                        one,
+                        context.resources,
+                        R.string.ith_style,
+                        R.string.ith_style_screen_reader_name,
+                        icon = null,
+                        options =
+                            listOf(
+                                ListOption(
+                                    UserStyleSetting.Option.Id("one"),
+                                    context.resources,
+                                    R.string.ith_option,
+                                    R.string.ith_option_screen_reader_name,
+                                    icon = null
+                                )
+                            ),
+                        listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS_OVERLAY)
                     ),
-                    listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS_OVERLAY)
-                ),
-                ComplicationSlotsUserStyleSetting(
-                    two,
-                    context.resources,
-                    R.string.ith_style,
-                    R.string.ith_style_screen_reader_name,
-                    icon = null,
-                    complicationConfig = listOf(
-                        ComplicationSlotsOption(
-                            UserStyleSetting.Option.Id("one"),
-                            context.resources,
-                            R.string.ith_option,
-                            R.string.ith_option_screen_reader_name,
-                            icon = null,
-                            emptyList()
-                        )
-                    ),
-                    listOf(WatchFaceLayer.COMPLICATIONS)
+                    ComplicationSlotsUserStyleSetting(
+                        two,
+                        context.resources,
+                        R.string.ith_style,
+                        R.string.ith_style_screen_reader_name,
+                        icon = null,
+                        complicationConfig =
+                            listOf(
+                                ComplicationSlotsOption(
+                                    UserStyleSetting.Option.Id("one"),
+                                    context.resources,
+                                    R.string.ith_option,
+                                    R.string.ith_option_screen_reader_name,
+                                    icon = null,
+                                    emptyList()
+                                )
+                            ),
+                        listOf(WatchFaceLayer.COMPLICATIONS)
+                    )
                 )
             )
-        )
 
         Truth.assertThat(schema[one]!!.displayName).isEqualTo("1st style")
         Truth.assertThat(schema[one]!!.description).isEqualTo("1st style setting")
@@ -292,32 +301,32 @@
 
     @Test
     @Suppress("deprecation")
-    public fun
-    complicationsUserStyleSettingWireFormatRoundTrip_noScreenReaderName_filledByDisplayName() {
-        val complicationSetting = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting1"),
-            displayName = "Complications",
-            description = "Number and position",
-            icon = null,
-            complicationConfig = listOf(
-                ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("one"),
-                    context.resources,
-                    displayNameResourceId = R.string.ith_option,
-                    icon = null,
-                    emptyList()
-                )
-            ),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
+    public fun complicationsUserStyleSettingWireFormatRoundTrip_noScreenReaderName_filledByDisplayName() { // ktlint-disable max-line-length
+        val complicationSetting =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting1"),
+                displayName = "Complications",
+                description = "Number and position",
+                icon = null,
+                complicationConfig =
+                    listOf(
+                        ComplicationSlotsOption(
+                            UserStyleSetting.Option.Id("one"),
+                            context.resources,
+                            displayNameResourceId = R.string.ith_option,
+                            icon = null,
+                            emptyList()
+                        )
+                    ),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
 
-        val complicationSettingAfterRoundTrip = ComplicationSlotsUserStyleSetting(
-            complicationSetting.toWireFormat()
-        )
+        val complicationSettingAfterRoundTrip =
+            ComplicationSlotsUserStyleSetting(complicationSetting.toWireFormat())
 
         val option0 = complicationSettingAfterRoundTrip.options[0] as ComplicationSlotsOption
         Truth.assertThat(option0.displayName).isEqualTo("1st option")
         // We expect screenReaderName to be back filled by the displayName.
         Truth.assertThat(option0.screenReaderName).isEqualTo("1st option")
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt
index 697d684..bc6d176 100644
--- a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt
+++ b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt
@@ -43,27 +43,26 @@
  * An immutable representation of user style choices that maps each [UserStyleSetting] to
  * [UserStyleSetting.Option].
  *
- * This is intended for use by the WatchFace and entries are the same as the ones specified in
- * the [UserStyleSchema]. This means you can't serialize a UserStyle directly, instead you need
- * to use a [UserStyleData] (see [toUserStyleData]).
+ * This is intended for use by the WatchFace and entries are the same as the ones specified in the
+ * [UserStyleSchema]. This means you can't serialize a UserStyle directly, instead you need to use a
+ * [UserStyleData] (see [toUserStyleData]).
  *
  * To modify the user style, you should call [toMutableUserStyle] and construct a new [UserStyle]
  * instance with [MutableUserStyle.toUserStyle].
  *
  * @param selectedOptions The [UserStyleSetting.Option] selected for each [UserStyleSetting]
  * @param copySelectedOptions Whether to create a copy of the provided [selectedOptions]. If
- * `false`, no mutable copy of the [selectedOptions] map should be retained outside this class.
+ *   `false`, no mutable copy of the [selectedOptions] map should be retained outside this class.
  */
-public class UserStyle private constructor(
+public class UserStyle
+private constructor(
     selectedOptions: Map<UserStyleSetting, UserStyleSetting.Option>,
     copySelectedOptions: Boolean
 ) : Map<UserStyleSetting, UserStyleSetting.Option> {
     private val selectedOptions =
         if (copySelectedOptions) HashMap(selectedOptions) else selectedOptions
 
-    /**
-     * Constructs a copy of the [UserStyle]. It is backed by the same map.
-     */
+    /** Constructs a copy of the [UserStyle]. It is backed by the same map. */
     public constructor(userStyle: UserStyle) : this(userStyle.selectedOptions, false)
 
     /**
@@ -104,13 +103,13 @@
     override val size: Int by selectedOptions::size
 
     /**
-     * Constructs a [UserStyle] from a [UserStyleData] and the [UserStyleSchema]. Unrecognized
-     * style settings will be ignored. Unlisted style settings will be initialized with that
-     * setting's default option.
+     * Constructs a [UserStyle] from a [UserStyleData] and the [UserStyleSchema]. Unrecognized style
+     * settings will be ignored. Unlisted style settings will be initialized with that setting's
+     * default option.
      *
      * @param userStyle The [UserStyle] represented as a [UserStyleData].
      * @param styleSchema The [UserStyleSchema] for this UserStyle, describes how we interpret
-     * [userStyle].
+     *   [userStyle].
      */
     @Suppress("Deprecation") // userStyleSettings
     public constructor(
@@ -171,9 +170,9 @@
         selectedOptions.firstNotNullOfOrNull { if (it.key.id == settingId) it.value else null }
 
     override fun toString(): String =
-        "UserStyle[" + selectedOptions.entries.joinToString(
-            transform = { "${it.key.id} -> ${it.value}" }
-        ) + "]"
+        "UserStyle[" +
+            selectedOptions.entries.joinToString(transform = { "${it.key.id} -> ${it.value}" }) +
+            "]"
 
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
@@ -236,20 +235,20 @@
     override fun isEmpty(): Boolean = selectedOptions.isEmpty()
 }
 
-/**
- * A mutable [UserStyle]. This must be converted back to a [UserStyle] by calling [toUserStyle].
- */
+/** A mutable [UserStyle]. This must be converted back to a [UserStyle] by calling [toUserStyle]. */
 public class MutableUserStyle internal constructor(userStyle: UserStyle) :
     Iterable<Map.Entry<UserStyleSetting, UserStyleSetting.Option>> {
     /** The map from the available settings and the selected option. */
-    private val selectedOptions = HashMap<UserStyleSetting, UserStyleSetting.Option>().apply {
-        for ((setting, option) in userStyle) {
-            this[setting] = option
+    private val selectedOptions =
+        HashMap<UserStyleSetting, UserStyleSetting.Option>().apply {
+            for ((setting, option) in userStyle) {
+                this[setting] = option
+            }
         }
-    }
 
     /** The number of entries in the style. */
-    val size: Int get() = selectedOptions.size
+    val size: Int
+        get() = selectedOptions.size
 
     /** Iterator over the elements of the user style. */
     override fun iterator(): Iterator<Map.Entry<UserStyleSetting, UserStyleSetting.Option>> =
@@ -271,9 +270,9 @@
      *
      * @param setting The [UserStyleSetting] we're setting the [option] for, must be in the schema.
      * @param option the [UserStyleSetting.Option] we're setting. Must be a valid option for
-     * [setting].
+     *   [setting].
      * @throws IllegalArgumentException if [setting] is not in the schema or if [option] is invalid
-     * for [setting].
+     *   for [setting].
      */
     public operator fun set(setting: UserStyleSetting, option: UserStyleSetting.Option) {
         require(selectedOptions.containsKey(setting)) { "Unknown setting $setting" }
@@ -288,12 +287,12 @@
      * Sets the [UserStyleSetting.Option] for the setting with the given [settingId] to the given
      * [option].
      *
-     * @param settingId The [UserStyleSetting.Id] of the  [UserStyleSetting] we're setting the
-     * [option] for, must be in the schema.
+     * @param settingId The [UserStyleSetting.Id] of the [UserStyleSetting] we're setting the
+     *   [option] for, must be in the schema.
      * @param option the [UserStyleSetting.Option] we're setting. Must be a valid option for
-     * [settingId].
+     *   [settingId].
      * @throws IllegalArgumentException if [settingId] is not in the schema or if [option] is
-     * invalid for [settingId].
+     *   invalid for [settingId].
      */
     public operator fun set(settingId: UserStyleSetting.Id, option: UserStyleSetting.Option) {
         val setting = getSettingForId(settingId)
@@ -308,11 +307,11 @@
      * Sets the [UserStyleSetting.Option] for [setting] to the option with the given [optionId].
      *
      * @param setting The [UserStyleSetting] we're setting the [optionId] for, must be in the
-     * schema.
+     *   schema.
      * @param optionId the [UserStyleSetting.Option.Id] for the [UserStyleSetting.Option] we're
-     * setting.
+     *   setting.
      * @throws IllegalArgumentException if [setting] is not in the schema or if [optionId] is
-     * unrecognized.
+     *   unrecognized.
      */
     public operator fun set(setting: UserStyleSetting, optionId: UserStyleSetting.Option.Id) {
         require(selectedOptions.containsKey(setting)) { "Unknown setting $setting" }
@@ -324,8 +323,9 @@
     /**
      * Sets the [UserStyleSetting.Option] for the setting with the given [settingId] to the option
      * with the given [optionId].
+     *
      * @throws IllegalArgumentException if [settingId] is not in the schema or if [optionId] is
-     * unrecognized.
+     *   unrecognized.
      */
     public operator fun set(settingId: UserStyleSetting.Id, optionId: UserStyleSetting.Option.Id) {
         val setting = getSettingForId(settingId)
@@ -360,33 +360,32 @@
     }
 
     override fun toString(): String =
-        "MutableUserStyle[" + selectedOptions.entries.joinToString(
-            transform = { "${it.key.id} -> ${it.value}" }
-        ) + "]"
+        "MutableUserStyle[" +
+            selectedOptions.entries.joinToString(transform = { "${it.key.id} -> ${it.value}" }) +
+            "]"
 }
 
 /**
  * A form of [UserStyle] which is easy to serialize. This is intended for use by the watch face
  * clients and the editor where we can't practically use [UserStyle] due to its limitations.
  */
-public class UserStyleData(
-    public val userStyleMap: Map<String, ByteArray>
-) {
+public class UserStyleData(public val userStyleMap: Map<String, ByteArray>) {
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    public constructor(
-        userStyle: UserStyleWireFormat
-    ) : this(userStyle.mUserStyle)
+    public constructor(userStyle: UserStyleWireFormat) : this(userStyle.mUserStyle)
 
-    override fun toString(): String = "{" + userStyleMap.entries.joinToString(
-        transform = {
-            try {
-                it.key + "=" + it.value.decodeToString()
-            } catch (e: Exception) {
-                it.key + "=" + it.value
-            }
-        }
-    ) + "}"
+    override fun toString(): String =
+        "{" +
+            userStyleMap.entries.joinToString(
+                transform = {
+                    try {
+                        it.key + "=" + it.value.decodeToString()
+                    } catch (e: Exception) {
+                        it.key + "=" + it.value
+                    }
+                }
+            ) +
+            "}"
 
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -423,23 +422,18 @@
  * [rootUserStyleSettings] rather than [userStyleSettings] for populating the top level UI.
  *
  * @param userStyleSettings The user configurable style categories associated with this watch face.
- * Empty if the watch face doesn't support user styling. Note we allow at most one
- * [UserStyleSetting.CustomValueUserStyleSetting] in the list. Prior to android T ot most one
- * [UserStyleSetting.ComplicationSlotsUserStyleSetting] is allowed, however from android T it's
- * possible with hierarchical styles for there to be more than one, but at most one can be active at
- * any given time.
+ *   Empty if the watch face doesn't support user styling. Note we allow at most one
+ *   [UserStyleSetting.CustomValueUserStyleSetting] in the list. Prior to android T ot most one
+ *   [UserStyleSetting.ComplicationSlotsUserStyleSetting] is allowed, however from android T it's
+ *   possible with hierarchical styles for there to be more than one, but at most one can be active
+ *   at any given time.
  */
-public class UserStyleSchema constructor(
-    userStyleSettings: List<UserStyleSetting>
-) {
+public class UserStyleSchema constructor(userStyleSettings: List<UserStyleSetting>) {
     public val userStyleSettings = userStyleSettings
-        @Deprecated("use rootUserStyleSettings instead")
-        get
+        @Deprecated("use rootUserStyleSettings instead") get
 
     /** For use with hierarchical schemas, lists all the settings with no parent [Option]. */
-    public val rootUserStyleSettings by lazy {
-        userStyleSettings.filter { !it.hasParent }
-    }
+    public val rootUserStyleSettings by lazy { userStyleSettings.filter { !it.hasParent } }
 
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -451,9 +445,7 @@
             complicationScaleX: Float,
             complicationScaleY: Float
         ): UserStyleSchema {
-            require(parser.name == "UserStyleSchema") {
-                "Expected a UserStyleSchema node"
-            }
+            require(parser.name == "UserStyleSchema") { "Expected a UserStyleSchema node" }
 
             val idToSetting = HashMap<String, UserStyleSetting>()
             val userStyleSettings = ArrayList<UserStyleSetting>()
@@ -461,35 +453,35 @@
             // Parse the UserStyle declaration.
             parser.iterate {
                 when (parser.name) {
-                    "BooleanUserStyleSetting" -> userStyleSettings.add(
-                        UserStyleSetting.BooleanUserStyleSetting.inflate(resources, parser)
-                    )
-
-                    "ComplicationSlotsUserStyleSetting" -> userStyleSettings.add(
-                        UserStyleSetting.ComplicationSlotsUserStyleSetting.inflate(
-                            resources,
-                            parser,
-                            complicationScaleX,
-                            complicationScaleY
+                    "BooleanUserStyleSetting" ->
+                        userStyleSettings.add(
+                            UserStyleSetting.BooleanUserStyleSetting.inflate(resources, parser)
                         )
-                    )
-
-                    "DoubleRangeUserStyleSetting" -> userStyleSettings.add(
-                        UserStyleSetting.DoubleRangeUserStyleSetting.inflate(resources, parser)
-                    )
-
-                    "ListUserStyleSetting" -> userStyleSettings.add(
-                        UserStyleSetting.ListUserStyleSetting.inflate(
-                            resources,
-                            parser,
-                            idToSetting
+                    "ComplicationSlotsUserStyleSetting" ->
+                        userStyleSettings.add(
+                            UserStyleSetting.ComplicationSlotsUserStyleSetting.inflate(
+                                resources,
+                                parser,
+                                complicationScaleX,
+                                complicationScaleY
+                            )
                         )
-                    )
-
-                    "LongRangeUserStyleSetting" -> userStyleSettings.add(
-                        UserStyleSetting.LongRangeUserStyleSetting.inflate(resources, parser)
-                    )
-
+                    "DoubleRangeUserStyleSetting" ->
+                        userStyleSettings.add(
+                            UserStyleSetting.DoubleRangeUserStyleSetting.inflate(resources, parser)
+                        )
+                    "ListUserStyleSetting" ->
+                        userStyleSettings.add(
+                            UserStyleSetting.ListUserStyleSetting.inflate(
+                                resources,
+                                parser,
+                                idToSetting
+                            )
+                        )
+                    "LongRangeUserStyleSetting" ->
+                        userStyleSettings.add(
+                            UserStyleSetting.LongRangeUserStyleSetting.inflate(resources, parser)
+                        )
                     else -> throw IllegalNodeException(parser)
                 }
                 idToSetting[userStyleSettings.last().id.value] = userStyleSettings.last()
@@ -499,9 +491,7 @@
         }
 
         internal fun UserStyleSchemaWireFormat.toApiFormat(): List<UserStyleSetting> {
-            val userStyleSettings = mSchema.map {
-                UserStyleSetting.createFromWireFormat(it)
-            }
+            val userStyleSettings = mSchema.map { UserStyleSetting.createFromWireFormat(it) }
             val wireUserStyleSettingsIterator = mSchema.iterator()
             for (setting in userStyleSettings) {
                 val wireUserStyleSetting = wireUserStyleSettingsIterator.next()
@@ -541,13 +531,10 @@
             when (setting) {
                 is UserStyleSetting.ComplicationSlotsUserStyleSetting ->
                     complicationSlotsUserStyleSettingCount++
-
                 is UserStyleSetting.CustomValueUserStyleSetting ->
                     customValueUserStyleSettingCount++
-
                 is UserStyleSetting.CustomValueUserStyleSetting2 ->
                     customValueUserStyleSettingCount++
-
                 else -> {
                     // Nothing
                 }
@@ -567,7 +554,7 @@
             validateComplicationSettings(rootUserStyleSettings, null)
         } else {
             require(complicationSlotsUserStyleSettingCount <= 1) {
-               "Prior to Android T, at most only one ComplicationSlotsUserStyleSetting is allowed"
+                "Prior to Android T, at most only one ComplicationSlotsUserStyleSetting is allowed"
             }
         }
 
@@ -622,11 +609,7 @@
                 val optionChildIndices = ArrayList<Int>()
                 for (option in userStyleSetting.options) {
                     for (child in option.childSettings) {
-                        optionChildIndices.add(
-                            userStyleSettings.indexOfFirst {
-                                it == child
-                            }
-                        )
+                        optionChildIndices.add(userStyleSettings.indexOfFirst { it == child })
                     }
                     optionChildIndices.add(-1)
                 }
@@ -638,13 +621,14 @@
     /** @hide */
     @Suppress("Deprecation") // userStyleSettings
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    public fun getDefaultUserStyle() = UserStyle(
-        HashMap<UserStyleSetting, UserStyleSetting.Option>().apply {
-            for (setting in userStyleSettings) {
-                this[setting] = setting.defaultOption
+    public fun getDefaultUserStyle() =
+        UserStyle(
+            HashMap<UserStyleSetting, UserStyleSetting.Option>().apply {
+                for (setting in userStyleSettings) {
+                    this[setting] = setting.defaultOption
+                }
             }
-        }
-    )
+        )
 
     @Suppress("Deprecation") // userStyleSettings
     override fun toString(): String = "[" + userStyleSettings.joinToString() + "]"
@@ -709,9 +693,9 @@
      * the active portion of the UserStyleSchema it returns `null`.
      *
      * @param userStyle The [UserStyle] for which the function will search for the selected
-     * [ComplicationSlotsOption], if any.
+     *   [ComplicationSlotsOption], if any.
      * @return The selected [ComplicationSlotsOption] based on the [userStyle] if any, or `null`
-     * otherwise.
+     *   otherwise.
      */
     public fun findComplicationSlotsOptionForUserStyle(
         userStyle: UserStyle
@@ -726,7 +710,7 @@
  * [MutableStateFlow]<[UserStyle]>.
  *
  * @param schema The [UserStyleSchema] for this CurrentUserStyleRepository which describes the
- * available style categories.
+ *   available style categories.
  */
 public class CurrentUserStyleRepository(public val schema: UserStyleSchema) {
     // Mutable backing field for [userStyle].
@@ -740,6 +724,7 @@
 
     /**
      * The UserStyle options must be from the supplied [UserStyleSchema].
+     *
      * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -759,7 +744,8 @@
             }
             require(setting::class.java == value.getUserStyleSettingClass()) {
                 "The option class (${value::class.java.canonicalName}) in $key must " +
-                    "match the setting class " + setting::class.java.canonicalName
+                    "match the setting class " +
+                    setting::class.java.canonicalName
             }
         }
     }
diff --git a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleFlavors.kt b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleFlavors.kt
index 13d2457..9b0998b 100644
--- a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleFlavors.kt
+++ b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleFlavors.kt
@@ -34,20 +34,18 @@
  * Represents user specified preset of watch face.
  *
  * @param id An arbitrary string that uniquely identifies a flavor within the set of flavors
- * supported by the watch face.
+ *   supported by the watch face.
  * @param style Style info of the flavor represented by [UserStyleData].
  * @param complications Specifies complication data source policy represented by
- * [DefaultComplicationDataSourcePolicy] for each [ComplicationSlot.id] presented in map. For
- * absent complication slots default policies are used.
+ *   [DefaultComplicationDataSourcePolicy] for each [ComplicationSlot.id] presented in map. For
+ *   absent complication slots default policies are used.
  */
 public class UserStyleFlavor(
     public val id: String,
     public val style: UserStyleData,
     public val complications: Map<Int, DefaultComplicationDataSourcePolicy>
 ) {
-    /**
-     * Constructs UserStyleFlavor based on [UserStyle] specified.
-     */
+    /** Constructs UserStyleFlavor based on [UserStyle] specified. */
     constructor(
         id: String,
         style: UserStyle,
@@ -57,12 +55,13 @@
     /** @hide */
     @Suppress("ShowingMemberInHiddenClass")
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    constructor(wireFormat: UserStyleFlavorWireFormat) : this(
+    constructor(
+        wireFormat: UserStyleFlavorWireFormat
+    ) : this(
         wireFormat.mId,
         UserStyleData(wireFormat.mStyle),
         wireFormat.mComplications.mapValues { DefaultComplicationDataSourcePolicy(it.value) }
-    ) {
-    }
+    ) {}
 
     /** @hide */
     @Suppress("ShowingMemberInHiddenClass")
@@ -74,8 +73,7 @@
             complications.mapValues { it.value.toWireFormat() }
         )
 
-    override fun toString(): String =
-        "UserStyleFlavor[$id: $style, $complications]"
+    override fun toString(): String = "UserStyleFlavor[$id: $style, $complications]"
 
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
@@ -106,9 +104,7 @@
             parser: XmlResourceParser,
             schema: UserStyleSchema
         ): UserStyleFlavor {
-            require(parser.name == "UserStyleFlavor") {
-                "Expected a UserStyleFlavor node"
-            }
+            require(parser.name == "UserStyleFlavor") { "Expected a UserStyleFlavor node" }
 
             val flavorId = getStringRefAttribute(resources, parser, "id")
             require(flavorId != null) { "UserStyleFlavor must have an id" }
@@ -121,9 +117,7 @@
                         val id = getStringRefAttribute(resources, parser, "id")
                         require(id != null) { "StyleOption must have an id" }
 
-                        require(parser.hasValue("value")) {
-                            "value is required for BooleanOption"
-                        }
+                        require(parser.hasValue("value")) { "value is required for BooleanOption" }
                         val value = getStringRefAttribute(resources, parser, "value")
 
                         val setting = schema[UserStyleSetting.Id(id)]
@@ -131,40 +125,41 @@
                         when (setting) {
                             is UserStyleSetting.BooleanUserStyleSetting -> {
                                 userStyle[setting] =
-                                    UserStyleSetting.BooleanUserStyleSetting
-                                        .BooleanOption.from(value!!.toBoolean())
+                                    UserStyleSetting.BooleanUserStyleSetting.BooleanOption.from(
+                                        value!!.toBoolean()
+                                    )
                             }
                             is UserStyleSetting.DoubleRangeUserStyleSetting -> {
                                 userStyle[setting] =
-                                    UserStyleSetting.DoubleRangeUserStyleSetting
-                                        .DoubleRangeOption(value!!.toDouble())
+                                    UserStyleSetting.DoubleRangeUserStyleSetting.DoubleRangeOption(
+                                        value!!.toDouble()
+                                    )
                             }
                             is UserStyleSetting.LongRangeUserStyleSetting -> {
                                 userStyle[setting] =
-                                    UserStyleSetting.LongRangeUserStyleSetting
-                                        .LongRangeOption(value!!.toLong())
+                                    UserStyleSetting.LongRangeUserStyleSetting.LongRangeOption(
+                                        value!!.toLong()
+                                    )
                             }
                             else -> {
-                                userStyle[setting] = setting.getOptionForId(
-                                    UserStyleSetting.Option.Id(value!!)
-                                )
+                                userStyle[setting] =
+                                    setting.getOptionForId(UserStyleSetting.Option.Id(value!!))
                             }
                         }
                     }
                     "ComplicationPolicy" -> {
                         val id = getIntRefAttribute(resources, parser, "slotId")
-                        require(id != null) {
-                            "slotId is required for ComplicationPolicy"
-                        }
+                        require(id != null) { "slotId is required for ComplicationPolicy" }
 
-                        val policy = DefaultComplicationDataSourcePolicy.inflate(
-                            resources,
-                            parser,
-                            "ComplicationPolicy")
+                        val policy =
+                            DefaultComplicationDataSourcePolicy.inflate(
+                                resources,
+                                parser,
+                                "ComplicationPolicy"
+                            )
 
                         complications[id] = policy
                     }
-
                     else -> throw IllegalNodeException(parser)
                 }
             }
@@ -172,7 +167,8 @@
             return UserStyleFlavor(
                 flavorId,
                 userStyle.toUserStyle().toUserStyleData(),
-                complications.toMap())
+                complications.toMap()
+            )
         }
     }
 }
@@ -183,24 +179,20 @@
  * @param flavors List of flavors.
  */
 public class UserStyleFlavors(public val flavors: List<UserStyleFlavor>) {
-    /**
-     * Constructs empty flavors collection.
-     */
+    /** Constructs empty flavors collection. */
     constructor() : this(emptyList()) {}
 
     /** @hide */
     @Suppress("ShowingMemberInHiddenClass")
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    constructor(wireFormat: UserStyleFlavorsWireFormat) : this(
-        wireFormat.mFlavors.map { UserStyleFlavor(it) }
-    ) {
-    }
+    constructor(
+        wireFormat: UserStyleFlavorsWireFormat
+    ) : this(wireFormat.mFlavors.map { UserStyleFlavor(it) }) {}
 
     /** @hide */
     @Suppress("ShowingMemberInHiddenClass")
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    fun toWireFormat() =
-        UserStyleFlavorsWireFormat(flavors.map { it.toWireFormat() })
+    fun toWireFormat() = UserStyleFlavorsWireFormat(flavors.map { it.toWireFormat() })
 
     override fun toString(): String = "$flavors"
 
@@ -228,17 +220,13 @@
             parser: XmlResourceParser,
             schema: UserStyleSchema
         ): UserStyleFlavors {
-            require(parser.name == "UserStyleFlavors") {
-                "Expected a UserStyleFlavors node"
-            }
+            require(parser.name == "UserStyleFlavors") { "Expected a UserStyleFlavors node" }
 
             val flavors = ArrayList<UserStyleFlavor>()
             parser.iterate {
                 when (parser.name) {
-                    "UserStyleFlavor" -> flavors.add(
-                        UserStyleFlavor.inflate(resources, parser, schema)
-                    )
-
+                    "UserStyleFlavor" ->
+                        flavors.add(UserStyleFlavor.inflate(resources, parser, schema))
                     else -> throw IllegalNodeException(parser)
                 }
             }
diff --git a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt
index 0b0683b..7e8ee37 100644
--- a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt
+++ b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt
@@ -49,10 +49,10 @@
 import androidx.wear.watchface.style.data.ComplicationOverlayWireFormat
 import androidx.wear.watchface.style.data.ComplicationsOptionWireFormat
 import androidx.wear.watchface.style.data.ComplicationsUserStyleSettingWireFormat
-import androidx.wear.watchface.style.data.CustomValueOptionWireFormat
 import androidx.wear.watchface.style.data.CustomValueOption2WireFormat
-import androidx.wear.watchface.style.data.CustomValueUserStyleSettingWireFormat
+import androidx.wear.watchface.style.data.CustomValueOptionWireFormat
 import androidx.wear.watchface.style.data.CustomValueUserStyleSetting2WireFormat
+import androidx.wear.watchface.style.data.CustomValueUserStyleSettingWireFormat
 import androidx.wear.watchface.style.data.DoubleRangeOptionWireFormat
 import androidx.wear.watchface.style.data.DoubleRangeUserStyleSettingWireFormat
 import androidx.wear.watchface.style.data.ListOptionWireFormat
@@ -131,21 +131,23 @@
  * [UserStyleSchema.findComplicationSlotsOptionForUserStyle].
  *
  * @property id Identifier for the element, must be unique. Styling data gets shared with the
- * companion (typically via bluetooth) so size is a consideration and short ids are encouraged.
- * There is a maximum length see [UserStyleSetting.Id.MAX_LENGTH].
+ *   companion (typically via bluetooth) so size is a consideration and short ids are encouraged.
+ *   There is a maximum length see [UserStyleSetting.Id.MAX_LENGTH].
  * @property icon [Icon] for use in the companion editor style selection UI.
  * @property watchFaceEditorData Optional data for an on watch face editor, this will not be sent to
- * the companion and its contents may be used in preference to other fields by an on watch face
- * editor.
+ *   the companion and its contents may be used in preference to other fields by an on watch face
+ *   editor.
  * @property options List of options for this UserStyleSetting. Depending on the type of
- * UserStyleSetting this may be an exhaustive list, or just examples to populate a ListView in case
- * the UserStyleSetting isn't supported by the UI (e.g. a new WatchFace with an old companion).
+ *   UserStyleSetting this may be an exhaustive list, or just examples to populate a ListView in
+ *   case the UserStyleSetting isn't supported by the UI (e.g. a new WatchFace with an old
+ *   companion).
  * @property defaultOptionIndex The default option index, used if nothing has been selected within
- * the [options] list.
+ *   the [options] list.
  * @property affectedWatchFaceLayers Used by the style configuration UI. Describes which rendering
- * layers this style affects.
+ *   layers this style affects.
  */
-public sealed class UserStyleSetting private constructor(
+public sealed class UserStyleSetting
+private constructor(
     public val id: Id,
     private val displayNameInternal: DisplayText,
     private val descriptionInternal: DisplayText,
@@ -193,17 +195,15 @@
      * Optional data for an on watch face editor (not the companion editor).
      *
      * @property icon The icon to use on the watch face editor in preference to
-     * [UserStyleSetting.icon], [ListUserStyleSetting.ListOption.icon] and
-     * [ComplicationSlotsOption.icon]. This Icon should be smaller than the one used by the
-     * companion due to the watches smaller screen size.
+     *   [UserStyleSetting.icon], [ListUserStyleSetting.ListOption.icon] and
+     *   [ComplicationSlotsOption.icon]. This Icon should be smaller than the one used by the
+     *   companion due to the watches smaller screen size.
      */
     public class WatchFaceEditorData(public val icon: Icon?) {
         @Suppress("DEPRECATION")
         internal constructor(wireFormat: Bundle) : this(wireFormat.getParcelable(ICON_KEY))
 
-        internal fun toWireFormat() = Bundle().apply {
-            icon?.let { putParcelable(ICON_KEY, it) }
-        }
+        internal fun toWireFormat() = Bundle().apply { icon?.let { putParcelable(ICON_KEY, it) } }
 
         internal fun write(dos: DataOutputStream) {
             icon?.write(dos)
@@ -214,10 +214,7 @@
 
             @SuppressLint("ResourceType")
             fun inflate(resources: Resources, parser: XmlResourceParser): WatchFaceEditorData {
-                val icon = createIcon(
-                    resources,
-                    parser
-                )
+                val icon = createIcon(resources, parser)
                 return WatchFaceEditorData(icon)
             }
         }
@@ -241,10 +238,11 @@
     /**
      * Estimates the wire size of the UserStyleSetting in bytes. This does not account for the
      * overhead of the serialization method. Where possible the exact wire size for any referenced
-     * [Icon]s is used but this isn't possible in all cases and as a fallback width x height x 4
-     * is used.
+     * [Icon]s is used but this isn't possible in all cases and as a fallback width x height x 4 is
+     * used.
      *
      * Note this method can be slow.
+     *
      * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -253,12 +251,15 @@
         @Px maxWidth: Int,
         @Px maxHeight: Int
     ): Int {
-        var sizeEstimate = id.value.length + displayName.length + description.length +
-            4 /** [defaultOptionIndex] */ + affectedWatchFaceLayers.size * 4
+        var sizeEstimate =
+            id.value.length +
+                displayName.length +
+                description.length +
+                4 +
+                /** [defaultOptionIndex] */
+                affectedWatchFaceLayers.size * 4
         icon?.getWireSizeAndDimensions(context)?.let { wireSizeAndDimensions ->
-            wireSizeAndDimensions.wireSizeBytes?.let {
-                sizeEstimate += it
-            }
+            wireSizeAndDimensions.wireSizeBytes?.let { sizeEstimate += it }
             require(
                 wireSizeAndDimensions.width <= maxWidth && wireSizeAndDimensions.height <= maxHeight
             ) {
@@ -268,11 +269,12 @@
             }
         }
         for (option in options) {
-            sizeEstimate += option.estimateWireSizeInBytesAndValidateIconDimensions(
-                context,
-                maxWidth,
-                maxHeight
-            )
+            sizeEstimate +=
+                option.estimateWireSizeInBytesAndValidateIconDimensions(
+                    context,
+                    maxWidth,
+                    maxHeight
+                )
         }
         return sizeEstimate
     }
@@ -314,40 +316,35 @@
         @Suppress("NewApi") // CustomValueUserStyleSetting2
         internal fun createFromWireFormat(
             wireFormat: UserStyleSettingWireFormat
-        ): UserStyleSetting = when (wireFormat) {
-            is BooleanUserStyleSettingWireFormat -> BooleanUserStyleSetting(wireFormat)
-
-            is ComplicationsUserStyleSettingWireFormat ->
-                ComplicationSlotsUserStyleSetting(wireFormat)
-
-            is CustomValueUserStyleSettingWireFormat -> CustomValueUserStyleSetting(wireFormat)
-
-            is CustomValueUserStyleSetting2WireFormat -> CustomValueUserStyleSetting2(wireFormat)
-
-            is DoubleRangeUserStyleSettingWireFormat -> DoubleRangeUserStyleSetting(wireFormat)
-
-            is ListUserStyleSettingWireFormat -> ListUserStyleSetting(wireFormat)
-
-            is LongRangeUserStyleSettingWireFormat -> LongRangeUserStyleSetting(wireFormat)
-
-            else -> throw IllegalArgumentException(
-                "Unknown UserStyleSettingWireFormat " + wireFormat::javaClass.name
-            )
-        }
-
-        internal fun affectsWatchFaceLayersFlagsToSet(
-            affectsWatchFaceLayers: Int
-        ) = HashSet<WatchFaceLayer>().apply {
-            if ((affectsWatchFaceLayers and 0x1) != 0) {
-                add(WatchFaceLayer.BASE)
+        ): UserStyleSetting =
+            when (wireFormat) {
+                is BooleanUserStyleSettingWireFormat -> BooleanUserStyleSetting(wireFormat)
+                is ComplicationsUserStyleSettingWireFormat ->
+                    ComplicationSlotsUserStyleSetting(wireFormat)
+                is CustomValueUserStyleSettingWireFormat -> CustomValueUserStyleSetting(wireFormat)
+                is CustomValueUserStyleSetting2WireFormat ->
+                    CustomValueUserStyleSetting2(wireFormat)
+                is DoubleRangeUserStyleSettingWireFormat -> DoubleRangeUserStyleSetting(wireFormat)
+                is ListUserStyleSettingWireFormat -> ListUserStyleSetting(wireFormat)
+                is LongRangeUserStyleSettingWireFormat -> LongRangeUserStyleSetting(wireFormat)
+                else ->
+                    throw IllegalArgumentException(
+                        "Unknown UserStyleSettingWireFormat " + wireFormat::javaClass.name
+                    )
             }
-            if ((affectsWatchFaceLayers and 0x2) != 0) {
-                add(WatchFaceLayer.COMPLICATIONS)
+
+        internal fun affectsWatchFaceLayersFlagsToSet(affectsWatchFaceLayers: Int) =
+            HashSet<WatchFaceLayer>().apply {
+                if ((affectsWatchFaceLayers and 0x1) != 0) {
+                    add(WatchFaceLayer.BASE)
+                }
+                if ((affectsWatchFaceLayers and 0x2) != 0) {
+                    add(WatchFaceLayer.COMPLICATIONS)
+                }
+                if ((affectsWatchFaceLayers and 0x4) != 0) {
+                    add(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+                }
             }
-            if ((affectsWatchFaceLayers and 0x4) != 0) {
-                add(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-            }
-        }
 
         internal fun createDisplayText(
             resources: Resources,
@@ -365,16 +362,14 @@
                 }
             } else if (parser.hasValue(attributeId) || defaultValue == null) {
                 DisplayText.CharSequenceDisplayText(
-                    parser.getAttributeValue(NAMESPACE_APP, attributeId) ?: "")
+                    parser.getAttributeValue(NAMESPACE_APP, attributeId) ?: ""
+                )
             } else {
                 defaultValue
             }
         }
 
-        internal fun createIcon(
-            resources: Resources,
-            parser: XmlResourceParser
-        ): Icon? {
+        internal fun createIcon(resources: Resources, parser: XmlResourceParser): Icon? {
             val iconId = parser.getAttributeResourceValue(NAMESPACE_ANDROID, "icon", -1)
             return if (iconId != -1) {
                 Icon.createWithResource(resources.getResourcePackageName(iconId), iconId)
@@ -383,9 +378,7 @@
             }
         }
 
-        /**
-         * Creates appropriate UserStyleSetting base on parent="@xml/..." resource reference.
-         */
+        /** Creates appropriate UserStyleSetting base on parent="@xml/..." resource reference. */
         internal fun <T> createParent(
             resources: Resources,
             parser: XmlResourceParser,
@@ -423,37 +416,30 @@
             parent: UserStyleSetting?,
             inflateDefault: Boolean,
             optionInflater:
-                Pair<String, ((resources: Resources, parser: XmlResourceParser) -> Option)>? = null
+                Pair<String, ((resources: Resources, parser: XmlResourceParser) -> Option)>? =
+                null
         ): Params {
             val settingType = "UserStyleSetting"
-            val id = getStringRefAttribute(resources, parser, "id") ?: parent?.id?.value
-                ?: throw IllegalArgumentException("$settingType must have id")
-            val displayName = createDisplayText(
-                resources,
-                parser,
-                "displayName",
-                parent?.displayNameInternal
-            )
-            val description = createDisplayText(
-                resources,
-                parser,
-                "description",
-                parent?.descriptionInternal
-            )
-            val icon = createIcon(
-                resources,
-                parser
-            ) ?: parent?.icon
+            val id =
+                getStringRefAttribute(resources, parser, "id")
+                    ?: parent?.id?.value
+                        ?: throw IllegalArgumentException("$settingType must have id")
+            val displayName =
+                createDisplayText(resources, parser, "displayName", parent?.displayNameInternal)
+            val description =
+                createDisplayText(resources, parser, "description", parent?.descriptionInternal)
+            val icon = createIcon(resources, parser) ?: parent?.icon
 
-            val defaultOptionIndex = if (inflateDefault) {
-                getAttributeChecked(
-                    parser,
-                    "defaultOptionIndex",
-                    String::toInt,
-                    parent?.defaultOptionIndex ?: 0,
-                    settingType
-                )
-            } else null
+            val defaultOptionIndex =
+                if (inflateDefault) {
+                    getAttributeChecked(
+                        parser,
+                        "defaultOptionIndex",
+                        String::toInt,
+                        parent?.defaultOptionIndex ?: 0,
+                        settingType
+                    )
+                } else null
 
             val affectsWatchFaceLayers =
                 getAttributeChecked(
@@ -469,8 +455,7 @@
             parser.iterate {
                 if (parser.name == "OnWatchEditorData") {
                     if (watchFaceEditorData == null) {
-                        watchFaceEditorData =
-                            WatchFaceEditorData.inflate(resources, parser)
+                        watchFaceEditorData = WatchFaceEditorData.inflate(resources, parser)
                     } else {
                         throw IllegalNodeException(parser)
                     }
@@ -501,7 +486,9 @@
             getOptionForId(Option.Id(id))
         }
 
-    private constructor(wireFormat: UserStyleSettingWireFormat) : this(
+    private constructor(
+        wireFormat: UserStyleSettingWireFormat
+    ) : this(
         Id(wireFormat.mId),
         DisplayText.CharSequenceDisplayText(wireFormat.mDisplayName),
         DisplayText.CharSequenceDisplayText(wireFormat.mDescription),
@@ -556,23 +543,24 @@
         return id.hashCode()
     }
 
-    override fun toString(): String = "{${id.value} : " +
-        options.joinToString(transform = { it.toString() }) + "}"
+    override fun toString(): String =
+        "{${id.value} : " + options.joinToString(transform = { it.toString() }) + "}"
 
     /**
      * Represents a choice within a style setting which can either be an option from the list or a
      * an arbitrary value depending on the nature of the style setting.
      *
      * @property id Machine readable [Id] for the style setting. Identifier for the option (or the
-     * option itself for [CustomValueUserStyleSetting.CustomValueOption]), must be unique within
-     * the UserStyleSetting. Short ids are encouraged.
+     *   option itself for [CustomValueUserStyleSetting.CustomValueOption]), must be unique within
+     *   the UserStyleSetting. Short ids are encouraged.
      * @property childSettings The list of child [UserStyleSetting]s, if any, forming a hierarchy of
-     * [UserStyleSetting]s. These must be in [UserStyleSchema.userStyleSettings]. Child
-     * [UserStyleSetting]s are deemed to be active if the [Option] is selected by the [UserStyle].
-     * This is particularly important is there are multiple [ComplicationSlotsUserStyleSetting]s,
-     * only one of which is allowed to be active at any time.
+     *   [UserStyleSetting]s. These must be in [UserStyleSchema.userStyleSettings]. Child
+     *   [UserStyleSetting]s are deemed to be active if the [Option] is selected by the [UserStyle].
+     *   This is particularly important is there are multiple [ComplicationSlotsUserStyleSetting]s,
+     *   only one of which is allowed to be active at any time.
      */
-    public abstract class Option internal constructor(
+    public abstract class Option
+    internal constructor(
         public val id: Id,
         public val childSettings: Collection<UserStyleSetting>
     ) {
@@ -633,9 +621,9 @@
                 /**
                  * Maximum length of the [value] field to ensure acceptable companion editing
                  * latency. Please note the [UserStyleSchema] and the [UserStyleSetting] are sent
-                 * over bluetooth to the companion phone when editing, and that bandwidth is
-                 * limited (2mbps is common). Best practice is to keep these Ids short, ideally
-                 * under 10 bytes.
+                 * over bluetooth to the companion phone when editing, and that bandwidth is limited
+                 * (2mbps is common). Best practice is to keep these Ids short, ideally under 10
+                 * bytes.
                  *
                  * Note the [UserStyle] has a maximum size ([UserStyle.MAXIMUM_SIZE_BYTES]) and that
                  * Option Ids are a significant contributor to the overall size of a UserStyle.
@@ -666,35 +654,26 @@
             /** @hide */
             @Suppress("NewApi")
             @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-            public fun createFromWireFormat(
-                wireFormat: OptionWireFormat
-            ): Option =
+            public fun createFromWireFormat(wireFormat: OptionWireFormat): Option =
                 when (wireFormat) {
                     is BooleanOptionWireFormat ->
                         BooleanUserStyleSetting.BooleanOption.fromWireFormat(wireFormat)
-
                     is ComplicationsOptionWireFormat ->
                         ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(wireFormat)
-
                     is CustomValueOptionWireFormat ->
                         CustomValueUserStyleSetting.CustomValueOption(wireFormat)
-
                     is CustomValueOption2WireFormat ->
                         CustomValueUserStyleSetting2.CustomValueOption(wireFormat)
-
                     is DoubleRangeOptionWireFormat ->
                         DoubleRangeUserStyleSetting.DoubleRangeOption(wireFormat)
-
-                    is ListOptionWireFormat ->
-                        ListUserStyleSetting.ListOption(wireFormat)
-
+                    is ListOptionWireFormat -> ListUserStyleSetting.ListOption(wireFormat)
                     is LongRangeOptionWireFormat ->
                         LongRangeUserStyleSetting.LongRangeOption(wireFormat)
-
-                    else -> throw IllegalArgumentException(
-                        "Unknown UserStyleSettingWireFormat.OptionWireFormat " +
-                            wireFormat::javaClass.name
-                    )
+                    else ->
+                        throw IllegalArgumentException(
+                            "Unknown UserStyleSettingWireFormat.OptionWireFormat " +
+                                wireFormat::javaClass.name
+                        )
                 }
         }
 
@@ -734,9 +713,9 @@
      *
      * @param optionId The [Option.Id] of the option
      * @return An [Option] corresponding to the name. This could either be one of the options from
-     * [UserStyleSetting]s or a newly constructed Option depending on the nature of the
-     * UserStyleSetting. If optionName is unrecognized then the default value for the setting should
-     * be returned.
+     *   [UserStyleSetting]s or a newly constructed Option depending on the nature of the
+     *   UserStyleSetting. If optionName is unrecognized then the default value for the setting
+     *   should be returned.
      */
     public open fun getOptionForId(optionId: Option.Id): Option =
         options.find { it.id.value.contentEquals(optionId.value) } ?: options[defaultOptionIndex]
@@ -749,21 +728,21 @@
          *
          * @param id [Id] for the element, must be unique.
          * @param displayName Localized human readable name for the element, used in the userStyle
-         * selection UI.
+         *   selection UI.
          * @param description Localized description string displayed under the displayName.
          * @param icon [Icon] for use in the companion userStyle selection UI. This gets sent to the
-         * companion over bluetooth and should be small (ideally a few kb in size).
+         *   companion over bluetooth and should be small (ideally a few kb in size).
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects.
+         *   face rendering layers this style affects.
          * @param defaultValue The default value for this BooleanUserStyleSetting.
-         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be sent
-         * to the companion and its contents may be used in preference to other fields by an on
-         * watch face editor.
+         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
+         *   sent to the companion and its contents may be used in preference to other fields by an
+         *   on watch face editor.
          * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         @JvmOverloads
-        public constructor (
+        public constructor(
             id: Id,
             displayName: CharSequence,
             description: CharSequence,
@@ -791,19 +770,19 @@
          *
          * @param id [Id] for the element, must be unique.
          * @param resources The [Resources] from which [displayNameResourceId] and
-         * [descriptionResourceId] are loaded.
-         * @param displayNameResourceId String resource id for a human readable name for the element,
-         * used in the userStyle selection UI.
+         *   [descriptionResourceId] are loaded.
+         * @param displayNameResourceId String resource id for a human readable name for the
+         *   element, used in the userStyle selection UI.
          * @param descriptionResourceId String resource id for a human readable description string
-         * displayed under the displayName.
+         *   displayed under the displayName.
          * @param icon [Icon] for use in the companion userStyle selection UI. This gets sent to the
-         * companion over bluetooth and should be small (ideally a few kb in size).
+         *   companion over bluetooth and should be small (ideally a few kb in size).
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects.
+         *   face rendering layers this style affects.
          * @param defaultValue The default value for this BooleanUserStyleSetting.
-         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be sent
-         * to the companion and its contents may be used in preference to other fields by an on
-         * watch face editor.
+         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
+         *   sent to the companion and its contents may be used in preference to other fields by an
+         *   on watch face editor.
          */
         @JvmOverloads
         public constructor(
@@ -829,7 +808,7 @@
             affectsWatchFaceLayers
         )
 
-        internal constructor (
+        internal constructor(
             id: Id,
             displayName: DisplayText,
             description: DisplayText,
@@ -875,21 +854,16 @@
             @SuppressLint("ResourceType")
             fun inflate(resources: Resources, parser: XmlResourceParser): BooleanUserStyleSetting {
                 val settingType = "BooleanUserStyleSetting"
-                val parent =
-                    createParent(resources, parser, settingType, ::inflate)
-                val defaultValue = getAttributeChecked(
-                    parser,
-                    "defaultBoolean",
-                    String::toBoolean,
-                    parent?.getDefaultValue(),
-                    settingType
-                )
-                val params = createBaseWithParent(
-                    resources,
-                    parser,
-                    parent,
-                    inflateDefault = false
-                )
+                val parent = createParent(resources, parser, settingType, ::inflate)
+                val defaultValue =
+                    getAttributeChecked(
+                        parser,
+                        "defaultBoolean",
+                        String::toBoolean,
+                        parent?.getDefaultValue(),
+                        settingType
+                    )
+                val params = createBaseWithParent(resources, parser, parent, inflateDefault = false)
                 return BooleanUserStyleSetting(
                     params.id,
                     params.displayName,
@@ -904,18 +878,14 @@
 
         /**
          * Represents a true or false option in the [BooleanUserStyleSetting].
+         *
          * @param value The boolean value this instance represents.
          */
-        public class BooleanOption private constructor(
-            public val value: Boolean
-        ) : Option(
-            Id(ByteArray(1).apply { this[0] = if (value) 1 else 0 }),
-            emptyList()
-        ) {
+        public class BooleanOption private constructor(public val value: Boolean) :
+            Option(Id(ByteArray(1).apply { this[0] = if (value) 1 else 0 }), emptyList()) {
             /** @hide */
             @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-            override fun toWireFormat(): BooleanOptionWireFormat =
-                BooleanOptionWireFormat(id.value)
+            override fun toWireFormat(): BooleanOptionWireFormat = BooleanOptionWireFormat(id.value)
 
             internal override fun getUserStyleSettingClass(): Class<out UserStyleSetting> =
                 BooleanUserStyleSetting::class.java
@@ -928,11 +898,9 @@
             }
 
             public companion object {
-                @JvmField
-                public val TRUE = BooleanOption(true)
+                @JvmField public val TRUE = BooleanOption(true)
 
-                @JvmField
-                public val FALSE = BooleanOption(false)
+                @JvmField public val FALSE = BooleanOption(false)
 
                 @JvmStatic
                 public fun from(value: Boolean): BooleanOption {
@@ -940,9 +908,7 @@
                 }
 
                 @JvmStatic
-                internal fun fromWireFormat(
-                    wireFormat: BooleanOptionWireFormat
-                ): BooleanOption {
+                internal fun fromWireFormat(wireFormat: BooleanOptionWireFormat): BooleanOption {
                     return from(wireFormat.mId[0] == 1.toByte())
                 }
             }
@@ -958,11 +924,11 @@
      *
      * The ComplicationsManager listens for style changes with this setting and when a
      * [ComplicationSlotsOption] is selected the overrides are automatically applied. Note its
-     * suggested that the default [ComplicationSlotOverlay] (the first entry in the list) does
-     * not apply any overrides.
+     * suggested that the default [ComplicationSlotOverlay] (the first entry in the list) does not
+     * apply any overrides.
      *
      * From android T multiple [ComplicationSlotsUserStyleSetting] are allowed in a style hierarchy
-     * as long as at  most one is active for any permutation of [UserStyle]. Prior to android T only
+     * as long as at most one is active for any permutation of [UserStyle]. Prior to android T only
      * a single ComplicationSlotsUserStyleSetting was allowed.
      *
      * Not to be confused with complication data source selection.
@@ -997,25 +963,25 @@
          * initial config (as specified in it's constructor) when the setting is selected.
          *
          * @param complicationSlotId The id of the [androidx.wear.watchface.ComplicationSlot] to
-         * configure.
+         *   configure.
          * @param enabled If non null, whether the complication should be enabled for this
-         * configuration. If null then no changes are made.
+         *   configuration. If null then no changes are made.
          * @param complicationSlotBounds If non null, the [ComplicationSlotBounds] for this
-         * configuration. If null then no changes are made.
-         * @param accessibilityTraversalIndex If non null the accessibility traversal index
-         * for this configuration. This is used to determine the order in which accessibility labels
-         * for the watch face are read to the user.
+         *   configuration. If null then no changes are made.
+         * @param accessibilityTraversalIndex If non null the accessibility traversal index for this
+         *   configuration. This is used to determine the order in which accessibility labels for
+         *   the watch face are read to the user.
          * @param nameResourceId If non null, the string resource identifier for name of the
-         * complication slot, for this configuration. These strings should be short (perhaps 10
-         * characters max) E.g. complication slots named 'left' and 'right' might be shown by the
-         * editor in a list from which the user selects a complication slot for editing.
-         * @param screenReaderNameResourceId If non null, the string resource identifier for
-         * the screen reader name of the complication slot, for this configuration. While similar to
-         * [nameResourceId] this string can be longer and should be more descriptive. E.g. saying
-         * 'left complication' rather than just 'left'.
+         *   complication slot, for this configuration. These strings should be short (perhaps 10
+         *   characters max) E.g. complication slots named 'left' and 'right' might be shown by the
+         *   editor in a list from which the user selects a complication slot for editing.
+         * @param screenReaderNameResourceId If non null, the string resource identifier for the
+         *   screen reader name of the complication slot, for this configuration. While similar to
+         *   [nameResourceId] this string can be longer and should be more descriptive. E.g. saying
+         *   'left complication' rather than just 'left'.
          */
-
-        public class ComplicationSlotOverlay constructor(
+        public class ComplicationSlotOverlay
+        constructor(
             public val complicationSlotId: Int,
             @Suppress("AutoBoxing")
             @get:Suppress("AutoBoxing")
@@ -1039,20 +1005,20 @@
 
             /**
              * @deprecated This constructor is deprecated in favour of the one that specifies
-             * optional parameters nameResourceId and screenReaderNameResourceId
-             * [ComplicationSlotOverlay(Int, Boolean?, ComplicationSlotBounds?, Int?, Int?, Int?]
+             *   optional parameters nameResourceId and screenReaderNameResourceId
+             *   [ComplicationSlotOverlay(Int, Boolean?, ComplicationSlotBounds?, Int?, Int?, Int?]
              */
             @Deprecated(
-                message = "This constructor is deprecated in favour of the one that specifies " +
-                    "optional parameters nameResourceId and screenReaderNameResourceId",
-                level = DeprecationLevel.WARNING)
+                message =
+                    "This constructor is deprecated in favour of the one that specifies " +
+                        "optional parameters nameResourceId and screenReaderNameResourceId",
+                level = DeprecationLevel.WARNING
+            )
             public constructor(
                 complicationSlotId: Int,
-                @Suppress("AutoBoxing")
-                enabled: Boolean? = null,
+                @Suppress("AutoBoxing") enabled: Boolean? = null,
                 complicationSlotBounds: ComplicationSlotBounds? = null,
-                @SuppressWarnings("AutoBoxing")
-                accessibilityTraversalIndex: Int? = null
+                @SuppressWarnings("AutoBoxing") accessibilityTraversalIndex: Int? = null
             ) : this(
                 complicationSlotId,
                 enabled,
@@ -1073,12 +1039,10 @@
             /**
              * Constructs a [ComplicationSlotOverlay].Builder.
              *
-             * @param complicationSlotId The id of the [androidx.wear.watchface.ComplicationSlot]
-             * to configure.
+             * @param complicationSlotId The id of the [androidx.wear.watchface.ComplicationSlot] to
+             *   configure.
              */
-            public class Builder(
-                private val complicationSlotId: Int
-            ) {
+            public class Builder(private val complicationSlotId: Int) {
                 private var enabled: Boolean? = null
                 private var complicationSlotBounds: ComplicationSlotBounds? = null
                 private var accessibilityTraversalIndex: Int? = null
@@ -1087,26 +1051,23 @@
 
                 /** Overrides the complication's enabled flag. */
                 @Suppress("MissingGetterMatchingBuilder")
-                public fun setEnabled(enabled: Boolean): Builder = apply {
-                    this.enabled = enabled
-                }
+                public fun setEnabled(enabled: Boolean): Builder = apply { this.enabled = enabled }
 
                 /** Overrides the complication's per [ComplicationSlotBounds]. */
                 public fun setComplicationSlotBounds(
                     complicationSlotBounds: ComplicationSlotBounds
-                ): Builder = apply {
-                    this.complicationSlotBounds = complicationSlotBounds
-                }
+                ): Builder = apply { this.complicationSlotBounds = complicationSlotBounds }
 
                 /**
                  * Overrides the [androidx.wear.watchface.ComplicationSlot]'s accessibility
                  * traversal index. This is used to sort
                  * [androidx.wear.watchface.ContentDescriptionLabel]s. If unset we will order the
-                 * complications by their initial accessibilityTraversalIndex (usually the same
-                 * as their id).
+                 * complications by their initial accessibilityTraversalIndex (usually the same as
+                 * their id).
                  */
-                public fun setAccessibilityTraversalIndex(accessibilityTraversalIndex: Int):
-                    Builder = apply {
+                public fun setAccessibilityTraversalIndex(
+                    accessibilityTraversalIndex: Int
+                ): Builder = apply {
                     this.accessibilityTraversalIndex = accessibilityTraversalIndex
                 }
 
@@ -1124,10 +1085,10 @@
                  * slot, for use by a screen reader. This resource should be a short sentence. E.g.
                  * "Left complication" for the left complication.
                  */
-                public fun setScreenReaderNameResourceId(screenReaderNameResourceId: Int):
-                    Builder = apply {
-                    this.screenReaderNameResourceId = screenReaderNameResourceId
-                }
+                public fun setScreenReaderNameResourceId(screenReaderNameResourceId: Int): Builder =
+                    apply {
+                        this.screenReaderNameResourceId = screenReaderNameResourceId
+                    }
 
                 public fun build(): ComplicationSlotOverlay =
                     ComplicationSlotOverlay(
@@ -1151,20 +1112,18 @@
                     ComplicationOverlayWireFormat.ENABLED_UNKNOWN -> null
                     ComplicationOverlayWireFormat.ENABLED_YES -> true
                     ComplicationOverlayWireFormat.ENABLED_NO -> false
-                    else -> throw InvalidParameterException(
-                        "Unrecognised wireFormat.mEnabled " + wireFormat.mEnabled
-                    )
+                    else ->
+                        throw InvalidParameterException(
+                            "Unrecognised wireFormat.mEnabled " + wireFormat.mEnabled
+                        )
                 },
                 wireFormat.mPerComplicationTypeBounds?.let { perComplicationTypeBounds ->
                     ComplicationSlotBounds.createFromPartialMap(
-                        perComplicationTypeBounds.mapKeys {
-                            ComplicationType.fromWireType(it.key)
-                        },
+                        perComplicationTypeBounds.mapKeys { ComplicationType.fromWireType(it.key) },
                         perComplicationTypeMargins?.let { margins ->
-                            margins.mapKeys {
-                                ComplicationType.fromWireType(it.key)
-                            }
-                        } ?: emptyMap()
+                            margins.mapKeys { ComplicationType.fromWireType(it.key) }
+                        }
+                            ?: emptyMap()
                     )
                 },
                 wireFormat.accessibilityTraversalIndex,
@@ -1236,19 +1195,14 @@
                     complicationScaleX: Float,
                     complicationScaleY: Float
                 ): ComplicationSlotOverlay {
-                    val complicationSlotId = getIntRefAttribute(
-                        resources, parser, "complicationSlotId"
-                    )
+                    val complicationSlotId =
+                        getIntRefAttribute(resources, parser, "complicationSlotId")
                     require(complicationSlotId != null) {
                         "ComplicationSlotOverlay missing complicationSlotId"
                     }
                     val enabled =
                         if (parser.hasValue("enabled")) {
-                            parser.getAttributeBooleanValue(
-                                NAMESPACE_APP,
-                                "enabled",
-                                true
-                            )
+                            parser.getAttributeBooleanValue(NAMESPACE_APP, "enabled", true)
                         } else {
                             null
                         }
@@ -1264,30 +1218,23 @@
                         }
                     val nameResourceId =
                         if (parser.hasValue("name")) {
-                            parser.getAttributeResourceValue(
-                                NAMESPACE_APP,
-                                "name",
-                                0
-                            )
+                            parser.getAttributeResourceValue(NAMESPACE_APP, "name", 0)
                         } else {
                             null
                         }
                     val screenReaderNameResourceId =
                         if (parser.hasValue("screenReaderName")) {
-                            parser.getAttributeResourceValue(
-                                NAMESPACE_APP,
-                                "screenReaderName",
-                                0
-                            )
+                            parser.getAttributeResourceValue(NAMESPACE_APP, "screenReaderName", 0)
                         } else {
                             null
                         }
-                    val bounds = ComplicationSlotBounds.inflate(
-                        resources,
-                        parser,
-                        complicationScaleX,
-                        complicationScaleY
-                    )
+                    val bounds =
+                        ComplicationSlotBounds.inflate(
+                            resources,
+                            parser,
+                            complicationScaleX,
+                            complicationScaleY
+                        )
 
                     return ComplicationSlotOverlay(
                         complicationSlotId,
@@ -1306,24 +1253,23 @@
          *
          * @param id [Id] for the element, must be unique.
          * @param displayName Localized human readable name for the element, used in the userStyle
-         * selection UI.
+         *   selection UI.
          * @param description Localized description string displayed under the displayName.
          * @param icon [Icon] for use in the companion userStyle selection UI. This gets sent to the
-         * companion over bluetooth and should be small (ideally a few kb in size).
+         *   companion over bluetooth and should be small (ideally a few kb in size).
          * @param complicationConfig The configuration for affected complications.
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects, must include
-         * [WatchFaceLayer.COMPLICATIONS].
+         *   face rendering layers this style affects, must include [WatchFaceLayer.COMPLICATIONS].
          * @param defaultOption The default option, used when data isn't persisted. Optional
-         * parameter which defaults to the first element of [complicationConfig].
+         *   parameter which defaults to the first element of [complicationConfig].
          * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
-         * sent to the companion and its contents may be used in preference to other fields by an on
-         * watch face editor.
+         *   sent to the companion and its contents may be used in preference to other fields by an
+         *   on watch face editor.
          * @hide
          */
         @JvmOverloads
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-        public constructor (
+        public constructor(
             id: Id,
             displayName: CharSequence,
             description: CharSequence,
@@ -1350,25 +1296,24 @@
          *
          * @param id [Id] for the element, must be unique.
          * @param resources The [Resources] from which [displayNameResourceId] and
-         * [descriptionResourceId] are loaded.
-         * @param displayNameResourceId String resource id for a human readable name for the element,
-         * used in the userStyle selection UI.
+         *   [descriptionResourceId] are loaded.
+         * @param displayNameResourceId String resource id for a human readable name for the
+         *   element, used in the userStyle selection UI.
          * @param descriptionResourceId String resource id for a human readable description string
-         * displayed under the displayName.
+         *   displayed under the displayName.
          * @param icon [Icon] for use in the companion userStyle selection UI. This gets sent to the
-         * companion over bluetooth and should be small (ideally a few kb in size).
+         *   companion over bluetooth and should be small (ideally a few kb in size).
          * @param complicationConfig The configuration for affected complications.
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects, must include
-         * [WatchFaceLayer.COMPLICATIONS].
+         *   face rendering layers this style affects, must include [WatchFaceLayer.COMPLICATIONS].
          * @param defaultOption The default option, used when data isn't persisted. Optional
-         * parameter which defaults to the first element of [complicationConfig].
+         *   parameter which defaults to the first element of [complicationConfig].
          * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
-         * sent to the companion and its contents may be used in preference to other fields by an on
-         * watch face editor.
+         *   sent to the companion and its contents may be used in preference to other fields by an
+         *   on watch face editor.
          */
         @JvmOverloads
-        public constructor (
+        public constructor(
             id: Id,
             resources: Resources,
             @StringRes displayNameResourceId: Int,
@@ -1389,7 +1334,7 @@
             affectsWatchFaceLayers
         )
 
-        internal constructor (
+        internal constructor(
             id: Id,
             displayName: DisplayText,
             description: DisplayText,
@@ -1416,9 +1361,7 @@
                 val optionsIterator = options.iterator()
                 for (bundle in optionsOnWatchFaceEditorIcons) {
                     val option = optionsIterator.next() as ComplicationSlotsOption
-                    bundle?.let {
-                        option.watchFaceEditorData = WatchFaceEditorData(it)
-                    }
+                    bundle?.let { option.watchFaceEditorData = WatchFaceEditorData(it) }
                 }
             }
             wireFormat.mPerOptionScreenReaderNames?.let { perOptionScreenReaderNames ->
@@ -1456,12 +1399,13 @@
 
         internal companion object {
             private fun <T> bindScale(
-                function: (
-                    resources: Resources,
-                    parser: XmlResourceParser,
-                    complicationScaleX: Float,
-                    complicationScaleY: Float
-                ) -> T,
+                function:
+                    ( // ktlint-disable parameter-list-wrapping
+                        resources: Resources,
+                        parser: XmlResourceParser,
+                        complicationScaleX: Float,
+                        complicationScaleY: Float
+                    ) -> T,
                 complicationScaleX: Float,
                 complicationScaleY: Float
             ): (resources: Resources, parser: XmlResourceParser) -> T {
@@ -1478,22 +1422,25 @@
                 complicationScaleX: Float,
                 complicationScaleY: Float
             ): ComplicationSlotsUserStyleSetting {
-                val params = createBaseWithParent(
-                    resources,
-                    parser,
-                    createParent(
+                val params =
+                    createBaseWithParent(
                         resources,
                         parser,
-                        "ComplicationSlotsUserStyleSetting",
-                        bindScale(::inflate, complicationScaleX, complicationScaleY)
-                    ),
-                    inflateDefault = true,
-                    optionInflater = "ComplicationSlotsOption" to bindScale(
-                        ComplicationSlotsOption::inflate,
-                        complicationScaleX,
-                        complicationScaleY
+                        createParent(
+                            resources,
+                            parser,
+                            "ComplicationSlotsUserStyleSetting",
+                            bindScale(::inflate, complicationScaleX, complicationScaleY)
+                        ),
+                        inflateDefault = true,
+                        optionInflater =
+                            "ComplicationSlotsOption" to
+                                bindScale(
+                                    ComplicationSlotsOption::inflate,
+                                    complicationScaleX,
+                                    complicationScaleY
+                                )
                     )
-                )
                 return ComplicationSlotsUserStyleSetting(
                     params.id,
                     params.displayName,
@@ -1543,9 +1490,8 @@
             public val icon: Icon?
 
             /**
-             * Optional data for an on watch face editor, this will not be sent to the companion
-             * and its contents may be used in preference to other fields by an on watch face
-             * editor.
+             * Optional data for an on watch face editor, this will not be sent to the companion and
+             * its contents may be used in preference to other fields by an on watch face editor.
              */
             public var watchFaceEditorData: WatchFaceEditorData?
                 internal set
@@ -1555,17 +1501,17 @@
              *
              * @param id [Id] for the element, must be unique.
              * @param displayName Localized human readable name for the element, used in the
-             * userStyle selection UI. This should be short, ideally < 20 characters.
-             * @param screenReaderName Localized human readable name for the element, used by
-             * screen readers. This should be more descriptive than [displayName].
+             *   userStyle selection UI. This should be short, ideally < 20 characters.
+             * @param screenReaderName Localized human readable name for the element, used by screen
+             *   readers. This should be more descriptive than [displayName].
              * @param icon [Icon] for use in the companion style selection UI. This gets sent to the
-             * companion over bluetooth and should be small (ideally a few kb in size).
+             *   companion over bluetooth and should be small (ideally a few kb in size).
              * @param complicationSlotOverlays Overlays to be applied when this
-             * ComplicationSlotsOption is selected. If this is empty then the net result is the
-             * initial complication configuration.
+             *   ComplicationSlotsOption is selected. If this is empty then the net result is the
+             *   initial complication configuration.
              * @param watchFaceEditorData Optional data for an on watch face editor, this will not
-             * be sent to the companion and its contents may be used in preference to other fields
-             * by an on watch face editor.
+             *   be sent to the companion and its contents may be used in preference to other fields
+             *   by an on watch face editor.
              * @hide
              */
             @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -1580,8 +1526,7 @@
             ) : super(id, emptyList()) {
                 this.complicationSlotOverlays = complicationSlotOverlays
                 displayNameInternal = DisplayText.CharSequenceDisplayText(displayName)
-                screenReaderNameInternal =
-                    DisplayText.CharSequenceDisplayText(screenReaderName)
+                screenReaderNameInternal = DisplayText.CharSequenceDisplayText(screenReaderName)
                 this.icon = icon
                 this.watchFaceEditorData = watchFaceEditorData
             }
@@ -1593,18 +1538,18 @@
              * @param id [Id] for the element, must be unique.
              * @param resources The [Resources] from which [displayNameResourceId] is load.
              * @param displayNameResourceId String resource id for a human readable name for the
-             * element, used in the userStyle selection UI. This should be short, ideally < 20
-             * characters. Note if the resource string contains `%1$s` that will get replaced with
-             * the 1-based ordinal (1st, 2nd, 3rd etc...) of the ComplicationSlotsOption in the list
-             * of ComplicationSlotsOptions.
+             *   element, used in the userStyle selection UI. This should be short, ideally < 20
+             *   characters. Note if the resource string contains `%1$s` that will get replaced with
+             *   the 1-based ordinal (1st, 2nd, 3rd etc...) of the ComplicationSlotsOption in the
+             *   list of ComplicationSlotsOptions.
              * @param icon [Icon] for use in the companion style selection UI. This gets sent to the
-             * companion over bluetooth and should be small (ideally a few kb in size).
+             *   companion over bluetooth and should be small (ideally a few kb in size).
              * @param complicationSlotOverlays Overlays to be applied when this
-             * ComplicationSlotsOption is selected. If this is empty then the net result is the
-             * initial complication configuration.
+             *   ComplicationSlotsOption is selected. If this is empty then the net result is the
+             *   initial complication configuration.
              * @param watchFaceEditorData Optional data for an on watch face editor, this will not
-             * be sent to the companion and its contents may be used in preference to other fields
-             * by an on watch face editor.
+             *   be sent to the companion and its contents may be used in preference to other fields
+             *   by an on watch face editor.
              */
             @Deprecated("Use a constructor that sets the screenReaderNameResourceId")
             @JvmOverloads
@@ -1631,24 +1576,24 @@
              * @param id [Id] for the element, must be unique.
              * @param resources The [Resources] from which [displayNameResourceId] is load.
              * @param displayNameResourceId String resource id for a human readable name for the
-             * element, used in the userStyle selection UI. This should be short, ideally < 20
-             * characters.  Note if the resource string contains `%1$s` that will get replaced with
-             * the 1-based ordinal (1st, 2nd, 3rd etc...) of the ComplicationSlotsOption in the list
-             * of ComplicationSlotsOptions.
+             *   element, used in the userStyle selection UI. This should be short, ideally < 20
+             *   characters. Note if the resource string contains `%1$s` that will get replaced with
+             *   the 1-based ordinal (1st, 2nd, 3rd etc...) of the ComplicationSlotsOption in the
+             *   list of ComplicationSlotsOptions.
              * @param screenReaderNameResourceId String resource id for a human readable name for
-             * the element, used by screen readers. This should be more descriptive than
-             * [displayNameResourceId]. Note if the resource string contains `%1$s` that will get
-             * replaced with the 1-based ordinal (1st, 2nd, 3rd etc...) of the
-             * ComplicationSlotsOption in the list of ComplicationSlotsOptions. Note prior to
-             * android T this is ignored by companion editors.
+             *   the element, used by screen readers. This should be more descriptive than
+             *   [displayNameResourceId]. Note if the resource string contains `%1$s` that will get
+             *   replaced with the 1-based ordinal (1st, 2nd, 3rd etc...) of the
+             *   ComplicationSlotsOption in the list of ComplicationSlotsOptions. Note prior to
+             *   android T this is ignored by companion editors.
              * @param icon [Icon] for use in the companion style selection UI. This gets sent to the
-             * companion over bluetooth and should be small (ideally a few kb in size).
+             *   companion over bluetooth and should be small (ideally a few kb in size).
              * @param complicationSlotOverlays Overlays to be applied when this
-             * ComplicationSlotsOption is selected. If this is empty then the net result is the
-             * initial complication configuration.
+             *   ComplicationSlotsOption is selected. If this is empty then the net result is the
+             *   initial complication configuration.
              * @param watchFaceEditorData Optional data for an on watch face editor, this will not
-             * be sent to the companion and its contents may be used in preference to other fields
-             * by an on watch face editor.
+             *   be sent to the companion and its contents may be used in preference to other fields
+             *   by an on watch face editor.
              */
             @JvmOverloads
             public constructor(
@@ -1691,10 +1636,12 @@
                     wireFormat.mComplicationOverlays.mapIndexed { index, value ->
                         ComplicationSlotOverlay(
                             value,
-                            wireFormat.mComplicationOverlaysMargins?.get(index)
+                            wireFormat.mComplicationOverlaysMargins
+                                ?.get(index)
                                 ?.mPerComplicationTypeMargins,
                             wireFormat.mComplicationNameResourceIds?.get(index)?.asResourceId(),
-                            wireFormat.mComplicationScreenReaderNameResourceIds?.get(index)
+                            wireFormat.mComplicationScreenReaderNameResourceIds
+                                ?.get(index)
                                 ?.asResourceId()
                         )
                     }
@@ -1713,16 +1660,12 @@
                 @Px maxHeight: Int
             ): Int {
                 var sizeEstimate = id.value.size + displayName.length
-                screenReaderName?.let {
-                    sizeEstimate + it.length
-                }
+                screenReaderName?.let { sizeEstimate + it.length }
                 for (overlay in complicationSlotOverlays) {
                     sizeEstimate += overlay.estimateWireSizeInBytes()
                 }
                 icon?.getWireSizeAndDimensions(context)?.let { wireSizeAndDimensions ->
-                    wireSizeAndDimensions.wireSizeBytes?.let {
-                        sizeEstimate += it
-                    }
+                    wireSizeAndDimensions.wireSizeBytes?.let { sizeEstimate += it }
                     require(
                         wireSizeAndDimensions.width <= maxWidth &&
                             wireSizeAndDimensions.height <= maxHeight
@@ -1737,8 +1680,7 @@
 
             /** @hide */
             @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-            override fun toWireFormat():
-                ComplicationsOptionWireFormat =
+            override fun toWireFormat(): ComplicationsOptionWireFormat =
                 ComplicationsOptionWireFormat(
                     id.value,
                     displayName,
@@ -1746,10 +1688,10 @@
                     complicationSlotOverlays.map { it.toWireFormat() }.toTypedArray(),
                     complicationSlotOverlays.map { overlay ->
                         PerComplicationTypeMargins(
-                            overlay.complicationSlotBounds
-                                ?.perComplicationTypeMargins?.mapKeys {
-                                    it.key.toWireComplicationType()
-                                } ?: emptyMap()
+                            overlay.complicationSlotBounds?.perComplicationTypeMargins?.mapKeys {
+                                it.key.toWireComplicationType()
+                            }
+                                ?: emptyMap()
                         )
                     },
                     complicationSlotOverlays.map { it.nameResourceId ?: 0 },
@@ -1777,37 +1719,36 @@
                 ): ComplicationSlotsOption {
                     val id = getStringRefAttribute(resources, parser, "id")
                     require(id != null) { "ComplicationSlotsOption must have an id" }
-                    val displayName = createDisplayText(
-                        resources,
-                        parser,
-                        "displayName",
-                        indexedResourceNamesSupported = true
-                    )
-                    val screenReaderName = createDisplayText(
-                        resources,
-                        parser,
-                        "nameForScreenReaders",
-                        defaultValue = displayName,
-                        indexedResourceNamesSupported = true
-                    )
-                    val icon = createIcon(
-                        resources,
-                        parser
-                    )
+                    val displayName =
+                        createDisplayText(
+                            resources,
+                            parser,
+                            "displayName",
+                            indexedResourceNamesSupported = true
+                        )
+                    val screenReaderName =
+                        createDisplayText(
+                            resources,
+                            parser,
+                            "nameForScreenReaders",
+                            defaultValue = displayName,
+                            indexedResourceNamesSupported = true
+                        )
+                    val icon = createIcon(resources, parser)
 
                     var watchFaceEditorData: WatchFaceEditorData? = null
                     val complicationSlotOverlays = ArrayList<ComplicationSlotOverlay>()
                     parser.iterate {
                         when (parser.name) {
-                            "ComplicationSlotOverlay" -> complicationSlotOverlays.add(
-                                ComplicationSlotOverlay.inflate(
-                                    resources,
-                                    parser,
-                                    complicationScaleX,
-                                    complicationScaleY
+                            "ComplicationSlotOverlay" ->
+                                complicationSlotOverlays.add(
+                                    ComplicationSlotOverlay.inflate(
+                                        resources,
+                                        parser,
+                                        complicationScaleX,
+                                        complicationScaleY
+                                    )
                                 )
-                            )
-
                             "OnWatchEditorData" -> {
                                 if (watchFaceEditorData == null) {
                                     watchFaceEditorData =
@@ -1816,7 +1757,6 @@
                                     throw IllegalNodeException(parser)
                                 }
                             }
-
                             else -> throw IllegalNodeException(parser)
                         }
                     }
@@ -1867,23 +1807,32 @@
                 parser: XmlResourceParser
             ): DoubleRangeUserStyleSetting {
                 val settingType = "DoubleRangeUserStyleSetting"
-                val parent =
-                    createParent(resources, parser, settingType, ::inflate)
-                val maxDouble = getAttributeChecked(
-                    parser, "maxDouble", String::toDouble, parent?.maximumValue, settingType
-                )
-                val minDouble = getAttributeChecked(
-                    parser, "minDouble", String::toDouble, parent?.minimumValue, settingType
-                )
-                val defaultDouble = getAttributeChecked(
-                    parser, "defaultDouble", String::toDouble, parent?.defaultValue, settingType
-                )
-                val params = createBaseWithParent(
-                    resources,
-                    parser,
-                    parent,
-                    inflateDefault = false
-                )
+                val parent = createParent(resources, parser, settingType, ::inflate)
+                val maxDouble =
+                    getAttributeChecked(
+                        parser,
+                        "maxDouble",
+                        String::toDouble,
+                        parent?.maximumValue,
+                        settingType
+                    )
+                val minDouble =
+                    getAttributeChecked(
+                        parser,
+                        "minDouble",
+                        String::toDouble,
+                        parent?.minimumValue,
+                        settingType
+                    )
+                val defaultDouble =
+                    getAttributeChecked(
+                        parser,
+                        "defaultDouble",
+                        String::toDouble,
+                        parent?.defaultValue,
+                        settingType
+                    )
+                val params = createBaseWithParent(resources, parser, parent, inflateDefault = false)
                 return DoubleRangeUserStyleSetting(
                     params.id,
                     params.displayName,
@@ -1903,23 +1852,23 @@
          *
          * @param id [Id] for the element, must be unique.
          * @param displayName Localized human readable name for the element, used in the user style
-         * selection UI.
+         *   selection UI.
          * @param description Localized description string displayed under the displayName.
          * @param icon [Icon] for use in the companion style selection UI. This gets sent to the
-         * companion over bluetooth and should be small (ideally a few kb in size).
+         *   companion over bluetooth and should be small (ideally a few kb in size).
          * @param minimumValue Minimum value (inclusive).
          * @param maximumValue Maximum value (inclusive).
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects.
+         *   face rendering layers this style affects.
          * @param defaultValue The default value for this DoubleRangeUserStyleSetting.
-         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be sent
-         * to the companion and its contents may be used in preference to other fields by an on
-         * watch face editor.
+         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
+         *   sent to the companion and its contents may be used in preference to other fields by an
+         *   on watch face editor.
          * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         @JvmOverloads
-        public constructor (
+        public constructor(
             id: Id,
             displayName: CharSequence,
             description: CharSequence,
@@ -1945,30 +1894,29 @@
         )
 
         /**
-         * Constructs a DoubleRangeUserStyleSetting where
-         * [DoubleRangeUserStyleSetting.displayName] and
-         * [DoubleRangeUserStyleSetting.description] are specified as resources.
+         * Constructs a DoubleRangeUserStyleSetting where [DoubleRangeUserStyleSetting.displayName]
+         * and [DoubleRangeUserStyleSetting.description] are specified as resources.
          *
          * @param id [Id] for the element, must be unique.
          * @param resources The [Resources] from which [displayNameResourceId] and
-         * [descriptionResourceId] are loaded.
-         * @param displayNameResourceId String resource id for a human readable name for the element,
-         * used in the userStyle selection UI.
+         *   [descriptionResourceId] are loaded.
+         * @param displayNameResourceId String resource id for a human readable name for the
+         *   element, used in the userStyle selection UI.
          * @param descriptionResourceId String resource id for a human readable description string
-         * displayed under the displayName.
+         *   displayed under the displayName.
          * @param icon [Icon] for use in the companion userStyle selection UI. This gets sent to the
-         * companion over bluetooth and should be small (ideally a few kb in size).
+         *   companion over bluetooth and should be small (ideally a few kb in size).
          * @param minimumValue Minimum value (inclusive).
          * @param maximumValue Maximum value (inclusive).
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects.
+         *   face rendering layers this style affects.
          * @param defaultValue The default value for this DoubleRangeUserStyleSetting.
-         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be sent
-         * to the companion and its contents may be used in preference to other fields by an on
-         * watch face editor.
+         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
+         *   sent to the companion and its contents may be used in preference to other fields by an
+         *   on watch face editor.
          */
         @JvmOverloads
-        public constructor (
+        public constructor(
             id: Id,
             resources: Resources,
             @StringRes displayNameResourceId: Int,
@@ -1994,7 +1942,7 @@
             affectsWatchFaceLayers
         )
 
-        internal constructor (
+        internal constructor(
             id: Id,
             displayName: DisplayText,
             description: DisplayText,
@@ -2033,7 +1981,7 @@
                 defaultOptionIndex,
                 affectedWatchFaceLayers.map { it.ordinal },
                 watchFaceEditorData?.toWireFormat(),
-                /* optionsOnWatchFaceEditorIcons = */null
+                /* optionsOnWatchFaceEditorIcons = */ null
             )
 
         /** Represents an option as a [Double] in the range [minimumValue .. maximumValue]. */
@@ -2046,7 +1994,9 @@
              *
              * @param value The value of this DoubleRangeOption
              */
-            public constructor(value: Double) : super(
+            public constructor(
+                value: Double
+            ) : super(
                 Id(ByteArray(8).apply { ByteBuffer.wrap(this).putDouble(value) }),
                 emptyList()
             ) {
@@ -2089,9 +2039,8 @@
 
         /** We support all values in the range [min ... max] not just min & max. */
         override fun getOptionForId(optionId: Option.Id): Option =
-            options.find { it.id.value.contentEquals(optionId.value) } ?: checkedOptionForId(
-                optionId.value
-            )
+            options.find { it.id.value.contentEquals(optionId.value) }
+                ?: checkedOptionForId(optionId.value)
 
         private fun checkedOptionForId(optionId: ByteArray): DoubleRangeOption {
             return try {
@@ -2115,17 +2064,17 @@
          *
          * @param id [Id] for the element, must be unique.
          * @param displayName Localized human readable name for the element, used in the userStyle
-         * selection UI.
+         *   selection UI.
          * @param description Localized description string displayed under the displayName.
          * @param icon [Icon] for use in the companion userStyle selection UI. This gets sent to the
-         * companion over bluetooth and should be small (ideally a few kb in size).
+         *   companion over bluetooth and should be small (ideally a few kb in size).
          * @param options List of all options for this ListUserStyleSetting.
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects.
+         *   face rendering layers this style affects.
          * @param defaultOption The default option, used when data isn't persisted.
-         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be sent
-         * to the companion and its contents may be used in preference to other fields by an on
-         * watch face editor.
+         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
+         *   sent to the companion and its contents may be used in preference to other fields by an
+         *   on watch face editor.
          * @hide
          */
         @JvmOverloads
@@ -2156,23 +2105,23 @@
          *
          * @param id [Id] for the element, must be unique.
          * @param resources The [Resources] from which [displayNameResourceId] and
-         * [descriptionResourceId] are loaded.
-         * @param displayNameResourceId String resource id for a human readable name for the element,
-         * used in the userStyle selection UI.
+         *   [descriptionResourceId] are loaded.
+         * @param displayNameResourceId String resource id for a human readable name for the
+         *   element, used in the userStyle selection UI.
          * @param descriptionResourceId String resource id for a human readable description string
-         * displayed under the displayName.
+         *   displayed under the displayName.
          * @param icon [Icon] for use in the companion userStyle selection UI. This gets sent to the
-         * companion over bluetooth and should be small (ideally a few kb in size).
+         *   companion over bluetooth and should be small (ideally a few kb in size).
          * @param options List of all options for this ListUserStyleSetting.
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects.
+         *   face rendering layers this style affects.
          * @param defaultOption The default option, used when data isn't persisted.
-         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be sent
-         * to the companion and its contents may be used in preference to other fields by an on
-         * watch face editor.
+         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
+         *   sent to the companion and its contents may be used in preference to other fields by an
+         *   on watch face editor.
          */
         @JvmOverloads
-        public constructor (
+        public constructor(
             id: Id,
             resources: Resources,
             @StringRes displayNameResourceId: Int,
@@ -2193,7 +2142,7 @@
             affectsWatchFaceLayers
         )
 
-        internal constructor (
+        internal constructor(
             id: Id,
             displayName: DisplayText,
             description: DisplayText,
@@ -2218,9 +2167,7 @@
                 val optionsIterator = options.iterator()
                 for (bundle in optionsOnWatchFaceEditorIcons) {
                     val option = optionsIterator.next() as ListOption
-                    bundle?.let {
-                        option.watchFaceEditorData = WatchFaceEditorData(it)
-                    }
+                    bundle?.let { option.watchFaceEditorData = WatchFaceEditorData(it) }
                 }
             }
             wireFormat.mPerOptionScreenReaderNames?.let { perOptionScreenReaderNames ->
@@ -2256,11 +2203,12 @@
 
         internal companion object {
             private fun <T> bindIdToSetting(
-                function: (
-                    resources: Resources,
-                    parser: XmlResourceParser,
-                    idToSetting: Map<String, UserStyleSetting>
-                ) -> T,
+                function:
+                    ( // ktlint-disable parameter-list-wrapping
+                        resources: Resources,
+                        parser: XmlResourceParser,
+                        idToSetting: Map<String, UserStyleSetting>
+                    ) -> T,
                 idToSetting: Map<String, UserStyleSetting>
             ): (resources: Resources, parser: XmlResourceParser) -> T {
                 return { resources: Resources, parser: XmlResourceParser ->
@@ -2275,18 +2223,19 @@
                 parser: XmlResourceParser,
                 idToSetting: Map<String, UserStyleSetting>
             ): ListUserStyleSetting {
-                val params = createBaseWithParent(
-                    resources,
-                    parser,
-                    createParent(
+                val params =
+                    createBaseWithParent(
                         resources,
                         parser,
-                        "ListUserStyleSetting",
-                        bindIdToSetting(::inflate, idToSetting)
-                    ),
-                    inflateDefault = true,
-                    "ListOption" to bindIdToSetting(ListOption::inflate, idToSetting)
-                )
+                        createParent(
+                            resources,
+                            parser,
+                            "ListUserStyleSetting",
+                            bindIdToSetting(::inflate, idToSetting)
+                        ),
+                        inflateDefault = true,
+                        "ListOption" to bindIdToSetting(ListOption::inflate, idToSetting)
+                    )
                 return ListUserStyleSetting(
                     params.id,
                     params.displayName,
@@ -2322,7 +2271,7 @@
 
             /**
              * Optional localized human readable name for the setting, used by screen readers. This
-             * should be more descriptive than [displayName].  Note prior to android T this is
+             * should be more descriptive than [displayName]. Note prior to android T this is
              * ignored by companion editors.
              */
             public val screenReaderName: CharSequence?
@@ -2332,9 +2281,8 @@
             public val icon: Icon?
 
             /**
-             * Optional data for an on watch face editor, this will not be sent to the companion
-             * and its contents may be used in preference to other fields by an on watch face
-             * editor.
+             * Optional data for an on watch face editor, this will not be sent to the companion and
+             * its contents may be used in preference to other fields by an on watch face editor.
              */
             public var watchFaceEditorData: WatchFaceEditorData?
                 internal set
@@ -2343,18 +2291,19 @@
              * Constructs a ListOption.
              *
              * @param id The [Id] of this ListOption, must be unique within the
-             * [ListUserStyleSetting].
-             ** @param displayName Localized human readable name for the element, used in the
-             * userStyle selection UI. This should be short, ideally < 20 characters.
-             * @param screenReaderName Localized human readable name for the element, used by
-             * screen readers. This should be more descriptive than [displayName].
+             *   [ListUserStyleSetting].
+             * * @param displayName Localized human readable name for the element, used in the
+             *   userStyle selection UI. This should be short, ideally < 20 characters.
+             *
+             * @param screenReaderName Localized human readable name for the element, used by screen
+             *   readers. This should be more descriptive than [displayName].
              * @param icon [Icon] for use in the companion style selection UI. This gets sent to the
-             * companion over bluetooth and should be small (ideally a few kb in size).
+             *   companion over bluetooth and should be small (ideally a few kb in size).
              * @param childSettings The list of child [UserStyleSetting]s, which may be empty. Any
-             * child settings must be listed in [UserStyleSchema.userStyleSettings].
-             * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
-             * sent to the companion and its contents may be used in preference to other fields by
-             * an on watch face editor.
+             *   child settings must be listed in [UserStyleSchema.userStyleSettings].
+             * @param watchFaceEditorData Optional data for an on watch face editor, this will not
+             *   be sent to the companion and its contents may be used in preference to other fields
+             *   by an on watch face editor.
              * @hide
              */
             @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -2367,8 +2316,7 @@
                 watchFaceEditorData: WatchFaceEditorData? = null
             ) : super(id, childSettings) {
                 displayNameInternal = DisplayText.CharSequenceDisplayText(displayName)
-                screenReaderNameInternal =
-                    DisplayText.CharSequenceDisplayText(screenReaderName)
+                screenReaderNameInternal = DisplayText.CharSequenceDisplayText(screenReaderName)
                 this.icon = icon
                 this.watchFaceEditorData = watchFaceEditorData
             }
@@ -2377,18 +2325,18 @@
              * Constructs a ListOption.
              *
              * @param id The [Id] of this ListOption, must be unique within the
-             * [ListUserStyleSetting].
+             *   [ListUserStyleSetting].
              * @param resources The [Resources] used to load [displayNameResourceId].
              * @param displayNameResourceId String resource id for a human readable name for the
-             * element, used in the userStyle selection UI. This should be short, ideally < 20
-             * characters. Note if the resource string contains `%1$s` that will get replaced with
-             * the 1-based ordinal (1st, 2nd, 3rd etc...) of the ListOption in the list of
-             * ListOptions.
+             *   element, used in the userStyle selection UI. This should be short, ideally < 20
+             *   characters. Note if the resource string contains `%1$s` that will get replaced with
+             *   the 1-based ordinal (1st, 2nd, 3rd etc...) of the ListOption in the list of
+             *   ListOptions.
              * @param icon [Icon] for use in the companion style selection UI. This gets sent to the
-             * companion over bluetooth and should be small (ideally a few kb in size)
+             *   companion over bluetooth and should be small (ideally a few kb in size)
              * @param watchFaceEditorData Optional data for an on watch face editor, this will not
-             * be sent to the companion and its contents may be used in preference to other fields
-             * by an on watch face editor.
+             *   be sent to the companion and its contents may be used in preference to other fields
+             *   by an on watch face editor.
              */
             @JvmOverloads
             @Deprecated("Use a constructor that sets the screenReaderNameResourceId")
@@ -2410,18 +2358,18 @@
              * Constructs a ListOption.
              *
              * @param id The [Id] of this ListOption, must be unique within the
-             * [ListUserStyleSetting].
+             *   [ListUserStyleSetting].
              * @param resources The [Resources] used to load [displayNameResourceId].
              * @param displayNameResourceId String resource id for a human readable name for the
-             * element, used in the userStyle selection UI. This should be short, ideally < 20
-             * characters.
-             * @param icon [Icon] for use in the style selection UI. This gets sent to the
-             * companion over bluetooth and should be small (ideally a few kb in size).
+             *   element, used in the userStyle selection UI. This should be short, ideally < 20
+             *   characters.
+             * @param icon [Icon] for use in the style selection UI. This gets sent to the companion
+             *   over bluetooth and should be small (ideally a few kb in size).
              * @param childSettings The list of child [UserStyleSetting]s, which may be empty. Any
-             * child settings must be listed in [UserStyleSchema.userStyleSettings].
+             *   child settings must be listed in [UserStyleSchema.userStyleSettings].
              * @param watchFaceEditorData Optional data for an on watch face editor, this will not
-             * be sent to the companion and its contents may be used in preference to other fields
-             * by an on watch face editor.
+             *   be sent to the companion and its contents may be used in preference to other fields
+             *   by an on watch face editor.
              */
             @Deprecated("Use a constructor that sets the screenReaderNameResourceId")
             constructor(
@@ -2443,25 +2391,25 @@
              * Constructs a ListOption.
              *
              * @param id The [Id] of this ListOption, must be unique within the
-             * [ListUserStyleSetting].
+             *   [ListUserStyleSetting].
              * @param resources The [Resources] used to load [displayNameResourceId].
              * @param displayNameResourceId String resource id for a human readable name for the
-             * element, used in the userStyle selection UI. This should be short, ideally < 20
-             * characters. Note if the resource string contains `%1$s` that will get replaced with
-             * the 1-based ordinal (1st, 2nd, 3rd etc...) of the ListOption in the list of
-             * ListOptions.
+             *   element, used in the userStyle selection UI. This should be short, ideally < 20
+             *   characters. Note if the resource string contains `%1$s` that will get replaced with
+             *   the 1-based ordinal (1st, 2nd, 3rd etc...) of the ListOption in the list of
+             *   ListOptions.
              * @param screenReaderNameResourceId String resource id for a human readable name for
-             * the element, used by screen readers. This should be more descriptive than
-             * [displayNameResourceId]. Note if the resource string contains `%1$s` that will get
-             * replaced with the 1-based ordinal (1st, 2nd, 3rd etc...) of the ListOption in the
-             * list of ListOptions. Note prior to android T this is ignored by companion editors.
-             * @param icon [Icon] for use in the style selection UI. This gets sent to the
-             * companion over bluetooth and should be small (ideally a few kb in size).
+             *   the element, used by screen readers. This should be more descriptive than
+             *   [displayNameResourceId]. Note if the resource string contains `%1$s` that will get
+             *   replaced with the 1-based ordinal (1st, 2nd, 3rd etc...) of the ListOption in the
+             *   list of ListOptions. Note prior to android T this is ignored by companion editors.
+             * @param icon [Icon] for use in the style selection UI. This gets sent to the companion
+             *   over bluetooth and should be small (ideally a few kb in size).
              * @param childSettings The list of child [UserStyleSetting]s, which may be empty. Any
-             * child settings must be listed in [UserStyleSchema.userStyleSettings].
+             *   child settings must be listed in [UserStyleSchema.userStyleSettings].
              * @param watchFaceEditorData Optional data for an on watch face editor, this will not
-             * be sent to the companion and its contents may be used in preference to other fields
-             * by an on watch face editor.
+             *   be sent to the companion and its contents may be used in preference to other fields
+             *   by an on watch face editor.
              */
             @JvmOverloads
             constructor(
@@ -2513,13 +2461,9 @@
                 @Px maxHeight: Int
             ): Int {
                 var sizeEstimate = id.value.size + displayName.length
-                screenReaderName?.let {
-                    sizeEstimate + it.length
-                }
+                screenReaderName?.let { sizeEstimate + it.length }
                 icon?.getWireSizeAndDimensions(context)?.let { wireSizeAndDimensions ->
-                    wireSizeAndDimensions.wireSizeBytes?.let {
-                        sizeEstimate += it
-                    }
+                    wireSizeAndDimensions.wireSizeBytes?.let { sizeEstimate += it }
                     require(
                         wireSizeAndDimensions.width <= maxWidth &&
                             wireSizeAndDimensions.height <= maxHeight
@@ -2535,11 +2479,7 @@
             /** @hide */
             @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
             override fun toWireFormat(): ListOptionWireFormat =
-                ListOptionWireFormat(
-                    id.value,
-                    displayName,
-                    icon
-                )
+                ListOptionWireFormat(id.value, displayName, icon)
 
             override fun write(dos: DataOutputStream) {
                 dos.write(id.value)
@@ -2558,23 +2498,22 @@
                 ): ListOption {
                     val id = getStringRefAttribute(resources, parser, "id")
                     require(id != null) { "ListOption must have an id" }
-                    val displayName = createDisplayText(
-                        resources,
-                        parser,
-                        "displayName",
-                        indexedResourceNamesSupported = true
-                    )
-                    val screenReaderName = createDisplayText(
-                        resources,
-                        parser,
-                        "nameForScreenReaders",
-                        defaultValue = displayName,
-                        indexedResourceNamesSupported = true
-                    )
-                    val icon = createIcon(
-                        resources,
-                        parser
-                    )
+                    val displayName =
+                        createDisplayText(
+                            resources,
+                            parser,
+                            "displayName",
+                            indexedResourceNamesSupported = true
+                        )
+                    val screenReaderName =
+                        createDisplayText(
+                            resources,
+                            parser,
+                            "nameForScreenReaders",
+                            defaultValue = displayName,
+                            indexedResourceNamesSupported = true
+                        )
+                    val icon = createIcon(resources, parser)
 
                     var watchFaceEditorData: WatchFaceEditorData? = null
                     val childSettings = ArrayList<UserStyleSetting>()
@@ -2582,9 +2521,7 @@
                         when (parser.name) {
                             "ChildSetting" -> {
                                 val childId = getStringRefAttribute(resources, parser, "id")
-                                require(childId != null) {
-                                    "ChildSetting must have an id"
-                                }
+                                require(childId != null) { "ChildSetting must have an id" }
                                 val setting = idToSetting[childId]
                                 require(setting != null) {
                                     "Unknown ChildSetting id $childId, note only backward " +
@@ -2592,7 +2529,6 @@
                                 }
                                 childSettings.add(setting)
                             }
-
                             "OnWatchEditorData" -> {
                                 if (watchFaceEditorData == null) {
                                     watchFaceEditorData =
@@ -2601,7 +2537,6 @@
                                     throw IllegalNodeException(parser)
                                 }
                             }
-
                             else -> throw IllegalNodeException(parser)
                         }
                     }
@@ -2642,10 +2577,7 @@
                         LongRangeOption(maximumValue)
                     )
                 } else {
-                    listOf(
-                        LongRangeOption(minimumValue),
-                        LongRangeOption(maximumValue)
-                    )
+                    listOf(LongRangeOption(minimumValue), LongRangeOption(maximumValue))
                 }
             }
 
@@ -2655,23 +2587,32 @@
                 parser: XmlResourceParser
             ): LongRangeUserStyleSetting {
                 val settingType = "LongRangeUserStyleSetting"
-                val parent =
-                    createParent(resources, parser, settingType, ::inflate)
-                val maxInteger = getAttributeChecked(
-                    parser, "maxLong", String::toLong, parent?.maximumValue, settingType
-                )
-                val minInteger = getAttributeChecked(
-                    parser, "minLong", String::toLong, parent?.minimumValue, settingType
-                )
-                val defaultInteger = getAttributeChecked(
-                    parser, "defaultLong", String::toLong, parent?.defaultValue, settingType
-                )
-                val params = createBaseWithParent(
-                    resources,
-                    parser,
-                    parent,
-                    inflateDefault = false
-                )
+                val parent = createParent(resources, parser, settingType, ::inflate)
+                val maxInteger =
+                    getAttributeChecked(
+                        parser,
+                        "maxLong",
+                        String::toLong,
+                        parent?.maximumValue,
+                        settingType
+                    )
+                val minInteger =
+                    getAttributeChecked(
+                        parser,
+                        "minLong",
+                        String::toLong,
+                        parent?.minimumValue,
+                        settingType
+                    )
+                val defaultInteger =
+                    getAttributeChecked(
+                        parser,
+                        "defaultLong",
+                        String::toLong,
+                        parent?.defaultValue,
+                        settingType
+                    )
+                val params = createBaseWithParent(resources, parser, parent, inflateDefault = false)
                 return LongRangeUserStyleSetting(
                     params.id,
                     params.displayName,
@@ -2691,23 +2632,23 @@
          *
          * @param id [Id] for the element, must be unique.
          * @param displayName Localized human readable name for the element, used in the userStyle
-         * selection UI.
+         *   selection UI.
          * @param description Localized description string displayed under the displayName.
          * @param icon [Icon] for use in the companion userStyle selection UI. This gets sent to the
-         * companion over bluetooth and should be small (ideally a few kb in size).
+         *   companion over bluetooth and should be small (ideally a few kb in size).
          * @param minimumValue Minimum value (inclusive).
          * @param maximumValue Maximum value (inclusive).
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects.
+         *   face rendering layers this style affects.
          * @param defaultValue The default value for this LongRangeUserStyleSetting.
-         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be sent
-         * to the companion and its contents may be used in preference to other fields by an on
-         * watch face editor.
+         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
+         *   sent to the companion and its contents may be used in preference to other fields by an
+         *   on watch face editor.
          * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         @JvmOverloads
-        public constructor (
+        public constructor(
             id: Id,
             displayName: CharSequence,
             description: CharSequence,
@@ -2738,24 +2679,24 @@
          *
          * @param id [Id] for the element, must be unique.
          * @param resources The [Resources] from which [displayNameResourceId] and
-         * [descriptionResourceId] are loaded.
-         * @param displayNameResourceId String resource id for a human readable name for the element,
-         * used in the userStyle selection UI.
+         *   [descriptionResourceId] are loaded.
+         * @param displayNameResourceId String resource id for a human readable name for the
+         *   element, used in the userStyle selection UI.
          * @param descriptionResourceId String resource id for a human readable description string
-         * displayed under the displayName.
+         *   displayed under the displayName.
          * @param icon [Icon] for use in the companion userStyle selection UI. This gets sent to the
-         * companion over bluetooth and should be small (ideally a few kb in size).
+         *   companion over bluetooth and should be small (ideally a few kb in size).
          * @param minimumValue Minimum value (inclusive).
          * @param maximumValue Maximum value (inclusive).
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects.
+         *   face rendering layers this style affects.
          * @param defaultValue The default value for this LongRangeUserStyleSetting.
-         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be sent
-         * to the companion and its contents may be used in preference to other fields by an on
-         * watch face editor.
+         * @param watchFaceEditorData Optional data for an on watch face editor, this will not be
+         *   sent to the companion and its contents may be used in preference to other fields by an
+         *   on watch face editor.
          */
         @JvmOverloads
-        public constructor (
+        public constructor(
             id: Id,
             resources: Resources,
             @StringRes displayNameResourceId: Int,
@@ -2781,7 +2722,7 @@
             affectsWatchFaceLayers
         )
 
-        internal constructor (
+        internal constructor(
             id: Id,
             displayName: DisplayText,
             description: DisplayText,
@@ -2820,12 +2761,10 @@
                 defaultOptionIndex,
                 affectedWatchFaceLayers.map { it.ordinal },
                 watchFaceEditorData?.toWireFormat(),
-                /* optionsOnWatchFaceEditorIcons = */null
+                /* optionsOnWatchFaceEditorIcons = */ null
             )
 
-        /**
-         * Represents an option a [Long] in the range [minimumValue .. maximumValue].
-         */
+        /** Represents an option a [Long] in the range [minimumValue .. maximumValue]. */
         public class LongRangeOption : Option {
             /* The value for this option. Must be within the range [minimumValue..maximumValue]. */
             public val value: Long
@@ -2835,7 +2774,9 @@
              *
              * @param value The value of this LongRangeOption
              */
-            public constructor(value: Long) : super(
+            public constructor(
+                value: Long
+            ) : super(
                 Id(ByteArray(8).apply { ByteBuffer.wrap(this).putLong(value) }),
                 emptyList()
             ) {
@@ -2876,13 +2817,10 @@
         public val defaultValue: Long
             get() = (options[defaultOptionIndex] as LongRangeOption).value
 
-        /**
-         * We support all values in the range [min ... max] not just min & max.
-         */
+        /** We support all values in the range [min ... max] not just min & max. */
         override fun getOptionForId(optionId: Option.Id): Option =
-            options.find { it.id.value.contentEquals(optionId.value) } ?: checkedOptionForId(
-                optionId.value
-            )
+            options.find { it.id.value.contentEquals(optionId.value) }
+                ?: checkedOptionForId(optionId.value)
 
         private fun checkedOptionForId(optionId: ByteArray): LongRangeOption {
             return try {
@@ -2916,10 +2854,10 @@
          * Constructs a CustomValueUserStyleSetting.
          *
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects.
+         *   face rendering layers this style affects.
          * @param defaultValue The default value [ByteArray].
          */
-        public constructor (
+        public constructor(
             affectsWatchFaceLayers: Collection<WatchFaceLayer>,
             defaultValue: ByteArray
         ) : super(
@@ -2946,7 +2884,7 @@
                 getWireFormatOptionsList(),
                 affectedWatchFaceLayers.map { it.ordinal },
                 watchFaceEditorData?.toWireFormat(),
-                /* optionsOnWatchFaceEditorIcons = */null
+                /* optionsOnWatchFaceEditorIcons = */ null
             )
 
         /**
@@ -2964,8 +2902,8 @@
             /**
              * Constructs a CustomValueOption.
              *
-             * @param customValue The [ByteArray] [id] and value of this CustomValueOption. This
-             * may not exceed [Option.Id.MAX_LENGTH].
+             * @param customValue The [ByteArray] [id] and value of this CustomValueOption. This may
+             *   not exceed [Option.Id.MAX_LENGTH].
              */
             public constructor(customValue: ByteArray) : super(Id(customValue), emptyList())
 
@@ -2987,15 +2925,14 @@
         }
 
         override fun getOptionForId(optionId: Option.Id): Option =
-            options.find { it.id.value.contentEquals(optionId.value) } ?: CustomValueOption(
-                optionId.value
-            )
+            options.find { it.id.value.contentEquals(optionId.value) }
+                ?: CustomValueOption(optionId.value)
     }
 
     /**
      * An application specific style setting which supports a larger maximum size than
-     * [CustomValueUserStyleSetting]. This style is ignored by the system editor. This is
-     * expected to be used in conjunction with an on watch face editor. Only a single
+     * [CustomValueUserStyleSetting]. This style is ignored by the system editor. This is expected
+     * to be used in conjunction with an on watch face editor. Only a single
      * [ComplicationSlotsUserStyleSetting] or [CustomValueUserStyleSetting2] is permitted in the
      * [UserStyleSchema].
      *
@@ -3011,10 +2948,10 @@
          * Constructs a CustomValueUserStyleSetting2.
          *
          * @param affectsWatchFaceLayers Used by the style configuration UI. Describes which watch
-         * face rendering layers this style affects.
+         *   face rendering layers this style affects.
          * @param defaultValue The default value [ByteArray].
          */
-        public constructor (
+        public constructor(
             affectsWatchFaceLayers: Collection<WatchFaceLayer>,
             defaultValue: ByteArray
         ) : super(
@@ -3041,7 +2978,7 @@
                 getWireFormatOptionsList(),
                 affectedWatchFaceLayers.map { it.ordinal },
                 watchFaceEditorData?.toWireFormat(),
-                /* optionsOnWatchFaceEditorIcons = */null
+                /* optionsOnWatchFaceEditorIcons = */ null
             )
 
         /**
@@ -3059,8 +2996,8 @@
             /**
              * Constructs a CustomValueOption.
              *
-             * @param customValue The [ByteArray] [id] and value of this CustomValueOption. This
-             * may not exceed [Option.Id.MAX_LENGTH].
+             * @param customValue The [ByteArray] [id] and value of this CustomValueOption. This may
+             *   not exceed [Option.Id.MAX_LENGTH].
              */
             public constructor(customValue: ByteArray) : super(Id(customValue), emptyList())
 
@@ -3082,7 +3019,7 @@
 
             public companion object {
                 /**
-                 * The maximum size of [customValue] in bytes.  This is based on the following
+                 * The maximum size of [customValue] in bytes. This is based on the following
                  * assumptions: 2mbps bluetooth bandwidth and a 50 millisecond transfer time (above
                  * 50ms delays become quite noticeable).
                  */
@@ -3093,9 +3030,8 @@
         }
 
         override fun getOptionForId(optionId: Option.Id): Option =
-            options.find { it.id.value.contentEquals(optionId.value) } ?: CustomValueOption(
-                optionId.value
-            )
+            options.find { it.id.value.contentEquals(optionId.value) }
+                ?: CustomValueOption(optionId.value)
     }
 }
 
@@ -3105,17 +3041,11 @@
 ) {
     val uniqueIds = HashSet<UserStyleSetting.Option.Id>()
     for (option in options) {
-        require(uniqueIds.add(option.id)) {
-            "duplicated option id: ${option.id} in $setting"
-        }
+        require(uniqueIds.add(option.id)) { "duplicated option id: ${option.id} in $setting" }
     }
 }
 
-internal class WireSizeAndDimensions(
-    val wireSizeBytes: Int?,
-    val width: Int,
-    val height: Int
-)
+internal class WireSizeAndDimensions(val wireSizeBytes: Int?, val width: Int, val height: Int)
 
 @RequiresApi(Build.VERSION_CODES.P)
 internal class IconHelper {
@@ -3129,7 +3059,6 @@
                         context.resources
                     )
                 }
-
                 Icon.TYPE_URI -> {
                     if (icon.uri.scheme == ContentResolver.SCHEME_CONTENT) {
                         context.contentResolver.openInputStream(icon.uri)?.let {
@@ -3137,7 +3066,6 @@
                         }
                     }
                 }
-
                 Icon.TYPE_URI_ADAPTIVE_BITMAP -> {
                     if (icon.uri.scheme == ContentResolver.SCHEME_CONTENT) {
                         context.contentResolver.openInputStream(icon.uri)?.let {
@@ -3156,9 +3084,7 @@
                     dos.writeInt(icon.resId)
                     dos.writeUTF(icon.resPackage)
                 }
-
                 Icon.TYPE_URI -> dos.writeUTF(icon.uri.toString())
-
                 Icon.TYPE_URI_ADAPTIVE_BITMAP -> dos.writeUTF(icon.uri.toString())
             }
 
@@ -3197,13 +3123,7 @@
     try {
         val wireSize = stream.available()
         val options = BitmapFactory.Options().apply { inJustDecodeBounds = true }
-        BitmapFactory.decodeResourceStream(
-            resources,
-            TypedValue(),
-            stream,
-            null,
-            options
-        )
+        BitmapFactory.decodeResourceStream(resources, TypedValue(), stream, null, options)
         return WireSizeAndDimensions(wireSize, options.outWidth, options.outHeight)
     } finally {
         stream.close()
@@ -3211,8 +3131,8 @@
 }
 
 /**
- * Gets the attribute specified by name. If there is no such attribute, applies defaultValue.
- * Throws exception if calculated result is null.
+ * Gets the attribute specified by name. If there is no such attribute, applies defaultValue. Throws
+ * exception if calculated result is null.
  */
 private fun <T> getAttributeChecked(
     parser: XmlResourceParser,
@@ -3224,18 +3144,13 @@
     return if (parser.hasValue(name)) {
         converter(parser.getAttributeValue(NAMESPACE_APP, name)!!)
     } else {
-        defaultValue ?: throw IllegalArgumentException(
-            "$name is required for $settingType")
+        defaultValue ?: throw IllegalArgumentException("$name is required for $settingType")
     }
 }
 
 /** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-fun getStringRefAttribute(
-    resources: Resources,
-    parser: XmlResourceParser,
-    name: String
-): String? {
+fun getStringRefAttribute(resources: Resources, parser: XmlResourceParser, name: String): String? {
     return if (parser.hasValue(name)) {
         val resId = parser.getAttributeResourceValue(NAMESPACE_APP, name, 0)
         if (resId == 0) {
@@ -3248,11 +3163,7 @@
 
 /** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-fun getIntRefAttribute(
-    resources: Resources,
-    parser: XmlResourceParser,
-    name: String
-): Int? {
+fun getIntRefAttribute(resources: Resources, parser: XmlResourceParser, name: String): Int? {
     return if (parser.hasValue(name)) {
         val resId = parser.getAttributeResourceValue(NAMESPACE_APP, name, 0)
         if (resId == 0) {
@@ -3271,9 +3182,7 @@
         type = next()
     } while (type != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG)
 
-    require(name == expectedNode) {
-        "Expected a $expectedNode node but is $name"
-    }
+    require(name == expectedNode) { "Expected a $expectedNode node but is $name" }
 }
 
 /** Converts 0 to null. Since 0 is never a valid resource id. */
diff --git a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/WatchFaceLayer.kt b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/WatchFaceLayer.kt
index 9ec2c17..7d55855 100644
--- a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/WatchFaceLayer.kt
+++ b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/WatchFaceLayer.kt
@@ -29,7 +29,6 @@
 
     public companion object {
         /** A [Set] of all [WatchFaceLayer]s. */
-        @JvmField
-        public val ALL_WATCH_FACE_LAYERS: Set<WatchFaceLayer> = values().toSet()
+        @JvmField public val ALL_WATCH_FACE_LAYERS: Set<WatchFaceLayer> = values().toSet()
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/CurrentUserStyleRepositoryTest.kt b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/CurrentUserStyleRepositoryTest.kt
index cdd035f..3029d3e 100644
--- a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/CurrentUserStyleRepositoryTest.kt
+++ b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/CurrentUserStyleRepositoryTest.kt
@@ -21,8 +21,8 @@
 import androidx.annotation.RequiresApi
 import androidx.wear.watchface.style.UserStyleSetting.BooleanUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting
-import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay
+import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption
 import androidx.wear.watchface.style.UserStyleSetting.CustomValueUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.CustomValueUserStyleSetting.CustomValueOption
 import androidx.wear.watchface.style.UserStyleSetting.DoubleRangeUserStyleSetting
@@ -30,77 +30,54 @@
 import androidx.wear.watchface.style.UserStyleSetting.LongRangeUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.Option
 import com.google.common.truth.Truth.assertThat
-import org.junit.Assert.fail
 import org.junit.Assert.assertThrows
+import org.junit.Assert.fail
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.annotation.Config
 
-private val redStyleOption = ListUserStyleSetting.ListOption(
-    Option.Id("red_style"),
-    "Red",
-    "Red",
-    icon = null
-)
+private val redStyleOption =
+    ListUserStyleSetting.ListOption(Option.Id("red_style"), "Red", "Red", icon = null)
 
-private val greenStyleOption = ListUserStyleSetting.ListOption(
-    Option.Id("green_style"),
-    "Green",
-    "Green",
-    icon = null
-)
+private val greenStyleOption =
+    ListUserStyleSetting.ListOption(Option.Id("green_style"), "Green", "Green", icon = null)
 
-private val blueStyleOption = ListUserStyleSetting.ListOption(
-    Option.Id("blue_style"),
-    "Blue",
-    "Blue",
-    icon = null
-)
+private val blueStyleOption =
+    ListUserStyleSetting.ListOption(Option.Id("blue_style"), "Blue", "Blue", icon = null)
 
 private val colorStyleList = listOf(redStyleOption, greenStyleOption, blueStyleOption)
 
-private val colorStyleSetting = ListUserStyleSetting(
-    UserStyleSetting.Id("color_style_setting"),
-    "Colors",
-    "Watchface colorization", /* icon = */
-    null,
-    colorStyleList,
-    listOf(WatchFaceLayer.BASE)
-)
+private val colorStyleSetting =
+    ListUserStyleSetting(
+        UserStyleSetting.Id("color_style_setting"),
+        "Colors",
+        "Watchface colorization",
+        /* icon = */ null,
+        colorStyleList,
+        listOf(WatchFaceLayer.BASE)
+    )
 
-private val classicStyleOption = ListUserStyleSetting.ListOption(
-    Option.Id("classic_style"),
-    "Classic",
-    "Classic",
-    icon = null
-)
+private val classicStyleOption =
+    ListUserStyleSetting.ListOption(Option.Id("classic_style"), "Classic", "Classic", icon = null)
 
-private val modernStyleOption = ListUserStyleSetting.ListOption(
-    Option.Id("modern_style"),
-    "Modern",
-    "Modern",
-    icon = null
-)
+private val modernStyleOption =
+    ListUserStyleSetting.ListOption(Option.Id("modern_style"), "Modern", "Modern", icon = null)
 
-private val gothicStyleOption = ListUserStyleSetting.ListOption(
-    Option.Id("gothic_style"),
-    "Gothic",
-    "Gothic",
-    icon = null
-)
+private val gothicStyleOption =
+    ListUserStyleSetting.ListOption(Option.Id("gothic_style"), "Gothic", "Gothic", icon = null)
 
-private val watchHandStyleList =
-    listOf(classicStyleOption, modernStyleOption, gothicStyleOption)
+private val watchHandStyleList = listOf(classicStyleOption, modernStyleOption, gothicStyleOption)
 
-private val watchHandStyleSetting = ListUserStyleSetting(
-    UserStyleSetting.Id("hand_style_setting"),
-    "Hand Style",
-    "Hand visual look", /* icon = */
-    null,
-    watchHandStyleList,
-    listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-)
+private val watchHandStyleSetting =
+    ListUserStyleSetting(
+        UserStyleSetting.Id("hand_style_setting"),
+        "Hand Style",
+        "Hand visual look",
+        /* icon = */ null,
+        watchHandStyleList,
+        listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+    )
 private val watchHandLengthStyleSetting =
     DoubleRangeUserStyleSetting(
         UserStyleSetting.Id("watch_hand_length_style_setting"),
@@ -112,39 +89,43 @@
         listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY),
         0.75
     )
-private val booleanSetting = BooleanUserStyleSetting(
-    UserStyleSetting.Id("setting"),
-    "setting",
-    "setting description",
-    null,
-    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-    true
-)
-private val booleanSettingCopy = BooleanUserStyleSetting(
-    UserStyleSetting.Id("setting"),
-    "setting",
-    "setting description",
-    null,
-    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-    true
-)
-private val booleanSettingModifiedInfo = BooleanUserStyleSetting(
-    UserStyleSetting.Id("setting"),
-    "setting modified",
-    "setting description modified",
-    null,
-    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-    false
-)
+private val booleanSetting =
+    BooleanUserStyleSetting(
+        UserStyleSetting.Id("setting"),
+        "setting",
+        "setting description",
+        null,
+        WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+        true
+    )
+private val booleanSettingCopy =
+    BooleanUserStyleSetting(
+        UserStyleSetting.Id("setting"),
+        "setting",
+        "setting description",
+        null,
+        WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+        true
+    )
+private val booleanSettingModifiedInfo =
+    BooleanUserStyleSetting(
+        UserStyleSetting.Id("setting"),
+        "setting modified",
+        "setting description modified",
+        null,
+        WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+        false
+    )
 
-private val booleanSettingModifiedId = BooleanUserStyleSetting(
-    UserStyleSetting.Id("setting_modified"),
-    "setting",
-    "setting description",
-    null,
-    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-    true
-)
+private val booleanSettingModifiedId =
+    BooleanUserStyleSetting(
+        UserStyleSetting.Id("setting_modified"),
+        "setting",
+        "setting description",
+        null,
+        WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+        true
+    )
 
 private val optionTrue = BooleanUserStyleSetting.BooleanOption.TRUE
 private val optionFalse = BooleanUserStyleSetting.BooleanOption.FALSE
@@ -162,12 +143,13 @@
 
     @Test
     fun assigning_userStyle() {
-        val newStyle = UserStyle(
-            hashMapOf(
-                colorStyleSetting to greenStyleOption,
-                watchHandStyleSetting to gothicStyleOption
+        val newStyle =
+            UserStyle(
+                hashMapOf(
+                    colorStyleSetting to greenStyleOption,
+                    watchHandStyleSetting to gothicStyleOption
+                )
             )
-        )
 
         userStyleRepository.updateUserStyle(newStyle)
 
@@ -179,29 +161,32 @@
 
     @Test
     fun assign_userStyle_with_distinctButMatchingRefs() {
-        val colorStyleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            null,
-            colorStyleList,
-            listOf(WatchFaceLayer.BASE)
-        )
-        val watchHandStyleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("hand_style_setting"),
-            "Hand Style",
-            "Hand visual look", /* icon = */
-            null,
-            watchHandStyleList,
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-        )
-
-        val newStyle = UserStyle(
-            hashMapOf(
-                colorStyleSetting2 to greenStyleOption,
-                watchHandStyleSetting2 to gothicStyleOption
+        val colorStyleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ null,
+                colorStyleList,
+                listOf(WatchFaceLayer.BASE)
             )
-        )
+        val watchHandStyleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("hand_style_setting"),
+                "Hand Style",
+                "Hand visual look",
+                /* icon = */ null,
+                watchHandStyleList,
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+            )
+
+        val newStyle =
+            UserStyle(
+                hashMapOf(
+                    colorStyleSetting2 to greenStyleOption,
+                    watchHandStyleSetting2 to gothicStyleOption
+                )
+            )
 
         userStyleRepository.updateUserStyle(newStyle)
 
@@ -214,84 +199,78 @@
     @Test
     fun defaultValues() {
         val watchHandLengthOption =
-            userStyleRepository.userStyle.value[watchHandLengthStyleSetting]!! as
-                DoubleRangeUserStyleSetting.DoubleRangeOption
+            userStyleRepository.userStyle.value[watchHandLengthStyleSetting]!!
+                as DoubleRangeUserStyleSetting.DoubleRangeOption
         assertThat(watchHandLengthOption.value).isEqualTo(0.75)
     }
 
     @Test
     fun userStyle_mapConstructor() {
-        val userStyle = UserStyle(
-            UserStyleData(
-                mapOf(
-                    "color_style_setting" to "blue_style".encodeToByteArray(),
-                    "hand_style_setting" to "gothic_style".encodeToByteArray()
-                )
-            ),
-            userStyleRepository.schema
-        )
+        val userStyle =
+            UserStyle(
+                UserStyleData(
+                    mapOf(
+                        "color_style_setting" to "blue_style".encodeToByteArray(),
+                        "hand_style_setting" to "gothic_style".encodeToByteArray()
+                    )
+                ),
+                userStyleRepository.schema
+            )
 
-        assertThat(userStyle[colorStyleSetting]!!.id.value.decodeToString())
-            .isEqualTo("blue_style")
+        assertThat(userStyle[colorStyleSetting]!!.id.value.decodeToString()).isEqualTo("blue_style")
         assertThat(userStyle[watchHandStyleSetting]!!.id.value.decodeToString())
             .isEqualTo("gothic_style")
     }
 
     @Test
     fun userStyle_mapConstructor_badColorStyle() {
-        val userStyle = UserStyle(
-            UserStyleData(
-                mapOf(
-                    "color_style_setting" to "I DO NOT EXIST".encodeToByteArray(),
-                    "hand_style_setting" to "gothic_style".encodeToByteArray()
-                )
-            ),
-            userStyleRepository.schema
-        )
+        val userStyle =
+            UserStyle(
+                UserStyleData(
+                    mapOf(
+                        "color_style_setting" to "I DO NOT EXIST".encodeToByteArray(),
+                        "hand_style_setting" to "gothic_style".encodeToByteArray()
+                    )
+                ),
+                userStyleRepository.schema
+            )
 
-        assertThat(userStyle[colorStyleSetting]!!.id.value.decodeToString())
-            .isEqualTo("red_style")
+        assertThat(userStyle[colorStyleSetting]!!.id.value.decodeToString()).isEqualTo("red_style")
         assertThat(userStyle[watchHandStyleSetting]!!.id.value.decodeToString())
             .isEqualTo("gothic_style")
     }
 
     @Test
     fun userStyle_mapConstructor_missingColorStyle() {
-        val userStyle = UserStyle(
-            UserStyleData(
-                mapOf("hand_style_setting" to "gothic_style".encodeToByteArray())
-            ),
-            userStyleRepository.schema
-        )
+        val userStyle =
+            UserStyle(
+                UserStyleData(mapOf("hand_style_setting" to "gothic_style".encodeToByteArray())),
+                userStyleRepository.schema
+            )
 
-        assertThat(userStyle[colorStyleSetting]!!.id.value.decodeToString())
-            .isEqualTo("red_style")
+        assertThat(userStyle[colorStyleSetting]!!.id.value.decodeToString()).isEqualTo("red_style")
         assertThat(userStyle[watchHandStyleSetting]!!.id.value.decodeToString())
             .isEqualTo("gothic_style")
     }
 
     @Test
     fun userStyle_mapConstructor_customValueUserStyleSetting() {
-        val customStyleSetting = CustomValueUserStyleSetting(
-            listOf(WatchFaceLayer.BASE),
-            "default".encodeToByteArray()
-        )
+        val customStyleSetting =
+            CustomValueUserStyleSetting(listOf(WatchFaceLayer.BASE), "default".encodeToByteArray())
 
-        val userStyleRepository = CurrentUserStyleRepository(
-            UserStyleSchema(
-                listOf(customStyleSetting)
+        val userStyleRepository =
+            CurrentUserStyleRepository(UserStyleSchema(listOf(customStyleSetting)))
+
+        val userStyle =
+            UserStyle(
+                UserStyleData(
+                    mapOf(
+                        CustomValueUserStyleSetting.CUSTOM_VALUE_USER_STYLE_SETTING_ID to
+                            "TEST 123".encodeToByteArray()
+                    )
+                ),
+                userStyleRepository.schema
             )
-        )
-
-        val userStyle = UserStyle(
-            UserStyleData(
-                mapOf(
-                    CustomValueUserStyleSetting.CUSTOM_VALUE_USER_STYLE_SETTING_ID
-                        to "TEST 123".encodeToByteArray()
-                )
-            ),
-            userStyleRepository.schema
-        )
 
         val customValue = userStyle[customStyleSetting]!! as CustomValueOption
         assertThat(customValue.customValue.decodeToString()).isEqualTo("TEST 123")
@@ -299,19 +278,13 @@
 
     @Test
     fun userStyle_multiple_CustomValueUserStyleSetting_notAllowed() {
-        val customStyleSetting1 = CustomValueUserStyleSetting(
-            listOf(WatchFaceLayer.BASE),
-            "default".encodeToByteArray()
-        )
-        val customStyleSetting2 = CustomValueUserStyleSetting(
-            listOf(WatchFaceLayer.BASE),
-            "default".encodeToByteArray()
-        )
+        val customStyleSetting1 =
+            CustomValueUserStyleSetting(listOf(WatchFaceLayer.BASE), "default".encodeToByteArray())
+        val customStyleSetting2 =
+            CustomValueUserStyleSetting(listOf(WatchFaceLayer.BASE), "default".encodeToByteArray())
 
         try {
-            UserStyleSchema(
-                listOf(customStyleSetting1, customStyleSetting2)
-            )
+            UserStyleSchema(listOf(customStyleSetting1, customStyleSetting2))
             fail(
                 "Constructing a UserStyleSchema with more than one " +
                     "CustomValueUserStyleSetting should fail"
@@ -323,19 +296,13 @@
 
     @Test
     fun userStyle_multiple_CustomValueUserStyleSettings_notAllowed() {
-        val customStyleSetting1 = CustomValueUserStyleSetting(
-            listOf(WatchFaceLayer.BASE),
-            "default".encodeToByteArray()
-        )
-        val customStyleSetting2 = CustomValueUserStyleSetting(
-            listOf(WatchFaceLayer.BASE),
-            "default".encodeToByteArray()
-        )
+        val customStyleSetting1 =
+            CustomValueUserStyleSetting(listOf(WatchFaceLayer.BASE), "default".encodeToByteArray())
+        val customStyleSetting2 =
+            CustomValueUserStyleSetting(listOf(WatchFaceLayer.BASE), "default".encodeToByteArray())
 
         try {
-            UserStyleSchema(
-                listOf(customStyleSetting1, customStyleSetting2)
-            )
+            UserStyleSchema(listOf(customStyleSetting1, customStyleSetting2))
             fail(
                 "Constructing a UserStyleSchema with more than one CustomValueUserStyleSetting " +
                     "should fail"
@@ -347,12 +314,13 @@
 
     @Test
     fun userStyle_get() {
-        val userStyle = UserStyle(
-            hashMapOf(
-                colorStyleSetting to greenStyleOption,
-                watchHandStyleSetting to gothicStyleOption
+        val userStyle =
+            UserStyle(
+                hashMapOf(
+                    colorStyleSetting to greenStyleOption,
+                    watchHandStyleSetting to gothicStyleOption
+                )
             )
-        )
 
         assertThat(userStyle[colorStyleSetting]).isEqualTo(greenStyleOption)
         assertThat(userStyle[watchHandStyleSetting]).isEqualTo(gothicStyleOption)
@@ -360,12 +328,13 @@
 
     @Test
     fun userStyle_getById() {
-        val userStyle = UserStyle(
-            hashMapOf(
-                colorStyleSetting to greenStyleOption,
-                watchHandStyleSetting to gothicStyleOption
+        val userStyle =
+            UserStyle(
+                hashMapOf(
+                    colorStyleSetting to greenStyleOption,
+                    watchHandStyleSetting to gothicStyleOption
+                )
             )
-        )
 
         assertThat(userStyle[colorStyleSetting.id]).isEqualTo(greenStyleOption)
         assertThat(userStyle[watchHandStyleSetting.id]).isEqualTo(gothicStyleOption)
@@ -373,50 +342,36 @@
 
     @Test
     fun userStyle_getAndSetDifferentOptionInstances() {
-        val option0 = ListUserStyleSetting.ListOption(
-            Option.Id("0"),
-            "option 0",
-            "option 0",
-            icon = null
-        )
-        val option1 = ListUserStyleSetting.ListOption(
-            Option.Id("1"),
-            "option 1",
-            "option 1",
-            icon = null
-        )
-        val option0Copy = ListUserStyleSetting.ListOption(
-            Option.Id("0"),
-            "option #0",
-            "option #0",
-            icon = null
-        )
-        val option1Copy = ListUserStyleSetting.ListOption(
-            Option.Id("1"),
-            "option #1",
-            "option #1",
-            icon = null
-        )
-        val setting = ListUserStyleSetting(
-            UserStyleSetting.Id("setting"),
-            "setting",
-            "setting description",
-            icon = null,
-            listOf(option0, option1),
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS
-        )
+        val option0 =
+            ListUserStyleSetting.ListOption(Option.Id("0"), "option 0", "option 0", icon = null)
+        val option1 =
+            ListUserStyleSetting.ListOption(Option.Id("1"), "option 1", "option 1", icon = null)
+        val option0Copy =
+            ListUserStyleSetting.ListOption(Option.Id("0"), "option #0", "option #0", icon = null)
+        val option1Copy =
+            ListUserStyleSetting.ListOption(Option.Id("1"), "option #1", "option #1", icon = null)
+        val setting =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("setting"),
+                "setting",
+                "setting description",
+                icon = null,
+                listOf(option0, option1),
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS
+            )
 
         val userStyle = UserStyle(mapOf(setting to option0))
         assertThat(userStyle[setting]).isEqualTo(option0)
         assertThat(userStyle[setting]).isEqualTo(option0Copy)
 
-        userStyle.toMutableUserStyle().apply {
-            this[setting] = option1
-        }.let { newUserStyle ->
-            assertThat(userStyle[setting]).isEqualTo(option0)
-            assertThat(newUserStyle[setting]).isEqualTo(option1)
-            assertThat(newUserStyle[setting]).isEqualTo(option1Copy)
-        }
+        userStyle
+            .toMutableUserStyle()
+            .apply { this[setting] = option1 }
+            .let { newUserStyle ->
+                assertThat(userStyle[setting]).isEqualTo(option0)
+                assertThat(newUserStyle[setting]).isEqualTo(option1)
+                assertThat(newUserStyle[setting]).isEqualTo(option1Copy)
+            }
     }
 
     @Test
@@ -433,40 +388,44 @@
         val userStyle = UserStyle(mapOf(booleanSetting to optionTrue))
         assertThat(userStyle[booleanSetting]).isEqualTo(optionTrue)
 
-        userStyle.toMutableUserStyle().apply {
-            this[booleanSetting] = optionFalse
-        }.toUserStyle().let { newUserStyle: UserStyle ->
-            assertThat(userStyle[booleanSetting]).isEqualTo(optionTrue)
-            assertThat(newUserStyle[booleanSetting]).isEqualTo(optionFalse)
-            assertThat(newUserStyle[booleanSettingCopy]).isEqualTo(optionFalse)
-            assertThat(newUserStyle[booleanSettingModifiedInfo]).isEqualTo(optionFalse)
-            assertThat(newUserStyle[booleanSettingModifiedId]).isEqualTo(null)
-        }
+        userStyle
+            .toMutableUserStyle()
+            .apply { this[booleanSetting] = optionFalse }
+            .toUserStyle()
+            .let { newUserStyle: UserStyle ->
+                assertThat(userStyle[booleanSetting]).isEqualTo(optionTrue)
+                assertThat(newUserStyle[booleanSetting]).isEqualTo(optionFalse)
+                assertThat(newUserStyle[booleanSettingCopy]).isEqualTo(optionFalse)
+                assertThat(newUserStyle[booleanSettingModifiedInfo]).isEqualTo(optionFalse)
+                assertThat(newUserStyle[booleanSettingModifiedId]).isEqualTo(null)
+            }
 
-        userStyle.toMutableUserStyle().apply {
-            this[booleanSettingCopy] = optionFalse
-        }.toUserStyle().let { newUserStyle: UserStyle ->
-            assertThat(userStyle[booleanSetting]).isEqualTo(optionTrue)
-            assertThat(newUserStyle[booleanSetting]).isEqualTo(optionFalse)
-            assertThat(newUserStyle[booleanSettingCopy]).isEqualTo(optionFalse)
-            assertThat(newUserStyle[booleanSettingModifiedInfo]).isEqualTo(optionFalse)
-            assertThat(newUserStyle[booleanSettingModifiedId]).isEqualTo(null)
-        }
+        userStyle
+            .toMutableUserStyle()
+            .apply { this[booleanSettingCopy] = optionFalse }
+            .toUserStyle()
+            .let { newUserStyle: UserStyle ->
+                assertThat(userStyle[booleanSetting]).isEqualTo(optionTrue)
+                assertThat(newUserStyle[booleanSetting]).isEqualTo(optionFalse)
+                assertThat(newUserStyle[booleanSettingCopy]).isEqualTo(optionFalse)
+                assertThat(newUserStyle[booleanSettingModifiedInfo]).isEqualTo(optionFalse)
+                assertThat(newUserStyle[booleanSettingModifiedId]).isEqualTo(null)
+            }
 
-        userStyle.toMutableUserStyle().apply {
-            this[booleanSettingModifiedInfo] = optionFalse
-        }.toUserStyle().let { newUserStyle: UserStyle ->
-            assertThat(userStyle[booleanSetting]).isEqualTo(optionTrue)
-            assertThat(newUserStyle[booleanSetting]).isEqualTo(optionFalse)
-            assertThat(newUserStyle[booleanSettingCopy]).isEqualTo(optionFalse)
-            assertThat(newUserStyle[booleanSettingModifiedInfo]).isEqualTo(optionFalse)
-            assertThat(newUserStyle[booleanSettingModifiedId]).isEqualTo(null)
-        }
+        userStyle
+            .toMutableUserStyle()
+            .apply { this[booleanSettingModifiedInfo] = optionFalse }
+            .toUserStyle()
+            .let { newUserStyle: UserStyle ->
+                assertThat(userStyle[booleanSetting]).isEqualTo(optionTrue)
+                assertThat(newUserStyle[booleanSetting]).isEqualTo(optionFalse)
+                assertThat(newUserStyle[booleanSettingCopy]).isEqualTo(optionFalse)
+                assertThat(newUserStyle[booleanSettingModifiedInfo]).isEqualTo(optionFalse)
+                assertThat(newUserStyle[booleanSettingModifiedId]).isEqualTo(null)
+            }
 
         assertThrows(IllegalArgumentException::class.java) {
-            userStyle.toMutableUserStyle().apply {
-                this[booleanSettingModifiedId] = optionFalse
-            }
+            userStyle.toMutableUserStyle().apply { this[booleanSettingModifiedId] = optionFalse }
         }
     }
 
@@ -511,9 +470,7 @@
         }
 
         CurrentUserStyleRepository(userStyleSchema).let { currentUserStyleRepository ->
-            assertThrows(
-                java.lang.IllegalArgumentException::class.java
-            ) {
+            assertThrows(java.lang.IllegalArgumentException::class.java) {
                 currentUserStyleRepository.updateUserStyle(
                     UserStyle(mapOf(booleanSettingModifiedId to optionFalse))
                 )
@@ -523,9 +480,7 @@
 
     @Test
     fun userStyle_modifyUnderlyingMap() {
-        val map = HashMap<UserStyleSetting, Option>().apply {
-            this[booleanSetting] = optionTrue
-        }
+        val map = HashMap<UserStyleSetting, Option>().apply { this[booleanSetting] = optionTrue }
         val userStyle = UserStyle(map)
 
         assertThat(userStyle[booleanSetting]).isEqualTo(optionTrue)
@@ -558,10 +513,7 @@
     @Test
     fun userStyle_merge_overridesUnknownSetting() {
         val userStyle = UserStyle(mapOf(booleanSetting to optionTrue))
-        UserStyle.merge(
-            userStyle,
-            UserStyle(mapOf(colorStyleSetting to blueStyleOption))
-        ).let {
+        UserStyle.merge(userStyle, UserStyle(mapOf(colorStyleSetting to blueStyleOption))).let {
             // Style has not changed.
             assertThat(it).isNull()
         }
@@ -585,68 +537,57 @@
 
     @Test
     fun setAndGetCustomStyleSetting() {
-        val customStyleSetting = CustomValueUserStyleSetting(
-            listOf(WatchFaceLayer.BASE),
-            "default".encodeToByteArray()
-        )
+        val customStyleSetting =
+            CustomValueUserStyleSetting(listOf(WatchFaceLayer.BASE), "default".encodeToByteArray())
 
-        val userStyleRepository = CurrentUserStyleRepository(
-            UserStyleSchema(
-                listOf(customStyleSetting)
-            )
-        )
+        val userStyleRepository =
+            CurrentUserStyleRepository(UserStyleSchema(listOf(customStyleSetting)))
 
         userStyleRepository.updateUserStyle(
-            UserStyle(
-                mapOf(
-                    customStyleSetting to CustomValueOption("test".encodeToByteArray())
-                )
-            )
+            UserStyle(mapOf(customStyleSetting to CustomValueOption("test".encodeToByteArray())))
         )
 
         assertThat(
-            (userStyleRepository.userStyle.value[customStyleSetting]!! as CustomValueOption)
-                .customValue.decodeToString()
-        ).isEqualTo("test")
+                (userStyleRepository.userStyle.value[customStyleSetting]!! as CustomValueOption)
+                    .customValue
+                    .decodeToString()
+            )
+            .isEqualTo("test")
     }
 
     @Test
     fun userStyleData_equals() {
-        assertThat(UserStyleData(mapOf("A" to "a".encodeToByteArray()))).isEqualTo(
-            UserStyleData(mapOf("A" to "a".encodeToByteArray()))
-        )
+        assertThat(UserStyleData(mapOf("A" to "a".encodeToByteArray())))
+            .isEqualTo(UserStyleData(mapOf("A" to "a".encodeToByteArray())))
 
         assertThat(
-            UserStyleData(mapOf("A" to "a".encodeToByteArray(), "B" to "b".encodeToByteArray()))
-        ).isEqualTo(
-            UserStyleData(mapOf("A" to "a".encodeToByteArray(), "B" to "b".encodeToByteArray()))
-        )
+                UserStyleData(mapOf("A" to "a".encodeToByteArray(), "B" to "b".encodeToByteArray()))
+            )
+            .isEqualTo(
+                UserStyleData(mapOf("A" to "a".encodeToByteArray(), "B" to "b".encodeToByteArray()))
+            )
 
-        assertThat(UserStyleData(mapOf("A" to "a".encodeToByteArray()))).isNotEqualTo(
-            UserStyleData(mapOf("A" to "b".encodeToByteArray()))
-        )
+        assertThat(UserStyleData(mapOf("A" to "a".encodeToByteArray())))
+            .isNotEqualTo(UserStyleData(mapOf("A" to "b".encodeToByteArray())))
 
-        assertThat(UserStyleData(mapOf("A" to "a".encodeToByteArray()))).isNotEqualTo(
-            UserStyleData(mapOf("B" to "a".encodeToByteArray()))
-        )
+        assertThat(UserStyleData(mapOf("A" to "a".encodeToByteArray())))
+            .isNotEqualTo(UserStyleData(mapOf("B" to "a".encodeToByteArray())))
 
-        assertThat(UserStyleData(mapOf("A" to "a".encodeToByteArray()))).isNotEqualTo(
-            UserStyleData(mapOf("A" to "a".encodeToByteArray(), "B" to "b".encodeToByteArray()))
-        )
+        assertThat(UserStyleData(mapOf("A" to "a".encodeToByteArray())))
+            .isNotEqualTo(
+                UserStyleData(mapOf("A" to "a".encodeToByteArray(), "B" to "b".encodeToByteArray()))
+            )
 
         assertThat(
-            UserStyleData(mapOf("A" to "a".encodeToByteArray(), "B" to "b".encodeToByteArray()))
-        ).isNotEqualTo(UserStyleData(mapOf("A" to "a".encodeToByteArray())))
+                UserStyleData(mapOf("A" to "a".encodeToByteArray(), "B" to "b".encodeToByteArray()))
+            )
+            .isNotEqualTo(UserStyleData(mapOf("A" to "a".encodeToByteArray())))
     }
 
     @Test
     fun userStyleData_toString() {
-        val userStyleData = UserStyleData(
-            mapOf(
-                "A" to "a".encodeToByteArray(),
-                "B" to "b".encodeToByteArray()
-            )
-        )
+        val userStyleData =
+            UserStyleData(mapOf("A" to "a".encodeToByteArray(), "B" to "b".encodeToByteArray()))
 
         assertThat(userStyleData.toString()).contains("A=a")
         assertThat(userStyleData.toString()).contains("B=b")
@@ -657,51 +598,59 @@
         assertThat(optionTrue.toString()).isEqualTo("true")
         assertThat(optionFalse.toString()).isEqualTo("false")
         assertThat(gothicStyleOption.toString()).isEqualTo("gothic_style")
-        assertThat(DoubleRangeUserStyleSetting.DoubleRangeOption(12.3).toString())
-            .isEqualTo("12.3")
-        assertThat(LongRangeUserStyleSetting.LongRangeOption(123).toString())
-            .isEqualTo("123")
+        assertThat(DoubleRangeUserStyleSetting.DoubleRangeOption(12.3).toString()).isEqualTo("12.3")
+        assertThat(LongRangeUserStyleSetting.LongRangeOption(123).toString()).isEqualTo("123")
         assertThat(CustomValueOption("test".encodeToByteArray()).toString()).isEqualTo("test")
     }
 
     @Test
     fun userStyleEquality() {
-        val userStyleA = UserStyle(
-            mapOf(
-                colorStyleSetting to blueStyleOption,
-                watchHandStyleSetting to modernStyleOption,
-                watchHandLengthStyleSetting to DoubleRangeUserStyleSetting.DoubleRangeOption(0.2)
+        val userStyleA =
+            UserStyle(
+                mapOf(
+                    colorStyleSetting to blueStyleOption,
+                    watchHandStyleSetting to modernStyleOption,
+                    watchHandLengthStyleSetting to
+                        DoubleRangeUserStyleSetting.DoubleRangeOption(0.2)
+                )
             )
-        )
-        val userStyleA2 = UserStyle(
-            mapOf(
-                colorStyleSetting to blueStyleOption,
-                watchHandStyleSetting to modernStyleOption,
-                watchHandLengthStyleSetting to DoubleRangeUserStyleSetting.DoubleRangeOption(0.2)
+        val userStyleA2 =
+            UserStyle(
+                mapOf(
+                    colorStyleSetting to blueStyleOption,
+                    watchHandStyleSetting to modernStyleOption,
+                    watchHandLengthStyleSetting to
+                        DoubleRangeUserStyleSetting.DoubleRangeOption(0.2)
+                )
             )
-        )
 
-        val userStyleB = UserStyle(
-            mapOf(
-                colorStyleSetting to blueStyleOption,
-                watchHandStyleSetting to modernStyleOption,
-                watchHandLengthStyleSetting to DoubleRangeUserStyleSetting.DoubleRangeOption(0.75)
+        val userStyleB =
+            UserStyle(
+                mapOf(
+                    colorStyleSetting to blueStyleOption,
+                    watchHandStyleSetting to modernStyleOption,
+                    watchHandLengthStyleSetting to
+                        DoubleRangeUserStyleSetting.DoubleRangeOption(0.75)
+                )
             )
-        )
-        val userStyleC = UserStyle(
-            mapOf(
-                colorStyleSetting to blueStyleOption,
-                watchHandStyleSetting to gothicStyleOption,
-                watchHandLengthStyleSetting to DoubleRangeUserStyleSetting.DoubleRangeOption(0.2)
+        val userStyleC =
+            UserStyle(
+                mapOf(
+                    colorStyleSetting to blueStyleOption,
+                    watchHandStyleSetting to gothicStyleOption,
+                    watchHandLengthStyleSetting to
+                        DoubleRangeUserStyleSetting.DoubleRangeOption(0.2)
+                )
             )
-        )
-        val userStyleD = UserStyle(
-            mapOf(
-                colorStyleSetting to redStyleOption,
-                watchHandStyleSetting to modernStyleOption,
-                watchHandLengthStyleSetting to DoubleRangeUserStyleSetting.DoubleRangeOption(0.2)
+        val userStyleD =
+            UserStyle(
+                mapOf(
+                    colorStyleSetting to redStyleOption,
+                    watchHandStyleSetting to modernStyleOption,
+                    watchHandLengthStyleSetting to
+                        DoubleRangeUserStyleSetting.DoubleRangeOption(0.2)
+                )
             )
-        )
 
         assertThat(userStyleA).isEqualTo(userStyleA2)
         assertThat(userStyleA).isNotEqualTo(userStyleB)
@@ -719,49 +668,54 @@
         val twentyFourHourClockOption =
             ListUserStyleSetting.ListOption(Option.Id("24_style"), "24", "24", icon = null)
 
-        val digitalClockStyleSetting = ListUserStyleSetting(
-            UserStyleSetting.Id("digital_clock_style"),
-            "Clock style",
-            "Clock style setting",
-            null,
-            listOf(twelveHourClockOption, twentyFourHourClockOption),
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS
-        )
-
-        val digitalWatchFaceType = ListUserStyleSetting.ListOption(
-            Option.Id("digital"),
-           "Digital",
-            "Digital",
-            icon = null,
-            childSettings = listOf(digitalClockStyleSetting, colorStyleSetting)
-        )
-
-        val analogWatchFaceType = ListUserStyleSetting.ListOption(
-            Option.Id("analog"),
-            "Analog",
-            "Analog",
-            icon = null,
-            childSettings = listOf(watchHandLengthStyleSetting, watchHandStyleSetting)
-        )
-
-        val watchFaceType = ListUserStyleSetting(
-            UserStyleSetting.Id("clock_type"),
-            "Watch face type",
-            "Analog or digital",
-            icon = null,
-            options = listOf(digitalWatchFaceType, analogWatchFaceType),
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS
-        )
-
-        val schema = UserStyleSchema(
-            listOf(
-                watchFaceType,
-                digitalClockStyleSetting,
-                colorStyleSetting,
-                watchHandLengthStyleSetting,
-                watchHandStyleSetting
+        val digitalClockStyleSetting =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("digital_clock_style"),
+                "Clock style",
+                "Clock style setting",
+                null,
+                listOf(twelveHourClockOption, twentyFourHourClockOption),
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS
             )
-        )
+
+        val digitalWatchFaceType =
+            ListUserStyleSetting.ListOption(
+                Option.Id("digital"),
+                "Digital",
+                "Digital",
+                icon = null,
+                childSettings = listOf(digitalClockStyleSetting, colorStyleSetting)
+            )
+
+        val analogWatchFaceType =
+            ListUserStyleSetting.ListOption(
+                Option.Id("analog"),
+                "Analog",
+                "Analog",
+                icon = null,
+                childSettings = listOf(watchHandLengthStyleSetting, watchHandStyleSetting)
+            )
+
+        val watchFaceType =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("clock_type"),
+                "Watch face type",
+                "Analog or digital",
+                icon = null,
+                options = listOf(digitalWatchFaceType, analogWatchFaceType),
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS
+            )
+
+        val schema =
+            UserStyleSchema(
+                listOf(
+                    watchFaceType,
+                    digitalClockStyleSetting,
+                    colorStyleSetting,
+                    watchHandLengthStyleSetting,
+                    watchHandStyleSetting
+                )
+            )
 
         assertThat(schema.rootUserStyleSettings).containsExactly(watchFaceType)
 
@@ -774,43 +728,48 @@
 
     @Test
     fun invalid_multiple_ComplicationSlotsUserStyleSettings_same_level() {
-        val leftAndRightComplications = ComplicationSlotsOption(
-            Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
-            displayName = "Both",
-            screenReaderName = "Both complications",
-            icon = null,
-            emptyList()
-        )
-        val complicationSetting1 = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting1"),
-            displayName = "Complications",
-            description = "Number and position",
-            icon = null,
-            complicationConfig = listOf(leftAndRightComplications),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
-        val complicationSetting2 = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting2"),
-            displayName = "Complications",
-            description = "Number and position",
-            icon = null,
-            complicationConfig = listOf(leftAndRightComplications),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
-        val optionA1 = ListUserStyleSetting.ListOption(
-            Option.Id("a1_style"),
-            displayName = "A1",
-            screenReaderName = "A1 style",
-            icon = null,
-            childSettings = listOf(complicationSetting1, complicationSetting2)
-        )
-        val optionA2 = ListUserStyleSetting.ListOption(
-            Option.Id("a2_style"),
-            displayName = "A2",
-            screenReaderName = "A2 style",
-            icon = null,
-            childSettings = listOf(complicationSetting2)
-        )
+        val leftAndRightComplications =
+            ComplicationSlotsOption(
+                Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
+                displayName = "Both",
+                screenReaderName = "Both complications",
+                icon = null,
+                emptyList()
+            )
+        val complicationSetting1 =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting1"),
+                displayName = "Complications",
+                description = "Number and position",
+                icon = null,
+                complicationConfig = listOf(leftAndRightComplications),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
+        val complicationSetting2 =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting2"),
+                displayName = "Complications",
+                description = "Number and position",
+                icon = null,
+                complicationConfig = listOf(leftAndRightComplications),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
+        val optionA1 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("a1_style"),
+                displayName = "A1",
+                screenReaderName = "A1 style",
+                icon = null,
+                childSettings = listOf(complicationSetting1, complicationSetting2)
+            )
+        val optionA2 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("a2_style"),
+                displayName = "A2",
+                screenReaderName = "A2 style",
+                icon = null,
+                childSettings = listOf(complicationSetting2)
+            )
 
         assertThrows(IllegalArgumentException::class.java) {
             UserStyleSchema(
@@ -832,42 +791,47 @@
 
     @Test
     fun invalid_multiple_ComplicationSlotsUserStyleSettings_different_levels() {
-        val leftAndRightComplications = ComplicationSlotsOption(
-            Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
-            displayName = "Both",
-            screenReaderName = "Both complications",
-            icon = null,
-            emptyList()
-        )
-        val complicationSetting1 = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting1"),
-            displayName = "Complications",
-            description = "Number and position",
-            icon = null,
-            complicationConfig = listOf(leftAndRightComplications),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
-        val complicationSetting2 = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting2"),
-            displayName = "Complications",
-            description = "Number and position",
-            icon = null,
-            complicationConfig = listOf(leftAndRightComplications),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
-        val optionA1 = ListUserStyleSetting.ListOption(
-            Option.Id("a1_style"),
-            displayName = "A1",
-            screenReaderName = "A1 style",
-            icon = null,
-            childSettings = listOf(complicationSetting1)
-        )
-        val optionA2 = ListUserStyleSetting.ListOption(
-            Option.Id("a2_style"),
-            displayName = "A2",
-            screenReaderName = "A2 style",
-            icon = null
-        )
+        val leftAndRightComplications =
+            ComplicationSlotsOption(
+                Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
+                displayName = "Both",
+                screenReaderName = "Both complications",
+                icon = null,
+                emptyList()
+            )
+        val complicationSetting1 =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting1"),
+                displayName = "Complications",
+                description = "Number and position",
+                icon = null,
+                complicationConfig = listOf(leftAndRightComplications),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
+        val complicationSetting2 =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting2"),
+                displayName = "Complications",
+                description = "Number and position",
+                icon = null,
+                complicationConfig = listOf(leftAndRightComplications),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
+        val optionA1 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("a1_style"),
+                displayName = "A1",
+                screenReaderName = "A1 style",
+                icon = null,
+                childSettings = listOf(complicationSetting1)
+            )
+        val optionA2 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("a2_style"),
+                displayName = "A2",
+                screenReaderName = "A2 style",
+                icon = null
+            )
 
         assertThrows(IllegalArgumentException::class.java) {
             UserStyleSchema(
@@ -904,177 +868,198 @@
 
         val leftComplicationID = 101
         val rightComplicationID = 102
-        val leftAndRightComplications = ComplicationSlotsOption(
-            Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
-            displayName = "Both",
-            screenReaderName = "Both complications",
-            icon = null,
-            emptyList()
-        )
-        val noComplications = ComplicationSlotsOption(
-            Option.Id("NO_COMPLICATIONS"),
-            displayName = "None",
-            screenReaderName = "No complications",
-            icon = null,
-            listOf(
-                ComplicationSlotOverlay(leftComplicationID, enabled = false),
-                ComplicationSlotOverlay(rightComplicationID, enabled = false)
+        val leftAndRightComplications =
+            ComplicationSlotsOption(
+                Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
+                displayName = "Both",
+                screenReaderName = "Both complications",
+                icon = null,
+                emptyList()
             )
-        )
-        val complicationSetting1 = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting"),
-            displayName = "Complications",
-            description = "Number and position",
-            icon = null,
-            complicationConfig = listOf(leftAndRightComplications, noComplications),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
-
-        val leftComplication = ComplicationSlotsOption(
-            Option.Id("LEFT_COMPLICATION"),
-            displayName = "Left",
-            screenReaderName = "Left complication",
-            icon = null,
-            listOf(ComplicationSlotOverlay(rightComplicationID, enabled = false))
-        )
-        val rightComplication = ComplicationSlotsOption(
-            Option.Id("RIGHT_COMPLICATION"),
-            displayName = "Right",
-            screenReaderName = "Right complication",
-            icon = null,
-            listOf(ComplicationSlotOverlay(leftComplicationID, enabled = false))
-        )
-        val complicationSetting2 = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting2"),
-            displayName = "Complications",
-            description = "Number and position",
-            icon = null,
-            complicationConfig = listOf(leftComplication, rightComplication),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
-
-        val normal = ComplicationSlotsOption(
-            Option.Id("Normal"),
-            displayName = "Normal",
-            screenReaderName = "Normal",
-            icon = null,
-            emptyList()
-        )
-        val traversal = ComplicationSlotsOption(
-            Option.Id("Traversal"),
-            displayName = "Traversal",
-            screenReaderName = "Traversal",
-            icon = null,
-            listOf(
-                ComplicationSlotOverlay(leftComplicationID, accessibilityTraversalIndex = 3),
-                ComplicationSlotOverlay(rightComplicationID, accessibilityTraversalIndex = 2)
+        val noComplications =
+            ComplicationSlotsOption(
+                Option.Id("NO_COMPLICATIONS"),
+                displayName = "None",
+                screenReaderName = "No complications",
+                icon = null,
+                listOf(
+                    ComplicationSlotOverlay(leftComplicationID, enabled = false),
+                    ComplicationSlotOverlay(rightComplicationID, enabled = false)
+                )
             )
-        )
-        val complicationSetting3 = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting3"),
-            displayName = "Traversal Order",
-            description = "Traversal Order",
-            icon = null,
-            complicationConfig = listOf(normal, traversal),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
-
-        val optionA1 = ListUserStyleSetting.ListOption(
-            Option.Id("a1_style"),
-            displayName = "A1",
-            screenReaderName = "A1 style",
-            icon = null,
-            childSettings = listOf(complicationSetting1)
-        )
-        val optionA2 = ListUserStyleSetting.ListOption(
-            Option.Id("a2_style"),
-            displayName = "A2",
-            screenReaderName = "A2 style",
-            icon = null,
-            childSettings = listOf(complicationSetting2)
-        )
-        val optionA3 = ListUserStyleSetting.ListOption(
-            Option.Id("a3_style"),
-            "A3",
-            screenReaderName = "A3 style",
-            icon = null
-        )
-
-        val a123Choice = ListUserStyleSetting(
-            UserStyleSetting.Id("a123"),
-            displayName = "A123",
-            description = "A123",
-            icon = null,
-            listOf(optionA1, optionA2, optionA3),
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS
-        )
-
-        val optionB1 = ListUserStyleSetting.ListOption(
-            Option.Id("b1_style"),
-            displayName = "B1",
-            screenReaderName = "B1 style",
-            icon = null,
-            childSettings = listOf(complicationSetting3)
-        )
-        val optionB2 = ListUserStyleSetting.ListOption(
-            Option.Id("b2_style"),
-            "B2",
-            screenReaderName = "B2 style",
-            icon = null
-        )
-
-        val b12Choice = ListUserStyleSetting(
-            UserStyleSetting.Id("b12"),
-            displayName = "B12",
-            "B12",
-            icon = null,
-            listOf(optionB1, optionB2),
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS
-        )
-
-        val rootOptionA = ListUserStyleSetting.ListOption(
-            Option.Id("a_style"),
-            displayName = "A",
-            screenReaderName = "A style",
-            icon = null,
-            childSettings = listOf(a123Choice)
-        )
-        val rootOptionB = ListUserStyleSetting.ListOption(
-            Option.Id("b_style"),
-            displayName = "B",
-            screenReaderName = "B style",
-            icon = null,
-            childSettings = listOf(b12Choice)
-        )
-
-        val rootABChoice = ListUserStyleSetting(
-            UserStyleSetting.Id("root_ab"),
-            displayName = "AB",
-            description = "AB",
-            icon = null,
-            listOf(rootOptionA, rootOptionB),
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS
-        )
-
-        val schema = UserStyleSchema(
-            listOf(
-                rootABChoice,
-                a123Choice,
-                b12Choice,
-                complicationSetting1,
-                complicationSetting2,
-                complicationSetting3
+        val complicationSetting1 =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting"),
+                displayName = "Complications",
+                description = "Number and position",
+                icon = null,
+                complicationConfig = listOf(leftAndRightComplications, noComplications),
+                listOf(WatchFaceLayer.COMPLICATIONS)
             )
-        )
 
-        val userStyleMap = mutableMapOf(
-            rootABChoice to rootOptionA,
-            a123Choice to optionA1,
-            b12Choice to optionB1,
-            complicationSetting1 to leftAndRightComplications,
-            complicationSetting2 to rightComplication,
-            complicationSetting3 to traversal
-        )
+        val leftComplication =
+            ComplicationSlotsOption(
+                Option.Id("LEFT_COMPLICATION"),
+                displayName = "Left",
+                screenReaderName = "Left complication",
+                icon = null,
+                listOf(ComplicationSlotOverlay(rightComplicationID, enabled = false))
+            )
+        val rightComplication =
+            ComplicationSlotsOption(
+                Option.Id("RIGHT_COMPLICATION"),
+                displayName = "Right",
+                screenReaderName = "Right complication",
+                icon = null,
+                listOf(ComplicationSlotOverlay(leftComplicationID, enabled = false))
+            )
+        val complicationSetting2 =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting2"),
+                displayName = "Complications",
+                description = "Number and position",
+                icon = null,
+                complicationConfig = listOf(leftComplication, rightComplication),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
+
+        val normal =
+            ComplicationSlotsOption(
+                Option.Id("Normal"),
+                displayName = "Normal",
+                screenReaderName = "Normal",
+                icon = null,
+                emptyList()
+            )
+        val traversal =
+            ComplicationSlotsOption(
+                Option.Id("Traversal"),
+                displayName = "Traversal",
+                screenReaderName = "Traversal",
+                icon = null,
+                listOf(
+                    ComplicationSlotOverlay(leftComplicationID, accessibilityTraversalIndex = 3),
+                    ComplicationSlotOverlay(rightComplicationID, accessibilityTraversalIndex = 2)
+                )
+            )
+        val complicationSetting3 =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting3"),
+                displayName = "Traversal Order",
+                description = "Traversal Order",
+                icon = null,
+                complicationConfig = listOf(normal, traversal),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
+
+        val optionA1 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("a1_style"),
+                displayName = "A1",
+                screenReaderName = "A1 style",
+                icon = null,
+                childSettings = listOf(complicationSetting1)
+            )
+        val optionA2 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("a2_style"),
+                displayName = "A2",
+                screenReaderName = "A2 style",
+                icon = null,
+                childSettings = listOf(complicationSetting2)
+            )
+        val optionA3 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("a3_style"),
+                "A3",
+                screenReaderName = "A3 style",
+                icon = null
+            )
+
+        val a123Choice =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("a123"),
+                displayName = "A123",
+                description = "A123",
+                icon = null,
+                listOf(optionA1, optionA2, optionA3),
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS
+            )
+
+        val optionB1 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("b1_style"),
+                displayName = "B1",
+                screenReaderName = "B1 style",
+                icon = null,
+                childSettings = listOf(complicationSetting3)
+            )
+        val optionB2 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("b2_style"),
+                "B2",
+                screenReaderName = "B2 style",
+                icon = null
+            )
+
+        val b12Choice =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("b12"),
+                displayName = "B12",
+                "B12",
+                icon = null,
+                listOf(optionB1, optionB2),
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS
+            )
+
+        val rootOptionA =
+            ListUserStyleSetting.ListOption(
+                Option.Id("a_style"),
+                displayName = "A",
+                screenReaderName = "A style",
+                icon = null,
+                childSettings = listOf(a123Choice)
+            )
+        val rootOptionB =
+            ListUserStyleSetting.ListOption(
+                Option.Id("b_style"),
+                displayName = "B",
+                screenReaderName = "B style",
+                icon = null,
+                childSettings = listOf(b12Choice)
+            )
+
+        val rootABChoice =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("root_ab"),
+                displayName = "AB",
+                description = "AB",
+                icon = null,
+                listOf(rootOptionA, rootOptionB),
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS
+            )
+
+        val schema =
+            UserStyleSchema(
+                listOf(
+                    rootABChoice,
+                    a123Choice,
+                    b12Choice,
+                    complicationSetting1,
+                    complicationSetting2,
+                    complicationSetting3
+                )
+            )
+
+        val userStyleMap =
+            mutableMapOf(
+                rootABChoice to rootOptionA,
+                a123Choice to optionA1,
+                b12Choice to optionB1,
+                complicationSetting1 to leftAndRightComplications,
+                complicationSetting2 to rightComplication,
+                complicationSetting3 to traversal
+            )
 
         // Test various userStyleMap permutations to ensure the correct ComplicationSlotsOption is
         // returned.
@@ -1086,16 +1071,14 @@
             .isEqualTo(rightComplication)
 
         userStyleMap[a123Choice] = optionA3
-        assertThat(schema.findComplicationSlotsOptionForUserStyle(UserStyle(userStyleMap)))
-            .isNull()
+        assertThat(schema.findComplicationSlotsOptionForUserStyle(UserStyle(userStyleMap))).isNull()
 
         userStyleMap[rootABChoice] = rootOptionB
         assertThat(schema.findComplicationSlotsOptionForUserStyle(UserStyle(userStyleMap)))
             .isEqualTo(traversal)
 
         userStyleMap[b12Choice] = optionB2
-        assertThat(schema.findComplicationSlotsOptionForUserStyle(UserStyle(userStyleMap)))
-            .isNull()
+        assertThat(schema.findComplicationSlotsOptionForUserStyle(UserStyle(userStyleMap))).isNull()
     }
 }
 
@@ -1152,9 +1135,10 @@
     public fun digestHashSensitiveToSettingChanges() {
         val schema1 = UserStyleSchema(listOf(colorStyleSetting))
         val schema2 = UserStyleSchema(listOf(colorStyleSetting, watchHandStyleSetting))
-        val schema3 = UserStyleSchema(
-            listOf(colorStyleSetting, watchHandStyleSetting, watchHandLengthStyleSetting)
-        )
+        val schema3 =
+            UserStyleSchema(
+                listOf(colorStyleSetting, watchHandStyleSetting, watchHandLengthStyleSetting)
+            )
 
         val digestHash1 = schema1.getDigestHash()
         val digestHash2 = schema2.getDigestHash()
@@ -1167,30 +1151,36 @@
 
     @Test
     public fun digestHashSensitiveToOptionChanges() {
-        val colorStyleSetting1 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            null,
-            listOf(redStyleOption),
-            listOf(WatchFaceLayer.BASE)
-        )
-        val colorStyleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            null,
-            listOf(redStyleOption, greenStyleOption,),
-            listOf(WatchFaceLayer.BASE)
-        )
-        val colorStyleSetting3 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            null,
-            listOf(redStyleOption, greenStyleOption, blueStyleOption),
-            listOf(WatchFaceLayer.BASE)
-        )
+        val colorStyleSetting1 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ null,
+                listOf(redStyleOption),
+                listOf(WatchFaceLayer.BASE)
+            )
+        val colorStyleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ null,
+                listOf(
+                    redStyleOption,
+                    greenStyleOption,
+                ),
+                listOf(WatchFaceLayer.BASE)
+            )
+        val colorStyleSetting3 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ null,
+                listOf(redStyleOption, greenStyleOption, blueStyleOption),
+                listOf(WatchFaceLayer.BASE)
+            )
 
         val schema1 = UserStyleSchema(listOf(colorStyleSetting1))
         val schema2 = UserStyleSchema(listOf(colorStyleSetting2))
@@ -1207,22 +1197,27 @@
 
     @Test
     public fun digestHashSensitiveToDisplayNameChanges() {
-        val colorStyleSetting1 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            null,
-            listOf(redStyleOption),
-            listOf(WatchFaceLayer.BASE)
-        )
-        val colorStyleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors2",
-            "Watchface colorization", /* icon = */
-            null,
-            listOf(redStyleOption, greenStyleOption,),
-            listOf(WatchFaceLayer.BASE)
-        )
+        val colorStyleSetting1 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ null,
+                listOf(redStyleOption),
+                listOf(WatchFaceLayer.BASE)
+            )
+        val colorStyleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors2",
+                "Watchface colorization",
+                /* icon = */ null,
+                listOf(
+                    redStyleOption,
+                    greenStyleOption,
+                ),
+                listOf(WatchFaceLayer.BASE)
+            )
 
         val schema1 = UserStyleSchema(listOf(colorStyleSetting1))
         val schema2 = UserStyleSchema(listOf(colorStyleSetting2))
@@ -1235,22 +1230,24 @@
 
     @Test
     public fun digestHashSensitiveToDescriptionChanges() {
-        val colorStyleSetting1 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            null,
-            listOf(redStyleOption),
-            listOf(WatchFaceLayer.BASE)
-        )
-        val colorStyleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization2", /* icon = */
-            null,
-            listOf(redStyleOption),
-            listOf(WatchFaceLayer.BASE)
-        )
+        val colorStyleSetting1 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ null,
+                listOf(redStyleOption),
+                listOf(WatchFaceLayer.BASE)
+            )
+        val colorStyleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization2",
+                /* icon = */ null,
+                listOf(redStyleOption),
+                listOf(WatchFaceLayer.BASE)
+            )
 
         val schema1 = UserStyleSchema(listOf(colorStyleSetting1))
         val schema2 = UserStyleSchema(listOf(colorStyleSetting2))
@@ -1264,22 +1261,24 @@
     @Ignore // b/238635208
     @Test
     public fun digestHashSensitiveToIconChanges() {
-        val colorStyleSetting1 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            Icon.createWithContentUri("/path1"),
-            listOf(redStyleOption),
-            listOf(WatchFaceLayer.BASE)
-        )
-        val colorStyleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            Icon.createWithContentUri("/path2"),
-            listOf(redStyleOption),
-            listOf(WatchFaceLayer.BASE)
-        )
+        val colorStyleSetting1 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ Icon.createWithContentUri("/path1"),
+                listOf(redStyleOption),
+                listOf(WatchFaceLayer.BASE)
+            )
+        val colorStyleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ Icon.createWithContentUri("/path2"),
+                listOf(redStyleOption),
+                listOf(WatchFaceLayer.BASE)
+            )
 
         val schema1 = UserStyleSchema(listOf(colorStyleSetting1))
         val schema2 = UserStyleSchema(listOf(colorStyleSetting2))
@@ -1292,22 +1291,24 @@
 
     @Test
     public fun digestHashInsensitiveToLayersOrderChanges() {
-        val colorStyleSetting1 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            null,
-            listOf(redStyleOption),
-            listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS)
-        )
-        val colorStyleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            null,
-            listOf(redStyleOption),
-            listOf(WatchFaceLayer.COMPLICATIONS, WatchFaceLayer.BASE)
-        )
+        val colorStyleSetting1 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ null,
+                listOf(redStyleOption),
+                listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS)
+            )
+        val colorStyleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ null,
+                listOf(redStyleOption),
+                listOf(WatchFaceLayer.COMPLICATIONS, WatchFaceLayer.BASE)
+            )
 
         val schema1 = UserStyleSchema(listOf(colorStyleSetting1))
         val schema2 = UserStyleSchema(listOf(colorStyleSetting2))
diff --git a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt
index e54c657..9159324 100644
--- a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt
+++ b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt
@@ -23,7 +23,6 @@
 import android.os.Parcel
 import androidx.annotation.RequiresApi
 import androidx.wear.watchface.complications.ComplicationSlotBounds
-
 import androidx.wear.watchface.style.UserStyleSetting.BooleanUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.CustomValueUserStyleSetting
@@ -32,8 +31,8 @@
 import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting.ListOption
 import androidx.wear.watchface.style.UserStyleSetting.LongRangeUserStyleSetting
-import androidx.wear.watchface.style.UserStyleSetting.WatchFaceEditorData
 import androidx.wear.watchface.style.UserStyleSetting.Option
+import androidx.wear.watchface.style.UserStyleSetting.WatchFaceEditorData
 import androidx.wear.watchface.style.data.UserStyleSchemaWireFormat
 import androidx.wear.watchface.style.data.UserStyleSettingWireFormat
 import androidx.wear.watchface.style.data.UserStyleWireFormat
@@ -59,46 +58,51 @@
     private val wfIcon3 = Icon.createWithContentUri("wfIcon3")
     private val wfIcon4 = Icon.createWithContentUri("wfIcon4")
 
-    private val option1 = ListOption(
-        Option.Id("1"),
-        "one",
-        "one screen reader",
-        icon1,
-        watchFaceEditorData = WatchFaceEditorData(wfIcon1)
-    )
-    private val option2 = ListOption(
-        Option.Id("2"),
-        "two",
-        "two screen reader",
-        icon2,
-        watchFaceEditorData = WatchFaceEditorData(wfIcon2)
-    )
-    private val option3 = ListOption(
-        Option.Id("3"),
-        "three",
-        "three screen reader",
-        icon3,
-        watchFaceEditorData = WatchFaceEditorData(wfIcon3)
-    )
-    private val option4 = ListOption(
-        Option.Id("4"),
-        "four",
-        "four screen reader",
-        icon4,
-        watchFaceEditorData = WatchFaceEditorData(wfIcon4)
-    )
+    private val option1 =
+        ListOption(
+            Option.Id("1"),
+            "one",
+            "one screen reader",
+            icon1,
+            watchFaceEditorData = WatchFaceEditorData(wfIcon1)
+        )
+    private val option2 =
+        ListOption(
+            Option.Id("2"),
+            "two",
+            "two screen reader",
+            icon2,
+            watchFaceEditorData = WatchFaceEditorData(wfIcon2)
+        )
+    private val option3 =
+        ListOption(
+            Option.Id("3"),
+            "three",
+            "three screen reader",
+            icon3,
+            watchFaceEditorData = WatchFaceEditorData(wfIcon3)
+        )
+    private val option4 =
+        ListOption(
+            Option.Id("4"),
+            "four",
+            "four screen reader",
+            icon4,
+            watchFaceEditorData = WatchFaceEditorData(wfIcon4)
+        )
 
     @Test
     public fun parcelAndUnparcelStyleSettingAndOption() {
         val settingIcon = Icon.createWithContentUri("settingIcon")
-        val styleSetting = ListUserStyleSetting(
-            UserStyleSetting.Id("id"),
-            "displayName",
-            "description",
-            settingIcon,
-            listOf(option1, option2, option3),
-            listOf(WatchFaceLayer.BASE)
-        )
+        val styleSetting =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id"),
+                "displayName",
+                "description",
+                settingIcon,
+                listOf(option1, option2, option3),
+                listOf(WatchFaceLayer.BASE)
+            )
 
         val parcel = Parcel.obtain()
         styleSetting.toWireFormat().writeToParcel(parcel, 0)
@@ -161,52 +165,46 @@
         val companionIcon2 = Icon.createWithContentUri("companionEditorIcon2")
         val watchEditorIcon1 = Icon.createWithContentUri("watchEditorIcon1")
         val watchEditorIcon2 = Icon.createWithContentUri("watchEditorIcon2")
-        val styleSetting1 = ListUserStyleSetting(
-            UserStyleSetting.Id("id1"),
-            "displayName1",
-            "description1",
-            companionIcon1,
-            listOf(option1, option2),
-            listOf(WatchFaceLayer.BASE),
-            watchFaceEditorData = WatchFaceEditorData(watchEditorIcon1)
-        )
-        val styleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            companionIcon2,
-            listOf(option3, option4),
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY),
-            watchFaceEditorData = WatchFaceEditorData(watchEditorIcon2)
-        )
-        val styleSetting3 = BooleanUserStyleSetting(
-            UserStyleSetting.Id("id3"),
-            "displayName3",
-            "description3",
-            null,
-            listOf(WatchFaceLayer.BASE),
-            true
-        )
-        val styleSetting4 = CustomValueUserStyleSetting2(
-            listOf(WatchFaceLayer.BASE),
-            "default".encodeToByteArray()
-        )
-        val srcSchema = UserStyleSchema(
-            listOf(
-                styleSetting1,
-                styleSetting2,
-                styleSetting3,
-                styleSetting4
+        val styleSetting1 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id1"),
+                "displayName1",
+                "description1",
+                companionIcon1,
+                listOf(option1, option2),
+                listOf(WatchFaceLayer.BASE),
+                watchFaceEditorData = WatchFaceEditorData(watchEditorIcon1)
             )
-        )
+        val styleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                companionIcon2,
+                listOf(option3, option4),
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY),
+                watchFaceEditorData = WatchFaceEditorData(watchEditorIcon2)
+            )
+        val styleSetting3 =
+            BooleanUserStyleSetting(
+                UserStyleSetting.Id("id3"),
+                "displayName3",
+                "description3",
+                null,
+                listOf(WatchFaceLayer.BASE),
+                true
+            )
+        val styleSetting4 =
+            CustomValueUserStyleSetting2(listOf(WatchFaceLayer.BASE), "default".encodeToByteArray())
+        val srcSchema =
+            UserStyleSchema(listOf(styleSetting1, styleSetting2, styleSetting3, styleSetting4))
 
         val parcel = Parcel.obtain()
         srcSchema.toWireFormat().writeToParcel(parcel, 0)
 
         parcel.setDataPosition(0)
 
-        val schema =
-            UserStyleSchema(UserStyleSchemaWireFormat.CREATOR.createFromParcel(parcel))
+        val schema = UserStyleSchema(UserStyleSchemaWireFormat.CREATOR.createFromParcel(parcel))
         parcel.recycle()
 
         assertThat(schema.userStyleSettings[0] is ListUserStyleSetting).isTrue()
@@ -218,9 +216,8 @@
         assertThat(schema.userStyleSettings[0].watchFaceEditorData!!.icon!!.uri.toString())
             .isEqualTo("watchEditorIcon1")
         assertThat(schema.userStyleSettings[0].affectedWatchFaceLayers.size).isEqualTo(1)
-        assertThat(schema.userStyleSettings[0].affectedWatchFaceLayers.first()).isEqualTo(
-            WatchFaceLayer.BASE
-        )
+        assertThat(schema.userStyleSettings[0].affectedWatchFaceLayers.first())
+            .isEqualTo(WatchFaceLayer.BASE)
         val optionArray1 =
             schema.userStyleSettings[0].options.filterIsInstance<ListOption>().toTypedArray()
         assertThat(optionArray1.size).isEqualTo(2)
@@ -242,9 +239,8 @@
         assertThat(schema.userStyleSettings[1].watchFaceEditorData!!.icon!!.uri.toString())
             .isEqualTo("watchEditorIcon2")
         assertThat(schema.userStyleSettings[1].affectedWatchFaceLayers.size).isEqualTo(1)
-        assertThat(schema.userStyleSettings[1].affectedWatchFaceLayers.first()).isEqualTo(
-            WatchFaceLayer.COMPLICATIONS_OVERLAY
-        )
+        assertThat(schema.userStyleSettings[1].affectedWatchFaceLayers.first())
+            .isEqualTo(WatchFaceLayer.COMPLICATIONS_OVERLAY)
         val optionArray2 =
             schema.userStyleSettings[1].options.filterIsInstance<ListOption>().toTypedArray()
         assertThat(optionArray2.size).isEqualTo(2)
@@ -264,17 +260,15 @@
         assertThat(schema.userStyleSettings[2].icon).isNull()
         assertThat(schema.userStyleSettings[2].watchFaceEditorData).isNull()
         assertThat(schema.userStyleSettings[2].affectedWatchFaceLayers.size).isEqualTo(1)
-        assertThat(schema.userStyleSettings[2].affectedWatchFaceLayers.first()).isEqualTo(
-            WatchFaceLayer.BASE
-        )
+        assertThat(schema.userStyleSettings[2].affectedWatchFaceLayers.first())
+            .isEqualTo(WatchFaceLayer.BASE)
 
         assertThat(schema.userStyleSettings[3] is CustomValueUserStyleSetting2).isTrue()
         assertThat(schema.userStyleSettings[3].defaultOption.id.value.decodeToString())
             .isEqualTo("default")
         assertThat(schema.userStyleSettings[3].affectedWatchFaceLayers.size).isEqualTo(1)
-        assertThat(schema.userStyleSettings[3].affectedWatchFaceLayers.first()).isEqualTo(
-            WatchFaceLayer.BASE
-        )
+        assertThat(schema.userStyleSettings[3].affectedWatchFaceLayers.first())
+            .isEqualTo(WatchFaceLayer.BASE)
         assertThat(schema.userStyleSettings[3].icon).isNull()
         assertThat(schema.userStyleSettings[3].watchFaceEditorData).isNull()
     }
@@ -282,96 +276,92 @@
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun parcelAndUnparcelHierarchicalSchema() {
-        val twelveHourClockOption =
-            ListOption(Option.Id("12_style"), "12", "12", icon = null)
+        val twelveHourClockOption = ListOption(Option.Id("12_style"), "12", "12", icon = null)
 
-        val twentyFourHourClockOption =
-            ListOption(Option.Id("24_style"), "24", "24", icon = null)
+        val twentyFourHourClockOption = ListOption(Option.Id("24_style"), "24", "24", icon = null)
 
-        val digitalClockStyleSetting = ListUserStyleSetting(
-            UserStyleSetting.Id("digital_clock_style"),
-            "Clock style",
-            "Clock style setting",
-            null,
-            listOf(twelveHourClockOption, twentyFourHourClockOption),
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS
-        )
+        val digitalClockStyleSetting =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("digital_clock_style"),
+                "Clock style",
+                "Clock style setting",
+                null,
+                listOf(twelveHourClockOption, twentyFourHourClockOption),
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS
+            )
 
-        val digitalWatchFaceType = ListOption(
-            Option.Id("digital"),
-            "Digital",
-            "Digital setting",
-            icon = null,
-            childSettings = listOf(digitalClockStyleSetting)
-        )
+        val digitalWatchFaceType =
+            ListOption(
+                Option.Id("digital"),
+                "Digital",
+                "Digital setting",
+                icon = null,
+                childSettings = listOf(digitalClockStyleSetting)
+            )
 
         val settingIcon1 = Icon.createWithContentUri("settingIcon1")
         val settingIcon2 = Icon.createWithContentUri("settingIcon2")
 
-        val styleSetting1 = ListUserStyleSetting(
-            UserStyleSetting.Id("id1"),
-            "displayName1",
-            "description1",
-            settingIcon1,
-            listOf(option1, option2),
-            listOf(WatchFaceLayer.BASE)
-        )
-
-        val styleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            settingIcon2,
-            listOf(option3, option4),
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-        )
-
-        val analogWatchFaceType = ListOption(
-            Option.Id("analog"),
-            "Analog",
-            "Analog setting",
-            icon = null,
-            childSettings = listOf(styleSetting1, styleSetting2)
-        )
-
-        val watchFaceType = ListUserStyleSetting(
-            UserStyleSetting.Id("clock_type"),
-            "Watch face type",
-            "Analog or digital",
-            icon = null,
-            options = listOf(digitalWatchFaceType, analogWatchFaceType),
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS
-        )
-
-        val srcSchema = UserStyleSchema(
-            listOf(
-                watchFaceType,
-                digitalClockStyleSetting,
-                styleSetting1,
-                styleSetting2
+        val styleSetting1 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id1"),
+                "displayName1",
+                "description1",
+                settingIcon1,
+                listOf(option1, option2),
+                listOf(WatchFaceLayer.BASE)
             )
-        )
-        assertThat(srcSchema.rootUserStyleSettings.map { it.id }).containsExactly(
-            UserStyleSetting.Id("clock_type")
-        )
+
+        val styleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                settingIcon2,
+                listOf(option3, option4),
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+            )
+
+        val analogWatchFaceType =
+            ListOption(
+                Option.Id("analog"),
+                "Analog",
+                "Analog setting",
+                icon = null,
+                childSettings = listOf(styleSetting1, styleSetting2)
+            )
+
+        val watchFaceType =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("clock_type"),
+                "Watch face type",
+                "Analog or digital",
+                icon = null,
+                options = listOf(digitalWatchFaceType, analogWatchFaceType),
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS
+            )
+
+        val srcSchema =
+            UserStyleSchema(
+                listOf(watchFaceType, digitalClockStyleSetting, styleSetting1, styleSetting2)
+            )
+        assertThat(srcSchema.rootUserStyleSettings.map { it.id })
+            .containsExactly(UserStyleSetting.Id("clock_type"))
 
         val parcel = Parcel.obtain()
         srcSchema.toWireFormat().writeToParcel(parcel, 0)
 
         parcel.setDataPosition(0)
 
-        val schema =
-            UserStyleSchema(UserStyleSchemaWireFormat.CREATOR.createFromParcel(parcel))
+        val schema = UserStyleSchema(UserStyleSchemaWireFormat.CREATOR.createFromParcel(parcel))
         parcel.recycle()
 
         assertThat(schema.userStyleSettings.size).isEqualTo(4)
-        assertThat(schema.rootUserStyleSettings.map { it.id }).containsExactly(
-            UserStyleSetting.Id("clock_type")
-        )
+        assertThat(schema.rootUserStyleSettings.map { it.id })
+            .containsExactly(UserStyleSetting.Id("clock_type"))
 
         val deserializedWatchFaceType = schema.userStyleSettings[0] as ListUserStyleSetting
-        assertThat(deserializedWatchFaceType.id)
-            .isEqualTo(UserStyleSetting.Id("clock_type"))
+        assertThat(deserializedWatchFaceType.id).isEqualTo(UserStyleSetting.Id("clock_type"))
         assertThat(deserializedWatchFaceType.hasParent).isFalse()
 
         val deserializedDigitalClockStyleSetting =
@@ -380,26 +370,19 @@
             .isEqualTo(UserStyleSetting.Id("digital_clock_style"))
         assertThat(deserializedDigitalClockStyleSetting.hasParent).isTrue()
 
-        val deserializedStyleSetting1 =
-            schema.userStyleSettings[2] as ListUserStyleSetting
-        assertThat(deserializedStyleSetting1.id)
-            .isEqualTo(UserStyleSetting.Id("id1"))
+        val deserializedStyleSetting1 = schema.userStyleSettings[2] as ListUserStyleSetting
+        assertThat(deserializedStyleSetting1.id).isEqualTo(UserStyleSetting.Id("id1"))
         assertThat(deserializedStyleSetting1.hasParent).isTrue()
 
-        val deserializedStyleSetting2 =
-            schema.userStyleSettings[3] as ListUserStyleSetting
-        assertThat(deserializedStyleSetting2.id)
-            .isEqualTo(UserStyleSetting.Id("id2"))
+        val deserializedStyleSetting2 = schema.userStyleSettings[3] as ListUserStyleSetting
+        assertThat(deserializedStyleSetting2.id).isEqualTo(UserStyleSetting.Id("id2"))
         assertThat(deserializedStyleSetting2.hasParent).isTrue()
 
-        assertThat(deserializedWatchFaceType.options[0].childSettings).containsExactly(
-            deserializedDigitalClockStyleSetting
-        )
+        assertThat(deserializedWatchFaceType.options[0].childSettings)
+            .containsExactly(deserializedDigitalClockStyleSetting)
 
-        assertThat(deserializedWatchFaceType.options[1].childSettings).containsExactly(
-            deserializedStyleSetting1,
-            deserializedStyleSetting2
-        )
+        assertThat(deserializedWatchFaceType.options[1].childSettings)
+            .containsExactly(deserializedStyleSetting1, deserializedStyleSetting2)
 
         assertThat(deserializedDigitalClockStyleSetting.options[0].childSettings).isEmpty()
         assertThat(deserializedDigitalClockStyleSetting.options[1].childSettings).isEmpty()
@@ -415,29 +398,32 @@
     public fun parcelAndUnparcelUserStyle() {
         val settingIcon1 = Icon.createWithContentUri("settingIcon1")
         val settingIcon2 = Icon.createWithContentUri("settingIcon2")
-        val styleSetting1 = ListUserStyleSetting(
-            UserStyleSetting.Id("id1"),
-            "displayName1",
-            "description1",
-            settingIcon1,
-            listOf(option1, option2),
-            listOf(WatchFaceLayer.BASE)
-        )
-        val styleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            settingIcon2,
-            listOf(option3, option4),
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-        )
-        val schema = UserStyleSchema(listOf(styleSetting1, styleSetting2))
-        val userStyle = UserStyle(
-            hashMapOf(
-                styleSetting1 as UserStyleSetting to option2 as UserStyleSetting.Option,
-                styleSetting2 as UserStyleSetting to option3 as UserStyleSetting.Option
+        val styleSetting1 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id1"),
+                "displayName1",
+                "description1",
+                settingIcon1,
+                listOf(option1, option2),
+                listOf(WatchFaceLayer.BASE)
             )
-        )
+        val styleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                settingIcon2,
+                listOf(option3, option4),
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+            )
+        val schema = UserStyleSchema(listOf(styleSetting1, styleSetting2))
+        val userStyle =
+            UserStyle(
+                hashMapOf(
+                    styleSetting1 as UserStyleSetting to option2 as UserStyleSetting.Option,
+                    styleSetting2 as UserStyleSetting to option3 as UserStyleSetting.Option
+                )
+            )
 
         val parcel = Parcel.obtain()
         userStyle.toWireFormat().writeToParcel(parcel, 0)
@@ -457,102 +443,110 @@
 
     @Test
     public fun booleanUserStyleSetting_defaultValue() {
-        val booleanUserStyleSettingDefaultTrue = BooleanUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            null,
-            listOf(WatchFaceLayer.BASE),
-            true
-        )
+        val booleanUserStyleSettingDefaultTrue =
+            BooleanUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                null,
+                listOf(WatchFaceLayer.BASE),
+                true
+            )
         assertTrue(booleanUserStyleSettingDefaultTrue.getDefaultValue())
 
-        val booleanUserStyleSettingDefaultFalse = BooleanUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            null,
-            listOf(WatchFaceLayer.BASE),
-            false
-        )
+        val booleanUserStyleSettingDefaultFalse =
+            BooleanUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                null,
+                listOf(WatchFaceLayer.BASE),
+                false
+            )
         assertFalse(booleanUserStyleSettingDefaultFalse.getDefaultValue())
     }
 
     @Test
     public fun doubleRangeUserStyleSetting_defaultValue() {
-        val doubleRangeUserStyleSettingDefaultMin = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            null,
-            -1.0,
-            1.0,
-            listOf(WatchFaceLayer.BASE),
-            -1.0
-        )
+        val doubleRangeUserStyleSettingDefaultMin =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                null,
+                -1.0,
+                1.0,
+                listOf(WatchFaceLayer.BASE),
+                -1.0
+            )
         assertThat(doubleRangeUserStyleSettingDefaultMin.defaultValue).isEqualTo(-1.0)
 
-        val doubleRangeUserStyleSettingDefaultMid = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            null,
-            -1.0,
-            1.0,
-            listOf(WatchFaceLayer.BASE),
-            0.5
-        )
+        val doubleRangeUserStyleSettingDefaultMid =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                null,
+                -1.0,
+                1.0,
+                listOf(WatchFaceLayer.BASE),
+                0.5
+            )
         assertThat(doubleRangeUserStyleSettingDefaultMid.defaultValue).isEqualTo(0.5)
 
-        val doubleRangeUserStyleSettingDefaultMax = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            null,
-            -1.0,
-            1.0,
-            listOf(WatchFaceLayer.BASE),
-            1.0
-        )
+        val doubleRangeUserStyleSettingDefaultMax =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                null,
+                -1.0,
+                1.0,
+                listOf(WatchFaceLayer.BASE),
+                1.0
+            )
         assertThat(doubleRangeUserStyleSettingDefaultMax.defaultValue).isEqualTo(1.0)
     }
 
     @Test
     public fun longRangeUserStyleSetting_defaultValue() {
-        val longRangeUserStyleSettingDefaultMin = LongRangeUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            null,
-            -1,
-            10,
-            listOf(WatchFaceLayer.BASE),
-            -1,
-        )
+        val longRangeUserStyleSettingDefaultMin =
+            LongRangeUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                null,
+                -1,
+                10,
+                listOf(WatchFaceLayer.BASE),
+                -1,
+            )
         assertThat(longRangeUserStyleSettingDefaultMin.defaultValue).isEqualTo(-1)
 
-        val longRangeUserStyleSettingDefaultMid = LongRangeUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            null,
-            -1,
-            10,
-            listOf(WatchFaceLayer.BASE),
-            5
-        )
+        val longRangeUserStyleSettingDefaultMid =
+            LongRangeUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                null,
+                -1,
+                10,
+                listOf(WatchFaceLayer.BASE),
+                5
+            )
         assertThat(longRangeUserStyleSettingDefaultMid.defaultValue).isEqualTo(5)
 
-        val longRangeUserStyleSettingDefaultMax = LongRangeUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            null,
-            -1,
-            10,
-            listOf(WatchFaceLayer.BASE),
-            10
-        )
+        val longRangeUserStyleSettingDefaultMax =
+            LongRangeUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                null,
+                -1,
+                10,
+                listOf(WatchFaceLayer.BASE),
+                10
+            )
         assertThat(longRangeUserStyleSettingDefaultMax.defaultValue).isEqualTo(10)
     }
 
@@ -561,83 +555,86 @@
     public fun parcelAndUnparcelComplicationsUserStyleSetting() {
         val leftComplicationID = 101
         val rightComplicationID = 102
-        val src = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting"),
-            "Complications",
-            "Number and position",
-            icon = null,
-            complicationConfig = listOf(
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
-                    "Both",
-                    "Both complications visible",
-                    null,
-                    listOf()
-                ),
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    Option.Id("NO_COMPLICATIONS"),
-                    "None",
-                    "No complications visible",
-                    null,
+        val src =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting"),
+                "Complications",
+                "Number and position",
+                icon = null,
+                complicationConfig =
                     listOf(
-                        ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            leftComplicationID,
-                            enabled = false
+                        ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                            Option.Id("LEFT_AND_RIGHT_COMPLICATIONS"),
+                            "Both",
+                            "Both complications visible",
+                            null,
+                            listOf()
                         ),
-                        ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            rightComplicationID,
-                            enabled = false
-                        )
-                    )
-                ),
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    Option.Id("LEFT_COMPLICATION"),
-                    "Left",
-                    "Left complication visible",
-                    null,
-                    listOf(
-                        ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            rightComplicationID,
-                            enabled = false
+                        ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                            Option.Id("NO_COMPLICATIONS"),
+                            "None",
+                            "No complications visible",
+                            null,
+                            listOf(
+                                ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
+                                    leftComplicationID,
+                                    enabled = false
+                                ),
+                                ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
+                                    rightComplicationID,
+                                    enabled = false
+                                )
+                            )
                         ),
-                        ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            leftComplicationID,
-                            enabled = true,
-                            nameResourceId = NAME_RESOURCE_ID,
-                            screenReaderNameResourceId = SCREEN_READER_NAME_RESOURCE_ID
-                        )
-                    )
-                ),
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    Option.Id("RIGHT_COMPLICATION"),
-                    "Right",
-                    "Right complication visible",
-                    null,
-                    listOf(
-                        ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            leftComplicationID,
-                            enabled = false
-                        )
-                    )
-                ),
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    Option.Id("RIGHT_COMPLICATION_MOVED"),
-                    "MoveRight",
-                    "Right complication moved",
-                    null,
-                    listOf(
-                        ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
-                            leftComplicationID,
-                            complicationSlotBounds = ComplicationSlotBounds(
-                                RectF(0.1f, 0.2f, 0.3f, 0.4f),
-                                RectF(0.5f, 0.6f, 0.7f, 0.8f)
+                        ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                            Option.Id("LEFT_COMPLICATION"),
+                            "Left",
+                            "Left complication visible",
+                            null,
+                            listOf(
+                                ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
+                                    rightComplicationID,
+                                    enabled = false
+                                ),
+                                ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
+                                    leftComplicationID,
+                                    enabled = true,
+                                    nameResourceId = NAME_RESOURCE_ID,
+                                    screenReaderNameResourceId = SCREEN_READER_NAME_RESOURCE_ID
+                                )
+                            )
+                        ),
+                        ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                            Option.Id("RIGHT_COMPLICATION"),
+                            "Right",
+                            "Right complication visible",
+                            null,
+                            listOf(
+                                ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
+                                    leftComplicationID,
+                                    enabled = false
+                                )
+                            )
+                        ),
+                        ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                            Option.Id("RIGHT_COMPLICATION_MOVED"),
+                            "MoveRight",
+                            "Right complication moved",
+                            null,
+                            listOf(
+                                ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
+                                    leftComplicationID,
+                                    complicationSlotBounds =
+                                        ComplicationSlotBounds(
+                                            RectF(0.1f, 0.2f, 0.3f, 0.4f),
+                                            RectF(0.5f, 0.6f, 0.7f, 0.8f)
+                                        )
+                                )
                             )
                         )
-                    )
-                )
-            ),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
+                    ),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
 
         val parcel = Parcel.obtain()
         src.toWireFormat().writeToParcel(parcel, 0)
@@ -653,8 +650,10 @@
         assertThat(unparceled is ComplicationSlotsUserStyleSetting).isTrue()
         assertThat(unparceled.id.value).isEqualTo("complications_style_setting")
 
-        val options = unparceled.options.filterIsInstance<
-            ComplicationSlotsUserStyleSetting.ComplicationSlotsOption>()
+        val options =
+            unparceled.options.filterIsInstance<
+                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption
+            >()
         assertThat(options.size).isEqualTo(5)
         assertThat(options[0].id.value.decodeToString()).isEqualTo("LEFT_AND_RIGHT_COMPLICATIONS")
         assertThat(options[0].complicationSlotOverlays.size).isEqualTo(0)
@@ -690,10 +689,8 @@
         assertThat(options4Overlays[0].complicationSlotId).isEqualTo(leftComplicationID)
         assertThat(options4Overlays[0].enabled).isNull()
 
-        val expectedComplicationSlotBounds = ComplicationSlotBounds(
-            RectF(0.1f, 0.2f, 0.3f, 0.4f),
-            RectF(0.5f, 0.6f, 0.7f, 0.8f)
-        )
+        val expectedComplicationSlotBounds =
+            ComplicationSlotBounds(RectF(0.1f, 0.2f, 0.3f, 0.4f), RectF(0.5f, 0.6f, 0.7f, 0.8f))
         assertThat(options4Overlays[0].complicationSlotBounds?.perComplicationTypeBounds)
             .containsExactlyEntriesIn(expectedComplicationSlotBounds.perComplicationTypeBounds)
         assertThat(options4Overlays[0].complicationSlotBounds?.perComplicationTypeMargins)
@@ -704,47 +701,41 @@
     public fun styleSchemaToString() {
         val settingIcon1 = Icon.createWithContentUri("settingIcon1")
         val settingIcon2 = Icon.createWithContentUri("settingIcon2")
-        val styleSetting1 = ListUserStyleSetting(
-            UserStyleSetting.Id("id1"),
-            "displayName1",
-            "description1",
-            settingIcon1,
-            listOf(option1, option2),
-            listOf(WatchFaceLayer.BASE)
-        )
-        val styleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            settingIcon2,
-            listOf(option3, option4),
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-        )
-        val styleSetting3 = BooleanUserStyleSetting(
-            UserStyleSetting.Id("id3"),
-            "displayName3",
-            "description3",
-            null,
-            listOf(WatchFaceLayer.BASE),
-            true
-        )
-        val styleSetting4 = CustomValueUserStyleSetting(
-            listOf(WatchFaceLayer.BASE),
-            "default".encodeToByteArray()
-        )
-
-        val schema = UserStyleSchema(
-            listOf(
-                styleSetting1,
-                styleSetting2,
-                styleSetting3,
-                styleSetting4
+        val styleSetting1 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id1"),
+                "displayName1",
+                "description1",
+                settingIcon1,
+                listOf(option1, option2),
+                listOf(WatchFaceLayer.BASE)
             )
-        )
+        val styleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                settingIcon2,
+                listOf(option3, option4),
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+            )
+        val styleSetting3 =
+            BooleanUserStyleSetting(
+                UserStyleSetting.Id("id3"),
+                "displayName3",
+                "description3",
+                null,
+                listOf(WatchFaceLayer.BASE),
+                true
+            )
+        val styleSetting4 =
+            CustomValueUserStyleSetting(listOf(WatchFaceLayer.BASE), "default".encodeToByteArray())
 
-        assertThat(schema.toString()).isEqualTo(
-            "[{id1 : 1, 2}, {id2 : 3, 4}, {id3 : true, false}, {CustomValue : default}]"
-        )
+        val schema =
+            UserStyleSchema(listOf(styleSetting1, styleSetting2, styleSetting3, styleSetting4))
+
+        assertThat(schema.toString())
+            .isEqualTo("[{id1 : 1, 2}, {id2 : 3, 4}, {id3 : true, false}, {CustomValue : default}]")
     }
 
     @Ignore
@@ -752,28 +743,25 @@
     public fun userStyleToString() {
         val settingIcon1 = Icon.createWithContentUri("settingIcon1")
         val settingIcon2 = Icon.createWithContentUri("settingIcon2")
-        val styleSetting1 = ListUserStyleSetting(
-            UserStyleSetting.Id("id1"),
-            "displayName1",
-            "description1",
-            settingIcon1,
-            listOf(option1, option2),
-            listOf(WatchFaceLayer.BASE)
-        )
-        val styleSetting2 = ListUserStyleSetting(
-            UserStyleSetting.Id("id2"),
-            "displayName2",
-            "description2",
-            settingIcon2,
-            listOf(option3, option4),
-            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-        )
-        val style = UserStyle(
-            mapOf(
-                styleSetting1 to option2,
-                styleSetting2 to option3
+        val styleSetting1 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id1"),
+                "displayName1",
+                "description1",
+                settingIcon1,
+                listOf(option1, option2),
+                listOf(WatchFaceLayer.BASE)
             )
-        )
+        val styleSetting2 =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("id2"),
+                "displayName2",
+                "description2",
+                settingIcon2,
+                listOf(option3, option4),
+                listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+            )
+        val style = UserStyle(mapOf(styleSetting1 to option2, styleSetting2 to option3))
 
         assertThat(style.toString()).contains("id1 -> 2")
         assertThat(style.toString()).contains("id2 -> 3")
diff --git a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleTestRunner.kt b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleTestRunner.kt
index 3d018cd..b18238b 100644
--- a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleTestRunner.kt
+++ b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleTestRunner.kt
@@ -24,9 +24,7 @@
 // "failed to access class kotlin.jvm.internal.DefaultConstructorMarker".
 public class StyleTestRunner(testClass: Class<*>) : RobolectricTestRunner(testClass) {
     override fun createClassLoaderConfig(method: FrameworkMethod): InstrumentationConfiguration =
-        InstrumentationConfiguration.Builder(
-            super.createClassLoaderConfig(method)
-        )
+        InstrumentationConfiguration.Builder(super.createClassLoaderConfig(method))
             .doNotInstrumentPackage("androidx.wear.watchface.style")
             .build()
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/UserStyleSettingTest.kt b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/UserStyleSettingTest.kt
index 0c2bf31..5fa5892 100644
--- a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/UserStyleSettingTest.kt
+++ b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/UserStyleSettingTest.kt
@@ -30,11 +30,11 @@
 import androidx.wear.watchface.style.UserStyleSetting.Option
 import androidx.wear.watchface.style.data.ComplicationOverlayWireFormat
 import com.google.common.truth.Truth.assertThat
+import java.nio.ByteBuffer
+import kotlin.test.assertFailsWith
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.nio.ByteBuffer
-import kotlin.test.assertFailsWith
 
 @RunWith(StyleTestRunner::class)
 public class UserStyleSettingTest {
@@ -66,28 +66,26 @@
             )
 
         assertThat(
-            (
-                rangedUserStyleSetting.getOptionForId(
-                    Option.Id("not a number".encodeToByteArray())
-                ) as DoubleRangeOption
-                ).value
-        ).isEqualTo(defaultValue)
+                (rangedUserStyleSetting.getOptionForId(
+                        Option.Id("not a number".encodeToByteArray())
+                    ) as DoubleRangeOption)
+                    .value
+            )
+            .isEqualTo(defaultValue)
 
         assertThat(
-            (
-                rangedUserStyleSetting.getOptionForId(
-                    Option.Id("-1".encodeToByteArray())
-                ) as DoubleRangeOption
-                ).value
-        ).isEqualTo(defaultValue)
+                (rangedUserStyleSetting.getOptionForId(Option.Id("-1".encodeToByteArray()))
+                        as DoubleRangeOption)
+                    .value
+            )
+            .isEqualTo(defaultValue)
 
         assertThat(
-            (
-                rangedUserStyleSetting.getOptionForId(
-                    Option.Id("10".encodeToByteArray())
-                ) as DoubleRangeOption
-                ).value
-        ).isEqualTo(defaultValue)
+                (rangedUserStyleSetting.getOptionForId(Option.Id("10".encodeToByteArray()))
+                        as DoubleRangeOption)
+                    .value
+            )
+            .isEqualTo(defaultValue)
     }
 
     @Test
@@ -114,22 +112,25 @@
             )
 
         assertThat(
-            byteArrayToDouble(
-                rangedUserStyleSetting.getOptionForId(doubleToOptionId(0.0)).id.value
+                byteArrayToDouble(
+                    rangedUserStyleSetting.getOptionForId(doubleToOptionId(0.0)).id.value
+                )
             )
-        ).isEqualTo(0.0)
+            .isEqualTo(0.0)
 
         assertThat(
-            byteArrayToDouble(
-                rangedUserStyleSetting.getOptionForId(doubleToOptionId(0.5)).id.value
+                byteArrayToDouble(
+                    rangedUserStyleSetting.getOptionForId(doubleToOptionId(0.5)).id.value
+                )
             )
-        ).isEqualTo(0.5)
+            .isEqualTo(0.5)
 
         assertThat(
-            byteArrayToDouble(
-                rangedUserStyleSetting.getOptionForId(doubleToOptionId(1.0)).id.value
+                byteArrayToDouble(
+                    rangedUserStyleSetting.getOptionForId(doubleToOptionId(1.0)).id.value
+                )
             )
-        ).isEqualTo(1.0)
+            .isEqualTo(1.0)
     }
 
     @Test
@@ -215,46 +216,50 @@
 
     @Test
     public fun equalsBasedOnId() {
-        val setting = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("example_setting"),
-            "Example Ranged Setting",
-            "An example setting",
-            null,
-            0.0,
-            1.0,
-            listOf(WatchFaceLayer.BASE),
-            0.1
-        )
-        val settingCopy = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("example_setting"),
-            "Example Ranged Setting",
-            "An example setting",
-            null,
-            0.0,
-            1.0,
-            listOf(WatchFaceLayer.BASE),
-            0.1
-        )
-        val settings1ModifiedInfo = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("example_setting"),
-            "Example Ranged Setting (modified)",
-            "An example setting (modified)",
-            null,
-            0.0,
-            100.0,
-            listOf(WatchFaceLayer.BASE),
-            3.0
-        )
-        val settings1ModifiedId = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("example_setting_modified"),
-            "Example Ranged Setting",
-            "An example setting",
-            null,
-            0.0,
-            1.0,
-            listOf(WatchFaceLayer.BASE),
-            0.1
-        )
+        val setting =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("example_setting"),
+                "Example Ranged Setting",
+                "An example setting",
+                null,
+                0.0,
+                1.0,
+                listOf(WatchFaceLayer.BASE),
+                0.1
+            )
+        val settingCopy =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("example_setting"),
+                "Example Ranged Setting",
+                "An example setting",
+                null,
+                0.0,
+                1.0,
+                listOf(WatchFaceLayer.BASE),
+                0.1
+            )
+        val settings1ModifiedInfo =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("example_setting"),
+                "Example Ranged Setting (modified)",
+                "An example setting (modified)",
+                null,
+                0.0,
+                100.0,
+                listOf(WatchFaceLayer.BASE),
+                3.0
+            )
+        val settings1ModifiedId =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("example_setting_modified"),
+                "Example Ranged Setting",
+                "An example setting",
+                null,
+                0.0,
+                1.0,
+                listOf(WatchFaceLayer.BASE),
+                0.1
+            )
         assertThat(setting).isEqualTo(setting)
         assertThat(setting).isEqualTo(settingCopy)
         assertThat(setting).isEqualTo(settings1ModifiedInfo)
@@ -263,46 +268,50 @@
 
     @Test
     public fun hashcodeBasedOnId() {
-        val setting = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("example_setting"),
-            "Example Ranged Setting",
-            "An example setting",
-            null,
-            0.0,
-            1.0,
-            listOf(WatchFaceLayer.BASE),
-            0.1
-        )
-        val settingCopy = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("example_setting"),
-            "Example Ranged Setting",
-            "An example setting",
-            null,
-            0.0,
-            1.0,
-            listOf(WatchFaceLayer.BASE),
-            0.1
-        )
-        val settings1ModifiedInfo = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("example_setting"),
-            "Example Ranged Setting (modified)",
-            "An example setting (modified)",
-            null,
-            0.0,
-            100.0,
-            listOf(WatchFaceLayer.BASE),
-            3.0
-        )
-        val settings1ModifiedId = DoubleRangeUserStyleSetting(
-            UserStyleSetting.Id("example_setting_modified"),
-            "Example Ranged Setting",
-            "An example setting",
-            null,
-            0.0,
-            1.0,
-            listOf(WatchFaceLayer.BASE),
-            0.1
-        )
+        val setting =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("example_setting"),
+                "Example Ranged Setting",
+                "An example setting",
+                null,
+                0.0,
+                1.0,
+                listOf(WatchFaceLayer.BASE),
+                0.1
+            )
+        val settingCopy =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("example_setting"),
+                "Example Ranged Setting",
+                "An example setting",
+                null,
+                0.0,
+                1.0,
+                listOf(WatchFaceLayer.BASE),
+                0.1
+            )
+        val settings1ModifiedInfo =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("example_setting"),
+                "Example Ranged Setting (modified)",
+                "An example setting (modified)",
+                null,
+                0.0,
+                100.0,
+                listOf(WatchFaceLayer.BASE),
+                3.0
+            )
+        val settings1ModifiedId =
+            DoubleRangeUserStyleSetting(
+                UserStyleSetting.Id("example_setting_modified"),
+                "Example Ranged Setting",
+                "An example setting",
+                null,
+                0.0,
+                1.0,
+                listOf(WatchFaceLayer.BASE),
+                0.1
+            )
         assertThat(setting.hashCode()).isEqualTo(setting.hashCode())
         assertThat(setting.hashCode()).isEqualTo(settingCopy.hashCode())
         assertThat(setting.hashCode()).isEqualTo(settings1ModifiedInfo.hashCode())
@@ -398,18 +407,18 @@
 
     @Test
     public fun partial_ComplicationBounds_in_ComplicationOverlayWireFormat() {
-        val wireFormat = ComplicationOverlayWireFormat(
-            123,
-            true,
-            mapOf(
-                ComplicationType.SHORT_TEXT.toWireComplicationType() to
-                    RectF(0.1f, 0.2f, 0.3f, 0.4f),
-
-                ComplicationType.LONG_TEXT.toWireComplicationType() to
-                    RectF(0.5f, 0.6f, 0.7f, 0.8f)
-            ),
-            null
-        )
+        val wireFormat =
+            ComplicationOverlayWireFormat(
+                123,
+                true,
+                mapOf(
+                    ComplicationType.SHORT_TEXT.toWireComplicationType() to
+                        RectF(0.1f, 0.2f, 0.3f, 0.4f),
+                    ComplicationType.LONG_TEXT.toWireComplicationType() to
+                        RectF(0.5f, 0.6f, 0.7f, 0.8f)
+                ),
+                null
+            )
 
         val overlay =
             UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotOverlay(
@@ -452,13 +461,14 @@
             ComplicationSlotOverlay(1, nameResourceId = null, screenReaderNameResourceId = null)
         val rightComplicationSlot =
             ComplicationSlotOverlay(2, nameResourceId = null, screenReaderNameResourceId = null)
-        val option = UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-            Option.Id("both"),
-            "right and left complications",
-            "right and left complications",
-            icon = null,
-            listOf(rightComplicationSlot, leftComplicationSlot),
-        )
+        val option =
+            UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                Option.Id("both"),
+                "right and left complications",
+                "right and left complications",
+                icon = null,
+                listOf(rightComplicationSlot, leftComplicationSlot),
+            )
 
         val optionAfterRoundTrip =
             UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
@@ -466,9 +476,14 @@
             )
 
         assertThat(option).isEqualTo(optionAfterRoundTrip)
-        assertThat(optionAfterRoundTrip.complicationSlotOverlays).containsExactly(
-            ComplicationSlotOverlay(1, nameResourceId = null, screenReaderNameResourceId = null),
-            ComplicationSlotOverlay(2, nameResourceId = null, screenReaderNameResourceId = null)
-        )
+        assertThat(optionAfterRoundTrip.complicationSlotOverlays)
+            .containsExactly(
+                ComplicationSlotOverlay(
+                    1,
+                    nameResourceId = null,
+                    screenReaderNameResourceId = null
+                ),
+                ComplicationSlotOverlay(2, nameResourceId = null, screenReaderNameResourceId = null)
+            )
     }
 }
diff --git a/wear/watchface/watchface/api/current.ignore b/wear/watchface/watchface/api/current.ignore
index ec425b1..08cfb6e 100644
--- a/wear/watchface/watchface/api/current.ignore
+++ b/wear/watchface/watchface/api/current.ignore
@@ -7,3 +7,5 @@
     Removed class androidx.wear.watchface.RendererKt
 RemovedClass: androidx.wear.watchface.WatchFaceKt:
     Removed class androidx.wear.watchface.WatchFaceKt
+RemovedClass: androidx.wear.watchface.WatchFaceServiceKt:
+    Removed class androidx.wear.watchface.WatchFaceServiceKt
diff --git a/wear/watchface/watchface/api/current.txt b/wear/watchface/watchface/api/current.txt
index 9aec1ab..6b8eb15 100644
--- a/wear/watchface/watchface/api/current.txt
+++ b/wear/watchface/watchface/api/current.txt
@@ -341,9 +341,6 @@
     method @UiThread public void onTapEvent(int tapType, androidx.wear.watchface.TapEvent tapEvent, androidx.wear.watchface.ComplicationSlot? complicationSlot);
   }
 
-  public final class WatchFaceColorsKt {
-  }
-
   public abstract class WatchFaceService extends android.service.wallpaper.WallpaperService {
     ctor public WatchFaceService();
     method @WorkerThread protected androidx.wear.watchface.ComplicationSlotsManager createComplicationSlotsManager(androidx.wear.watchface.style.CurrentUserStyleRepository currentUserStyleRepository);
@@ -362,9 +359,6 @@
   public static final class WatchFaceService.Companion {
   }
 
-  public final class WatchFaceServiceKt {
-  }
-
   public final class WatchState {
     ctor public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, @Px int chinHeight, boolean isHeadless, kotlinx.coroutines.flow.StateFlow<java.lang.String> watchFaceInstanceId);
     ctor @Deprecated public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, int chinHeight, boolean isHeadless);
diff --git a/wear/watchface/watchface/api/public_plus_experimental_current.txt b/wear/watchface/watchface/api/public_plus_experimental_current.txt
index f654e9c..2e7a478 100644
--- a/wear/watchface/watchface/api/public_plus_experimental_current.txt
+++ b/wear/watchface/watchface/api/public_plus_experimental_current.txt
@@ -370,9 +370,6 @@
     property public final android.graphics.Color tertiaryColor;
   }
 
-  public final class WatchFaceColorsKt {
-  }
-
   @kotlin.RequiresOptIn(message="This is an experimental API that may change or be removed without warning.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface WatchFaceExperimental {
   }
 
@@ -394,9 +391,6 @@
   public static final class WatchFaceService.Companion {
   }
 
-  public final class WatchFaceServiceKt {
-  }
-
   public final class WatchState {
     ctor public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, @Px int chinHeight, boolean isHeadless, kotlinx.coroutines.flow.StateFlow<java.lang.String> watchFaceInstanceId);
     ctor @Deprecated public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, int chinHeight, boolean isHeadless);
diff --git a/wear/watchface/watchface/api/restricted_current.ignore b/wear/watchface/watchface/api/restricted_current.ignore
index 148f834..6abfc87 100644
--- a/wear/watchface/watchface/api/restricted_current.ignore
+++ b/wear/watchface/watchface/api/restricted_current.ignore
@@ -7,6 +7,8 @@
     Removed class androidx.wear.watchface.RendererKt
 RemovedClass: androidx.wear.watchface.WatchFaceKt:
     Removed class androidx.wear.watchface.WatchFaceKt
+RemovedClass: androidx.wear.watchface.WatchFaceServiceKt:
+    Removed class androidx.wear.watchface.WatchFaceServiceKt
 
 
 RemovedMethod: androidx.wear.watchface.RenderParameters#RenderParameters(androidx.wear.watchface.data.RenderParametersWireFormat):
diff --git a/wear/watchface/watchface/api/restricted_current.txt b/wear/watchface/watchface/api/restricted_current.txt
index 9aec1ab..6b8eb15 100644
--- a/wear/watchface/watchface/api/restricted_current.txt
+++ b/wear/watchface/watchface/api/restricted_current.txt
@@ -341,9 +341,6 @@
     method @UiThread public void onTapEvent(int tapType, androidx.wear.watchface.TapEvent tapEvent, androidx.wear.watchface.ComplicationSlot? complicationSlot);
   }
 
-  public final class WatchFaceColorsKt {
-  }
-
   public abstract class WatchFaceService extends android.service.wallpaper.WallpaperService {
     ctor public WatchFaceService();
     method @WorkerThread protected androidx.wear.watchface.ComplicationSlotsManager createComplicationSlotsManager(androidx.wear.watchface.style.CurrentUserStyleRepository currentUserStyleRepository);
@@ -362,9 +359,6 @@
   public static final class WatchFaceService.Companion {
   }
 
-  public final class WatchFaceServiceKt {
-  }
-
   public final class WatchState {
     ctor public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, @Px int chinHeight, boolean isHeadless, kotlinx.coroutines.flow.StateFlow<java.lang.String> watchFaceInstanceId);
     ctor @Deprecated public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, int chinHeight, boolean isHeadless);
diff --git a/wear/watchface/watchface/samples/minimal/src/main/java/androidx/wear/watchface/samples/minimal/WatchFaceRenderer.java b/wear/watchface/watchface/samples/minimal/src/main/java/androidx/wear/watchface/samples/minimal/WatchFaceRenderer.java
index 3c8e640..c56ae533 100644
--- a/wear/watchface/watchface/samples/minimal/src/main/java/androidx/wear/watchface/samples/minimal/WatchFaceRenderer.java
+++ b/wear/watchface/watchface/samples/minimal/src/main/java/androidx/wear/watchface/samples/minimal/WatchFaceRenderer.java
@@ -52,7 +52,11 @@
             @NotNull SurfaceHolder surfaceHolder,
             @NotNull CurrentUserStyleRepository currentUserStyleRepository,
             @NotNull WatchState watchState) {
-        super(surfaceHolder, currentUserStyleRepository, watchState, CanvasType.HARDWARE,
+        super(
+                surfaceHolder,
+                currentUserStyleRepository,
+                watchState,
+                CanvasType.HARDWARE,
                 UPDATE_DELAY_MILLIS);
         mWatchState = watchState;
         mPaint = new Paint();
@@ -61,8 +65,8 @@
     }
 
     @Override
-    public void render(@NotNull Canvas canvas, @NotNull Rect rect,
-            @NotNull ZonedDateTime zonedDateTime) {
+    public void render(
+            @NotNull Canvas canvas, @NotNull Rect rect, @NotNull ZonedDateTime zonedDateTime) {
         mPaint.setColor(Color.BLACK);
         canvas.drawRect(rect, mPaint);
         mPaint.setColor(Color.WHITE);
@@ -77,7 +81,8 @@
         mTimeText[2] = second % 2 == 0 ? ':' : ' ';
         mTimeText[3] = DIGITS[minute / 10];
         mTimeText[4] = DIGITS[minute % 10];
-        canvas.drawText(mTimeText,
+        canvas.drawText(
+                mTimeText,
                 0,
                 5,
                 rect.centerX(),
@@ -86,8 +91,8 @@
     }
 
     @Override
-    public void renderHighlightLayer(@NonNull Canvas canvas, @NonNull Rect bounds,
-            @NonNull ZonedDateTime zonedDateTime) {
+    public void renderHighlightLayer(
+            @NonNull Canvas canvas, @NonNull Rect bounds, @NonNull ZonedDateTime zonedDateTime) {
         canvas.drawColor(getRenderParameters().getHighlightLayer().getBackgroundTint());
     }
 }
diff --git a/wear/watchface/watchface/samples/minimal/src/main/java/androidx/wear/watchface/samples/minimal/WatchFaceService.java b/wear/watchface/watchface/samples/minimal/src/main/java/androidx/wear/watchface/samples/minimal/WatchFaceService.java
index ba1bdac..27905a9 100644
--- a/wear/watchface/watchface/samples/minimal/src/main/java/androidx/wear/watchface/samples/minimal/WatchFaceService.java
+++ b/wear/watchface/watchface/samples/minimal/src/main/java/androidx/wear/watchface/samples/minimal/WatchFaceService.java
@@ -38,12 +38,12 @@
     @NotNull
     @Override
     protected ListenableFuture<WatchFace> createWatchFaceFuture(
-            @NotNull SurfaceHolder surfaceHolder, @NotNull WatchState watchState,
+            @NotNull SurfaceHolder surfaceHolder,
+            @NotNull WatchState watchState,
             @NonNull ComplicationSlotsManager complicationSlotsManager,
             @NonNull CurrentUserStyleRepository currentUserStyleRepository) {
         Renderer renderer =
                 new WatchFaceRenderer(surfaceHolder, currentUserStyleRepository, watchState);
-        return Futures.immediateFuture(
-                new WatchFace(WatchFaceType.DIGITAL, renderer));
+        return Futures.immediateFuture(new WatchFace(WatchFaceType.DIGITAL, renderer));
     }
 }
diff --git a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleCanvasAnalogWatchFaceService.kt b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleCanvasAnalogWatchFaceService.kt
index c70d866..a2c88c1 100644
--- a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleCanvasAnalogWatchFaceService.kt
+++ b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleCanvasAnalogWatchFaceService.kt
@@ -85,29 +85,30 @@
             R.string.colors_style_setting,
             R.string.colors_style_setting_description,
             icon = null,
-            options = listOf(
-                ListUserStyleSetting.ListOption(
-                    Option.Id(RED_STYLE),
-                    resources,
-                    R.string.colors_style_red,
-                    R.string.colors_style_red_screen_reader,
-                    Icon.createWithResource(this, R.drawable.red_style)
+            options =
+                listOf(
+                    ListUserStyleSetting.ListOption(
+                        Option.Id(RED_STYLE),
+                        resources,
+                        R.string.colors_style_red,
+                        R.string.colors_style_red_screen_reader,
+                        Icon.createWithResource(this, R.drawable.red_style)
+                    ),
+                    ListUserStyleSetting.ListOption(
+                        Option.Id(GREEN_STYLE),
+                        resources,
+                        R.string.colors_style_green,
+                        R.string.colors_style_green_screen_reader,
+                        Icon.createWithResource(this, R.drawable.green_style)
+                    ),
+                    ListUserStyleSetting.ListOption(
+                        Option.Id(BLUE_STYLE),
+                        resources,
+                        R.string.colors_style_blue,
+                        R.string.colors_style_blue_screen_reader,
+                        Icon.createWithResource(this, R.drawable.blue_style)
+                    )
                 ),
-                ListUserStyleSetting.ListOption(
-                    Option.Id(GREEN_STYLE),
-                    resources,
-                    R.string.colors_style_green,
-                    R.string.colors_style_green_screen_reader,
-                    Icon.createWithResource(this, R.drawable.green_style)
-                ),
-                ListUserStyleSetting.ListOption(
-                    Option.Id(BLUE_STYLE),
-                    resources,
-                    R.string.colors_style_blue,
-                    R.string.colors_style_blue_screen_reader,
-                    Icon.createWithResource(this, R.drawable.blue_style)
-                )
-            ),
             listOf(
                 WatchFaceLayer.BASE,
                 WatchFaceLayer.COMPLICATIONS,
@@ -152,57 +153,59 @@
             R.string.watchface_complications_setting,
             R.string.watchface_complications_setting_description,
             icon = null,
-            complicationConfig = listOf(
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    Option.Id(LEFT_AND_RIGHT_COMPLICATIONS),
-                    resources,
-                    R.string.watchface_complications_setting_both,
-                    null,
-                    // NB this list is empty because each [ComplicationSlotOverlay] is applied on
-                    // top of the initial config.
-                    listOf()
-                ),
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    Option.Id(NO_COMPLICATIONS),
-                    resources,
-                    R.string.watchface_complications_setting_none,
-                    null,
-                    listOf(
-                        ComplicationSlotOverlay(
-                            EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-                            enabled = false
-                        ),
-                        ComplicationSlotOverlay(
-                            EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
-                            enabled = false
+            complicationConfig =
+                listOf(
+                    ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        Option.Id(LEFT_AND_RIGHT_COMPLICATIONS),
+                        resources,
+                        R.string.watchface_complications_setting_both,
+                        null,
+                        // NB this list is empty because each [ComplicationSlotOverlay] is applied
+                        // on
+                        // top of the initial config.
+                        listOf()
+                    ),
+                    ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        Option.Id(NO_COMPLICATIONS),
+                        resources,
+                        R.string.watchface_complications_setting_none,
+                        null,
+                        listOf(
+                            ComplicationSlotOverlay(
+                                EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                                enabled = false
+                            ),
+                            ComplicationSlotOverlay(
+                                EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
+                                enabled = false
+                            )
+                        )
+                    ),
+                    ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        Option.Id(LEFT_COMPLICATION),
+                        resources,
+                        R.string.watchface_complications_setting_left,
+                        null,
+                        listOf(
+                            ComplicationSlotOverlay(
+                                EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
+                                enabled = false
+                            )
+                        )
+                    ),
+                    ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        Option.Id(RIGHT_COMPLICATION),
+                        resources,
+                        R.string.watchface_complications_setting_right,
+                        null,
+                        listOf(
+                            ComplicationSlotOverlay(
+                                EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                                enabled = false
+                            )
                         )
                     )
                 ),
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    Option.Id(LEFT_COMPLICATION),
-                    resources,
-                    R.string.watchface_complications_setting_left,
-                    null,
-                    listOf(
-                        ComplicationSlotOverlay(
-                            EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
-                            enabled = false
-                        )
-                    )
-                ),
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    Option.Id(RIGHT_COMPLICATION),
-                    resources,
-                    R.string.watchface_complications_setting_right,
-                    null,
-                    listOf(
-                        ComplicationSlotOverlay(
-                            EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-                            enabled = false
-                        )
-                    )
-                )
-            ),
             listOf(WatchFaceLayer.COMPLICATIONS)
         )
     }
@@ -221,15 +224,16 @@
         )
     }
 
-    public override fun createUserStyleSchema() = UserStyleSchema(
-        listOf(
-            colorStyleSetting,
-            drawHourPipsStyleSetting,
-            watchHandLengthStyleSetting,
-            complicationsStyleSetting,
-            hoursDrawFreqStyleSetting
+    public override fun createUserStyleSchema() =
+        UserStyleSchema(
+            listOf(
+                colorStyleSetting,
+                drawHourPipsStyleSetting,
+                watchHandLengthStyleSetting,
+                complicationsStyleSetting,
+                hoursDrawFreqStyleSetting
+            )
         )
-    )
 
     private val exampleFlavor by lazy {
         UserStyleFlavor(
@@ -265,56 +269,62 @@
     public override fun createComplicationSlotsManager(
         currentUserStyleRepository: CurrentUserStyleRepository
     ): ComplicationSlotsManager {
-        val canvasComplicationFactory =
-            CanvasComplicationFactory { watchState, listener ->
-                CanvasComplicationDrawable(
-                    watchFaceStyle.getDrawable(this@ExampleCanvasAnalogWatchFaceService)!!,
-                    watchState,
-                    listener
+        val canvasComplicationFactory = CanvasComplicationFactory { watchState, listener ->
+            CanvasComplicationDrawable(
+                watchFaceStyle.getDrawable(this@ExampleCanvasAnalogWatchFaceService)!!,
+                watchState,
+                listener
+            )
+        }
+        val leftComplication =
+            ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                    EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                    canvasComplicationFactory,
+                    listOf(
+                        ComplicationType.RANGED_VALUE,
+                        ComplicationType.GOAL_PROGRESS,
+                        ComplicationType.WEIGHTED_ELEMENTS,
+                        ComplicationType.LONG_TEXT,
+                        ComplicationType.SHORT_TEXT,
+                        ComplicationType.MONOCHROMATIC_IMAGE,
+                        ComplicationType.SMALL_IMAGE
+                    ),
+                    // try to use the configurable data source sample, then default to system data
+                    // source
+                    DefaultComplicationDataSourcePolicy(
+                        ComponentName(CONFIGURABLE_DATA_SOURCE_PKG, CONFIGURABLE_DATA_SOURCE),
+                        ComplicationType.SHORT_TEXT,
+                        SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
+                        ComplicationType.SHORT_TEXT
+                    ),
+                    ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
                 )
-            }
-        val leftComplication = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-            canvasComplicationFactory,
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.GOAL_PROGRESS,
-                ComplicationType.WEIGHTED_ELEMENTS,
-                ComplicationType.LONG_TEXT,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            // try to use the configurable data source sample, then default to system data source
-            DefaultComplicationDataSourcePolicy(
-                ComponentName(CONFIGURABLE_DATA_SOURCE_PKG, CONFIGURABLE_DATA_SOURCE),
-                ComplicationType.SHORT_TEXT,
-                SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
-                ComplicationType.SHORT_TEXT
-            ),
-            ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
-        ).setNameResourceId(R.string.left_complication_screen_name)
-            .setScreenReaderNameResourceId(R.string.left_complication_screen_reader_name).build()
+                .setNameResourceId(R.string.left_complication_screen_name)
+                .setScreenReaderNameResourceId(R.string.left_complication_screen_reader_name)
+                .build()
 
-        val rightComplication = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
-            canvasComplicationFactory,
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.GOAL_PROGRESS,
-                ComplicationType.WEIGHTED_ELEMENTS,
-                ComplicationType.LONG_TEXT,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy(
-                SystemDataSources.DATA_SOURCE_STEP_COUNT,
-                ComplicationType.SHORT_TEXT
-            ),
-            ComplicationSlotBounds(RectF(0.6f, 0.4f, 0.8f, 0.6f))
-        ).setNameResourceId(R.string.right_complication_screen_name)
-            .setScreenReaderNameResourceId(R.string.right_complication_screen_reader_name).build()
+        val rightComplication =
+            ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                    EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
+                    canvasComplicationFactory,
+                    listOf(
+                        ComplicationType.RANGED_VALUE,
+                        ComplicationType.GOAL_PROGRESS,
+                        ComplicationType.WEIGHTED_ELEMENTS,
+                        ComplicationType.LONG_TEXT,
+                        ComplicationType.SHORT_TEXT,
+                        ComplicationType.MONOCHROMATIC_IMAGE,
+                        ComplicationType.SMALL_IMAGE
+                    ),
+                    DefaultComplicationDataSourcePolicy(
+                        SystemDataSources.DATA_SOURCE_STEP_COUNT,
+                        ComplicationType.SHORT_TEXT
+                    ),
+                    ComplicationSlotBounds(RectF(0.6f, 0.4f, 0.8f, 0.6f))
+                )
+                .setNameResourceId(R.string.right_complication_screen_name)
+                .setScreenReaderNameResourceId(R.string.right_complication_screen_reader_name)
+                .build()
 
         return ComplicationSlotsManager(
             listOf(leftComplication, rightComplication),
@@ -327,27 +337,26 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.ANALOG,
-        ExampleAnalogWatchCanvasRenderer(
-            surfaceHolder,
-            this,
-            watchFaceStyle,
-            currentUserStyleRepository,
-            watchState,
-            colorStyleSetting,
-            drawHourPipsStyleSetting,
-            watchHandLengthStyleSetting,
-            hoursDrawFreqStyleSetting,
-            complicationSlotsManager
-        )
-    )
-        .setComplicationDeniedDialogIntent(
-            Intent(this, ComplicationDeniedActivity::class.java)
-        )
-        .setComplicationRationaleDialogIntent(
-            Intent(this, ComplicationRationalActivity::class.java)
-        )
+    ) =
+        WatchFace(
+                WatchFaceType.ANALOG,
+                ExampleAnalogWatchCanvasRenderer(
+                    surfaceHolder,
+                    this,
+                    watchFaceStyle,
+                    currentUserStyleRepository,
+                    watchState,
+                    colorStyleSetting,
+                    drawHourPipsStyleSetting,
+                    watchHandLengthStyleSetting,
+                    hoursDrawFreqStyleSetting,
+                    complicationSlotsManager
+                )
+            )
+            .setComplicationDeniedDialogIntent(Intent(this, ComplicationDeniedActivity::class.java))
+            .setComplicationRationaleDialogIntent(
+                Intent(this, ComplicationRationalActivity::class.java)
+            )
 
     @OptIn(WatchFaceExperimental::class)
     @Suppress("Deprecation")
@@ -363,29 +372,31 @@
         private val watchHandLengthStyleSettingDouble: DoubleRangeUserStyleSetting,
         private val hoursDrawFreqStyleSetting: LongRangeUserStyleSetting,
         private val complicationSlotsManager: ComplicationSlotsManager
-    ) : Renderer.CanvasRenderer(
-        surfaceHolder,
-        currentUserStyleRepository,
-        watchState,
-        CanvasType.HARDWARE,
-        FRAME_PERIOD_MS,
-        clearWithBackgroundTintBeforeRenderingHighlightLayer = true
-    ) {
-        private val clockHandPaint = Paint().apply {
-            isAntiAlias = true
-            strokeWidth = context.resources.getDimensionPixelSize(
-                R.dimen.clock_hand_stroke_width
-            ).toFloat()
-        }
+    ) :
+        Renderer.CanvasRenderer(
+            surfaceHolder,
+            currentUserStyleRepository,
+            watchState,
+            CanvasType.HARDWARE,
+            FRAME_PERIOD_MS,
+            clearWithBackgroundTintBeforeRenderingHighlightLayer = true
+        ) {
+        private val clockHandPaint =
+            Paint().apply {
+                isAntiAlias = true
+                strokeWidth =
+                    context.resources
+                        .getDimensionPixelSize(R.dimen.clock_hand_stroke_width)
+                        .toFloat()
+            }
 
-        private val outerElementPaint = Paint().apply {
-            isAntiAlias = true
-        }
+        private val outerElementPaint = Paint().apply { isAntiAlias = true }
 
-        private val textPaint = Paint().apply {
-            isAntiAlias = true
-            textSize = context.resources.getDimensionPixelSize(R.dimen.hour_mark_size).toFloat()
-        }
+        private val textPaint =
+            Paint().apply {
+                isAntiAlias = true
+                textSize = context.resources.getDimensionPixelSize(R.dimen.hour_mark_size).toFloat()
+            }
 
         private lateinit var hourHandFill: Path
         private lateinit var hourHandBorder: Path
@@ -400,10 +411,11 @@
         init {
             CoroutineScope(Dispatchers.Main.immediate).launch {
                 currentUserStyleRepository.userStyle.collect { userStyle ->
-                    watchFaceColorStyle = WatchFaceColorStyle.create(
-                        context,
-                        userStyle[colorStyleSetting]!!.toString()
-                    )
+                    watchFaceColorStyle =
+                        WatchFaceColorStyle.create(
+                            context,
+                            userStyle[colorStyleSetting]!!.toString()
+                        )
 
                     // Apply the userStyle to the complicationSlots. ComplicationDrawables for each
                     // of the styles are defined in XML so we need to replace the complication's
@@ -416,25 +428,28 @@
                     drawHourPips = (userStyle[drawPipsStyleSetting]!! as BooleanOption).value
                     watchHandScale =
                         (userStyle[watchHandLengthStyleSettingDouble]!! as DoubleRangeOption)
-                            .value.toFloat()
-                    hoursDrawFreq = (userStyle[hoursDrawFreqStyleSetting]!! as LongRangeOption)
-                        .value.toInt()
+                            .value
+                            .toFloat()
+                    hoursDrawFreq =
+                        (userStyle[hoursDrawFreqStyleSetting]!! as LongRangeOption).value.toInt()
 
-                    watchfaceColors = WatchFaceColors(
-                        Color.valueOf(watchFaceColorStyle.activeStyle.primaryColor),
-                        Color.valueOf(watchFaceColorStyle.activeStyle.secondaryColor),
-                        Color.valueOf(Color.DKGRAY)
-                    )
+                    watchfaceColors =
+                        WatchFaceColors(
+                            Color.valueOf(watchFaceColorStyle.activeStyle.primaryColor),
+                            Color.valueOf(watchFaceColorStyle.activeStyle.secondaryColor),
+                            Color.valueOf(Color.DKGRAY)
+                        )
                 }
             }
         }
 
         override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
-            val style = if (renderParameters.drawMode == DrawMode.AMBIENT) {
-                watchFaceColorStyle.ambientStyle
-            } else {
-                watchFaceColorStyle.activeStyle
-            }
+            val style =
+                if (renderParameters.drawMode == DrawMode.AMBIENT) {
+                    watchFaceColorStyle.ambientStyle
+                } else {
+                    watchFaceColorStyle.activeStyle
+                }
 
             canvas.drawColor(style.backgroundColor)
 
@@ -446,13 +461,14 @@
                 }
             }
 
-            if (renderParameters.watchFaceLayers.contains(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-            ) {
+            if (renderParameters.watchFaceLayers.contains(WatchFaceLayer.COMPLICATIONS_OVERLAY)) {
                 drawClockHands(canvas, bounds, zonedDateTime, style)
             }
 
-            if (renderParameters.drawMode != DrawMode.AMBIENT &&
-                renderParameters.watchFaceLayers.contains(WatchFaceLayer.BASE) && drawHourPips
+            if (
+                renderParameters.drawMode != DrawMode.AMBIENT &&
+                    renderParameters.watchFaceLayers.contains(WatchFaceLayer.BASE) &&
+                    drawHourPips
             ) {
                 drawNumberStyleOuterElement(canvas, bounds, style)
             }
@@ -479,8 +495,9 @@
             recalculateClockHands(bounds)
             val hours = (zonedDateTime.hour % 12).toFloat()
             val minutes = zonedDateTime.minute.toFloat()
-            val seconds = zonedDateTime.second.toFloat() +
-                (zonedDateTime.nano.toDouble() / 1000000000.0).toFloat()
+            val seconds =
+                zonedDateTime.second.toFloat() +
+                    (zonedDateTime.nano.toDouble() / 1000000000.0).toFloat()
 
             val hourRot = (hours + minutes / 60.0f + seconds / 3600.0f) / 12.0f * 360.0f
             val minuteRot = (minutes + seconds / 60.0f) / 60.0f * 360.0f
@@ -598,7 +615,11 @@
 
             minuteHandBorder =
                 createClockHand(
-                    bounds, MINUTE_HAND_LENGTH_FRACTION, MINUTE_HAND_THICKNESS_FRACTION, rx, ry
+                    bounds,
+                    MINUTE_HAND_LENGTH_FRACTION,
+                    MINUTE_HAND_THICKNESS_FRACTION,
+                    rx,
+                    ry
                 )
 
             hourHandFill =
@@ -630,8 +651,8 @@
         }
 
         /**
-         * Returns a round rect clock hand if {@code rx} and {@code ry} equals to 0, otherwise return a
-         * rect clock hand.
+         * Returns a round rect clock hand if {@code rx} and {@code ry} equals to 0, otherwise
+         * return a rect clock hand.
          *
          * @param bounds The bounds use to determine the coordinate of the clock hand.
          * @param length Clock hand's length, in fraction of {@code bounds.width()}.
@@ -685,11 +706,7 @@
             canvas.save()
             for (i in 0 until 12) {
                 if (i % hoursDrawFreq != 0) {
-                    drawTopMiddleCircle(
-                        canvas,
-                        bounds,
-                        NUMBER_STYLE_OUTER_CIRCLE_RADIUS_FRACTION
-                    )
+                    drawTopMiddleCircle(canvas, bounds, NUMBER_STYLE_OUTER_CIRCLE_RADIUS_FRACTION)
                 }
                 canvas.rotate(360.0f / 12.0f, bounds.exactCenterX(), bounds.exactCenterY())
             }
@@ -697,23 +714,14 @@
         }
 
         /** Draws the outer circle on the top middle of the given bounds. */
-        private fun drawTopMiddleCircle(
-            canvas: Canvas,
-            bounds: Rect,
-            radiusFraction: Float
-        ) {
+        private fun drawTopMiddleCircle(canvas: Canvas, bounds: Rect, radiusFraction: Float) {
             outerElementPaint.style = Paint.Style.FILL_AND_STROKE
 
             val cx = 0.5f * bounds.width().toFloat()
             val cy =
                 bounds.width() * (GAP_BETWEEN_OUTER_CIRCLE_AND_BORDER_FRACTION + radiusFraction)
 
-            canvas.drawCircle(
-                cx,
-                cy,
-                radiusFraction * bounds.width(),
-                outerElementPaint
-            )
+            canvas.drawCircle(cx, cy, radiusFraction * bounds.width(), outerElementPaint)
         }
     }
 
@@ -749,7 +757,7 @@
         private const val RIGHT_COMPLICATION = "RIGHT_COMPLICATION"
         private const val LEFT_AND_RIGHT_COMPLICATIONS = "LEFT_AND_RIGHT_COMPLICATIONS"
 
-        /** How long each frame is displayed at expected frame rate.  */
+        /** How long each frame is displayed at expected frame rate. */
         private const val FRAME_PERIOD_MS: Long = 16L
 
         const val EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID = 101
diff --git a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleCanvasDigitalWatchFaceService.kt b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleCanvasDigitalWatchFaceService.kt
index 5f497f3..64b584d 100644
--- a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleCanvasDigitalWatchFaceService.kt
+++ b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleCanvasDigitalWatchFaceService.kt
@@ -82,29 +82,30 @@
             R.string.colors_style_setting,
             R.string.colors_style_setting_description,
             icon = null,
-            options = listOf(
-                UserStyleSetting.ListUserStyleSetting.ListOption(
-                    Option.Id(RED_STYLE),
-                    resources,
-                    R.string.colors_style_red,
-                    R.string.colors_style_red_screen_reader,
-                    Icon.createWithResource(this, R.drawable.red_style)
+            options =
+                listOf(
+                    UserStyleSetting.ListUserStyleSetting.ListOption(
+                        Option.Id(RED_STYLE),
+                        resources,
+                        R.string.colors_style_red,
+                        R.string.colors_style_red_screen_reader,
+                        Icon.createWithResource(this, R.drawable.red_style)
+                    ),
+                    UserStyleSetting.ListUserStyleSetting.ListOption(
+                        Option.Id(GREEN_STYLE),
+                        resources,
+                        R.string.colors_style_green,
+                        R.string.colors_style_green_screen_reader,
+                        Icon.createWithResource(this, R.drawable.green_style)
+                    ),
+                    UserStyleSetting.ListUserStyleSetting.ListOption(
+                        Option.Id(BLUE_STYLE),
+                        resources,
+                        R.string.colors_style_blue,
+                        R.string.colors_style_blue_screen_reader,
+                        Icon.createWithResource(this, R.drawable.blue_style)
+                    )
                 ),
-                UserStyleSetting.ListUserStyleSetting.ListOption(
-                    Option.Id(GREEN_STYLE),
-                    resources,
-                    R.string.colors_style_green,
-                    R.string.colors_style_green_screen_reader,
-                    Icon.createWithResource(this, R.drawable.green_style)
-                ),
-                UserStyleSetting.ListUserStyleSetting.ListOption(
-                    Option.Id(BLUE_STYLE),
-                    resources,
-                    R.string.colors_style_blue,
-                    R.string.colors_style_blue_screen_reader,
-                    Icon.createWithResource(this, R.drawable.blue_style)
-                )
-            ),
             listOf(
                 WatchFaceLayer.BASE,
                 WatchFaceLayer.COMPLICATIONS,
@@ -113,150 +114,166 @@
         )
     }
 
-    private val canvasComplicationFactory =
-        CanvasComplicationFactory { watchState, listener ->
-            CanvasComplicationDrawable(
-                watchFaceStyle.getDrawable(this@ExampleCanvasDigitalWatchFaceService)!!,
-                watchState,
-                listener
-            )
-        }
+    private val canvasComplicationFactory = CanvasComplicationFactory { watchState, listener ->
+        CanvasComplicationDrawable(
+            watchFaceStyle.getDrawable(this@ExampleCanvasDigitalWatchFaceService)!!,
+            watchState,
+            listener
+        )
+    }
 
-    private val leftComplication = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-        ComplicationID.LEFT.ordinal,
-        canvasComplicationFactory,
+    private val leftComplication =
+        ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                ComplicationID.LEFT.ordinal,
+                canvasComplicationFactory,
+                listOf(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.GOAL_PROGRESS,
+                    ComplicationType.WEIGHTED_ELEMENTS,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    ComplicationType.SMALL_IMAGE
+                ),
+                DefaultComplicationDataSourcePolicy(
+                    SystemDataSources.DATA_SOURCE_WATCH_BATTERY,
+                    ComplicationType.SHORT_TEXT
+                ),
+                ComplicationSlotBounds(
+                    createBoundsRect(
+                        LEFT_CIRCLE_COMPLICATION_CENTER_FRACTION,
+                        CIRCLE_COMPLICATION_DIAMETER_FRACTION
+                    )
+                )
+            )
+            .setNameResourceId(R.string.left_complication_screen_name)
+            .setScreenReaderNameResourceId(R.string.left_complication_screen_reader_name)
+            .build()
+
+    private val rightComplication =
+        ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                ComplicationID.RIGHT.ordinal,
+                canvasComplicationFactory,
+                listOf(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.GOAL_PROGRESS,
+                    ComplicationType.WEIGHTED_ELEMENTS,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    ComplicationType.SMALL_IMAGE
+                ),
+                DefaultComplicationDataSourcePolicy(
+                    SystemDataSources.DATA_SOURCE_DATE,
+                    ComplicationType.SHORT_TEXT
+                ),
+                ComplicationSlotBounds(
+                    createBoundsRect(
+                        RIGHT_CIRCLE_COMPLICATION_CENTER_FRACTION,
+                        CIRCLE_COMPLICATION_DIAMETER_FRACTION
+                    )
+                )
+            )
+            .setNameResourceId(R.string.right_complication_screen_name)
+            .setScreenReaderNameResourceId(R.string.right_complication_screen_reader_name)
+            .build()
+
+    private val upperAndLowerComplicationTypes =
         listOf(
+            ComplicationType.LONG_TEXT,
             ComplicationType.RANGED_VALUE,
             ComplicationType.GOAL_PROGRESS,
             ComplicationType.WEIGHTED_ELEMENTS,
             ComplicationType.SHORT_TEXT,
             ComplicationType.MONOCHROMATIC_IMAGE,
             ComplicationType.SMALL_IMAGE
-        ),
-        DefaultComplicationDataSourcePolicy(
-            SystemDataSources.DATA_SOURCE_WATCH_BATTERY,
-            ComplicationType.SHORT_TEXT
-        ),
-        ComplicationSlotBounds(
-            createBoundsRect(
-                LEFT_CIRCLE_COMPLICATION_CENTER_FRACTION,
-                CIRCLE_COMPLICATION_DIAMETER_FRACTION
-            )
         )
-    ).setNameResourceId(R.string.left_complication_screen_name)
-        .setScreenReaderNameResourceId(R.string.left_complication_screen_reader_name).build()
-
-    private val rightComplication = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-        ComplicationID.RIGHT.ordinal,
-        canvasComplicationFactory,
-        listOf(
-            ComplicationType.RANGED_VALUE,
-            ComplicationType.GOAL_PROGRESS,
-            ComplicationType.WEIGHTED_ELEMENTS,
-            ComplicationType.SHORT_TEXT,
-            ComplicationType.MONOCHROMATIC_IMAGE,
-            ComplicationType.SMALL_IMAGE
-        ),
-        DefaultComplicationDataSourcePolicy(
-            SystemDataSources.DATA_SOURCE_DATE,
-            ComplicationType.SHORT_TEXT
-        ),
-        ComplicationSlotBounds(
-            createBoundsRect(
-                RIGHT_CIRCLE_COMPLICATION_CENTER_FRACTION,
-                CIRCLE_COMPLICATION_DIAMETER_FRACTION
-            )
-        )
-    ).setNameResourceId(R.string.right_complication_screen_name)
-        .setScreenReaderNameResourceId(R.string.right_complication_screen_reader_name).build()
-
-    private val upperAndLowerComplicationTypes = listOf(
-        ComplicationType.LONG_TEXT,
-        ComplicationType.RANGED_VALUE,
-        ComplicationType.GOAL_PROGRESS,
-        ComplicationType.WEIGHTED_ELEMENTS,
-        ComplicationType.SHORT_TEXT,
-        ComplicationType.MONOCHROMATIC_IMAGE,
-        ComplicationType.SMALL_IMAGE
-    )
 
     // The upper and lower complicationSlots change shape depending on the complication's type.
-    private val upperComplication = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-        ComplicationID.UPPER.ordinal,
-        canvasComplicationFactory,
-        upperAndLowerComplicationTypes,
-        DefaultComplicationDataSourcePolicy(
-            SystemDataSources.DATA_SOURCE_WORLD_CLOCK,
-            ComplicationType.LONG_TEXT
-        ),
-        ComplicationSlotBounds(
-            ComplicationType.values().associateWith {
-                if (it == ComplicationType.LONG_TEXT || it == ComplicationType.NO_DATA) {
-                    createBoundsRect(
-                        UPPER_ROUND_RECT_COMPLICATION_CENTER_FRACTION,
-                        ROUND_RECT_COMPLICATION_SIZE_FRACTION
-                    )
-                } else {
-                    createBoundsRect(
-                        UPPER_CIRCLE_COMPLICATION_CENTER_FRACTION,
-                        CIRCLE_COMPLICATION_DIAMETER_FRACTION
-                    )
-                }
-            },
-            ComplicationType.values().associateWith { RectF() }
-        )
-    ).setNameResourceId(R.string.upper_complication_screen_name)
-        .setScreenReaderNameResourceId(R.string.upper_complication_screen_reader_name).build()
+    private val upperComplication =
+        ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                ComplicationID.UPPER.ordinal,
+                canvasComplicationFactory,
+                upperAndLowerComplicationTypes,
+                DefaultComplicationDataSourcePolicy(
+                    SystemDataSources.DATA_SOURCE_WORLD_CLOCK,
+                    ComplicationType.LONG_TEXT
+                ),
+                ComplicationSlotBounds(
+                    ComplicationType.values().associateWith {
+                        if (it == ComplicationType.LONG_TEXT || it == ComplicationType.NO_DATA) {
+                            createBoundsRect(
+                                UPPER_ROUND_RECT_COMPLICATION_CENTER_FRACTION,
+                                ROUND_RECT_COMPLICATION_SIZE_FRACTION
+                            )
+                        } else {
+                            createBoundsRect(
+                                UPPER_CIRCLE_COMPLICATION_CENTER_FRACTION,
+                                CIRCLE_COMPLICATION_DIAMETER_FRACTION
+                            )
+                        }
+                    },
+                    ComplicationType.values().associateWith { RectF() }
+                )
+            )
+            .setNameResourceId(R.string.upper_complication_screen_name)
+            .setScreenReaderNameResourceId(R.string.upper_complication_screen_reader_name)
+            .build()
 
-    private val lowerComplication = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-        ComplicationID.LOWER.ordinal,
-        canvasComplicationFactory,
-        upperAndLowerComplicationTypes,
-        DefaultComplicationDataSourcePolicy(
-            SystemDataSources.DATA_SOURCE_NEXT_EVENT,
-            ComplicationType.LONG_TEXT
-        ),
-        ComplicationSlotBounds(
-            ComplicationType.values().associateWith {
-                if (it == ComplicationType.LONG_TEXT || it == ComplicationType.NO_DATA) {
-                    createBoundsRect(
-                        LOWER_ROUND_RECT_COMPLICATION_CENTER_FRACTION,
-                        ROUND_RECT_COMPLICATION_SIZE_FRACTION
-                    )
-                } else {
-                    createBoundsRect(
-                        LOWER_CIRCLE_COMPLICATION_CENTER_FRACTION,
-                        CIRCLE_COMPLICATION_DIAMETER_FRACTION
-                    )
-                }
-            },
-            ComplicationType.values().associateWith { RectF() }
-        )
-    ).setNameResourceId(R.string.lower_complication_screen_name)
-        .setScreenReaderNameResourceId(R.string.lower_complication_screen_reader_name).build()
+    private val lowerComplication =
+        ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                ComplicationID.LOWER.ordinal,
+                canvasComplicationFactory,
+                upperAndLowerComplicationTypes,
+                DefaultComplicationDataSourcePolicy(
+                    SystemDataSources.DATA_SOURCE_NEXT_EVENT,
+                    ComplicationType.LONG_TEXT
+                ),
+                ComplicationSlotBounds(
+                    ComplicationType.values().associateWith {
+                        if (it == ComplicationType.LONG_TEXT || it == ComplicationType.NO_DATA) {
+                            createBoundsRect(
+                                LOWER_ROUND_RECT_COMPLICATION_CENTER_FRACTION,
+                                ROUND_RECT_COMPLICATION_SIZE_FRACTION
+                            )
+                        } else {
+                            createBoundsRect(
+                                LOWER_CIRCLE_COMPLICATION_CENTER_FRACTION,
+                                CIRCLE_COMPLICATION_DIAMETER_FRACTION
+                            )
+                        }
+                    },
+                    ComplicationType.values().associateWith { RectF() }
+                )
+            )
+            .setNameResourceId(R.string.lower_complication_screen_name)
+            .setScreenReaderNameResourceId(R.string.lower_complication_screen_reader_name)
+            .build()
 
-    private val backgroundComplication = ComplicationSlot.createBackgroundComplicationSlotBuilder(
-        ComplicationID.BACKGROUND.ordinal,
-        canvasComplicationFactory,
-        listOf(ComplicationType.PHOTO_IMAGE),
-        DefaultComplicationDataSourcePolicy()
-    ).setNameResourceId(R.string.background_complication_screen_name)
-        .setScreenReaderNameResourceId(R.string.background_complication_screen_reader_name).build()
+    private val backgroundComplication =
+        ComplicationSlot.createBackgroundComplicationSlotBuilder(
+                ComplicationID.BACKGROUND.ordinal,
+                canvasComplicationFactory,
+                listOf(ComplicationType.PHOTO_IMAGE),
+                DefaultComplicationDataSourcePolicy()
+            )
+            .setNameResourceId(R.string.background_complication_screen_name)
+            .setScreenReaderNameResourceId(R.string.background_complication_screen_reader_name)
+            .build()
 
     override fun createUserStyleSchema() = UserStyleSchema(listOf(colorStyleSetting))
 
     override fun createComplicationSlotsManager(
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = ComplicationSlotsManager(
-        listOf(
-            leftComplication,
-            rightComplication,
-            upperComplication,
-            lowerComplication,
-            backgroundComplication
-        ),
-        currentUserStyleRepository
-    )
+    ) =
+        ComplicationSlotsManager(
+            listOf(
+                leftComplication,
+                rightComplication,
+                upperComplication,
+                lowerComplication,
+                backgroundComplication
+            ),
+            currentUserStyleRepository
+        )
 
     override suspend fun createWatchFace(
         surfaceHolder: SurfaceHolder,
@@ -264,15 +281,16 @@
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
     ): WatchFace {
-        val renderer = ExampleDigitalWatchCanvasRenderer(
-            surfaceHolder,
-            this,
-            watchFaceStyle,
-            currentUserStyleRepository,
-            watchState,
-            colorStyleSetting,
-            complicationSlotsManager
-        )
+        val renderer =
+            ExampleDigitalWatchCanvasRenderer(
+                surfaceHolder,
+                this,
+                watchFaceStyle,
+                currentUserStyleRepository,
+                watchState,
+                colorStyleSetting,
+                complicationSlotsManager
+            )
 
         // createWatchFace is called on a worker thread but the observers should be called from the
         // UiThread.
@@ -294,9 +312,7 @@
             }
         }
         return WatchFace(WatchFaceType.DIGITAL, renderer)
-            .setComplicationDeniedDialogIntent(
-                Intent(this, ComplicationDeniedActivity::class.java)
-            )
+            .setComplicationDeniedDialogIntent(Intent(this, ComplicationDeniedActivity::class.java))
             .setComplicationRationaleDialogIntent(
                 Intent(this, ComplicationRationalActivity::class.java)
             )
@@ -313,29 +329,29 @@
         watchState: WatchState,
         private val colorStyleSetting: UserStyleSetting.ListUserStyleSetting,
         private val complicationSlotsManager: ComplicationSlotsManager
-    ) : Renderer.CanvasRenderer(
-        surfaceHolder,
-        currentUserStyleRepository,
-        watchState,
-        CanvasType.HARDWARE,
-        INTERACTIVE_UPDATE_RATE_MS,
-        clearWithBackgroundTintBeforeRenderingHighlightLayer = true
-    ) {
+    ) :
+        Renderer.CanvasRenderer(
+            surfaceHolder,
+            currentUserStyleRepository,
+            watchState,
+            CanvasType.HARDWARE,
+            INTERACTIVE_UPDATE_RATE_MS,
+            clearWithBackgroundTintBeforeRenderingHighlightLayer = true
+        ) {
         internal var oldBounds = Rect(0, 0, 0, 0)
 
-        private fun getBaseDigitPaint() = Paint().apply {
-            typeface = Typeface.create(DIGITAL_TYPE_FACE, Typeface.NORMAL)
-            isAntiAlias = true
-        }
+        private fun getBaseDigitPaint() =
+            Paint().apply {
+                typeface = Typeface.create(DIGITAL_TYPE_FACE, Typeface.NORMAL)
+                isAntiAlias = true
+            }
 
         private val digitTextHoursPaint = getBaseDigitPaint()
         private val digitTextMinutesPaint = getBaseDigitPaint()
         private val digitTextSecondsPaint = getBaseDigitPaint()
 
         // Used for drawing the cached digits to the watchface.
-        private val digitBitmapPaint = Paint().apply {
-            isFilterBitmap = true
-        }
+        private val digitBitmapPaint = Paint().apply { isFilterBitmap = true }
 
         // Used for computing text sizes, not directly used for rendering.
         private var digitTextPaint = getBaseDigitPaint()
@@ -357,60 +373,50 @@
         private var prevDrawMode = DrawMode.INTERACTIVE
 
         // Animation played when exiting ambient mode.
-        private val ambientExitAnimator = AnimatorSet().apply {
-            val linearOutSlow = AnimationUtils.loadInterpolator(
-                context,
-                android.R.interpolator.linear_out_slow_in
-            )
-            playTogether(
-                ObjectAnimator.ofFloat(
-                    drawProperties,
-                    DrawProperties.TIME_SCALE,
-                    1.0f
-                ).apply {
-                    duration = AMBIENT_TRANSITION_MS
-                    interpolator = linearOutSlow
-                    setAutoCancel(true)
-                },
-                ObjectAnimator.ofFloat(
-                    drawProperties,
-                    DrawProperties.SECONDS_SCALE,
-                    1.0f
-                ).apply {
-                    duration = AMBIENT_TRANSITION_MS
-                    interpolator = linearOutSlow
-                    setAutoCancel(true)
-                }
-            )
-        }
+        private val ambientExitAnimator =
+            AnimatorSet().apply {
+                val linearOutSlow =
+                    AnimationUtils.loadInterpolator(
+                        context,
+                        android.R.interpolator.linear_out_slow_in
+                    )
+                playTogether(
+                    ObjectAnimator.ofFloat(drawProperties, DrawProperties.TIME_SCALE, 1.0f).apply {
+                        duration = AMBIENT_TRANSITION_MS
+                        interpolator = linearOutSlow
+                        setAutoCancel(true)
+                    },
+                    ObjectAnimator.ofFloat(drawProperties, DrawProperties.SECONDS_SCALE, 1.0f)
+                        .apply {
+                            duration = AMBIENT_TRANSITION_MS
+                            interpolator = linearOutSlow
+                            setAutoCancel(true)
+                        }
+                )
+            }
 
         // Animation played when entering ambient mode.
-        private val ambientEnterAnimator = AnimatorSet().apply {
-            val fastOutLinearIn = AnimationUtils.loadInterpolator(
-                context,
-                android.R.interpolator.fast_out_linear_in
-            )
-            playTogether(
-                ObjectAnimator.ofFloat(
-                    drawProperties,
-                    DrawProperties.TIME_SCALE,
-                    1.0f
-                ).apply {
-                    duration = AMBIENT_TRANSITION_MS
-                    interpolator = fastOutLinearIn
-                    setAutoCancel(true)
-                },
-                ObjectAnimator.ofFloat(
-                    drawProperties,
-                    DrawProperties.SECONDS_SCALE,
-                    0.0f
-                ).apply {
-                    duration = AMBIENT_TRANSITION_MS
-                    interpolator = fastOutLinearIn
-                    setAutoCancel(true)
-                }
-            )
-        }
+        private val ambientEnterAnimator =
+            AnimatorSet().apply {
+                val fastOutLinearIn =
+                    AnimationUtils.loadInterpolator(
+                        context,
+                        android.R.interpolator.fast_out_linear_in
+                    )
+                playTogether(
+                    ObjectAnimator.ofFloat(drawProperties, DrawProperties.TIME_SCALE, 1.0f).apply {
+                        duration = AMBIENT_TRANSITION_MS
+                        interpolator = fastOutLinearIn
+                        setAutoCancel(true)
+                    },
+                    ObjectAnimator.ofFloat(drawProperties, DrawProperties.SECONDS_SCALE, 0.0f)
+                        .apply {
+                            duration = AMBIENT_TRANSITION_MS
+                            interpolator = fastOutLinearIn
+                            setAutoCancel(true)
+                        }
+                )
+            }
 
         // A mapping from digit type to cached bitmap. One bitmap is cached per digit type, and the
         // digit shown in the cached image is stored in [currentCachedDigits].
@@ -432,11 +438,12 @@
                             userStyle[colorStyleSetting]!!.toString()
                         )
 
-                    watchfaceColors = WatchFaceColors(
-                        Color.valueOf(watchFaceColorStyle.activeStyle.primaryColor),
-                        Color.valueOf(watchFaceColorStyle.activeStyle.secondaryColor),
-                        Color.valueOf(Color.DKGRAY)
-                    )
+                    watchfaceColors =
+                        WatchFaceColors(
+                            Color.valueOf(watchFaceColorStyle.activeStyle.primaryColor),
+                            Color.valueOf(watchFaceColorStyle.activeStyle.secondaryColor),
+                            Color.valueOf(Color.DKGRAY)
+                        )
 
                     // Apply the userStyle to the complicationSlots. ComplicationDrawables for each
                     // of the styles are defined in XML so we need to replace the complication's
@@ -475,32 +482,35 @@
         }
 
         private fun applyColorStyleAndDrawMode(drawMode: DrawMode) {
-            digitTextHoursPaint.color = when (drawMode) {
-                DrawMode.INTERACTIVE -> watchFaceColorStyle.activeStyle.primaryColor
-                DrawMode.LOW_BATTERY_INTERACTIVE ->
-                    multiplyColor(watchFaceColorStyle.activeStyle.primaryColor, 0.6f)
+            digitTextHoursPaint.color =
+                when (drawMode) {
+                    DrawMode.INTERACTIVE -> watchFaceColorStyle.activeStyle.primaryColor
+                    DrawMode.LOW_BATTERY_INTERACTIVE ->
+                        multiplyColor(watchFaceColorStyle.activeStyle.primaryColor, 0.6f)
+                    DrawMode.MUTE ->
+                        multiplyColor(watchFaceColorStyle.activeStyle.primaryColor, 0.8f)
+                    DrawMode.AMBIENT -> watchFaceColorStyle.ambientStyle.primaryColor
+                }
 
-                DrawMode.MUTE -> multiplyColor(watchFaceColorStyle.activeStyle.primaryColor, 0.8f)
-                DrawMode.AMBIENT -> watchFaceColorStyle.ambientStyle.primaryColor
-            }
+            digitTextMinutesPaint.color =
+                when (drawMode) {
+                    DrawMode.INTERACTIVE -> watchFaceColorStyle.activeStyle.primaryColor
+                    DrawMode.LOW_BATTERY_INTERACTIVE ->
+                        multiplyColor(watchFaceColorStyle.activeStyle.primaryColor, 0.6f)
+                    DrawMode.MUTE ->
+                        multiplyColor(watchFaceColorStyle.activeStyle.primaryColor, 0.8f)
+                    DrawMode.AMBIENT -> watchFaceColorStyle.ambientStyle.primaryColor
+                }
 
-            digitTextMinutesPaint.color = when (drawMode) {
-                DrawMode.INTERACTIVE -> watchFaceColorStyle.activeStyle.primaryColor
-                DrawMode.LOW_BATTERY_INTERACTIVE ->
-                    multiplyColor(watchFaceColorStyle.activeStyle.primaryColor, 0.6f)
-
-                DrawMode.MUTE -> multiplyColor(watchFaceColorStyle.activeStyle.primaryColor, 0.8f)
-                DrawMode.AMBIENT -> watchFaceColorStyle.ambientStyle.primaryColor
-            }
-
-            digitTextSecondsPaint.color = when (drawMode) {
-                DrawMode.INTERACTIVE -> watchFaceColorStyle.activeStyle.secondaryColor
-                DrawMode.LOW_BATTERY_INTERACTIVE ->
-                    multiplyColor(watchFaceColorStyle.activeStyle.secondaryColor, 0.6f)
-
-                DrawMode.MUTE -> multiplyColor(watchFaceColorStyle.activeStyle.secondaryColor, 0.8f)
-                DrawMode.AMBIENT -> watchFaceColorStyle.ambientStyle.secondaryColor
-            }
+            digitTextSecondsPaint.color =
+                when (drawMode) {
+                    DrawMode.INTERACTIVE -> watchFaceColorStyle.activeStyle.secondaryColor
+                    DrawMode.LOW_BATTERY_INTERACTIVE ->
+                        multiplyColor(watchFaceColorStyle.activeStyle.secondaryColor, 0.6f)
+                    DrawMode.MUTE ->
+                        multiplyColor(watchFaceColorStyle.activeStyle.secondaryColor, 0.8f)
+                    DrawMode.AMBIENT -> watchFaceColorStyle.ambientStyle.secondaryColor
+                }
 
             if (prevDrawMode != drawMode) {
                 prevDrawMode = drawMode
@@ -530,10 +540,11 @@
                 val animationStartFraction =
                     DIGIT_ANIMATION_START_TIME_FRACTION[DigitMode.OUTGOING]!!
                 this.interactiveDrawModeUpdateDelayMillis =
-                    if (secondProgress < animationStartFraction &&
-                        !ambientEnterAnimator.isRunning
+                    if (
+                        secondProgress < animationStartFraction && !ambientEnterAnimator.isRunning
                     ) {
-                        // The seconds only animate part of the time so we can sleep until the seconds next need to
+                        // The seconds only animate part of the time so we can sleep until the
+                        // seconds next need to
                         // animate, which improves battery life.
                         max(
                             INTERACTIVE_UPDATE_RATE_MS,
@@ -544,22 +555,22 @@
                     }
 
                 // Move the left position to the left if there are fewer than two hour digits, to
-                // ensure it is centered. If the clock is in transition from one to two hour digits or
+                // ensure it is centered. If the clock is in transition from one to two hour digits
+                // or
                 // vice versa, interpolate to animate the clock's position.
-                // Move the left position to the left if there are fewer than two hour digits, to ensure
+                // Move the left position to the left if there are fewer than two hour digits, to
+                // ensure
                 // it is centered. If the clock is in transition from one to two hour digits or
                 // vice versa, interpolate to animate the clock's position.
-                val centeringAdjustment = (
-                    getInterpolatedValue(
+                val centeringAdjustment =
+                    (getInterpolatedValue(
                         (2 - currentDigitStrings.getNumberOfHoursDigits()).toFloat(),
                         (2 - nextDigitStrings.getNumberOfHoursDigits()).toFloat(),
                         POSITION_ANIMATION_START_TIME,
                         POSITION_ANIMATION_END_TIME,
                         secondProgress,
                         CENTERING_ADJUSTMENT_INTERPOLATOR
-                    ) *
-                        digitWidth
-                    )
+                    ) * digitWidth)
 
                 // This total width assumes two hours digits.
                 val totalWidth = 2f * digitWidth + gapWidth + 2f * smallDigitWidth
@@ -569,8 +580,10 @@
                 val wholeTimeSaveCount = canvas.save()
                 try {
                     canvas.scale(
-                        drawProperties.timeScale, drawProperties.timeScale,
-                        clockBounds.exactCenterX(), clockBounds.exactCenterY()
+                        drawProperties.timeScale,
+                        drawProperties.timeScale,
+                        clockBounds.exactCenterX(),
+                        clockBounds.exactCenterY()
                     )
 
                     // Draw hours.
@@ -617,8 +630,9 @@
                     // Scale the seconds if they're not fully showing, in and out of ambient for
                     // example.
                     val scaleSeconds = drawProperties.secondsScale < 1.0f
-                    if (drawProperties.secondsScale > 0f &&
-                        (renderParameters.drawMode != DrawMode.AMBIENT || scaleSeconds)
+                    if (
+                        drawProperties.secondsScale > 0f &&
+                            (renderParameters.drawMode != DrawMode.AMBIENT || scaleSeconds)
                     ) {
                         val restoreCount = canvas.save()
                         if (scaleSeconds) {
@@ -689,17 +703,19 @@
                     complicationSlotsManager[it]!!.isActiveAt(zonedDateTime.toInstant())
                 }
 
-            val marginX = if (hasHorizontalComplication) {
-                (MARGIN_FRACTION_WITH_COMPLICATION.x * bounds.width().toFloat()).toInt()
-            } else {
-                (MARGIN_FRACTION_WITHOUT_COMPLICATION.x * bounds.width().toFloat()).toInt()
-            }
+            val marginX =
+                if (hasHorizontalComplication) {
+                    (MARGIN_FRACTION_WITH_COMPLICATION.x * bounds.width().toFloat()).toInt()
+                } else {
+                    (MARGIN_FRACTION_WITHOUT_COMPLICATION.x * bounds.width().toFloat()).toInt()
+                }
 
-            val marginY = if (hasVerticalComplication) {
-                (MARGIN_FRACTION_WITH_COMPLICATION.y * bounds.height().toFloat()).toInt()
-            } else {
-                (MARGIN_FRACTION_WITHOUT_COMPLICATION.y * bounds.height().toFloat()).toInt()
-            }
+            val marginY =
+                if (hasVerticalComplication) {
+                    (MARGIN_FRACTION_WITH_COMPLICATION.y * bounds.height().toFloat()).toInt()
+                } else {
+                    (MARGIN_FRACTION_WITHOUT_COMPLICATION.y * bounds.height().toFloat()).toInt()
+                }
 
             clockBounds.set(
                 bounds.left + marginX,
@@ -725,7 +741,8 @@
 
             // Calculate the total width fraction base on the text height.
             val totalWidthFraction: Float =
-                (2f * DIGIT_WIDTH_FRACTION) + (DIGIT_WIDTH_FRACTION * GAP_WIDTH_FRACTION) +
+                (2f * DIGIT_WIDTH_FRACTION) +
+                    (DIGIT_WIDTH_FRACTION * GAP_WIDTH_FRACTION) +
                     (2f * SMALL_DIGIT_SIZE_FRACTION * SMALL_DIGIT_WIDTH_FRACTION)
 
             textSize =
@@ -758,17 +775,14 @@
         }
 
         private fun drawBackground(canvas: Canvas) {
-            val backgroundColor = if (renderParameters.drawMode == DrawMode.AMBIENT) {
-                watchFaceColorStyle.ambientStyle.backgroundColor
-            } else {
-                watchFaceColorStyle.activeStyle.backgroundColor
-            }
+            val backgroundColor =
+                if (renderParameters.drawMode == DrawMode.AMBIENT) {
+                    watchFaceColorStyle.ambientStyle.backgroundColor
+                } else {
+                    watchFaceColorStyle.activeStyle.backgroundColor
+                }
             canvas.drawColor(
-                getRGBColor(
-                    backgroundColor,
-                    drawProperties.backgroundAlpha,
-                    Color.BLACK
-                )
+                getRGBColor(backgroundColor, drawProperties.backgroundAlpha, Color.BLACK)
             )
         }
 
@@ -777,11 +791,7 @@
             if (renderParameters.drawMode != DrawMode.AMBIENT) {
                 complicationSlotsManager[ComplicationID.BACKGROUND.ordinal]?.let {
                     if (it.complicationData.value.type != ComplicationType.NO_DATA) {
-                        it.render(
-                            canvas,
-                            zonedDateTime,
-                            renderParameters
-                        )
+                        it.render(canvas, zonedDateTime, renderParameters)
                     }
                 }
             }
@@ -855,7 +865,10 @@
             digitMode: DigitMode
         ) {
             getDigitDrawProperties(
-                secondProgress, getTimeOffsetSeconds(digitType), digitMode, digitDrawProperties
+                secondProgress,
+                getTimeOffsetSeconds(digitType),
+                digitMode,
+                digitDrawProperties
             )
 
             if (!digitDrawProperties.shouldDraw) {
@@ -875,11 +888,7 @@
             canvas.restoreToCount(restoreCount)
         }
 
-        private fun createBitmap(
-            width: Int,
-            height: Int,
-            digitType: DigitType
-        ): Bitmap {
+        private fun createBitmap(width: Int, height: Int, digitType: DigitType): Bitmap {
             val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
             digitBitmapCache.put(digitType.ordinal, bitmap)
             return bitmap
@@ -894,19 +903,20 @@
             val height: Int
             val paint: Paint
             when (digitType) {
-                DigitType.HOUR_TENS, DigitType.HOUR_UNITS -> {
+                DigitType.HOUR_TENS,
+                DigitType.HOUR_UNITS -> {
                     width = digitWidth
                     height = digitHeight
                     paint = digitTextHoursPaint
                 }
-
-                DigitType.MINUTE_TENS, DigitType.MINUTE_UNITS -> {
+                DigitType.MINUTE_TENS,
+                DigitType.MINUTE_UNITS -> {
                     width = smallDigitWidth
                     height = smallDigitHeight
                     paint = digitTextMinutesPaint
                 }
-
-                DigitType.SECOND_TENS, DigitType.SECOND_UNITS -> {
+                DigitType.SECOND_TENS,
+                DigitType.SECOND_UNITS -> {
                     width = smallDigitWidth
                     height = smallDigitHeight
                     paint = digitTextSecondsPaint
@@ -945,7 +955,8 @@
         BACKGROUND
     }
 
-    // Changing digits are animated. This enum is used to label the start and end animation parameters.
+    // Changing digits are animated. This enum is used to label the start and end animation
+    // parameters.
     private enum class DigitMode {
         OUTGOING,
         INCOMING
@@ -993,7 +1004,9 @@
             secondUnits = getUnitsDigitString(secondsValue)
         }
 
-        /** Returns a string representing the specified digit of the time represented by this object. */
+        /**
+         * Returns a string representing the specified digit of the time represented by this object.
+         */
         fun get(digitType: DigitType): String {
             return when (digitType) {
                 DigitType.HOUR_TENS -> hourTens
@@ -1006,8 +1019,8 @@
         }
 
         /**
-         * Returns the number of hour digits in this object. If the representation is 24-hour, this will
-         * always return 2. If 12-hour, this will return 1 or 2.
+         * Returns the number of hour digits in this object. If the representation is 24-hour, this
+         * will always return 2. If 12-hour, this will return 1 or 2.
          */
         fun getNumberOfHoursDigits(): Int {
             return if (hourTens == "") 1 else 2
@@ -1022,7 +1035,8 @@
             if (value < 10 && !padWithZeroes) {
                 return ""
             }
-            // We don't use toString() because during draw calls we don't want to avoid allocating objects.
+            // We don't use toString() because during draw calls we don't want to avoid allocating
+            // objects.
             return DIGITS[(value / 10) % 10]
         }
 
@@ -1031,7 +1045,8 @@
          * value}.
          */
         private fun getUnitsDigitString(value: Int): String {
-            // We don't use toString() because during draw calls we don't want to avoid allocating objects.
+            // We don't use toString() because during draw calls we don't want to avoid allocating
+            // objects.
             return DIGITS[value % 10]
         }
     }
@@ -1049,25 +1064,27 @@
         var secondsScale: Float = 1f
     ) {
         companion object {
-            val TIME_SCALE = object : FloatProperty<DrawProperties>("timeScale") {
-                override fun setValue(obj: DrawProperties, value: Float) {
-                    obj.timeScale = value
+            val TIME_SCALE =
+                object : FloatProperty<DrawProperties>("timeScale") {
+                    override fun setValue(obj: DrawProperties, value: Float) {
+                        obj.timeScale = value
+                    }
+
+                    override fun get(obj: DrawProperties): Float {
+                        return obj.timeScale
+                    }
                 }
 
-                override fun get(obj: DrawProperties): Float {
-                    return obj.timeScale
-                }
-            }
+            val SECONDS_SCALE =
+                object : FloatProperty<DrawProperties>("secondsScale") {
+                    override fun setValue(obj: DrawProperties, value: Float) {
+                        obj.secondsScale = value
+                    }
 
-            val SECONDS_SCALE = object : FloatProperty<DrawProperties>("secondsScale") {
-                override fun setValue(obj: DrawProperties, value: Float) {
-                    obj.secondsScale = value
+                    override fun get(obj: DrawProperties): Float {
+                        return obj.secondsScale
+                    }
                 }
-
-                override fun get(obj: DrawProperties): Float {
-                    return obj.secondsScale
-                }
-            }
         }
     }
 
@@ -1102,18 +1119,17 @@
         private val MARGIN_FRACTION_WITHOUT_COMPLICATION = Vec2f(0.2f, 0.2f)
         private val MARGIN_FRACTION_WITH_COMPLICATION = Vec2f(0.4f, 0.4f)
 
-        private val VERTICAL_COMPLICATION_IDS = arrayOf(
-            ComplicationID.UPPER.ordinal,
-            ComplicationID.LOWER.ordinal
-        )
-        private val HORIZONTAL_COMPLICATION_IDS = arrayOf(
-            ComplicationID.LEFT.ordinal,
-            ComplicationID.RIGHT.ordinal
-        )
-        private val FOREGROUND_COMPLICATION_IDS = arrayOf(
-            ComplicationID.UPPER.ordinal, ComplicationID.RIGHT.ordinal,
-            ComplicationID.LOWER.ordinal, ComplicationID.LEFT.ordinal
-        )
+        private val VERTICAL_COMPLICATION_IDS =
+            arrayOf(ComplicationID.UPPER.ordinal, ComplicationID.LOWER.ordinal)
+        private val HORIZONTAL_COMPLICATION_IDS =
+            arrayOf(ComplicationID.LEFT.ordinal, ComplicationID.RIGHT.ordinal)
+        private val FOREGROUND_COMPLICATION_IDS =
+            arrayOf(
+                ComplicationID.UPPER.ordinal,
+                ComplicationID.RIGHT.ordinal,
+                ComplicationID.LOWER.ordinal,
+                ComplicationID.LEFT.ordinal
+            )
 
         // The name of the font used for drawing the text in the digit watch face.
         private const val DIGITAL_TYPE_FACE = "sans-serif-condensed-light"
@@ -1121,18 +1137,21 @@
         // The width of the large digit bitmaps, as a fraction of their height.
         private const val DIGIT_WIDTH_FRACTION = 0.65f
 
-        // The height of the small digits (used for minutes and seconds), given as a fraction of the  height
+        // The height of the small digits (used for minutes and seconds), given as a fraction of the
+        //  height
         // of the large digits.
         private const val SMALL_DIGIT_SIZE_FRACTION = 0.45f
 
         // The width of the small digit bitmaps, as a fraction of their height.
         private const val SMALL_DIGIT_WIDTH_FRACTION = 0.7f
 
-        // The padding at the top and bottom of the digit bitmaps, given as a fraction of the height.
+        // The padding at the top and bottom of the digit bitmaps, given as a fraction of the
+        // height.
         // Needed as some characters may ascend or descend slightly (e.g. "8").
         private const val DIGIT_PADDING_FRACTION = 0.05f
 
-        // The gap between the hours and the minutes/seconds, given as a fraction of the width of the large
+        // The gap between the hours and the minutes/seconds, given as a fraction of the width of
+        // the large
         // digits.
         private const val GAP_WIDTH_FRACTION = 0.1f
 
@@ -1145,53 +1164,53 @@
         // (So 0.5 means that the animation of that digit will begin half-way through the second).
         // Note that because we only cache one digit of each type, the current and next times must
         // not overlap.
-        private val DIGIT_ANIMATION_START_TIME_FRACTION = mapOf(
-            DigitMode.OUTGOING to 0.5f,
-            DigitMode.INCOMING to 0.667f
-        )
-        private val DIGIT_ANIMATION_END_TIME = mapOf(
-            DigitMode.OUTGOING to 0.667f,
-            DigitMode.INCOMING to 1f
-        )
+        private val DIGIT_ANIMATION_START_TIME_FRACTION =
+            mapOf(DigitMode.OUTGOING to 0.5f, DigitMode.INCOMING to 0.667f)
+        private val DIGIT_ANIMATION_END_TIME =
+            mapOf(DigitMode.OUTGOING to 0.667f, DigitMode.INCOMING to 1f)
         private const val POSITION_ANIMATION_START_TIME = 0.0833f
         private const val POSITION_ANIMATION_END_TIME = 0.5833f
 
-        // Parameters governing the animation of the current and next digits. NB Scale is a size multiplier.
-        // The first index is the values for the outgoing digit, and the second index for the incoming
-        // digit. If seconds are changing from 1 -> 2 for example, the 1 will scale from 1f to 0.65f, and
+        // Parameters governing the animation of the current and next digits. NB Scale is a size
+        // multiplier.
+        // The first index is the values for the outgoing digit, and the second index for the
+        // incoming
+        // digit. If seconds are changing from 1 -> 2 for example, the 1 will scale from 1f to
+        // 0.65f, and
         // rotate from 0f to 82f. The 2 will scale from 0.65f to 1f, and rotate from -97f to 0f.
         private val DIGIT_SCALE_START = mapOf(DigitMode.OUTGOING to 1f, DigitMode.INCOMING to 0.65f)
         private val DIGIT_SCALE_END = mapOf(DigitMode.OUTGOING to 0.65f, DigitMode.INCOMING to 1f)
-        private val DIGIT_ROTATE_START_DEGREES = mapOf(
-            DigitMode.OUTGOING to 0f,
-            DigitMode.INCOMING to -97f
-        )
+        private val DIGIT_ROTATE_START_DEGREES =
+            mapOf(DigitMode.OUTGOING to 0f, DigitMode.INCOMING to -97f)
         private val DIGIT_ROTATE_END_DEGREES =
             mapOf(DigitMode.OUTGOING to 82f, DigitMode.INCOMING to 0f)
         private val DIGIT_OPACITY_START =
             mapOf(DigitMode.OUTGOING to 1f, DigitMode.INCOMING to 0.07f)
         private val DIGIT_OPACITY_END = mapOf(DigitMode.OUTGOING to 0f, DigitMode.INCOMING to 1f)
 
-        // The offset used to stagger the animation when multiple digits are animating at the same time.
+        // The offset used to stagger the animation when multiple digits are animating at the same
+        // time.
         private const val TIME_OFFSET_SECONDS_PER_DIGIT_TYPE = -5 / 60f
 
         // The duration of the ambient mode change animation.
         private const val AMBIENT_TRANSITION_MS = 333L
 
-        private val DIGIT_SCALE_INTERPOLATOR = mapOf(
-            DigitMode.OUTGOING to PathInterpolator(0.4f, 0f, 0.67f, 1f),
-            DigitMode.INCOMING to PathInterpolator(0.33f, 0f, 0.2f, 1f)
-        )
-        private val DIGIT_ROTATION_INTERPOLATOR = mapOf(
-            DigitMode.OUTGOING to PathInterpolator(0.57f, 0f, 0.73f, 0.49f),
-            DigitMode.INCOMING to PathInterpolator(0.15f, 0.49f, 0.37f, 1f)
-        )
-        private val DIGIT_OPACITY_INTERPOLATOR = mapOf(
-            DigitMode.OUTGOING to PathInterpolator(0.4f, 0f, 1f, 1f),
-            DigitMode.INCOMING to PathInterpolator(0f, 0f, 0.2f, 1f)
-        )
-        private val CENTERING_ADJUSTMENT_INTERPOLATOR =
-            PathInterpolator(0.4f, 0f, 0.2f, 1f)
+        private val DIGIT_SCALE_INTERPOLATOR =
+            mapOf(
+                DigitMode.OUTGOING to PathInterpolator(0.4f, 0f, 0.67f, 1f),
+                DigitMode.INCOMING to PathInterpolator(0.33f, 0f, 0.2f, 1f)
+            )
+        private val DIGIT_ROTATION_INTERPOLATOR =
+            mapOf(
+                DigitMode.OUTGOING to PathInterpolator(0.57f, 0f, 0.73f, 0.49f),
+                DigitMode.INCOMING to PathInterpolator(0.15f, 0.49f, 0.37f, 1f)
+            )
+        private val DIGIT_OPACITY_INTERPOLATOR =
+            mapOf(
+                DigitMode.OUTGOING to PathInterpolator(0.4f, 0f, 1f, 1f),
+                DigitMode.INCOMING to PathInterpolator(0f, 0f, 0.2f, 1f)
+            )
+        private val CENTERING_ADJUSTMENT_INTERPOLATOR = PathInterpolator(0.4f, 0f, 0.2f, 1f)
 
         @ColorInt
         private fun colorRgb(red: Float, green: Float, blue: Float) =
@@ -1207,8 +1226,8 @@
         private fun blueFraction(@ColorInt color: Int) = Color.blue(color).toFloat() / 255.0f
 
         /**
-         * Returns an RGB color that has the same effect as drawing `color` with `alphaFraction` over a
-         * `backgroundColor` background.
+         * Returns an RGB color that has the same effect as drawing `color` with `alphaFraction`
+         * over a `backgroundColor` background.
          *
          * @param color the foreground color
          * @param alphaFraction the fraction of the alpha value, range from 0 to 1
@@ -1226,7 +1245,7 @@
             )
         }
 
-        /** Returns a linear interpolation between a and b using the scalar s.  */
+        /** Returns a linear interpolation between a and b using the scalar s. */
         private fun lerp(a: Float, b: Float, s: Float) = a + s * (b - a)
 
         /**
@@ -1245,11 +1264,12 @@
             currentTime: Float,
             interpolator: TimeInterpolator
         ): Float {
-            val progress = when {
-                currentTime < startTime -> 0f
-                currentTime > endTime -> 1f
-                else -> interpolator.getInterpolation(lerpInv(startTime, endTime, currentTime))
-            }
+            val progress =
+                when {
+                    currentTime < startTime -> 0f
+                    currentTime > endTime -> 1f
+                    else -> interpolator.getInterpolation(lerpInv(startTime, endTime, currentTime))
+                }
             return lerp(startValue, endValue, progress)
         }
 
@@ -1257,8 +1277,8 @@
          * Sets the [DigitDrawProperties] that should be used for drawing, given the specified
          * parameters.
          *
-         * @param secondProgress the sub-second part of the current time, where 0 means the current second
-         * has just begun, and 1 means the current second has just ended
+         * @param secondProgress the sub-second part of the current time, where 0 means the current
+         *   second has just begun, and 1 means the current second has just ended
          * @param offsetSeconds a value added to the start and end time of the animations
          * @param digitMode whether the digit is OUTGOING or INCOMING
          * @param output the [DigitDrawProperties] that will be set
@@ -1271,35 +1291,39 @@
         ) {
             val startTime = DIGIT_ANIMATION_START_TIME_FRACTION[digitMode]!! + offsetSeconds
             val endTime = DIGIT_ANIMATION_END_TIME[digitMode]!! + offsetSeconds
-            output.shouldDraw = if (digitMode == DigitMode.OUTGOING) {
-                secondProgress < endTime
-            } else {
-                secondProgress >= startTime
-            }
-            output.scale = getInterpolatedValue(
-                DIGIT_SCALE_START[digitMode]!!,
-                DIGIT_SCALE_END[digitMode]!!,
-                startTime,
-                endTime,
-                secondProgress,
-                DIGIT_SCALE_INTERPOLATOR[digitMode]!!
-            )
-            output.rotation = getInterpolatedValue(
-                DIGIT_ROTATE_START_DEGREES[digitMode]!!,
-                DIGIT_ROTATE_END_DEGREES[digitMode]!!,
-                startTime,
-                endTime,
-                secondProgress,
-                DIGIT_ROTATION_INTERPOLATOR[digitMode]!!
-            )
-            output.opacity = getInterpolatedValue(
-                DIGIT_OPACITY_START[digitMode]!!,
-                DIGIT_OPACITY_END[digitMode]!!,
-                startTime,
-                endTime,
-                secondProgress,
-                DIGIT_OPACITY_INTERPOLATOR[digitMode]!!
-            )
+            output.shouldDraw =
+                if (digitMode == DigitMode.OUTGOING) {
+                    secondProgress < endTime
+                } else {
+                    secondProgress >= startTime
+                }
+            output.scale =
+                getInterpolatedValue(
+                    DIGIT_SCALE_START[digitMode]!!,
+                    DIGIT_SCALE_END[digitMode]!!,
+                    startTime,
+                    endTime,
+                    secondProgress,
+                    DIGIT_SCALE_INTERPOLATOR[digitMode]!!
+                )
+            output.rotation =
+                getInterpolatedValue(
+                    DIGIT_ROTATE_START_DEGREES[digitMode]!!,
+                    DIGIT_ROTATE_END_DEGREES[digitMode]!!,
+                    startTime,
+                    endTime,
+                    secondProgress,
+                    DIGIT_ROTATION_INTERPOLATOR[digitMode]!!
+                )
+            output.opacity =
+                getInterpolatedValue(
+                    DIGIT_OPACITY_START[digitMode]!!,
+                    DIGIT_OPACITY_END[digitMode]!!,
+                    startTime,
+                    endTime,
+                    secondProgress,
+                    DIGIT_OPACITY_INTERPOLATOR[digitMode]!!
+                )
         }
 
         private fun getTimeOffsetSeconds(digitType: DigitType): Float {
@@ -1323,10 +1347,7 @@
             )
         }
 
-        private fun createBoundsRect(
-            centerFraction: PointF,
-            size: Vec2f
-        ): RectF {
+        private fun createBoundsRect(centerFraction: PointF, size: Vec2f): RectF {
             val halfWidth = size.x / 2.0f
             val halfHeight = size.y / 2.0f
             return RectF(
diff --git a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleHierarchicalStyleWatchFaceService.kt b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleHierarchicalStyleWatchFaceService.kt
index 766c9e5..23be167 100644
--- a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleHierarchicalStyleWatchFaceService.kt
+++ b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleHierarchicalStyleWatchFaceService.kt
@@ -85,35 +85,36 @@
             R.string.digital_complications_setting,
             R.string.digital_complications_setting_description,
             icon = null,
-            complicationConfig = listOf(
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("On"),
-                    resources,
-                    R.string.digital_complication_on_screen_name,
-                    Icon.createWithResource(this, R.drawable.on),
-                    listOf(
-                        ComplicationSlotOverlay(
-                            COMPLICATION1_ID,
-                            enabled = true,
-                            complicationSlotBounds =
-                                ComplicationSlotBounds(RectF(0.1f, 0.4f, 0.3f, 0.6f))
+            complicationConfig =
+                listOf(
+                    ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        UserStyleSetting.Option.Id("On"),
+                        resources,
+                        R.string.digital_complication_on_screen_name,
+                        Icon.createWithResource(this, R.drawable.on),
+                        listOf(
+                            ComplicationSlotOverlay(
+                                COMPLICATION1_ID,
+                                enabled = true,
+                                complicationSlotBounds =
+                                    ComplicationSlotBounds(RectF(0.1f, 0.4f, 0.3f, 0.6f))
+                            ),
+                            ComplicationSlotOverlay(COMPLICATION2_ID, enabled = false),
+                            ComplicationSlotOverlay(COMPLICATION3_ID, enabled = false)
                         ),
-                        ComplicationSlotOverlay(COMPLICATION2_ID, enabled = false),
-                        ComplicationSlotOverlay(COMPLICATION3_ID, enabled = false)
                     ),
-                ),
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("Off"),
-                    resources,
-                    R.string.digital_complication_off_screen_name,
-                    Icon.createWithResource(this, R.drawable.off),
-                    listOf(
-                        ComplicationSlotOverlay(COMPLICATION1_ID, enabled = false),
-                        ComplicationSlotOverlay(COMPLICATION2_ID, enabled = false),
-                        ComplicationSlotOverlay(COMPLICATION3_ID, enabled = false)
+                    ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        UserStyleSetting.Option.Id("Off"),
+                        resources,
+                        R.string.digital_complication_off_screen_name,
+                        Icon.createWithResource(this, R.drawable.off),
+                        listOf(
+                            ComplicationSlotOverlay(COMPLICATION1_ID, enabled = false),
+                            ComplicationSlotOverlay(COMPLICATION2_ID, enabled = false),
+                            ComplicationSlotOverlay(COMPLICATION3_ID, enabled = false)
+                        )
                     )
-                )
-            ),
+                ),
             listOf(WatchFaceLayer.COMPLICATIONS)
         )
     }
@@ -197,41 +198,42 @@
             R.string.watchface_complications_setting,
             R.string.watchface_complications_setting_description,
             icon = null,
-            complicationConfig = listOf(
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("One"),
-                    resources,
-                    R.string.analog_complication_one_screen_name,
-                    Icon.createWithResource(this, R.drawable.one),
-                    listOf(
-                        ComplicationSlotOverlay(COMPLICATION1_ID, enabled = true),
-                        ComplicationSlotOverlay(COMPLICATION2_ID, enabled = false),
-                        ComplicationSlotOverlay(COMPLICATION3_ID, enabled = false)
+            complicationConfig =
+                listOf(
+                    ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        UserStyleSetting.Option.Id("One"),
+                        resources,
+                        R.string.analog_complication_one_screen_name,
+                        Icon.createWithResource(this, R.drawable.one),
+                        listOf(
+                            ComplicationSlotOverlay(COMPLICATION1_ID, enabled = true),
+                            ComplicationSlotOverlay(COMPLICATION2_ID, enabled = false),
+                            ComplicationSlotOverlay(COMPLICATION3_ID, enabled = false)
+                        )
+                    ),
+                    ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        UserStyleSetting.Option.Id("Two"),
+                        resources,
+                        R.string.analog_complication_two_screen_name,
+                        Icon.createWithResource(this, R.drawable.two),
+                        listOf(
+                            ComplicationSlotOverlay(COMPLICATION1_ID, enabled = true),
+                            ComplicationSlotOverlay(COMPLICATION2_ID, enabled = true),
+                            ComplicationSlotOverlay(COMPLICATION3_ID, enabled = false)
+                        )
+                    ),
+                    ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
+                        UserStyleSetting.Option.Id("Three"),
+                        resources,
+                        R.string.analog_complication_three_screen_name,
+                        Icon.createWithResource(this, R.drawable.three),
+                        listOf(
+                            ComplicationSlotOverlay(COMPLICATION1_ID, enabled = true),
+                            ComplicationSlotOverlay(COMPLICATION2_ID, enabled = true),
+                            ComplicationSlotOverlay(COMPLICATION3_ID, enabled = true)
+                        )
                     )
                 ),
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("Two"),
-                    resources,
-                    R.string.analog_complication_two_screen_name,
-                    Icon.createWithResource(this, R.drawable.two),
-                    listOf(
-                        ComplicationSlotOverlay(COMPLICATION1_ID, enabled = true),
-                        ComplicationSlotOverlay(COMPLICATION2_ID, enabled = true),
-                        ComplicationSlotOverlay(COMPLICATION3_ID, enabled = false)
-                    )
-                ),
-                ComplicationSlotsUserStyleSetting.ComplicationSlotsOption(
-                    UserStyleSetting.Option.Id("Three"),
-                    resources,
-                    R.string.analog_complication_three_screen_name,
-                    Icon.createWithResource(this, R.drawable.three),
-                    listOf(
-                        ComplicationSlotOverlay(COMPLICATION1_ID, enabled = true),
-                        ComplicationSlotOverlay(COMPLICATION2_ID, enabled = true),
-                        ComplicationSlotOverlay(COMPLICATION3_ID, enabled = true)
-                    )
-                )
-            ),
             listOf(WatchFaceLayer.COMPLICATIONS)
         )
     }
@@ -243,11 +245,8 @@
             R.string.style_digital_watch,
             R.string.style_digital_watch_screen_reader,
             icon = Icon.createWithResource(this, R.drawable.d),
-            childSettings = listOf(
-                digitalClockStyleSetting,
-                colorStyleSetting,
-                digitalComplicationSettings
-            )
+            childSettings =
+                listOf(digitalClockStyleSetting, colorStyleSetting, digitalComplicationSettings)
         )
     }
 
@@ -258,11 +257,7 @@
             R.string.style_analog_watch,
             R.string.style_analog_watch_screen_reader,
             icon = Icon.createWithResource(this, R.drawable.a),
-            childSettings = listOf(
-                colorStyleSetting,
-                drawHoursSetting,
-                analogComplicationSettings
-            )
+            childSettings = listOf(colorStyleSetting, drawHoursSetting, analogComplicationSettings)
         )
     }
 
@@ -278,95 +273,102 @@
         )
     }
 
-    public override fun createUserStyleSchema() = UserStyleSchema(
-        listOf(
-            watchFaceType,
-            digitalClockStyleSetting,
-            colorStyleSetting,
-            drawHoursSetting,
-            digitalComplicationSettings,
-            analogComplicationSettings
+    public override fun createUserStyleSchema() =
+        UserStyleSchema(
+            listOf(
+                watchFaceType,
+                digitalClockStyleSetting,
+                colorStyleSetting,
+                drawHoursSetting,
+                digitalComplicationSettings,
+                analogComplicationSettings
+            )
         )
-    )
 
-    private val watchFaceStyle by lazy {
-        WatchFaceColorStyle.create(this, "red_style")
-    }
+    private val watchFaceStyle by lazy { WatchFaceColorStyle.create(this, "red_style") }
 
     public override fun createComplicationSlotsManager(
         currentUserStyleRepository: CurrentUserStyleRepository
     ): ComplicationSlotsManager {
-        val canvasComplicationFactory =
-            CanvasComplicationFactory { watchState, listener ->
-                CanvasComplicationDrawable(
-                    watchFaceStyle.getDrawable(this@ExampleHierarchicalStyleWatchFaceService)!!,
-                    watchState,
-                    listener
+        val canvasComplicationFactory = CanvasComplicationFactory { watchState, listener ->
+            CanvasComplicationDrawable(
+                watchFaceStyle.getDrawable(this@ExampleHierarchicalStyleWatchFaceService)!!,
+                watchState,
+                listener
+            )
+        }
+
+        val complicationOne =
+            ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                    COMPLICATION1_ID,
+                    canvasComplicationFactory,
+                    listOf(
+                        ComplicationType.RANGED_VALUE,
+                        ComplicationType.GOAL_PROGRESS,
+                        ComplicationType.WEIGHTED_ELEMENTS,
+                        ComplicationType.SHORT_TEXT,
+                        ComplicationType.MONOCHROMATIC_IMAGE,
+                        ComplicationType.SMALL_IMAGE
+                    ),
+                    DefaultComplicationDataSourcePolicy(
+                        SystemDataSources.DATA_SOURCE_WATCH_BATTERY,
+                        ComplicationType.RANGED_VALUE
+                    ),
+                    ComplicationSlotBounds(RectF(0.6f, 0.1f, 0.8f, 0.3f))
                 )
-            }
+                .setNameResourceId(R.string.hierarchical_complication1_screen_name)
+                .setScreenReaderNameResourceId(
+                    R.string.hierarchical_complication1_screen_reader_name
+                )
+                .build()
 
-        val complicationOne = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            COMPLICATION1_ID,
-            canvasComplicationFactory,
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.GOAL_PROGRESS,
-                ComplicationType.WEIGHTED_ELEMENTS,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy(
-                SystemDataSources.DATA_SOURCE_WATCH_BATTERY,
-                ComplicationType.RANGED_VALUE
-            ),
-            ComplicationSlotBounds(RectF(0.6f, 0.1f, 0.8f, 0.3f))
-        ).setNameResourceId(R.string.hierarchical_complication1_screen_name)
-            .setScreenReaderNameResourceId(
-                R.string.hierarchical_complication1_screen_reader_name
-            ).build()
+        val complicationTwo =
+            ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                    COMPLICATION2_ID,
+                    canvasComplicationFactory,
+                    listOf(
+                        ComplicationType.RANGED_VALUE,
+                        ComplicationType.GOAL_PROGRESS,
+                        ComplicationType.WEIGHTED_ELEMENTS,
+                        ComplicationType.SHORT_TEXT,
+                        ComplicationType.MONOCHROMATIC_IMAGE,
+                        ComplicationType.SMALL_IMAGE
+                    ),
+                    DefaultComplicationDataSourcePolicy(
+                        SystemDataSources.DATA_SOURCE_TIME_AND_DATE,
+                        ComplicationType.SHORT_TEXT
+                    ),
+                    ComplicationSlotBounds(RectF(0.6f, 0.4f, 0.8f, 0.6f))
+                )
+                .setNameResourceId(R.string.hierarchical_complication2_screen_name)
+                .setScreenReaderNameResourceId(
+                    R.string.hierarchical_complication2_screen_reader_name
+                )
+                .build()
 
-        val complicationTwo = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            COMPLICATION2_ID,
-            canvasComplicationFactory,
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.GOAL_PROGRESS,
-                ComplicationType.WEIGHTED_ELEMENTS,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy(
-                SystemDataSources.DATA_SOURCE_TIME_AND_DATE,
-                ComplicationType.SHORT_TEXT
-            ),
-            ComplicationSlotBounds(RectF(0.6f, 0.4f, 0.8f, 0.6f))
-        ).setNameResourceId(R.string.hierarchical_complication2_screen_name)
-            .setScreenReaderNameResourceId(
-                R.string.hierarchical_complication2_screen_reader_name
-            ).build()
-
-        val complicationThree = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            COMPLICATION3_ID,
-            canvasComplicationFactory,
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.GOAL_PROGRESS,
-                ComplicationType.WEIGHTED_ELEMENTS,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy(
-                SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
-                ComplicationType.SHORT_TEXT
-            ),
-            ComplicationSlotBounds(RectF(0.6f, 0.7f, 0.8f, 0.9f))
-        ).setNameResourceId(R.string.hierarchical_complication3_screen_name)
-            .setScreenReaderNameResourceId(
-                R.string.hierarchical_complication3_screen_reader_name
-            ).build()
+        val complicationThree =
+            ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                    COMPLICATION3_ID,
+                    canvasComplicationFactory,
+                    listOf(
+                        ComplicationType.RANGED_VALUE,
+                        ComplicationType.GOAL_PROGRESS,
+                        ComplicationType.WEIGHTED_ELEMENTS,
+                        ComplicationType.SHORT_TEXT,
+                        ComplicationType.MONOCHROMATIC_IMAGE,
+                        ComplicationType.SMALL_IMAGE
+                    ),
+                    DefaultComplicationDataSourcePolicy(
+                        SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
+                        ComplicationType.SHORT_TEXT
+                    ),
+                    ComplicationSlotBounds(RectF(0.6f, 0.7f, 0.8f, 0.9f))
+                )
+                .setNameResourceId(R.string.hierarchical_complication3_screen_name)
+                .setScreenReaderNameResourceId(
+                    R.string.hierarchical_complication3_screen_reader_name
+                )
+                .build()
 
         return ComplicationSlotsManager(
             listOf(complicationOne, complicationTwo, complicationThree),
@@ -379,137 +381,154 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.ANALOG,
-        @Suppress("Deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16L
-        ) {
-            val renderer = ExampleHierarchicalStyleWatchFaceRenderer()
-            val context: Context = this@ExampleHierarchicalStyleWatchFaceService
+    ) =
+        WatchFace(
+            WatchFaceType.ANALOG,
+            @Suppress("Deprecation")
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16L
+                ) {
+                val renderer = ExampleHierarchicalStyleWatchFaceRenderer()
+                val context: Context = this@ExampleHierarchicalStyleWatchFaceService
 
-            init {
-                CoroutineScope(Dispatchers.Main.immediate).launch {
-                    currentUserStyleRepository.userStyle.collect { userStyle ->
-                        for ((_, complication) in complicationSlotsManager.complicationSlots) {
-                            (complication.renderer as CanvasComplicationDrawable).drawable =
-                                when (userStyle[colorStyleSetting]) {
-                                    redStyle ->
-                                        WatchFaceColorStyle.create(context, "red_style")
-                                            .getDrawable(context)!!
-                                    greenStyle ->
-                                        WatchFaceColorStyle.create(context, "green_style")
-                                            .getDrawable(context)!!
-                                    blueStyle ->
-                                        WatchFaceColorStyle.create(context, "blue_style")
-                                             .getDrawable(context)!!
-                                    else -> throw IllegalArgumentException(
-                                        "Unrecognized colorStyleSetting "
-                                    )
-                                }
+                init {
+                    CoroutineScope(Dispatchers.Main.immediate).launch {
+                        currentUserStyleRepository.userStyle.collect { userStyle ->
+                            for ((_, complication) in complicationSlotsManager.complicationSlots) {
+                                (complication.renderer as CanvasComplicationDrawable).drawable =
+                                    when (userStyle[colorStyleSetting]) {
+                                        redStyle ->
+                                            WatchFaceColorStyle.create(context, "red_style")
+                                                .getDrawable(context)!!
+                                        greenStyle ->
+                                            WatchFaceColorStyle.create(context, "green_style")
+                                                .getDrawable(context)!!
+                                        blueStyle ->
+                                            WatchFaceColorStyle.create(context, "blue_style")
+                                                .getDrawable(context)!!
+                                        else ->
+                                            throw IllegalArgumentException(
+                                                "Unrecognized colorStyleSetting "
+                                            )
+                                    }
+                            }
                         }
                     }
                 }
-            }
 
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
-                val currentStyle = currentUserStyleRepository.userStyle.value
-                when (currentStyle[watchFaceType]) {
-                    digitalWatchFaceType -> renderer.renderDigital(
-                        canvas,
-                        bounds,
-                        zonedDateTime,
-                        renderParameters,
-                        watchState,
-                        currentStyle[digitalClockStyleSetting] == twentyFourHourClockOption,
-                        when (currentStyle[colorStyleSetting]) {
-                            redStyle -> intArrayOf(1, 0, 0)
-                            greenStyle -> intArrayOf(0, 1, 0)
-                            blueStyle -> intArrayOf(0, 0, 1)
-                            else -> throw IllegalArgumentException(
-                                "Unrecognized colorStyleSetting " +
-                                    currentStyle[colorStyleSetting]
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
+                    val currentStyle = currentUserStyleRepository.userStyle.value
+                    when (currentStyle[watchFaceType]) {
+                        digitalWatchFaceType ->
+                            renderer.renderDigital(
+                                canvas,
+                                bounds,
+                                zonedDateTime,
+                                renderParameters,
+                                watchState,
+                                currentStyle[digitalClockStyleSetting] == twentyFourHourClockOption,
+                                when (currentStyle[colorStyleSetting]) {
+                                    redStyle -> intArrayOf(1, 0, 0)
+                                    greenStyle -> intArrayOf(0, 1, 0)
+                                    blueStyle -> intArrayOf(0, 0, 1)
+                                    else ->
+                                        throw IllegalArgumentException(
+                                            "Unrecognized colorStyleSetting " +
+                                                currentStyle[colorStyleSetting]
+                                        )
+                                }
+                            )
+                        analogWatchFaceType ->
+                            renderer.renderAnalog(
+                                canvas,
+                                bounds,
+                                zonedDateTime,
+                                renderParameters,
+                                (currentStyle[drawHoursSetting]!!
+                                        as UserStyleSetting.BooleanUserStyleSetting.BooleanOption)
+                                    .value,
+                            )
+                        else -> {
+                            throw IllegalStateException(
+                                "Unrecognized chosenSettingId " +
+                                    currentUserStyleRepository.userStyle.value
                             )
                         }
-                    )
+                    }
 
-                    analogWatchFaceType -> renderer.renderAnalog(
-                        canvas,
-                        bounds,
-                        zonedDateTime,
-                        renderParameters,
-                        (currentStyle[drawHoursSetting]!!
-                            as UserStyleSetting.BooleanUserStyleSetting.BooleanOption).value,
-                    )
-
-                    else -> {
-                        throw IllegalStateException(
-                            "Unrecognized chosenSettingId " +
-                                currentUserStyleRepository.userStyle.value
-                        )
+                    for ((_, complication) in complicationSlotsManager.complicationSlots) {
+                        if (complication.enabled) {
+                            complication.render(canvas, zonedDateTime, renderParameters)
+                        }
                     }
                 }
 
-                for ((_, complication) in complicationSlotsManager.complicationSlots) {
-                    if (complication.enabled) {
-                        complication.render(canvas, zonedDateTime, renderParameters)
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {
+                    for ((_, complication) in complicationSlotsManager.complicationSlots) {
+                        if (complication.enabled) {
+                            complication.renderHighlightLayer(
+                                canvas,
+                                zonedDateTime,
+                                renderParameters
+                            )
+                        }
                     }
                 }
             }
-
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
-                for ((_, complication) in complicationSlotsManager.complicationSlots) {
-                    if (complication.enabled) {
-                        complication.renderHighlightLayer(canvas, zonedDateTime, renderParameters)
-                    }
-                }
-            }
-        }
-    )
+        )
 
     private class ExampleHierarchicalStyleWatchFaceRenderer {
-        internal val paint = Paint().apply {
-            textAlign = Paint.Align.CENTER
-            isAntiAlias = true
-        }
+        internal val paint =
+            Paint().apply {
+                textAlign = Paint.Align.CENTER
+                isAntiAlias = true
+            }
 
         internal val textBounds = Rect()
 
         @Px
-        internal val timeActiveHeight = Rect().apply {
-            paint.textSize = TIME_TEXT_ACTIVE_HEIGHT
-            paint.getTextBounds(timeText, 0, timeText.size, this)
-        }.height()
+        internal val timeActiveHeight =
+            Rect()
+                .apply {
+                    paint.textSize = TIME_TEXT_ACTIVE_HEIGHT
+                    paint.getTextBounds(timeText, 0, timeText.size, this)
+                }
+                .height()
 
         @Px
-        internal val timeAmbientHeight = Rect().apply {
-            paint.textSize = TIME_TEXT_AMBIENT_HEIGHT
-            paint.getTextBounds(timeText, 0, timeText.size, this)
-        }.height()
+        internal val timeAmbientHeight =
+            Rect()
+                .apply {
+                    paint.textSize = TIME_TEXT_AMBIENT_HEIGHT
+                    paint.getTextBounds(timeText, 0, timeText.size, this)
+                }
+                .height()
 
         @Px
-        internal val secondsHeight = Rect().apply {
-            paint.textSize = SECONDS_TEXT_HEIGHT
-            paint.getTextBounds(secondsText, 0, secondsText.size, this)
-        }.height()
+        internal val secondsHeight =
+            Rect()
+                .apply {
+                    paint.textSize = SECONDS_TEXT_HEIGHT
+                    paint.getTextBounds(secondsText, 0, secondsText.size, this)
+                }
+                .height()
 
         @Px
         internal val timeActiveOffset =
             (timeActiveHeight + secondsHeight + TEXT_PADDING) / 2 - timeActiveHeight
 
-        @Px
-        internal val timeAmbientOffset = timeAmbientHeight / 2 - timeAmbientHeight
+        @Px internal val timeAmbientOffset = timeAmbientHeight / 2 - timeAmbientHeight
 
-        @Px
-        internal val secondsActiveOffset = timeActiveOffset - secondsHeight - TEXT_PADDING
+        @Px internal val secondsActiveOffset = timeActiveOffset - secondsHeight - TEXT_PADDING
 
         fun renderDigital(
             canvas: Canvas,
@@ -525,12 +544,13 @@
             val minute = zonedDateTime.minute
             val second = zonedDateTime.second
 
-            paint.color = if (isActive) {
-                val scale = 64 + 192 * second / 60
-                Color.rgb(color[0] * scale, color[1] * scale, color[2] * scale)
-            } else {
-                Color.BLACK
-            }
+            paint.color =
+                if (isActive) {
+                    val scale = 64 + 192 * second / 60
+                    Color.rgb(color[0] * scale, color[1] * scale, color[2] * scale)
+                } else {
+                    Color.BLACK
+                }
             canvas.drawRect(bounds, paint)
 
             paint.color = Color.WHITE
@@ -597,8 +617,9 @@
 
             val hours = (zonedDateTime.hour % 12).toFloat()
             val minutes = zonedDateTime.minute.toFloat()
-            val seconds = zonedDateTime.second.toFloat() +
-                (zonedDateTime.nano.toDouble() / 1000000000.0).toFloat()
+            val seconds =
+                zonedDateTime.second.toFloat() +
+                    (zonedDateTime.nano.toDouble() / 1000000000.0).toFloat()
 
             val hourRot = (hours + minutes / 60.0f + seconds / 3600.0f) / 12.0f * 360.0f
             val minuteRot = (minutes + seconds / 60.0f) / 60.0f * 360.0f
@@ -641,17 +662,13 @@
         private val timeText = charArrayOf('1', '0', ':', '0', '9')
         private val secondsText = charArrayOf('3', '0')
 
-        @Px
-        private val SECONDS_TEXT_HEIGHT = 180f
+        @Px private val SECONDS_TEXT_HEIGHT = 180f
 
-        @Px
-        private val TIME_TEXT_ACTIVE_HEIGHT = 64f
+        @Px private val TIME_TEXT_ACTIVE_HEIGHT = 64f
 
-        @Px
-        private val TIME_TEXT_AMBIENT_HEIGHT = 96f
+        @Px private val TIME_TEXT_AMBIENT_HEIGHT = 96f
 
-        @Px
-        private val TEXT_PADDING = 12
+        @Px private val TEXT_PADDING = 12
 
         const val COMPLICATION1_ID = 101
         const val COMPLICATION2_ID = 102
diff --git a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleOpenGLBackgroundInitWatchFaceService.kt b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleOpenGLBackgroundInitWatchFaceService.kt
index cb5ad23..4c887ab 100644
--- a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleOpenGLBackgroundInitWatchFaceService.kt
+++ b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleOpenGLBackgroundInitWatchFaceService.kt
@@ -51,22 +51,23 @@
             R.string.colors_style_setting,
             R.string.colors_style_setting_description,
             icon = null,
-            options = listOf(
-                UserStyleSetting.ListUserStyleSetting.ListOption(
-                    UserStyleSetting.Option.Id("yellow_style"),
-                    resources,
-                    R.string.colors_style_yellow,
-                    R.string.colors_style_yellow_screen_reader,
-                    Icon.createWithResource(this, R.drawable.yellow_style)
+            options =
+                listOf(
+                    UserStyleSetting.ListUserStyleSetting.ListOption(
+                        UserStyleSetting.Option.Id("yellow_style"),
+                        resources,
+                        R.string.colors_style_yellow,
+                        R.string.colors_style_yellow_screen_reader,
+                        Icon.createWithResource(this, R.drawable.yellow_style)
+                    ),
+                    UserStyleSetting.ListUserStyleSetting.ListOption(
+                        UserStyleSetting.Option.Id("blue_style"),
+                        resources,
+                        R.string.colors_style_blue,
+                        R.string.colors_style_blue_screen_reader,
+                        Icon.createWithResource(this, R.drawable.blue_style)
+                    )
                 ),
-                UserStyleSetting.ListUserStyleSetting.ListOption(
-                    UserStyleSetting.Option.Id("blue_style"),
-                    resources,
-                    R.string.colors_style_blue,
-                    R.string.colors_style_blue_screen_reader,
-                    Icon.createWithResource(this, R.drawable.blue_style)
-                )
-            ),
             listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS_OVERLAY)
         )
     }
@@ -90,9 +91,7 @@
                 colorStyleSetting
             )
         return WatchFace(WatchFaceType.ANALOG, renderer)
-            .setComplicationDeniedDialogIntent(
-                Intent(this, ComplicationDeniedActivity::class.java)
-            )
+            .setComplicationDeniedDialogIntent(Intent(this, ComplicationDeniedActivity::class.java))
             .setComplicationRationaleDialogIntent(
                 Intent(this, ComplicationRationalActivity::class.java)
             )
@@ -105,18 +104,10 @@
         val watchHandTexture = loadTextureFromResource(resources, R.drawable.hand)
 
         val triangleTextureProgram = Gles2TexturedTriangleList.Program()
-        val backgroundQuad = createTexturedQuad(
-            triangleTextureProgram, -10f, -10f, 20f, 20f
-        )
-        val secondHandQuad = createTexturedQuad(
-            triangleTextureProgram, -0.75f, -6f, 1.5f, 8f
-        )
-        val minuteHandQuad = createTexturedQuad(
-            triangleTextureProgram, -0.33f, -4.5f, 0.66f, 6f
-        )
-        val hourHandQuad = createTexturedQuad(
-            triangleTextureProgram, -0.25f, -3f, 0.5f, 4f
-        )
+        val backgroundQuad = createTexturedQuad(triangleTextureProgram, -10f, -10f, 20f, 20f)
+        val secondHandQuad = createTexturedQuad(triangleTextureProgram, -0.75f, -6f, 1.5f, 8f)
+        val minuteHandQuad = createTexturedQuad(triangleTextureProgram, -0.33f, -4.5f, 0.66f, 6f)
+        val hourHandQuad = createTexturedQuad(triangleTextureProgram, -0.25f, -3f, 0.5f, 4f)
 
         override fun onDestroy() {
             GLES20.glDeleteTextures(
@@ -135,65 +126,44 @@
             top: Float,
             width: Float,
             height: Float
-        ) = Gles2TexturedTriangleList(
-            program,
-            floatArrayOf(
-                top + 0f,
-                left + 0.0f,
-                0.0f,
-
-                top + 0.0f,
-                left + width,
-                0.0f,
-
-                top + height,
-                left + 0.0f,
-                0.0f,
-
-                top + 0.0f,
-                left + width,
-                0.0f,
-
-                top + height,
-                left + 0.0f,
-                0.0f,
-
-                top + height,
-                left + width,
-                0.0f
-            ),
-            floatArrayOf(
-                1.0f,
-                1.0f,
-
-                1.0f,
-                0.0f,
-
-                0.0f,
-                1.0f,
-
-                1.0f,
-                0.0f,
-
-                0.0f,
-                1.0f,
-
-                0.0f,
-                0.0f
+        ) =
+            Gles2TexturedTriangleList(
+                program,
+                floatArrayOf(
+                    top + 0f,
+                    left + 0.0f,
+                    0.0f,
+                    top + 0.0f,
+                    left + width,
+                    0.0f,
+                    top + height,
+                    left + 0.0f,
+                    0.0f,
+                    top + 0.0f,
+                    left + width,
+                    0.0f,
+                    top + height,
+                    left + 0.0f,
+                    0.0f,
+                    top + height,
+                    left + width,
+                    0.0f
+                ),
+                floatArrayOf(1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f)
             )
-        )
 
         private fun loadTextureFromResource(resources: Resources, resourceId: Int): Int {
             val textureHandle = IntArray(1)
             GLES20.glGenTextures(1, textureHandle, 0)
             if (textureHandle[0] != 0) {
-                val bitmap = BitmapFactory.decodeResource(
-                    resources,
-                    resourceId,
-                    BitmapFactory.Options().apply {
-                        inScaled = false // No pre-scaling
-                    }
-                )
+                val bitmap =
+                    BitmapFactory.decodeResource(
+                        resources,
+                        resourceId,
+                        BitmapFactory.Options().apply {
+                            inScaled = false // No pre-scaling
+                        }
+                    )
                 GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle[0])
                 checkGLError("glBindTexture")
                 GLES20.glTexParameteri(
@@ -219,28 +189,18 @@
         watchState: WatchState,
         private val resources: Resources,
         private val colorStyleSetting: UserStyleSetting.ListUserStyleSetting,
-    ) : Renderer.GlesRenderer2<ExampleSharedAssets>(
-        surfaceHolder,
-        currentUserStyleRepository,
-        watchState,
-        FRAME_PERIOD_MS
-    ) {
+    ) :
+        Renderer.GlesRenderer2<ExampleSharedAssets>(
+            surfaceHolder,
+            currentUserStyleRepository,
+            watchState,
+            FRAME_PERIOD_MS
+        ) {
         private val projectionMatrix = FloatArray(16)
-        private val viewMatrix = FloatArray(16).apply {
-            Matrix.setLookAtM(
-                this,
-                0,
-                0f,
-                0f,
-                -1.0f,
-                0f,
-                0f,
-                0f,
-                0f,
-                1f,
-                0f
-            )
-        }
+        private val viewMatrix =
+            FloatArray(16).apply {
+                Matrix.setLookAtM(this, 0, 0f, 0f, -1.0f, 0f, 0f, 0f, 0f, 1f, 0f)
+            }
         private val handPositionMatrix = FloatArray(16)
         private val handViewMatrix = FloatArray(16)
         private val vpMatrix = FloatArray(16)
@@ -290,8 +250,9 @@
 
             val hours = (zonedDateTime.hour % 12).toFloat()
             val minutes = zonedDateTime.minute.toFloat()
-            val seconds = zonedDateTime.second.toFloat() +
-                (zonedDateTime.nano.toDouble() / 1000000000.0).toFloat()
+            val seconds =
+                zonedDateTime.second.toFloat() +
+                    (zonedDateTime.nano.toDouble() / 1000000000.0).toFloat()
 
             val secondsRot = seconds / 60.0f * 360.0f
             Matrix.setRotateM(handPositionMatrix, 0, secondsRot, 0f, 0f, 1f)
@@ -330,10 +291,10 @@
     }
 
     companion object {
-        /** Expected frame rate in interactive mode.  */
+        /** Expected frame rate in interactive mode. */
         private const val FPS: Long = 60
 
-        /** How long each frame is displayed at expected frame rate.  */
+        /** How long each frame is displayed at expected frame rate. */
         private const val FRAME_PERIOD_MS: Long = 1000 / FPS
 
         private fun checkGLError(op: String) {
diff --git a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleOpenGLWatchFaceService.kt b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleOpenGLWatchFaceService.kt
index 5d59314..b102b22 100644
--- a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleOpenGLWatchFaceService.kt
+++ b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/ExampleOpenGLWatchFaceService.kt
@@ -57,17 +57,14 @@
 import kotlinx.coroutines.launch
 
 /**
- * Sample watch face using OpenGL. The watch face is rendered using
- * [Gles2ColoredTriangleList]s. The camera moves around in interactive mode and stops moving
- * when the watch enters ambient mode.
+ * Sample watch face using OpenGL. The watch face is rendered using [Gles2ColoredTriangleList]s. The
+ * camera moves around in interactive mode and stops moving when the watch enters ambient mode.
  *
  * NB this is open for testing.
  */
 open class ExampleOpenGLWatchFaceService : WatchFaceService() {
     // Lazy because the context isn't initialized till later.
-    private val watchFaceStyle by lazy {
-        WatchFaceColorStyle.create(this, "white_style")
-    }
+    private val watchFaceStyle by lazy { WatchFaceColorStyle.create(this, "white_style") }
 
     private val colorStyleSetting by lazy {
         ListUserStyleSetting(
@@ -76,50 +73,53 @@
             R.string.colors_style_setting,
             R.string.colors_style_setting_description,
             icon = null,
-            options = listOf(
-                ListUserStyleSetting.ListOption(
-                    Option.Id("red_style"),
-                    resources,
-                    R.string.colors_style_red,
-                    R.string.colors_style_red_screen_reader,
-                    Icon.createWithResource(this, R.drawable.red_style)
+            options =
+                listOf(
+                    ListUserStyleSetting.ListOption(
+                        Option.Id("red_style"),
+                        resources,
+                        R.string.colors_style_red,
+                        R.string.colors_style_red_screen_reader,
+                        Icon.createWithResource(this, R.drawable.red_style)
+                    ),
+                    ListUserStyleSetting.ListOption(
+                        Option.Id("green_style"),
+                        resources,
+                        R.string.colors_style_green,
+                        R.string.colors_style_green_screen_reader,
+                        Icon.createWithResource(this, R.drawable.green_style)
+                    )
                 ),
-                ListUserStyleSetting.ListOption(
-                    Option.Id("green_style"),
-                    resources,
-                    R.string.colors_style_green,
-                    R.string.colors_style_green_screen_reader,
-                    Icon.createWithResource(this, R.drawable.green_style)
-                )
-            ),
             listOf(WatchFaceLayer.BASE, WatchFaceLayer.COMPLICATIONS_OVERLAY)
         )
     }
 
-    private val complication = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-        EXAMPLE_OPENGL_COMPLICATION_ID,
-        { watchState, listener ->
-            CanvasComplicationDrawable(
-                watchFaceStyle.getDrawable(this@ExampleOpenGLWatchFaceService)!!,
-                watchState,
-                listener
+    private val complication =
+        ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                EXAMPLE_OPENGL_COMPLICATION_ID,
+                { watchState, listener ->
+                    CanvasComplicationDrawable(
+                        watchFaceStyle.getDrawable(this@ExampleOpenGLWatchFaceService)!!,
+                        watchState,
+                        listener
+                    )
+                },
+                listOf(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.GOAL_PROGRESS,
+                    ComplicationType.WEIGHTED_ELEMENTS,
+                    ComplicationType.LONG_TEXT,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    ComplicationType.SMALL_IMAGE
+                ),
+                DefaultComplicationDataSourcePolicy(
+                    SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
+                    ComplicationType.SHORT_TEXT
+                ),
+                ComplicationSlotBounds(RectF(0.2f, 0.7f, 0.4f, 0.9f))
             )
-        },
-        listOf(
-            ComplicationType.RANGED_VALUE,
-            ComplicationType.GOAL_PROGRESS,
-            ComplicationType.WEIGHTED_ELEMENTS,
-            ComplicationType.LONG_TEXT,
-            ComplicationType.SHORT_TEXT,
-            ComplicationType.MONOCHROMATIC_IMAGE,
-            ComplicationType.SMALL_IMAGE
-        ),
-        DefaultComplicationDataSourcePolicy(
-            SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
-            ComplicationType.SHORT_TEXT
-        ),
-        ComplicationSlotBounds(RectF(0.2f, 0.7f, 0.4f, 0.9f))
-    ).build()
+            .build()
 
     public override fun createUserStyleSchema() = UserStyleSchema(listOf(colorStyleSetting))
 
@@ -132,29 +132,24 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.ANALOG,
-        ExampleOpenGLRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            colorStyleSetting,
-            complication
-        )
-    )
-        .setLegacyWatchFaceStyle(
-            WatchFace.LegacyWatchFaceOverlayStyle(
-                0,
-                Gravity.RIGHT or Gravity.TOP,
-                true
+    ) =
+        WatchFace(
+                WatchFaceType.ANALOG,
+                ExampleOpenGLRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    colorStyleSetting,
+                    complication
+                )
             )
-        )
-        .setComplicationDeniedDialogIntent(
-            Intent(this, ComplicationDeniedActivity::class.java)
-        )
-        .setComplicationRationaleDialogIntent(
-            Intent(this, ComplicationRationalActivity::class.java)
-        )
+            .setLegacyWatchFaceStyle(
+                WatchFace.LegacyWatchFaceOverlayStyle(0, Gravity.RIGHT or Gravity.TOP, true)
+            )
+            .setComplicationDeniedDialogIntent(Intent(this, ComplicationDeniedActivity::class.java))
+            .setComplicationRationaleDialogIntent(
+                Intent(this, ComplicationRationalActivity::class.java)
+            )
 
     @OptIn(WatchFaceExperimental::class)
     @Suppress("Deprecation")
@@ -165,14 +160,15 @@
         watchState: WatchState,
         private val colorStyleSetting: ListUserStyleSetting,
         private val complicationSlot: ComplicationSlot
-    ) : Renderer.GlesRenderer(
-        surfaceHolder,
-        currentUserStyleRepository,
-        watchState,
-        FRAME_PERIOD_MS
-    ) {
+    ) :
+        Renderer.GlesRenderer(
+            surfaceHolder,
+            currentUserStyleRepository,
+            watchState,
+            FRAME_PERIOD_MS
+        ) {
 
-        /** Projection transformation matrix. Converts from 3D to 2D.  */
+        /** Projection transformation matrix. Converts from 3D to 2D. */
         private val projectionMatrix = FloatArray(16)
 
         /**
@@ -181,7 +177,7 @@
          */
         private val viewMatrices = Array(numCameraAngles) { FloatArray(16) }
 
-        /** The view transformation matrix to use in ambient mode  */
+        /** The view transformation matrix to use in ambient mode */
         private val ambientViewMatrix = FloatArray(16)
 
         /**
@@ -190,34 +186,28 @@
          */
         private val modelMatrices = Array(360) { FloatArray(16) }
 
-        /**
-         * Products of [viewMatrices] and [projectionMatrix]. One matrix per camera
-         * position.
-         */
+        /** Products of [viewMatrices] and [projectionMatrix]. One matrix per camera position. */
         private val vpMatrices = Array(numCameraAngles) { FloatArray(16) }
 
-        /** The product of [ambientViewMatrix] and [projectionMatrix]  */
+        /** The product of [ambientViewMatrix] and [projectionMatrix] */
         private val ambientVpMatrix = FloatArray(16)
 
-        /**
-         * Product of [modelMatrices], [viewMatrices], and
-         * [projectionMatrix].
-         */
+        /** Product of [modelMatrices], [viewMatrices], and [projectionMatrix]. */
         private val mvpMatrix = FloatArray(16)
 
-        /** Triangles for the 4 major ticks. These are grouped together to speed up rendering.  */
+        /** Triangles for the 4 major ticks. These are grouped together to speed up rendering. */
         private lateinit var majorTickTriangles: Gles2ColoredTriangleList
 
-        /** Triangles for the 8 minor ticks. These are grouped together to speed up rendering.  */
+        /** Triangles for the 8 minor ticks. These are grouped together to speed up rendering. */
         private lateinit var minorTickTriangles: Gles2ColoredTriangleList
 
-        /** Triangle for the second hand.  */
+        /** Triangle for the second hand. */
         private lateinit var secondHandTriangleMap: Map<String, Gles2ColoredTriangleList>
 
-        /** Triangle for the minute hand.  */
+        /** Triangle for the minute hand. */
         private lateinit var minuteHandTriangle: Gles2ColoredTriangleList
 
-        /** Triangle for the hour hand.  */
+        /** Triangle for the hour hand. */
         private lateinit var hourHandTriangle: Gles2ColoredTriangleList
 
         private lateinit var complicationTexture: GlesTextureComplication
@@ -231,21 +221,22 @@
         init {
             CoroutineScope(Dispatchers.Main.immediate).launch {
                 currentUserStyleRepository.userStyle.collect { userStyle ->
-                    watchfaceColors = when (userStyle[colorStyleSetting]!!.toString()) {
-                        "red_style" -> WatchFaceColors(
-                            Color.valueOf(0.5f, 0.2f, 0.2f, 1f),
-                            Color.valueOf(0.4f, 0.15f, 0.15f, 1f),
-                            Color.valueOf(0.1f, 0.1f, 0.1f, 1f)
-                        )
-
-                        "green_style" -> WatchFaceColors(
-                            Color.valueOf(0.2f, 0.5f, 0.2f, 1f),
-                            Color.valueOf(0.15f, 0.4f, 0.15f, 1f),
-                            Color.valueOf(0.1f, 0.1f, 0.1f, 1f)
-                        )
-
-                        else -> null
-                    }
+                    watchfaceColors =
+                        when (userStyle[colorStyleSetting]!!.toString()) {
+                            "red_style" ->
+                                WatchFaceColors(
+                                    Color.valueOf(0.5f, 0.2f, 0.2f, 1f),
+                                    Color.valueOf(0.4f, 0.15f, 0.15f, 1f),
+                                    Color.valueOf(0.1f, 0.1f, 0.1f, 1f)
+                                )
+                            "green_style" ->
+                                WatchFaceColors(
+                                    Color.valueOf(0.2f, 0.5f, 0.2f, 1f),
+                                    Color.valueOf(0.15f, 0.4f, 0.15f, 1f),
+                                    Color.valueOf(0.1f, 0.1f, 0.1f, 1f)
+                                )
+                            else -> null
+                        }
                 }
             }
         }
@@ -260,71 +251,64 @@
 
             // Create program for drawing triangles.
             textureTriangleProgram = Gles2TexturedTriangleList.Program()
-            complicationTriangles = createComplicationQuad(
-                textureTriangleProgram,
-                -0.9f,
-                -0.1f,
-                0.6f,
-                0.6f
-            )
+            complicationTriangles =
+                createComplicationQuad(textureTriangleProgram, -0.9f, -0.1f, 0.6f, 0.6f)
 
-            complicationHighlightTriangles = createComplicationHighlightQuad(
-                coloredTriangleProgram,
-                -0.9f,
-                -0.1f,
-                0.6f,
-                0.6f
-            )
+            complicationHighlightTriangles =
+                createComplicationHighlightQuad(coloredTriangleProgram, -0.9f, -0.1f, 0.6f, 0.6f)
 
             // Create triangles for the hands.
-            secondHandTriangleMap = mapOf(
-                "red_style" to
-                    createHand(
-                        coloredTriangleProgram,
-                        0.02f /* width */,
-                        1.0f /* height */,
-                        floatArrayOf(
-                            1.0f /* red */,
-                            0.0f /* green */,
-                            0.0f /* blue */,
-                            1.0f /* alpha */
+            secondHandTriangleMap =
+                mapOf(
+                    "red_style" to
+                        createHand(
+                            coloredTriangleProgram,
+                            0.02f /* width */,
+                            1.0f /* height */,
+                            floatArrayOf(
+                                1.0f /* red */,
+                                0.0f /* green */,
+                                0.0f /* blue */,
+                                1.0f /* alpha */
+                            )
+                        ),
+                    "greenstyle" to
+                        createHand(
+                            coloredTriangleProgram,
+                            0.02f /* width */,
+                            1.0f /* height */,
+                            floatArrayOf(
+                                0.0f /* red */,
+                                1.0f /* green */,
+                                0.0f /* blue */,
+                                1.0f /* alpha */
+                            )
                         )
-                    ),
-                "greenstyle" to
-                    createHand(
-                        coloredTriangleProgram,
-                        0.02f /* width */,
-                        1.0f /* height */,
-                        floatArrayOf(
-                            0.0f /* red */,
-                            1.0f /* green */,
-                            0.0f /* blue */,
-                            1.0f /* alpha */
-                        )
+                )
+            minuteHandTriangle =
+                createHand(
+                    coloredTriangleProgram,
+                    0.06f /* width */,
+                    1f /* height */,
+                    floatArrayOf(
+                        0.7f /* red */,
+                        0.7f /* green */,
+                        0.7f /* blue */,
+                        1.0f /* alpha */
                     )
-            )
-            minuteHandTriangle = createHand(
-                coloredTriangleProgram,
-                0.06f /* width */,
-                1f /* height */,
-                floatArrayOf(
-                    0.7f /* red */,
-                    0.7f /* green */,
-                    0.7f /* blue */,
-                    1.0f /* alpha */
                 )
-            )
-            hourHandTriangle = createHand(
-                coloredTriangleProgram,
-                0.1f /* width */,
-                0.6f /* height */,
-                floatArrayOf(
-                    0.9f /* red */,
-                    0.9f /* green */,
-                    0.9f /* blue */,
-                    1.0f /* alpha */
+            hourHandTriangle =
+                createHand(
+                    coloredTriangleProgram,
+                    0.1f /* width */,
+                    0.6f /* height */,
+                    floatArrayOf(
+                        0.9f /* red */,
+                        0.9f /* green */,
+                        0.9f /* blue */,
+                        1.0f /* alpha */
+                    )
                 )
-            )
 
             // Precompute the clock angles.
             for (i in modelMatrices.indices) {
@@ -335,8 +319,7 @@
             for (i in 0 until numCameraAngles) {
                 // Set the camera position (View matrix). When active, move the eye around to show
                 // off that this is 3D.
-                val cameraAngle =
-                    (i.toFloat() / numCameraAngles * 2 * Math.PI).toFloat()
+                val cameraAngle = (i.toFloat() / numCameraAngles * 2 * Math.PI).toFloat()
                 val eyeX = Math.cos(cameraAngle.toDouble()).toFloat()
                 val eyeY = Math.sin(cameraAngle.toDouble()).toFloat()
                 Matrix.setLookAtM(
@@ -367,12 +350,8 @@
                 0f
             ) // up vector
 
-            complicationTexture = GlesTextureComplication(
-                complicationSlot,
-                128,
-                128,
-                GLES20.GL_TEXTURE_2D
-            )
+            complicationTexture =
+                GlesTextureComplication(complicationSlot, 128, 128, GLES20.GL_TEXTURE_2D)
         }
 
         override suspend fun onUiThreadGlSurfaceCreated(width: Int, height: Int) {
@@ -409,21 +388,12 @@
             width: Float,
             length: Float,
             color: FloatArray
-        ) = Gles2ColoredTriangleList(
-            program,
-            floatArrayOf(
-                0f,
-                length,
-                0f,
-                -width / 2,
-                0f,
-                0f,
-                width / 2,
-                0f,
-                0f
-            ),
-            color
-        )
+        ) =
+            Gles2ColoredTriangleList(
+                program,
+                floatArrayOf(0f, length, 0f, -width / 2, 0f, 0f, width / 2, 0f, 0f),
+                color
+            )
 
         /**
          * Creates a triangle list for the major ticks on the watch face.
@@ -437,22 +407,12 @@
             val trianglesCoords = FloatArray(9 * 4)
             for (i in 0..3) {
                 val triangleCoords = getMajorTickTriangleCoords(i)
-                System.arraycopy(
-                    triangleCoords,
-                    0,
-                    trianglesCoords,
-                    i * 9,
-                    triangleCoords.size
-                )
+                System.arraycopy(triangleCoords, 0, trianglesCoords, i * 9, triangleCoords.size)
             }
             return Gles2ColoredTriangleList(
-                program, trianglesCoords,
-                floatArrayOf(
-                    1.0f /* red */,
-                    1.0f /* green */,
-                    1.0f /* blue */,
-                    1.0f /* alpha */
-                )
+                program,
+                trianglesCoords,
+                floatArrayOf(1.0f /* red */, 1.0f /* green */, 1.0f /* blue */, 1.0f /* alpha */)
             )
         }
 
@@ -473,137 +433,94 @@
                     continue
                 }
                 val triangleCoords = getMinorTickTriangleCoords(i)
-                System.arraycopy(
-                    triangleCoords,
-                    0,
-                    trianglesCoords,
-                    index,
-                    triangleCoords.size
-                )
+                System.arraycopy(triangleCoords, 0, trianglesCoords, index, triangleCoords.size)
                 index += 9
             }
             return Gles2ColoredTriangleList(
-                program, trianglesCoords,
-                floatArrayOf(
-                    0.5f /* red */,
-                    0.5f /* green */,
-                    0.5f /* blue */,
-                    1.0f /* alpha */
-                )
+                program,
+                trianglesCoords,
+                floatArrayOf(0.5f /* red */, 0.5f /* green */, 0.5f /* blue */, 1.0f /* alpha */)
             )
         }
 
-        /**
-         * Creates a triangle list for the complication.
-         */
+        /** Creates a triangle list for the complication. */
         private fun createComplicationQuad(
             program: Gles2TexturedTriangleList.Program,
             left: Float,
             top: Float,
             width: Float,
             height: Float
-        ) = Gles2TexturedTriangleList(
-            program,
-            floatArrayOf(
-                top + 0.0f,
-                left + 0.0f,
-                0.0f,
-
-                top + 0.0f,
-                left + width,
-                0.0f,
-
-                top + height,
-                left + 0.0f,
-                0.0f,
-
-                top + 0.0f,
-                left + width,
-                0.0f,
-
-                top + height,
-                left + 0.0f,
-                0.0f,
-
-                top + height,
-                left + width,
-                0.0f
-            ),
-            floatArrayOf(
-                1.0f,
-                1.0f,
-
-                1.0f,
-                0.0f,
-
-                0.0f,
-                1.0f,
-
-                1.0f,
-                0.0f,
-
-                0.0f,
-                1.0f,
-
-                0.0f,
-                0.0f
+        ) =
+            Gles2TexturedTriangleList(
+                program,
+                floatArrayOf(
+                    top + 0.0f,
+                    left + 0.0f,
+                    0.0f,
+                    top + 0.0f,
+                    left + width,
+                    0.0f,
+                    top + height,
+                    left + 0.0f,
+                    0.0f,
+                    top + 0.0f,
+                    left + width,
+                    0.0f,
+                    top + height,
+                    left + 0.0f,
+                    0.0f,
+                    top + height,
+                    left + width,
+                    0.0f
+                ),
+                floatArrayOf(1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f)
             )
-        )
 
-        /**
-         * Creates a triangle list for the complication highlight quad.
-         */
+        /** Creates a triangle list for the complication highlight quad. */
         private fun createComplicationHighlightQuad(
             program: Gles2ColoredTriangleList.Program,
             left: Float,
             top: Float,
             width: Float,
             height: Float
-        ) = Gles2ColoredTriangleList(
-            program,
-            floatArrayOf(
-                top + 0.0f,
-                left + 0.0f,
-                0.0f,
-
-                top + 0.0f,
-                left + width,
-                0.0f,
-
-                top + height,
-                left + 0.0f,
-                0.0f,
-
-                top + 0.0f,
-                left + width,
-                0.0f,
-
-                top + height,
-                left + 0.0f,
-                0.0f,
-
-                top + height,
-                left + width,
-                0.0f
-            ),
-            floatArrayOf(
-                1.0f /* red */,
-                1.0f /* green */,
-                1.0f /* blue */,
-                0.0f /* alpha */
+        ) =
+            Gles2ColoredTriangleList(
+                program,
+                floatArrayOf(
+                    top + 0.0f,
+                    left + 0.0f,
+                    0.0f,
+                    top + 0.0f,
+                    left + width,
+                    0.0f,
+                    top + height,
+                    left + 0.0f,
+                    0.0f,
+                    top + 0.0f,
+                    left + width,
+                    0.0f,
+                    top + height,
+                    left + 0.0f,
+                    0.0f,
+                    top + height,
+                    left + width,
+                    0.0f
+                ),
+                floatArrayOf(1.0f /* red */, 1.0f /* green */, 1.0f /* blue */, 0.0f /* alpha */)
             )
-        )
 
         private fun getMajorTickTriangleCoords(index: Int): FloatArray {
             return getTickTriangleCoords(
-                0.03f /* width */, 0.09f /* length */,
+                0.03f /* width */,
+                0.09f /* length */,
                 index * 360 / 4 /* angleDegrees */
             )
         }
 
         private fun getMinorTickTriangleCoords(index: Int): FloatArray {
             return getTickTriangleCoords(
-                0.02f /* width */, 0.06f /* length */,
+                0.02f /* width */,
+                0.06f /* length */,
                 index * 360 / 12 /* angleDegrees */
             )
         }
@@ -614,17 +531,8 @@
             angleDegrees: Int
         ): FloatArray {
             // Create the data for the VBO.
-            val coords = floatArrayOf(
-                0f,
-                1f,
-                0f,
-                width / 2,
-                length + 1,
-                0f,
-                -width / 2,
-                length + 1,
-                0f
-            )
+            val coords =
+                floatArrayOf(0f, 1f, 0f, width / 2, length + 1, 0f, -width / 2, length + 1, 0f)
             rotateCoords(coords, angleDegrees)
             return coords
         }
@@ -635,12 +543,9 @@
          *
          * @param coords flattened 3D coordinates
          * @param angleDegrees angle in degrees clockwise when viewed from negative infinity on the
-         * Z axis
+         *   Z axis
          */
-        private fun rotateCoords(
-            coords: FloatArray,
-            angleDegrees: Int
-        ) {
+        private fun rotateCoords(coords: FloatArray, angleDegrees: Int) {
             val angleRadians = Math.toRadians(angleDegrees.toDouble())
             val cos = cos(angleRadians)
             val sin = sin(angleRadians)
@@ -655,22 +560,28 @@
         }
 
         override fun render(zonedDateTime: ZonedDateTime) {
-            // Draw background color and select the appropriate view projection matrix. The background
-            // should always be black in ambient mode. The view projection matrix used is overhead in
+            // Draw background color and select the appropriate view projection matrix. The
+            // background
+            // should always be black in ambient mode. The view projection matrix used is overhead
+            // in
             // ambient. In interactive mode, it's tilted depending on the current time.
-            val vpMatrix = if (renderParameters.drawMode == DrawMode.AMBIENT) {
-                GLES20.glClearColor(0f, 0f, 0f, 1f)
-                ambientVpMatrix
-            } else {
-                when (currentUserStyleRepository.userStyle.value[colorStyleSetting]!!.toString()) {
-                    "red_style" -> GLES20.glClearColor(0.5f, 0.2f, 0.2f, 1f)
-                    "green_style" -> GLES20.glClearColor(0.2f, 0.5f, 0.2f, 1f)
+            val vpMatrix =
+                if (renderParameters.drawMode == DrawMode.AMBIENT) {
+                    GLES20.glClearColor(0f, 0f, 0f, 1f)
+                    ambientVpMatrix
+                } else {
+                    when (
+                        currentUserStyleRepository.userStyle.value[colorStyleSetting]!!.toString()
+                    ) {
+                        "red_style" -> GLES20.glClearColor(0.5f, 0.2f, 0.2f, 1f)
+                        "green_style" -> GLES20.glClearColor(0.2f, 0.5f, 0.2f, 1f)
+                    }
+                    val cameraIndex =
+                        (zonedDateTime.toInstant().toEpochMilli() / FRAME_PERIOD_MS %
+                                numCameraAngles)
+                            .toInt()
+                    vpMatrices[cameraIndex]
                 }
-                val cameraIndex =
-                    (zonedDateTime.toInstant().toEpochMilli() / FRAME_PERIOD_MS % numCameraAngles)
-                        .toInt()
-                vpMatrices[cameraIndex]
-            }
             GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT)
 
             // Draw the complication first.
@@ -700,38 +611,18 @@
 
             // Render hands.
             if (renderParameters.watchFaceLayers.contains(WatchFaceLayer.COMPLICATIONS_OVERLAY)) {
-                Matrix.multiplyMM(
-                    mvpMatrix,
-                    0,
-                    vpMatrix,
-                    0,
-                    modelMatrices[hoursIndex],
-                    0
-                )
+                Matrix.multiplyMM(mvpMatrix, 0, vpMatrix, 0, modelMatrices[hoursIndex], 0)
                 hourHandTriangle.draw(mvpMatrix)
 
-                Matrix.multiplyMM(
-                    mvpMatrix,
-                    0,
-                    vpMatrix,
-                    0,
-                    modelMatrices[minIndex],
-                    0
-                )
+                Matrix.multiplyMM(mvpMatrix, 0, vpMatrix, 0, modelMatrices[minIndex], 0)
                 minuteHandTriangle.draw(mvpMatrix)
 
                 if (renderParameters.drawMode != DrawMode.AMBIENT) {
-                    Matrix.multiplyMM(
-                        mvpMatrix,
-                        0,
-                        vpMatrix,
-                        0,
-                        modelMatrices[secIndex],
-                        0
-                    )
+                    Matrix.multiplyMM(mvpMatrix, 0, vpMatrix, 0, modelMatrices[secIndex], 0)
                     secondHandTriangleMap[
-                        currentUserStyleRepository.userStyle.value[colorStyleSetting]!!.toString()
-                    ]?.draw(mvpMatrix)
+                            currentUserStyleRepository.userStyle.value[colorStyleSetting]!!
+                                .toString()]
+                        ?.draw(mvpMatrix)
                 }
             }
 
@@ -744,8 +635,8 @@
 
         override fun renderHighlightLayer(zonedDateTime: ZonedDateTime) {
             val cameraIndex =
-                (zonedDateTime.toInstant()
-                    .toEpochMilli() / FRAME_PERIOD_MS % numCameraAngles).toInt()
+                (zonedDateTime.toInstant().toEpochMilli() / FRAME_PERIOD_MS % numCameraAngles)
+                    .toInt()
             val vpMatrix = vpMatrices[cameraIndex]
 
             val highlightLayer = renderParameters.highlightLayer!!
@@ -767,16 +658,16 @@
     }
 
     companion object {
-        /** Expected frame rate in interactive mode.  */
+        /** Expected frame rate in interactive mode. */
         private const val FPS: Long = 60
 
-        /** Z distance from the camera to the watchface.  */
+        /** Z distance from the camera to the watchface. */
         private const val EYE_Z = -2.3f
 
-        /** How long each frame is displayed at expected frame rate.  */
+        /** How long each frame is displayed at expected frame rate. */
         private const val FRAME_PERIOD_MS: Long = 1000 / FPS
 
-        /** Cycle time before the camera motion repeats.  */
+        /** Cycle time before the camera motion repeats. */
         private const val CYCLE_PERIOD_SECONDS: Long = 5
 
         /** Number of camera angles to precompute. */
diff --git a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Gles2ColoredTriangleList.kt b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Gles2ColoredTriangleList.kt
index 21dcca8..bf3409c 100644
--- a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Gles2ColoredTriangleList.kt
+++ b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Gles2ColoredTriangleList.kt
@@ -24,9 +24,7 @@
 import java.nio.ByteOrder
 import java.nio.FloatBuffer
 
-/**
- * A list of triangles drawn in a single solid color using OpenGL ES 2.0.
- */
+/** A list of triangles drawn in a single solid color using OpenGL ES 2.0. */
 internal class Gles2ColoredTriangleList(
     private val program: Program,
     triangleCoords: FloatArray,
@@ -39,16 +37,17 @@
         require(color.size == NUM_COLOR_COMPONENTS) { "wrong number of color components" }
     }
 
-    /** The VBO containing the vertex coordinates.  */
+    /** The VBO containing the vertex coordinates. */
     private val vertexBuffer =
         ByteBuffer.allocateDirect(triangleCoords.size * BYTES_PER_FLOAT)
             .apply { order(ByteOrder.nativeOrder()) }
-            .asFloatBuffer().apply {
+            .asFloatBuffer()
+            .apply {
                 put(triangleCoords)
                 position(0)
             }
 
-    /** Number of coordinates in this triangle list.  */
+    /** Number of coordinates in this triangle list. */
     private val numCoords = triangleCoords.size / COORDS_PER_VERTEX
 
     /**
@@ -62,46 +61,46 @@
 
         // Draw the triangle list.
         GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, numCoords)
-        if (CHECK_GL_ERRORS) checkGlError(
-            "glDrawArrays"
-        )
+        if (CHECK_GL_ERRORS) checkGlError("glDrawArrays")
     }
 
-    /** OpenGL shaders for drawing solid colored triangle lists.  */
+    /** OpenGL shaders for drawing solid colored triangle lists. */
     class Program {
-        /** ID OpenGL uses to identify this program.  */
+        /** ID OpenGL uses to identify this program. */
         private val programId: Int
 
-        /** Handle for uMvpMatrix uniform in vertex shader.  */
+        /** Handle for uMvpMatrix uniform in vertex shader. */
         private val mvpMatrixHandle: Int
 
-        /** Handle for aPosition attribute in vertex shader.  */
+        /** Handle for aPosition attribute in vertex shader. */
         private val positionHandle: Int
 
-        /** Handle for uColor uniform in fragment shader.  */
+        /** Handle for uColor uniform in fragment shader. */
         private val colorHandle: Int
 
         companion object {
-            /** Trivial vertex shader that transforms the input vertex by the MVP matrix.  */
-            private const val VERTEX_SHADER_CODE = "" +
-                "uniform mat4 uMvpMatrix;\n" +
-                "attribute vec4 aPosition;\n" +
-                "void main() {\n" +
-                "    gl_Position = uMvpMatrix * aPosition;\n" +
-                "}\n"
+            /** Trivial vertex shader that transforms the input vertex by the MVP matrix. */
+            private const val VERTEX_SHADER_CODE =
+                "" +
+                    "uniform mat4 uMvpMatrix;\n" +
+                    "attribute vec4 aPosition;\n" +
+                    "void main() {\n" +
+                    "    gl_Position = uMvpMatrix * aPosition;\n" +
+                    "}\n"
 
-            /** Trivial fragment shader that draws with a fixed color.  */
-            private const val FRAGMENT_SHADER_CODE = "" +
-                "precision mediump float;\n" +
-                "uniform vec4 uColor;\n" +
-                "void main() {\n" +
-                "    gl_FragColor = uColor;\n" +
-                "}\n"
+            /** Trivial fragment shader that draws with a fixed color. */
+            private const val FRAGMENT_SHADER_CODE =
+                "" +
+                    "precision mediump float;\n" +
+                    "uniform vec4 uColor;\n" +
+                    "void main() {\n" +
+                    "    gl_FragColor = uColor;\n" +
+                    "}\n"
         }
 
         /**
-         * Tells OpenGL to use this program. Call this method before drawing a sequence of
-         * triangle lists.
+         * Tells OpenGL to use this program. Call this method before drawing a sequence of triangle
+         * lists.
          */
         fun bindProgramAndAttribs() {
             GLES20.glUseProgram(programId)
@@ -123,16 +122,15 @@
             }
         }
 
-        /** Sends the given MVP matrix, vertex data, and color to OpenGL.  */
-        fun bind(
-            mvpMatrix: FloatArray?,
-            vertexBuffer: FloatBuffer?,
-            color: FloatArray?
-        ) {
+        /** Sends the given MVP matrix, vertex data, and color to OpenGL. */
+        fun bind(mvpMatrix: FloatArray?, vertexBuffer: FloatBuffer?, color: FloatArray?) {
             // Pass the MVP matrix to OpenGL.
             GLES20.glUniformMatrix4fv(
-                mvpMatrixHandle, 1 /* count */, false /* transpose */,
-                mvpMatrix, 0 /* offset */
+                mvpMatrixHandle,
+                1 /* count */,
+                false /* transpose */,
+                mvpMatrix,
+                0 /* offset */
             )
             if (CHECK_GL_ERRORS) {
                 checkGlError("glUniformMatrix4fv")
@@ -168,20 +166,12 @@
          */
         init {
             // Prepare shaders.
-            val vertexShader = loadShader(
-                GLES20.GL_VERTEX_SHADER,
-                VERTEX_SHADER_CODE
-            )
-            val fragmentShader = loadShader(
-                GLES20.GL_FRAGMENT_SHADER,
-                FRAGMENT_SHADER_CODE
-            )
+            val vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, VERTEX_SHADER_CODE)
+            val fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, FRAGMENT_SHADER_CODE)
 
             // Create empty OpenGL Program.
             programId = GLES20.glCreateProgram()
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glCreateProgram"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glCreateProgram")
             check(programId != 0) { "glCreateProgram failed" }
 
             // Add the shaders to the program.
@@ -223,43 +213,42 @@
     companion object {
         private const val TAG = "GlColoredTriangleList"
 
-        /** Whether to check for GL errors. This is slow, so not appropriate for production builds.  */
+        /**
+         * Whether to check for GL errors. This is slow, so not appropriate for production builds.
+         */
         private const val CHECK_GL_ERRORS = false
 
-        /** Number of coordinates per vertex in this array: one for each of x, y, and z.  */
+        /** Number of coordinates per vertex in this array: one for each of x, y, and z. */
         private const val COORDS_PER_VERTEX = 3
 
-        /** Number of bytes to store a float in GL.  */
+        /** Number of bytes to store a float in GL. */
         const val BYTES_PER_FLOAT = 4
 
-        /** Number of bytes per vertex.  */
+        /** Number of bytes per vertex. */
         private const val VERTEX_STRIDE = COORDS_PER_VERTEX * BYTES_PER_FLOAT
 
-        /** Triangles have three vertices.  */
+        /** Triangles have three vertices. */
         private const val VERTICES_PER_TRIANGLE = 3
 
         /**
          * Number of components in an OpenGL color. The components are:
-         *  1. red
-         *  1. green
-         *  1. blue
-         *  1. alpha
-         *
+         * 1. red
+         * 1. green
+         * 1. blue
+         * 1. alpha
          */
         private const val NUM_COLOR_COMPONENTS = 4
 
         /**
          * Checks if any of the GL calls since the last time this method was called set an error
-         * condition. Call this method immediately after calling a GL method. Pass the name of the GL
-         * operation. For example:
-         *
+         * condition. Call this method immediately after calling a GL method. Pass the name of the
+         * GL operation. For example:
          * <pre>
          * mColorHandle = GLES20.glGetUniformLocation(mProgram, "uColor");
          * MyGLRenderer.checkGlError("glGetUniformLocation");</pre>
          *
          * If the operation is not successful, the check throws an exception.
          *
-         *
          * *Note* This is quite slow so it's best to use it sparingly in production builds.
          *
          * @param glOperation name of the OpenGL call to check
@@ -272,8 +261,11 @@
                     errorString = GLUtils.getEGLErrorString(error)
                 }
                 val message =
-                    glOperation + " caused GL error 0x" + Integer.toHexString(error) +
-                        ": " + errorString
+                    glOperation +
+                        " caused GL error 0x" +
+                        Integer.toHexString(error) +
+                        ": " +
+                        errorString
                 Log.e(TAG, message)
                 throw RuntimeException(message)
             }
@@ -289,20 +281,14 @@
         internal fun loadShader(type: Int, shaderCode: String): Int {
             // Create a vertex or fragment shader.
             val shader = GLES20.glCreateShader(type)
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glCreateShader"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glCreateShader")
             check(shader != 0) { "glCreateShader failed" }
 
             // Add the source code to the shader and compile it.
             GLES20.glShaderSource(shader, shaderCode)
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glShaderSource"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glShaderSource")
             GLES20.glCompileShader(shader)
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glCompileShader"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glCompileShader")
             return shader
         }
     }
diff --git a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Gles2TexturedTriangleList.kt b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Gles2TexturedTriangleList.kt
index 0161406..f7ba47c 100644
--- a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Gles2TexturedTriangleList.kt
+++ b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Gles2TexturedTriangleList.kt
@@ -24,9 +24,7 @@
 import java.nio.ByteOrder
 import java.nio.FloatBuffer
 
-/**
- * A list of triangles drawn with a texture using OpenGL ES 2.0.
- */
+/** A list of triangles drawn with a texture using OpenGL ES 2.0. */
 internal class Gles2TexturedTriangleList(
     private val program: Program,
     triangleCoords: FloatArray,
@@ -37,10 +35,8 @@
             ("must be multiple of VERTICES_PER_TRIANGLE * COORDS_PER_VERTEX coordinates")
         }
         require(textureCoords.size % (VERTICES_PER_TRIANGLE * TEXTURE_COORDS_PER_VERTEX) == 0) {
-            (
-                "must be multiple of VERTICES_PER_TRIANGLE * NUM_TEXTURE_COMPONENTS texture " +
-                    "coordinates"
-                )
+            ("must be multiple of VERTICES_PER_TRIANGLE * NUM_TEXTURE_COMPONENTS texture " +
+                "coordinates")
         }
     }
 
@@ -48,7 +44,8 @@
     private val vertexBuffer =
         ByteBuffer.allocateDirect(triangleCoords.size * BYTES_PER_FLOAT)
             .apply { order(ByteOrder.nativeOrder()) }
-            .asFloatBuffer().apply {
+            .asFloatBuffer()
+            .apply {
                 put(triangleCoords)
                 position(0)
             }
@@ -57,12 +54,13 @@
     private val textureCoordsBuffer =
         ByteBuffer.allocateDirect(textureCoords.size * BYTES_PER_FLOAT)
             .apply { order(ByteOrder.nativeOrder()) }
-            .asFloatBuffer().apply {
+            .asFloatBuffer()
+            .apply {
                 put(textureCoords)
                 position(0)
             }
 
-    /** Number of coordinates in this triangle list.  */
+    /** Number of coordinates in this triangle list. */
     private val numCoords = triangleCoords.size / COORDS_PER_VERTEX
 
     /**
@@ -76,49 +74,49 @@
 
         // Draw the triangle list.
         GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, numCoords)
-        if (CHECK_GL_ERRORS) checkGlError(
-            "glDrawArrays"
-        )
+        if (CHECK_GL_ERRORS) checkGlError("glDrawArrays")
     }
 
-    /** OpenGL shaders for drawing textured triangle lists.  */
+    /** OpenGL shaders for drawing textured triangle lists. */
     class Program {
-        /** ID OpenGL uses to identify this program.  */
+        /** ID OpenGL uses to identify this program. */
         private val programId: Int
 
-        /** Handle for uMvpMatrix uniform in vertex shader.  */
+        /** Handle for uMvpMatrix uniform in vertex shader. */
         private val mvpMatrixHandle: Int
 
-        /** Handle for aPosition attribute in vertex shader.  */
+        /** Handle for aPosition attribute in vertex shader. */
         private val positionHandle: Int
 
-        /** Handle for aTextureCoordinate uniform in fragment shader.  */
+        /** Handle for aTextureCoordinate uniform in fragment shader. */
         private val textureCoordinateHandle: Int
 
         companion object {
-            /** Trivial vertex shader that transforms the input vertex by the MVP matrix.  */
-            private const val VERTEX_SHADER_CODE = "" +
-                "uniform mat4 uMvpMatrix;\n" +
-                "attribute vec4 aPosition;\n" +
-                "attribute vec4 aTextureCoordinate;\n" +
-                "varying vec2 textureCoordinate;\n" +
-                "void main() {\n" +
-                "    gl_Position = uMvpMatrix * aPosition;\n" +
-                "    textureCoordinate = aTextureCoordinate.xy;" +
-                "}\n"
+            /** Trivial vertex shader that transforms the input vertex by the MVP matrix. */
+            private const val VERTEX_SHADER_CODE =
+                "" +
+                    "uniform mat4 uMvpMatrix;\n" +
+                    "attribute vec4 aPosition;\n" +
+                    "attribute vec4 aTextureCoordinate;\n" +
+                    "varying vec2 textureCoordinate;\n" +
+                    "void main() {\n" +
+                    "    gl_Position = uMvpMatrix * aPosition;\n" +
+                    "    textureCoordinate = aTextureCoordinate.xy;" +
+                    "}\n"
 
-            /** Trivial fragment shader that draws with a texture.  */
-            private const val FRAGMENT_SHADER_CODE = "" +
-                "varying highp vec2 textureCoordinate;\n" +
-                "uniform sampler2D texture;\n" +
-                "void main() {\n" +
-                "    gl_FragColor = texture2D(texture, textureCoordinate);\n" +
-                "}\n"
+            /** Trivial fragment shader that draws with a texture. */
+            private const val FRAGMENT_SHADER_CODE =
+                "" +
+                    "varying highp vec2 textureCoordinate;\n" +
+                    "uniform sampler2D texture;\n" +
+                    "void main() {\n" +
+                    "    gl_FragColor = texture2D(texture, textureCoordinate);\n" +
+                    "}\n"
         }
 
         /**
-         * Tells OpenGL to use this program. Call this method before drawing a sequence of
-         * triangle lists.
+         * Tells OpenGL to use this program. Call this method before drawing a sequence of triangle
+         * lists.
          */
         fun bindProgramAndAttribs() {
             GLES20.glUseProgram(programId)
@@ -157,7 +155,7 @@
             }
         }
 
-        /** Sends the given MVP matrix, vertex data, and color to OpenGL.  */
+        /** Sends the given MVP matrix, vertex data, and color to OpenGL. */
         fun bind(
             mvpMatrix: FloatArray?,
             vertexBuffer: FloatBuffer?,
@@ -165,8 +163,11 @@
         ) {
             // Pass the MVP matrix to OpenGL.
             GLES20.glUniformMatrix4fv(
-                mvpMatrixHandle, 1 /* count */, false /* transpose */,
-                mvpMatrix, 0 /* offset */
+                mvpMatrixHandle,
+                1 /* count */,
+                false /* transpose */,
+                mvpMatrix,
+                0 /* offset */
             )
             if (CHECK_GL_ERRORS) {
                 checkGlError("glUniformMatrix4fv")
@@ -205,20 +206,12 @@
          */
         init {
             // Prepare shaders.
-            val vertexShader = loadShader(
-                GLES20.GL_VERTEX_SHADER,
-                VERTEX_SHADER_CODE
-            )
-            val fragmentShader = loadShader(
-                GLES20.GL_FRAGMENT_SHADER,
-                FRAGMENT_SHADER_CODE
-            )
+            val vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, VERTEX_SHADER_CODE)
+            val fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, FRAGMENT_SHADER_CODE)
 
             // Create empty OpenGL Program.
             programId = GLES20.glCreateProgram()
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glCreateProgram"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glCreateProgram")
             check(programId != 0) { "glCreateProgram failed" }
 
             // Add the shaders to the program.
@@ -250,8 +243,7 @@
             }
 
             // Get a handle to vertex shader's aUV attribute.
-            textureCoordinateHandle =
-                GLES20.glGetAttribLocation(programId, "aTextureCoordinate")
+            textureCoordinateHandle = GLES20.glGetAttribLocation(programId, "aTextureCoordinate")
             if (CHECK_GL_ERRORS) {
                 checkGlError("glGetAttribLocation")
             }
@@ -272,21 +264,20 @@
          */
         private const val CHECK_GL_ERRORS = false
 
-        /** Number of coordinates per vertex in this array: one for each of x, y, and z.  */
+        /** Number of coordinates per vertex in this array: one for each of x, y, and z. */
         private const val COORDS_PER_VERTEX = 3
 
         /** Number of texture coordinates per vertex in this array: one for u & v */
         private const val TEXTURE_COORDS_PER_VERTEX = 2
 
-        /** Number of bytes to store a float in GL.  */
+        /** Number of bytes to store a float in GL. */
         const val BYTES_PER_FLOAT = 4
 
-        /** Number of bytes per vertex.  */
+        /** Number of bytes per vertex. */
         private const val VERTEX_STRIDE = COORDS_PER_VERTEX * BYTES_PER_FLOAT
 
-        /** Number of bytes per vertex for texture coords.  */
-        private const val TEXTURE_COORDS_VERTEX_STRIDE =
-            TEXTURE_COORDS_PER_VERTEX * BYTES_PER_FLOAT
+        /** Number of bytes per vertex for texture coords. */
+        private const val TEXTURE_COORDS_VERTEX_STRIDE = TEXTURE_COORDS_PER_VERTEX * BYTES_PER_FLOAT
 
         /** Triangles have three vertices. */
         private const val VERTICES_PER_TRIANGLE = 3
@@ -295,14 +286,12 @@
          * Checks if any of the GL calls since the last time this method was called set an error
          * condition. Call this method immediately after calling a GL method. Pass the name of the
          * GL operation. For example:
-         *
          * <pre>
          * mColorHandle = GLES20.glGetUniformLocation(mProgram, "uColor");
          * MyGLRenderer.checkGlError("glGetUniformLocation");</pre>
          *
          * If the operation is not successful, the check throws an exception.
          *
-         *
          * *Note* This is quite slow so it's best to use it sparingly in production builds.
          *
          * @param glOperation name of the OpenGL call to check
@@ -315,8 +304,11 @@
                     errorString = GLUtils.getEGLErrorString(error)
                 }
                 val message =
-                    glOperation + " caused GL error 0x" + Integer.toHexString(error) +
-                        ": " + errorString
+                    glOperation +
+                        " caused GL error 0x" +
+                        Integer.toHexString(error) +
+                        ": " +
+                        errorString
                 Log.e(TAG, message)
                 throw RuntimeException(message)
             }
@@ -332,20 +324,14 @@
         internal fun loadShader(type: Int, shaderCode: String): Int {
             // Create a vertex or fragment shader.
             val shader = GLES20.glCreateShader(type)
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glCreateShader"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glCreateShader")
             check(shader != 0) { "glCreateShader failed" }
 
             // Add the source code to the shader and compile it.
             GLES20.glShaderSource(shader, shaderCode)
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glShaderSource"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glShaderSource")
             GLES20.glCompileShader(shader)
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glCompileShader"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glCompileShader")
             return shader
         }
     }
diff --git a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/KDocExampleWatchFace.kt b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/KDocExampleWatchFace.kt
index 622c224..acb1d98 100644
--- a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/KDocExampleWatchFace.kt
+++ b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/KDocExampleWatchFace.kt
@@ -71,29 +71,30 @@
                         R.string.colors_style_setting,
                         R.string.colors_style_setting_description,
                         icon = null,
-                        options = listOf(
-                            ListUserStyleSetting.ListOption(
-                                Option.Id(RED_STYLE),
-                                resources,
-                                R.string.colors_style_red,
-                                R.string.colors_style_red_screen_reader,
-                                icon = null
+                        options =
+                            listOf(
+                                ListUserStyleSetting.ListOption(
+                                    Option.Id(RED_STYLE),
+                                    resources,
+                                    R.string.colors_style_red,
+                                    R.string.colors_style_red_screen_reader,
+                                    icon = null
+                                ),
+                                ListUserStyleSetting.ListOption(
+                                    Option.Id(GREEN_STYLE),
+                                    resources,
+                                    R.string.colors_style_green,
+                                    R.string.colors_style_green_screen_reader,
+                                    icon = null
+                                ),
+                                ListUserStyleSetting.ListOption(
+                                    Option.Id(BLUE_STYLE),
+                                    resources,
+                                    R.string.colors_style_blue,
+                                    R.string.colors_style_blue_screen_reader,
+                                    icon = null
+                                )
                             ),
-                            ListUserStyleSetting.ListOption(
-                                Option.Id(GREEN_STYLE),
-                                resources,
-                                R.string.colors_style_green,
-                                R.string.colors_style_green_screen_reader,
-                                icon = null
-                            ),
-                            ListUserStyleSetting.ListOption(
-                                Option.Id(BLUE_STYLE),
-                                resources,
-                                R.string.colors_style_blue,
-                                R.string.colors_style_blue_screen_reader,
-                                icon = null
-                            )
-                        ),
                         listOf(
                             WatchFaceLayer.BASE,
                             WatchFaceLayer.COMPLICATIONS,
@@ -106,29 +107,30 @@
                         R.string.hand_style_setting,
                         R.string.hand_style_setting_description,
                         icon = null,
-                        options = listOf(
-                            ListUserStyleSetting.ListOption(
-                                Option.Id(CLASSIC_STYLE),
-                                resources,
-                                R.string.hand_style_classic,
-                                R.string.hand_style_classic_screen_reader,
-                                icon = null
+                        options =
+                            listOf(
+                                ListUserStyleSetting.ListOption(
+                                    Option.Id(CLASSIC_STYLE),
+                                    resources,
+                                    R.string.hand_style_classic,
+                                    R.string.hand_style_classic_screen_reader,
+                                    icon = null
+                                ),
+                                ListUserStyleSetting.ListOption(
+                                    Option.Id(MODERN_STYLE),
+                                    resources,
+                                    R.string.hand_style_modern,
+                                    R.string.hand_style_modern_screen_reader,
+                                    icon = null
+                                ),
+                                ListUserStyleSetting.ListOption(
+                                    Option.Id(GOTHIC_STYLE),
+                                    resources,
+                                    R.string.hand_style_gothic,
+                                    R.string.hand_style_gothic_screen_reader,
+                                    icon = null
+                                )
                             ),
-                            ListUserStyleSetting.ListOption(
-                                Option.Id(MODERN_STYLE),
-                                resources,
-                                R.string.hand_style_modern,
-                                R.string.hand_style_modern_screen_reader,
-                                icon = null
-                            ),
-                            ListUserStyleSetting.ListOption(
-                                Option.Id(GOTHIC_STYLE),
-                                resources,
-                                R.string.hand_style_gothic,
-                                R.string.hand_style_gothic_screen_reader,
-                                icon = null
-                            )
-                        ),
                         listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
                     )
                 )
@@ -137,52 +139,52 @@
         override fun createComplicationSlotsManager(
             currentUserStyleRepository: CurrentUserStyleRepository
         ): ComplicationSlotsManager {
-            val canvasComplicationFactory =
-                CanvasComplicationFactory { watchState, listener ->
-                    CanvasComplicationDrawable(ComplicationDrawable(this), watchState, listener)
-                }
+            val canvasComplicationFactory = CanvasComplicationFactory { watchState, listener ->
+                CanvasComplicationDrawable(ComplicationDrawable(this), watchState, listener)
+            }
             return ComplicationSlotsManager(
                 listOf(
                     ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                        /*id */ 0,
-                        canvasComplicationFactory,
-                        listOf(
-                            ComplicationType.RANGED_VALUE,
-                            ComplicationType.LONG_TEXT,
-                            ComplicationType.SHORT_TEXT,
-                            ComplicationType.MONOCHROMATIC_IMAGE,
-                            ComplicationType.SMALL_IMAGE
-                        ),
-                        DefaultComplicationDataSourcePolicy(
-                            SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
-                            ComplicationType.SHORT_TEXT
-                        ),
-                        ComplicationSlotBounds(RectF(0.15625f, 0.1875f, 0.84375f, 0.3125f))
-                    ).build(),
+                            /*id */ 0,
+                            canvasComplicationFactory,
+                            listOf(
+                                ComplicationType.RANGED_VALUE,
+                                ComplicationType.LONG_TEXT,
+                                ComplicationType.SHORT_TEXT,
+                                ComplicationType.MONOCHROMATIC_IMAGE,
+                                ComplicationType.SMALL_IMAGE
+                            ),
+                            DefaultComplicationDataSourcePolicy(
+                                SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
+                                ComplicationType.SHORT_TEXT
+                            ),
+                            ComplicationSlotBounds(RectF(0.15625f, 0.1875f, 0.84375f, 0.3125f))
+                        )
+                        .build(),
                     ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                        /*id */ 1,
-                        canvasComplicationFactory,
-                        listOf(
-                            ComplicationType.RANGED_VALUE,
-                            ComplicationType.LONG_TEXT,
-                            ComplicationType.SHORT_TEXT,
-                            ComplicationType.MONOCHROMATIC_IMAGE,
-                            ComplicationType.SMALL_IMAGE
-                        ),
-                        DefaultComplicationDataSourcePolicy(
-                            SystemDataSources.DATA_SOURCE_STEP_COUNT,
-                            ComplicationType.SHORT_TEXT
-                        ),
-                        ComplicationSlotBounds(RectF(0.1f, 0.5625f, 0.35f, 0.8125f))
-                    ).build()
+                            /*id */ 1,
+                            canvasComplicationFactory,
+                            listOf(
+                                ComplicationType.RANGED_VALUE,
+                                ComplicationType.LONG_TEXT,
+                                ComplicationType.SHORT_TEXT,
+                                ComplicationType.MONOCHROMATIC_IMAGE,
+                                ComplicationType.SMALL_IMAGE
+                            ),
+                            DefaultComplicationDataSourcePolicy(
+                                SystemDataSources.DATA_SOURCE_STEP_COUNT,
+                                ComplicationType.SHORT_TEXT
+                            ),
+                            ComplicationSlotBounds(RectF(0.1f, 0.5625f, 0.35f, 0.8125f))
+                        )
+                        .build()
                 ),
                 currentUserStyleRepository
             )
         }
 
         inner class MySharedAssets : Renderer.SharedAssets {
-            override fun onDestroy() {
-            }
+            override fun onDestroy() {}
         }
 
         override suspend fun createWatchFace(
@@ -190,52 +192,54 @@
             watchState: WatchState,
             complicationSlotsManager: ComplicationSlotsManager,
             currentUserStyleRepository: CurrentUserStyleRepository
-        ) = WatchFace(
-            WatchFaceType.ANALOG,
-            object : Renderer.CanvasRenderer2<MySharedAssets>(
-                surfaceHolder,
-                currentUserStyleRepository,
-                watchState,
-                CanvasType.HARDWARE,
-                interactiveDrawModeUpdateDelayMillis = 16,
-                clearWithBackgroundTintBeforeRenderingHighlightLayer = true
-            ) {
-                init {
-                    // Listen for user style changes.
-                    CoroutineScope(Dispatchers.Main.immediate).launch {
-                        currentUserStyleRepository.userStyle.collect {
-                            // `userStyle` will contain two userStyle categories with options
-                            // from the lists above. ..
+        ) =
+            WatchFace(
+                WatchFaceType.ANALOG,
+                object :
+                    Renderer.CanvasRenderer2<MySharedAssets>(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        CanvasType.HARDWARE,
+                        interactiveDrawModeUpdateDelayMillis = 16,
+                        clearWithBackgroundTintBeforeRenderingHighlightLayer = true
+                    ) {
+                    init {
+                        // Listen for user style changes.
+                        CoroutineScope(Dispatchers.Main.immediate).launch {
+                            currentUserStyleRepository.userStyle.collect {
+                                // `userStyle` will contain two userStyle categories with options
+                                // from the lists above. ..
+                            }
                         }
                     }
-                }
 
-                override fun render(
-                    canvas: Canvas,
-                    bounds: Rect,
-                    zonedDateTime: ZonedDateTime,
-                    sharedAssets: MySharedAssets
-                ) {
-                    // ...
-                }
+                    override fun render(
+                        canvas: Canvas,
+                        bounds: Rect,
+                        zonedDateTime: ZonedDateTime,
+                        sharedAssets: MySharedAssets
+                    ) {
+                        // ...
+                    }
 
-                override fun renderHighlightLayer(
-                    canvas: Canvas,
-                    bounds: Rect,
-                    zonedDateTime: ZonedDateTime,
-                    sharedAssets: MySharedAssets
-                ) {
-                    canvas.drawColor(renderParameters.highlightLayer!!.backgroundTint)
+                    override fun renderHighlightLayer(
+                        canvas: Canvas,
+                        bounds: Rect,
+                        zonedDateTime: ZonedDateTime,
+                        sharedAssets: MySharedAssets
+                    ) {
+                        canvas.drawColor(renderParameters.highlightLayer!!.backgroundTint)
 
-                    // ...
-                }
+                        // ...
+                    }
 
-                override suspend fun createSharedAssets(): MySharedAssets {
-                    // Insert resource loading here.
-                    return MySharedAssets()
+                    override suspend fun createSharedAssets(): MySharedAssets {
+                        // Insert resource loading here.
+                        return MySharedAssets()
+                    }
                 }
-            }
-        )
+            )
     }
 
     return ExampleCanvasWatchFaceService()
diff --git a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Style.kt b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Style.kt
index c0c0d0e..f7c983c 100644
--- a/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Style.kt
+++ b/wear/watchface/watchface/samples/src/main/java/androidx/wear/watchface/samples/Style.kt
@@ -25,22 +25,12 @@
     attributeId: Int,
     defaultResourceId: Int
 ): Int {
-    val styleArray = obtainStyledAttributes(
-        styleResourceId,
-        intArrayOf(attributeId)
-    )
+    val styleArray = obtainStyledAttributes(styleResourceId, intArrayOf(attributeId))
     return styleArray.getResourceId(0, defaultResourceId).also { styleArray.recycle() }
 }
 
-private fun Context.getStyleColor(
-    styleResourceId: Int,
-    attributeId: Int,
-    defaultColor: Int
-): Int {
-    val colorArray = obtainStyledAttributes(
-        styleResourceId,
-        intArrayOf(attributeId)
-    )
+private fun Context.getStyleColor(styleResourceId: Int, attributeId: Int, defaultColor: Int): Int {
+    val colorArray = obtainStyledAttributes(styleResourceId, intArrayOf(attributeId))
     return colorArray.getColor(0, defaultColor).also { colorArray.recycle() }
 }
 
@@ -81,7 +71,9 @@
             val styleResourceId =
                 context.resources.getIdentifier(styleName, "style", context.packageName)
             return context.getStyleResourceId(
-                styleResourceId, R.attr.complication, R.drawable.complication_green_style
+                styleResourceId,
+                R.attr.complication,
+                R.drawable.complication_green_style
             )
         }
     }
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/ComplicationHelperActivityTest.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/ComplicationHelperActivityTest.kt
index db2ad24..bade28d 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/ComplicationHelperActivityTest.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/ComplicationHelperActivityTest.kt
@@ -29,13 +29,13 @@
 import androidx.wear.watchface.complications.data.ComplicationType.MONOCHROMATIC_IMAGE
 import androidx.wear.watchface.complications.data.ComplicationType.SHORT_TEXT
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import com.nhaarman.mockitokotlin2.doReturn
 import com.nhaarman.mockitokotlin2.mock
 import com.nhaarman.mockitokotlin2.never
 import com.nhaarman.mockitokotlin2.verify
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import org.junit.Test
 import org.junit.runner.RunWith
 
 const val TIME_OUT_MILLIS = 500L
@@ -45,12 +45,12 @@
 public class ComplicationHelperActivityTest {
     private val mainThreadHandler = Handler(Looper.getMainLooper())
 
-    private val scenarios = mapOf(
-        ComplicationHelperActivity.PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER to createIntent(),
-
-        ComplicationHelperActivity.PERMISSION_REQUEST_CODE_REQUEST_ONLY to
-            createPermissionOnlyIntent()
-    )
+    private val scenarios =
+        mapOf(
+            ComplicationHelperActivity.PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER to createIntent(),
+            ComplicationHelperActivity.PERMISSION_REQUEST_CODE_REQUEST_ONLY to
+                createPermissionOnlyIntent()
+        )
 
     @Test
     public fun createProviderChooserHelperIntent_action() {
@@ -99,9 +99,10 @@
     @Test
     public fun instanceId() {
         assertThat(
-            createIntent(instanceId = "ID-1")
-                .getStringExtra(ComplicationDataSourceChooserIntent.EXTRA_WATCHFACE_INSTANCE_ID)
-        ).isEqualTo("ID-1")
+                createIntent(instanceId = "ID-1")
+                    .getStringExtra(ComplicationDataSourceChooserIntent.EXTRA_WATCHFACE_INSTANCE_ID)
+            )
+            .isEqualTo("ID-1")
     }
 
     fun runOnMainThread(task: () -> Unit) {
@@ -119,9 +120,8 @@
             scenarios.forEach { (_, intent) ->
                 val helper = ComplicationHelperActivity()
                 helper.intent = intent
-                helper.mDelegate = mock() {
-                    on { shouldShowRequestPermissionRationale() } doReturn true
-                }
+                helper.mDelegate =
+                    mock() { on { shouldShowRequestPermissionRationale() } doReturn true }
 
                 helper.start(true)
                 verify(helper.mDelegate).launchComplicationRationaleActivity()
@@ -135,9 +135,8 @@
             scenarios.forEach { (_, intent) ->
                 val helper = ComplicationHelperActivity()
                 helper.intent = intent
-                helper.mDelegate = mock() {
-                    on { shouldShowRequestPermissionRationale() } doReturn false
-                }
+                helper.mDelegate =
+                    mock() { on { shouldShowRequestPermissionRationale() } doReturn false }
 
                 helper.start(true)
                 verify(helper.mDelegate, never()).launchComplicationRationaleActivity()
@@ -151,9 +150,8 @@
             scenarios.forEach { (_, intent) ->
                 val helper = ComplicationHelperActivity()
                 helper.intent = intent
-                helper.mDelegate = mock() {
-                    on { shouldShowRequestPermissionRationale() } doReturn true
-                }
+                helper.mDelegate =
+                    mock() { on { shouldShowRequestPermissionRationale() } doReturn true }
 
                 helper.start(false)
                 verify(helper.mDelegate, never()).launchComplicationRationaleActivity()
@@ -167,10 +165,11 @@
             scenarios.forEach { (requestId, intent) ->
                 val helper = ComplicationHelperActivity()
                 helper.intent = intent
-                helper.mDelegate = mock() {
-                    on { shouldShowRequestPermissionRationale() } doReturn false
-                    on { checkPermission() } doReturn false
-                }
+                helper.mDelegate =
+                    mock() {
+                        on { shouldShowRequestPermissionRationale() } doReturn false
+                        on { checkPermission() } doReturn false
+                    }
 
                 helper.start(true)
                 verify(helper.mDelegate).requestPermissions(requestId)
@@ -184,10 +183,11 @@
             scenarios.forEach { (requestId, intent) ->
                 val helper = ComplicationHelperActivity()
                 helper.intent = intent
-                helper.mDelegate = mock() {
-                    on { shouldShowRequestPermissionRationale() } doReturn false
-                    on { checkPermission() } doReturn true
-                }
+                helper.mDelegate =
+                    mock() {
+                        on { shouldShowRequestPermissionRationale() } doReturn false
+                        on { checkPermission() } doReturn true
+                    }
 
                 helper.start(true)
                 verify(helper.mDelegate, never()).requestPermissions(requestId)
@@ -252,13 +252,13 @@
 
     @Test
     public fun complicationDeniedActivity_not_launched_if_permission_denied_with_dont_show() {
-        val deniedScenarios = mapOf(
-            ComplicationHelperActivity.PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER_NO_DENIED_INTENT to
-                createIntent(),
-
-            ComplicationHelperActivity.PERMISSION_REQUEST_CODE_REQUEST_ONLY_NO_DENIED_INTENT to
-                createPermissionOnlyIntent()
-        )
+        val deniedScenarios =
+            mapOf(
+                ComplicationHelperActivity
+                    .PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER_NO_DENIED_INTENT to createIntent(),
+                ComplicationHelperActivity.PERMISSION_REQUEST_CODE_REQUEST_ONLY_NO_DENIED_INTENT to
+                    createPermissionOnlyIntent()
+            )
         runOnMainThread {
             deniedScenarios.forEach { (requestId, intent) ->
                 val helper = ComplicationHelperActivity()
@@ -284,26 +284,28 @@
         vararg supportedTypes: ComplicationType = defaultSupportedTypes,
         complicationDeniedIntent: Intent? = Intent(),
         complicationRationalIntent: Intent? = Intent()
-    ) = ComplicationHelperActivity.createComplicationDataSourceChooserHelperIntent(
-        context,
-        watchFaceComponentName,
-        complicationSlotId,
-        supportedTypes.asList(),
-        instanceId,
-        complicationDeniedIntent,
-        complicationRationalIntent
-    )
+    ) =
+        ComplicationHelperActivity.createComplicationDataSourceChooserHelperIntent(
+            context,
+            watchFaceComponentName,
+            complicationSlotId,
+            supportedTypes.asList(),
+            instanceId,
+            complicationDeniedIntent,
+            complicationRationalIntent
+        )
 
     private fun createPermissionOnlyIntent(
         watchFaceComponentName: ComponentName = defaultWatchFaceComponentName,
         complicationDeniedIntent: Intent? = Intent(),
         complicationRationalIntent: Intent? = Intent()
-    ) = ComplicationHelperActivity.createPermissionRequestHelperIntent(
-        context,
-        watchFaceComponentName,
-        complicationDeniedIntent,
-        complicationRationalIntent
-    )
+    ) =
+        ComplicationHelperActivity.createPermissionRequestHelperIntent(
+            context,
+            watchFaceComponentName,
+            complicationDeniedIntent,
+            complicationRationalIntent
+        )
 
     private companion object {
         /** The context to be used in the various tests. */
@@ -323,9 +325,10 @@
 /** The watch face component name encoded in the intent. */
 @Suppress("DEPRECATION")
 private val Intent.watchFaceComponentName
-    get() = getParcelableExtra<ComponentName>(
-        ComplicationDataSourceChooserIntent.EXTRA_WATCH_FACE_COMPONENT_NAME
-    )
+    get() =
+        getParcelableExtra<ComponentName>(
+            ComplicationDataSourceChooserIntent.EXTRA_WATCH_FACE_COMPONENT_NAME
+        )
 
 /** The complication ID encoded in the intent. */
 private val Intent.complicationSlotId
@@ -333,6 +336,7 @@
 
 /** The support types encoded in the intent. */
 private val Intent.supportedTypes
-    get() = ComplicationType.fromWireTypes(
-        getIntArrayExtra(ComplicationDataSourceChooserIntent.EXTRA_SUPPORTED_TYPES)!!
-    )
+    get() =
+        ComplicationType.fromWireTypes(
+            getIntArrayExtra(ComplicationDataSourceChooserIntent.EXTRA_SUPPORTED_TYPES)!!
+        )
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 3f6fe61..485823b 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
@@ -34,40 +34,42 @@
     @Test
     fun measuresWatchFaceIconsFromCustomContext() {
         val context: Context = ApplicationProvider.getApplicationContext()
-        val serviceSpy = object : SimpleWatchFaceTestService() {
-            override val resourcesContext: Context
-                get() = this.createPackageContext(context.packageName,
-                    Context.CONTEXT_RESTRICTED
-                )
-        }
+        val serviceSpy =
+            object : SimpleWatchFaceTestService() {
+                override val resourcesContext: Context
+                    get() =
+                        this.createPackageContext(context.packageName, Context.CONTEXT_RESTRICTED)
+            }
         val engine = serviceSpy.onCreateEngine() as WatchFaceService.EngineWrapper
 
         try {
-            val schema = UserStyleSchema(
-                listOf(
-                    UserStyleSetting.ListUserStyleSetting(
-                        UserStyleSetting.Id("someId"),
-                        "displayName",
-                        "description",
-                        Icon.createWithResource(
-                            context,
-                            androidx.wear.watchface.test.R.drawable.example_icon_24
-                        ),
-                        listOf(
-                            UserStyleSetting.ListUserStyleSetting.ListOption(
-                                UserStyleSetting.Option.Id("red_style"),
-                                displayName = "Red",
-                                screenReaderName = "Red watchface style",
-                                icon = Icon.createWithResource(
-                                    context,
-                                    androidx.wear.watchface.test.R.drawable.example_icon_24
-                                ),
-                            )
-                        ),
-                        listOf(WatchFaceLayer.BASE)
+            val schema =
+                UserStyleSchema(
+                    listOf(
+                        UserStyleSetting.ListUserStyleSetting(
+                            UserStyleSetting.Id("someId"),
+                            "displayName",
+                            "description",
+                            Icon.createWithResource(
+                                context,
+                                androidx.wear.watchface.test.R.drawable.example_icon_24
+                            ),
+                            listOf(
+                                UserStyleSetting.ListUserStyleSetting.ListOption(
+                                    UserStyleSetting.Option.Id("red_style"),
+                                    displayName = "Red",
+                                    screenReaderName = "Red watchface style",
+                                    icon =
+                                        Icon.createWithResource(
+                                            context,
+                                            androidx.wear.watchface.test.R.drawable.example_icon_24
+                                        ),
+                                )
+                            ),
+                            listOf(WatchFaceLayer.BASE)
+                        )
                     )
                 )
-            )
 
             // expect no exception
             engine.validateSchemaWireSize(schema)
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/SimpleWatchFaceTestService.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/SimpleWatchFaceTestService.kt
index 0738ffe..7184120 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/SimpleWatchFaceTestService.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/SimpleWatchFaceTestService.kt
@@ -25,14 +25,13 @@
 import androidx.wear.watchface.style.CurrentUserStyleRepository
 
 /**
- * A simple WatchFaceService that does not get initialized (because it is PreAndroidR) if there
- * is no pendingWallpaperInstance. Use it to unit test methods of the EngineWrapper or to spy on it.
+ * A simple WatchFaceService that does not get initialized (because it is PreAndroidR) if there is
+ * no pendingWallpaperInstance. Use it to unit test methods of the EngineWrapper or to spy on it.
  */
 open class SimpleWatchFaceTestService : WatchFaceService() {
 
     init {
-        @Suppress("LeakingThis")
-        attachBaseContext(ApplicationProvider.getApplicationContext())
+        @Suppress("LeakingThis") attachBaseContext(ApplicationProvider.getApplicationContext())
     }
 
     override suspend fun createWatchFace(
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/TestCanvasAnalogWatchFaceService.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/TestCanvasAnalogWatchFaceService.kt
index 217a28a..81ba33e 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/TestCanvasAnalogWatchFaceService.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/TestCanvasAnalogWatchFaceService.kt
@@ -47,11 +47,12 @@
 
     // We can't subclass ExampleCanvasAnalogWatchFaceService because we want to override internal
     // methods, so instead we use composition.
-    private val delegate = object : ExampleCanvasAnalogWatchFaceService() {
-        init {
-            attachBaseContext(testContext)
+    private val delegate =
+        object : ExampleCanvasAnalogWatchFaceService() {
+            init {
+                attachBaseContext(testContext)
+            }
         }
-    }
 
     init {
         attachBaseContext(testContext)
@@ -88,15 +89,13 @@
 
     override fun getWallpaperSurfaceHolderOverride() = surfaceHolderOverride
 
-    override val wearSdkVersion = when (preRInitFlow) {
-        true -> Build.VERSION_CODES.O_MR1
-        false -> Build.VERSION_CODES.R
-    }
+    override val wearSdkVersion =
+        when (preRInitFlow) {
+            true -> Build.VERSION_CODES.O_MR1
+            false -> Build.VERSION_CODES.R
+        }
 
-    override fun readDirectBootPrefs(
-        context: Context,
-        fileName: String
-    ) = directBootParams
+    override fun readDirectBootPrefs(context: Context, fileName: String) = directBootParams
 
     override fun writeDirectBootPrefs(
         context: Context,
@@ -119,9 +118,10 @@
         onInvalidateCountDownLatch?.countDown()
     }
 
-    override fun getSystemTimeProvider() = object : SystemTimeProvider {
-        override fun getSystemTimeMillis() = mockSystemTimeMillis
+    override fun getSystemTimeProvider() =
+        object : SystemTimeProvider {
+            override fun getSystemTimeMillis() = mockSystemTimeMillis
 
-        override fun getSystemTimeZoneId() = mockZoneId
-    }
+            override fun getSystemTimeZoneId() = mockZoneId
+        }
 }
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/TestGlesWatchFaceService.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/TestGlesWatchFaceService.kt
index 548327a..8bd10f2 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/TestGlesWatchFaceService.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/TestGlesWatchFaceService.kt
@@ -43,11 +43,12 @@
 
     // We can't subclass ExampleOpenGLWatchFaceService because we want to override internal methods,
     // so instead we use composition.
-    private val delegate = object : ExampleOpenGLWatchFaceService() {
-        init {
-            attachBaseContext(testContext)
+    private val delegate =
+        object : ExampleOpenGLWatchFaceService() {
+            init {
+                attachBaseContext(testContext)
+            }
         }
-    }
 
     init {
         attachBaseContext(testContext)
@@ -84,10 +85,7 @@
 
     override fun getWallpaperSurfaceHolderOverride() = surfacHolderOverride
 
-    override fun readDirectBootPrefs(
-        context: Context,
-        fileName: String
-    ) = directBootParams
+    override fun readDirectBootPrefs(context: Context, fileName: String) = directBootParams
 
     override fun writeDirectBootPrefs(
         context: Context,
@@ -106,9 +104,10 @@
         byteArray: ByteArray
     ) {}
 
-    override fun getSystemTimeProvider() = object : SystemTimeProvider {
-        override fun getSystemTimeMillis() = mockSystemTimeMillis
+    override fun getSystemTimeProvider() =
+        object : SystemTimeProvider {
+            override fun getSystemTimeMillis() = mockSystemTimeMillis
 
-        override fun getSystemTimeZoneId() = mockZoneId
-    }
+            override fun getSystemTimeZoneId() = mockZoneId
+        }
 }
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt
index f7e7a0b..68265ed 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt
@@ -31,9 +31,6 @@
 import androidx.test.filters.MediumTest
 import androidx.test.screenshot.AndroidXScreenshotTestRule
 import androidx.test.screenshot.assertAgainstGolden
-import androidx.wear.watchface.complications.data.ComplicationText
-import androidx.wear.watchface.complications.data.PlainComplicationText
-import androidx.wear.watchface.complications.data.ShortTextComplicationData
 import androidx.wear.watchface.CanvasType
 import androidx.wear.watchface.ComplicationSlotsManager
 import androidx.wear.watchface.DrawMode
@@ -44,8 +41,11 @@
 import androidx.wear.watchface.WatchFaceType
 import androidx.wear.watchface.WatchState
 import androidx.wear.watchface.complications.data.ColorRamp
+import androidx.wear.watchface.complications.data.ComplicationText
 import androidx.wear.watchface.complications.data.GoalProgressComplicationData
+import androidx.wear.watchface.complications.data.PlainComplicationText
 import androidx.wear.watchface.complications.data.RangedValueComplicationData
+import androidx.wear.watchface.complications.data.ShortTextComplicationData
 import androidx.wear.watchface.complications.data.WeightedElementsComplicationData
 import androidx.wear.watchface.control.IHeadlessWatchFace
 import androidx.wear.watchface.control.IWatchFaceControlService
@@ -63,16 +63,16 @@
 import androidx.wear.watchface.style.CurrentUserStyleRepository
 import androidx.wear.watchface.style.WatchFaceLayer
 import com.google.common.truth.Truth.assertThat
+import java.time.ZonedDateTime
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.withContext
+import org.junit.After
 import org.junit.Assume
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.time.ZonedDateTime
-import org.junit.After
 
 // This service constructs a WatchFace with a task that's posted on the UI thread.
 internal class AsyncInitWithUiThreadTaskWatchFace : WatchFaceService() {
@@ -83,431 +83,457 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ): WatchFace = withContext(mainThreadCoroutineScope.coroutineContext) {
-        WatchFace(
-            WatchFaceType.DIGITAL,
-            @Suppress("deprecation")
-            object : Renderer.CanvasRenderer(
-                surfaceHolder,
-                currentUserStyleRepository,
-                watchState,
-                CanvasType.SOFTWARE,
-                16
-            ) {
-                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
+    ): WatchFace =
+        withContext(mainThreadCoroutineScope.coroutineContext) {
+            WatchFace(
+                WatchFaceType.DIGITAL,
+                @Suppress("deprecation")
+                object :
+                    Renderer.CanvasRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        CanvasType.SOFTWARE,
+                        16
+                    ) {
+                    override fun render(
+                        canvas: Canvas,
+                        bounds: Rect,
+                        zonedDateTime: ZonedDateTime
+                    ) {}
 
-                override fun renderHighlightLayer(
-                    canvas: Canvas,
-                    bounds: Rect,
-                    zonedDateTime: ZonedDateTime
-                ) {}
-            }
-        )
-    }
+                    override fun renderHighlightLayer(
+                        canvas: Canvas,
+                        bounds: Rect,
+                        zonedDateTime: ZonedDateTime
+                    ) {}
+                }
+            )
+        }
 }
 
 const val TIME_MILLIS: Long = 123456789
-val DEVICE_CONFIG = DeviceConfig(
-    /* hasLowBitAmbient = */ false,
-    /* hasBurnInProtection = */ false,
-    /* analogPreviewReferenceTimeMillis = */ 0,
-    /* digitalPreviewReferenceTimeMillis = */ 0
-)
+val DEVICE_CONFIG =
+    DeviceConfig(
+        /* hasLowBitAmbient = */ false,
+        /* hasBurnInProtection = */ false,
+        /* analogPreviewReferenceTimeMillis = */ 0,
+        /* digitalPreviewReferenceTimeMillis = */ 0
+    )
 
 @RunWith(AndroidJUnit4::class)
 @RequiresApi(Build.VERSION_CODES.O_MR1)
 @MediumTest
 public class WatchFaceControlServiceTest {
 
-   @get:Rule
-   internal val screenshotRule = AndroidXScreenshotTestRule("wear/wear-watchface")
+    @get:Rule internal val screenshotRule = AndroidXScreenshotTestRule("wear/wear-watchface")
 
-   private lateinit var instance: IHeadlessWatchFace
+    private lateinit var instance: IHeadlessWatchFace
 
-   @Before
-   public fun setUp() {
-       Assume.assumeTrue("This test suite assumes API 27", Build.VERSION.SDK_INT >= 27)
-   }
+    @Before
+    public fun setUp() {
+        Assume.assumeTrue("This test suite assumes API 27", Build.VERSION.SDK_INT >= 27)
+    }
 
-   @After
-   public fun tearDown() {
-       if (this::instance.isInitialized) {
-           instance.release()
-       }
-   }
+    @After
+    public fun tearDown() {
+        if (this::instance.isInitialized) {
+            instance.release()
+        }
+    }
 
-   private fun createInstance(width: Int, height: Int) {
-       val instanceService = IWatchFaceControlService.Stub.asInterface(
-           WatchFaceControlService().apply {
-               setContext(ApplicationProvider.getApplicationContext<Context>())
-           }.onBind(
-               Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE)
-           )
-       )
-       instance = instanceService.createHeadlessWatchFaceInstance(
-           HeadlessWatchFaceInstanceParams(
-               ComponentName(
-                   ApplicationProvider.getApplicationContext<Context>(),
-                   ExampleCanvasAnalogWatchFaceService::class.java
-               ),
-               DEVICE_CONFIG,
-               width,
-               height,
-               null
-           )
-       )
-   }
+    private fun createInstance(width: Int, height: Int) {
+        val instanceService =
+            IWatchFaceControlService.Stub.asInterface(
+                WatchFaceControlService()
+                    .apply { setContext(ApplicationProvider.getApplicationContext<Context>()) }
+                    .onBind(Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE))
+            )
+        instance =
+            instanceService.createHeadlessWatchFaceInstance(
+                HeadlessWatchFaceInstanceParams(
+                    ComponentName(
+                        ApplicationProvider.getApplicationContext<Context>(),
+                        ExampleCanvasAnalogWatchFaceService::class.java
+                    ),
+                    DEVICE_CONFIG,
+                    width,
+                    height,
+                    null
+                )
+            )
+    }
 
-   private fun createOpenGlInstance(width: Int, height: Int) {
-       val instanceService = IWatchFaceControlService.Stub.asInterface(
-           WatchFaceControlService().apply {
-               setContext(ApplicationProvider.getApplicationContext<Context>())
-           }.onBind(
-               Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE)
-           )
-       )
-       instance = instanceService.createHeadlessWatchFaceInstance(
-           HeadlessWatchFaceInstanceParams(
-               ComponentName(
-                   ApplicationProvider.getApplicationContext<Context>(),
-                   ExampleOpenGLWatchFaceService::class.java
-               ),
-               DEVICE_CONFIG,
-               width,
-               height,
-               null
-           )
-       )
-   }
+    private fun createOpenGlInstance(width: Int, height: Int) {
+        val instanceService =
+            IWatchFaceControlService.Stub.asInterface(
+                WatchFaceControlService()
+                    .apply { setContext(ApplicationProvider.getApplicationContext<Context>()) }
+                    .onBind(Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE))
+            )
+        instance =
+            instanceService.createHeadlessWatchFaceInstance(
+                HeadlessWatchFaceInstanceParams(
+                    ComponentName(
+                        ApplicationProvider.getApplicationContext<Context>(),
+                        ExampleOpenGLWatchFaceService::class.java
+                    ),
+                    DEVICE_CONFIG,
+                    width,
+                    height,
+                    null
+                )
+            )
+    }
 
-   @Test
-   public fun createWatchFaceInstanceWithRangedValueComplications() {
-       createInstance(width = 400, height = 400)
-       val bitmap = SharedMemoryImage.ashmemReadImageBundle(
-           instance.renderWatchFaceToBitmap(
-               WatchFaceRenderParams(
-                   RenderParameters(
-                       DrawMode.INTERACTIVE,
-                       WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                       null
-                   ).toWireFormat(),
-                   TIME_MILLIS,
-                   null,
-                   listOf(
-                       IdAndComplicationDataWireFormat(
-                           EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-                           RangedValueComplicationData.Builder(
-                               value = 100.0f,
-                               min = 0.0f,
-                               max = 100.0f,
-                               ComplicationText.EMPTY
-                           )
-                               .setText(PlainComplicationText.Builder("100%").build())
-                               .build()
-                               .asWireComplicationData()
-                       ),
-                       IdAndComplicationDataWireFormat(
-                           EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
-                           RangedValueComplicationData.Builder(
-                               value = 75.0f,
-                               min = 0.0f,
-                               max = 100.0f,
-                               ComplicationText.EMPTY
-                           )
-                               .setText(PlainComplicationText.Builder("75%").build())
-                               .build()
-                               .asWireComplicationData()
-                       )
-                   )
-               )
-           )
-       )
+    @Test
+    public fun createWatchFaceInstanceWithRangedValueComplications() {
+        createInstance(width = 400, height = 400)
+        val bitmap =
+            SharedMemoryImage.ashmemReadImageBundle(
+                instance.renderWatchFaceToBitmap(
+                    WatchFaceRenderParams(
+                        RenderParameters(
+                                DrawMode.INTERACTIVE,
+                                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                null
+                            )
+                            .toWireFormat(),
+                        TIME_MILLIS,
+                        null,
+                        listOf(
+                            IdAndComplicationDataWireFormat(
+                                EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                                RangedValueComplicationData.Builder(
+                                        value = 100.0f,
+                                        min = 0.0f,
+                                        max = 100.0f,
+                                        ComplicationText.EMPTY
+                                    )
+                                    .setText(PlainComplicationText.Builder("100%").build())
+                                    .build()
+                                    .asWireComplicationData()
+                            ),
+                            IdAndComplicationDataWireFormat(
+                                EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
+                                RangedValueComplicationData.Builder(
+                                        value = 75.0f,
+                                        min = 0.0f,
+                                        max = 100.0f,
+                                        ComplicationText.EMPTY
+                                    )
+                                    .setText(PlainComplicationText.Builder("75%").build())
+                                    .build()
+                                    .asWireComplicationData()
+                            )
+                        )
+                    )
+                )
+            )
 
-       bitmap.assertAgainstGolden(screenshotRule, "ranged_value_complications")
-   }
+        bitmap.assertAgainstGolden(screenshotRule, "ranged_value_complications")
+    }
 
-   @Test
-   public fun createHeadlessWatchFaceInstance() {
-       createInstance(width = 100, height = 100)
-       val bitmap = SharedMemoryImage.ashmemReadImageBundle(
-           instance.renderWatchFaceToBitmap(
-               WatchFaceRenderParams(
-                   RenderParameters(
-                       DrawMode.INTERACTIVE,
-                       WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                       null
-                   ).toWireFormat(),
-                   TIME_MILLIS,
-                   null,
-                   listOf(
-                       IdAndComplicationDataWireFormat(
-                           EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-                           ShortTextComplicationData.Builder(
-                               PlainComplicationText.Builder("Mon").build(),
-                               ComplicationText.EMPTY
-                           )
-                               .setTitle(PlainComplicationText.Builder("23rd").build())
-                               .build()
-                               .asWireComplicationData()
-                       ),
-                       IdAndComplicationDataWireFormat(
-                           EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
-                           ShortTextComplicationData.Builder(
-                               PlainComplicationText.Builder("100").build(),
-                               ComplicationText.EMPTY
-                           )
-                               .setTitle(PlainComplicationText.Builder("Steps").build())
-                               .build()
-                               .asWireComplicationData()
-                       )
-                   )
-               )
-           )
-       )
+    @Test
+    public fun createHeadlessWatchFaceInstance() {
+        createInstance(width = 100, height = 100)
+        val bitmap =
+            SharedMemoryImage.ashmemReadImageBundle(
+                instance.renderWatchFaceToBitmap(
+                    WatchFaceRenderParams(
+                        RenderParameters(
+                                DrawMode.INTERACTIVE,
+                                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                null
+                            )
+                            .toWireFormat(),
+                        TIME_MILLIS,
+                        null,
+                        listOf(
+                            IdAndComplicationDataWireFormat(
+                                EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                                ShortTextComplicationData.Builder(
+                                        PlainComplicationText.Builder("Mon").build(),
+                                        ComplicationText.EMPTY
+                                    )
+                                    .setTitle(PlainComplicationText.Builder("23rd").build())
+                                    .build()
+                                    .asWireComplicationData()
+                            ),
+                            IdAndComplicationDataWireFormat(
+                                EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
+                                ShortTextComplicationData.Builder(
+                                        PlainComplicationText.Builder("100").build(),
+                                        ComplicationText.EMPTY
+                                    )
+                                    .setTitle(PlainComplicationText.Builder("Steps").build())
+                                    .build()
+                                    .asWireComplicationData()
+                            )
+                        )
+                    )
+                )
+            )
 
-       bitmap.assertAgainstGolden(screenshotRule, "service_interactive")
-   }
+        bitmap.assertAgainstGolden(screenshotRule, "service_interactive")
+    }
 
-   @Test
-   public fun createHeadlessOpenglWatchFaceInstance() {
-       createOpenGlInstance(width = 400, height = 400)
-       val bitmap = SharedMemoryImage.ashmemReadImageBundle(
-           instance.renderWatchFaceToBitmap(
-               WatchFaceRenderParams(
-                   RenderParameters(
-                       DrawMode.INTERACTIVE,
-                       WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                       null
-                   ).toWireFormat(),
-                   TIME_MILLIS,
-                   null,
-                   listOf(
-                       IdAndComplicationDataWireFormat(
-                           EXAMPLE_OPENGL_COMPLICATION_ID,
-                           ShortTextComplicationData.Builder(
-                               PlainComplicationText.Builder("Mon").build(),
-                               ComplicationText.EMPTY
-                           )
-                               .setTitle(PlainComplicationText.Builder("23rd").build())
-                               .build()
-                               .asWireComplicationData()
-                       )
-                   )
-               )
-           )
-       )
+    @Test
+    public fun createHeadlessOpenglWatchFaceInstance() {
+        createOpenGlInstance(width = 400, height = 400)
+        val bitmap =
+            SharedMemoryImage.ashmemReadImageBundle(
+                instance.renderWatchFaceToBitmap(
+                    WatchFaceRenderParams(
+                        RenderParameters(
+                                DrawMode.INTERACTIVE,
+                                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                null
+                            )
+                            .toWireFormat(),
+                        TIME_MILLIS,
+                        null,
+                        listOf(
+                            IdAndComplicationDataWireFormat(
+                                EXAMPLE_OPENGL_COMPLICATION_ID,
+                                ShortTextComplicationData.Builder(
+                                        PlainComplicationText.Builder("Mon").build(),
+                                        ComplicationText.EMPTY
+                                    )
+                                    .setTitle(PlainComplicationText.Builder("23rd").build())
+                                    .build()
+                                    .asWireComplicationData()
+                            )
+                        )
+                    )
+                )
+            )
 
-       bitmap.assertAgainstGolden(screenshotRule, "opengl_headless")
-   }
+        bitmap.assertAgainstGolden(screenshotRule, "opengl_headless")
+    }
 
-   @Test
-   public fun testCommandTakeComplicationScreenShot() {
-       createInstance(width = 400, height = 400)
-       val bitmap = SharedMemoryImage.ashmemReadImageBundle(
-           instance.renderComplicationToBitmap(
-               ComplicationRenderParams(
-                   EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-                   RenderParameters(
-                       DrawMode.INTERACTIVE,
-                       WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                       null,
-                   ).toWireFormat(),
-                   TIME_MILLIS,
-                   ShortTextComplicationData.Builder(
-                       PlainComplicationText.Builder("Mon").build(),
-                       ComplicationText.EMPTY
-                   )
-                       .setTitle(PlainComplicationText.Builder("23rd").build())
-                       .build()
-                       .asWireComplicationData(),
-                   null
-               )
-           )
-       )
+    @Test
+    public fun testCommandTakeComplicationScreenShot() {
+        createInstance(width = 400, height = 400)
+        val bitmap =
+            SharedMemoryImage.ashmemReadImageBundle(
+                instance.renderComplicationToBitmap(
+                    ComplicationRenderParams(
+                        EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                        RenderParameters(
+                                DrawMode.INTERACTIVE,
+                                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                null,
+                            )
+                            .toWireFormat(),
+                        TIME_MILLIS,
+                        ShortTextComplicationData.Builder(
+                                PlainComplicationText.Builder("Mon").build(),
+                                ComplicationText.EMPTY
+                            )
+                            .setTitle(PlainComplicationText.Builder("23rd").build())
+                            .build()
+                            .asWireComplicationData(),
+                        null
+                    )
+                )
+            )
 
-       bitmap.assertAgainstGolden(
-           screenshotRule,
-           "leftComplication"
-       )
-   }
+        bitmap.assertAgainstGolden(screenshotRule, "leftComplication")
+    }
 
-   @Test
-   @Suppress("NewApi")
-   public fun testGoalProgressComplication() {
-       createInstance(width = 400, height = 400)
-       val bitmap = SharedMemoryImage.ashmemReadImageBundle(
-           instance.renderComplicationToBitmap(
-               ComplicationRenderParams(
-                   EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-                   RenderParameters(
-                       DrawMode.INTERACTIVE,
-                       WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                       null,
-                   ).toWireFormat(),
-                   TIME_MILLIS,
-                   GoalProgressComplicationData.Builder(
-                       value = 12345.0f,
-                       targetValue = 10000.0f,
-                       PlainComplicationText.Builder("12345 steps").build()
-                   ).setText(PlainComplicationText.Builder("12345").build())
-                       .setTitle(PlainComplicationText.Builder("Steps").build())
-                       .build()
-                       .asWireComplicationData(),
-                   null
-               )
-           )
-       )
+    @Test
+    @Suppress("NewApi")
+    public fun testGoalProgressComplication() {
+        createInstance(width = 400, height = 400)
+        val bitmap =
+            SharedMemoryImage.ashmemReadImageBundle(
+                instance.renderComplicationToBitmap(
+                    ComplicationRenderParams(
+                        EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                        RenderParameters(
+                                DrawMode.INTERACTIVE,
+                                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                null,
+                            )
+                            .toWireFormat(),
+                        TIME_MILLIS,
+                        GoalProgressComplicationData.Builder(
+                                value = 12345.0f,
+                                targetValue = 10000.0f,
+                                PlainComplicationText.Builder("12345 steps").build()
+                            )
+                            .setText(PlainComplicationText.Builder("12345").build())
+                            .setTitle(PlainComplicationText.Builder("Steps").build())
+                            .build()
+                            .asWireComplicationData(),
+                        null
+                    )
+                )
+            )
 
-       bitmap.assertAgainstGolden(
-           screenshotRule,
-           "goalProgressComplication"
-       )
-   }
+        bitmap.assertAgainstGolden(screenshotRule, "goalProgressComplication")
+    }
 
-   @Test
-   public fun testColorRampRangedValueComplication() {
-       createInstance(400, 400)
-       val bitmap = SharedMemoryImage.ashmemReadImageBundle(
-           instance.renderComplicationToBitmap(
-               ComplicationRenderParams(
-                   EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-                   RenderParameters(
-                       DrawMode.INTERACTIVE,
-                       WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                       null,
-                   ).toWireFormat(),
-                   TIME_MILLIS,
-                   RangedValueComplicationData.Builder(
-                       value = 75f,
-                       min = 0.0f,
-                       max = 100.0f,
-                       PlainComplicationText.Builder("Rainbow colors").build()
-                   ).setText(PlainComplicationText.Builder("Colors").build())
-                       .setValueType(RangedValueComplicationData.TYPE_RATING)
-                       .setColorRamp(
-                           ColorRamp(
-                               intArrayOf(
-                                   Color.GREEN,
-                                   Color.YELLOW,
-                                   Color.argb(255, 255, 255, 0),
-                                   Color.RED,
-                                   Color.argb(255, 255, 0, 255),
-                                   Color.argb(255, 92, 64, 51)
-                               ),
-                               interpolated = true
-                           )
-                       )
-                       .build()
-                       .asWireComplicationData(),
-                   null
-               )
-           )
-       )
+    @Test
+    public fun testColorRampRangedValueComplication() {
+        createInstance(400, 400)
+        val bitmap =
+            SharedMemoryImage.ashmemReadImageBundle(
+                instance.renderComplicationToBitmap(
+                    ComplicationRenderParams(
+                        EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                        RenderParameters(
+                                DrawMode.INTERACTIVE,
+                                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                null,
+                            )
+                            .toWireFormat(),
+                        TIME_MILLIS,
+                        RangedValueComplicationData.Builder(
+                                value = 75f,
+                                min = 0.0f,
+                                max = 100.0f,
+                                PlainComplicationText.Builder("Rainbow colors").build()
+                            )
+                            .setText(PlainComplicationText.Builder("Colors").build())
+                            .setValueType(RangedValueComplicationData.TYPE_RATING)
+                            .setColorRamp(
+                                ColorRamp(
+                                    intArrayOf(
+                                        Color.GREEN,
+                                        Color.YELLOW,
+                                        Color.argb(255, 255, 255, 0),
+                                        Color.RED,
+                                        Color.argb(255, 255, 0, 255),
+                                        Color.argb(255, 92, 64, 51)
+                                    ),
+                                    interpolated = true
+                                )
+                            )
+                            .build()
+                            .asWireComplicationData(),
+                        null
+                    )
+                )
+            )
 
-       bitmap.assertAgainstGolden(
-           screenshotRule,
-           "colorRampRangedValueComplication"
-       )
-   }
+        bitmap.assertAgainstGolden(screenshotRule, "colorRampRangedValueComplication")
+    }
 
-   @Test
-   public fun testNonInterpolatedColorRampRangedValueComplication() {
-       createInstance(width = 400, height = 400)
-       val bitmap = SharedMemoryImage.ashmemReadImageBundle(
-           instance.renderComplicationToBitmap(
-               ComplicationRenderParams(
-                   EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-                   RenderParameters(
-                       DrawMode.INTERACTIVE,
-                       WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                       null,
-                   ).toWireFormat(),
-                   TIME_MILLIS,
-                   RangedValueComplicationData.Builder(
-                       value = 75f,
-                       min = 0.0f,
-                       max = 100.0f,
-                       PlainComplicationText.Builder("Rainbow colors").build()
-                   ).setText(PlainComplicationText.Builder("Colors").build())
-                       .setValueType(RangedValueComplicationData.TYPE_RATING)
-                       .setColorRamp(
-                           ColorRamp(
-                               intArrayOf(Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW),
-                               interpolated = false
-                           )
-                       )
-                       .build()
-                       .asWireComplicationData(),
-                   null
-               )
-           )
-       )
+    @Test
+    public fun testNonInterpolatedColorRampRangedValueComplication() {
+        createInstance(width = 400, height = 400)
+        val bitmap =
+            SharedMemoryImage.ashmemReadImageBundle(
+                instance.renderComplicationToBitmap(
+                    ComplicationRenderParams(
+                        EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                        RenderParameters(
+                                DrawMode.INTERACTIVE,
+                                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                null,
+                            )
+                            .toWireFormat(),
+                        TIME_MILLIS,
+                        RangedValueComplicationData.Builder(
+                                value = 75f,
+                                min = 0.0f,
+                                max = 100.0f,
+                                PlainComplicationText.Builder("Rainbow colors").build()
+                            )
+                            .setText(PlainComplicationText.Builder("Colors").build())
+                            .setValueType(RangedValueComplicationData.TYPE_RATING)
+                            .setColorRamp(
+                                ColorRamp(
+                                    intArrayOf(Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW),
+                                    interpolated = false
+                                )
+                            )
+                            .build()
+                            .asWireComplicationData(),
+                        null
+                    )
+                )
+            )
 
-       bitmap.assertAgainstGolden(
-           screenshotRule,
-           "nonInterpolatedColorRampRangedValueComplication"
-       )
-   }
+        bitmap.assertAgainstGolden(
+            screenshotRule,
+            "nonInterpolatedColorRampRangedValueComplication"
+        )
+    }
 
-   @Test
-   @Suppress("NewApi")
-   public fun testWeightedElementComplication() {
-       createInstance(width = 400, height = 400)
-       val bitmap = SharedMemoryImage.ashmemReadImageBundle(
-           instance.renderComplicationToBitmap(
-               ComplicationRenderParams(
-                   EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-                   RenderParameters(
-                       DrawMode.INTERACTIVE,
-                       WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                       null,
-                   ).toWireFormat(),
-                   TIME_MILLIS,
-                   WeightedElementsComplicationData.Builder(
-                       listOf(
-                           WeightedElementsComplicationData.Element(weight = 1.0f, Color.RED),
-                           WeightedElementsComplicationData.Element(weight = 1.0f, Color.GREEN),
-                           WeightedElementsComplicationData.Element(weight = 2.0f, Color.BLUE),
-                           WeightedElementsComplicationData.Element(weight = 3.0f, Color.YELLOW)
-                       ),
-                       PlainComplicationText.Builder("Example").build()
-                   ).setText(PlainComplicationText.Builder("Calories").build())
-                       .build()
-                       .asWireComplicationData(),
-                   null
-               )
-           )
-       )
+    @Test
+    @Suppress("NewApi")
+    public fun testWeightedElementComplication() {
+        createInstance(width = 400, height = 400)
+        val bitmap =
+            SharedMemoryImage.ashmemReadImageBundle(
+                instance.renderComplicationToBitmap(
+                    ComplicationRenderParams(
+                        EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                        RenderParameters(
+                                DrawMode.INTERACTIVE,
+                                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                null,
+                            )
+                            .toWireFormat(),
+                        TIME_MILLIS,
+                        WeightedElementsComplicationData.Builder(
+                                listOf(
+                                    WeightedElementsComplicationData.Element(
+                                        weight = 1.0f,
+                                        Color.RED
+                                    ),
+                                    WeightedElementsComplicationData.Element(
+                                        weight = 1.0f,
+                                        Color.GREEN
+                                    ),
+                                    WeightedElementsComplicationData.Element(
+                                        weight = 2.0f,
+                                        Color.BLUE
+                                    ),
+                                    WeightedElementsComplicationData.Element(
+                                        weight = 3.0f,
+                                        Color.YELLOW
+                                    )
+                                ),
+                                PlainComplicationText.Builder("Example").build()
+                            )
+                            .setText(PlainComplicationText.Builder("Calories").build())
+                            .build()
+                            .asWireComplicationData(),
+                        null
+                    )
+                )
+            )
 
-       bitmap.assertAgainstGolden(
-           screenshotRule,
-           "weightedElementComplication"
-       )
-   }
+        bitmap.assertAgainstGolden(screenshotRule, "weightedElementComplication")
+    }
 
-   @Test
-   public fun asyncInitWithUiThreadTaskWatchFace() {
-       val instanceService = IWatchFaceControlService.Stub.asInterface(
-           WatchFaceControlService().apply {
-               setContext(ApplicationProvider.getApplicationContext<Context>())
-           }.onBind(
-               Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE)
-           )
-       )
-       // This shouldn't hang.
-       instance = instanceService.createHeadlessWatchFaceInstance(
-           HeadlessWatchFaceInstanceParams(
-               ComponentName(
-                   ApplicationProvider.getApplicationContext<Context>(),
-                   AsyncInitWithUiThreadTaskWatchFace::class.java
-               ),
-               DEVICE_CONFIG,
-               /* width = */ 100,
-               /* height = */100,
-               /* instanceId = */null
-           )
-       )
+    @Test
+    public fun asyncInitWithUiThreadTaskWatchFace() {
+        val instanceService =
+            IWatchFaceControlService.Stub.asInterface(
+                WatchFaceControlService()
+                    .apply { setContext(ApplicationProvider.getApplicationContext<Context>()) }
+                    .onBind(Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE))
+            )
+        // This shouldn't hang.
+        instance =
+            instanceService.createHeadlessWatchFaceInstance(
+                HeadlessWatchFaceInstanceParams(
+                    ComponentName(
+                        ApplicationProvider.getApplicationContext<Context>(),
+                        AsyncInitWithUiThreadTaskWatchFace::class.java
+                    ),
+                    DEVICE_CONFIG,
+                    /* width = */ 100,
+                    /* height = */ 100,
+                    /* instanceId = */ null
+                )
+            )
 
-       assertThat(instance.userStyleSchema.mSchema).isEmpty()
-   }
+        assertThat(instance.userStyleSchema.mSchema).isEmpty()
+    }
 }
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceServiceImageTest.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceServiceImageTest.kt
index 93526dc..2b72c30 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceServiceImageTest.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceServiceImageTest.kt
@@ -121,9 +121,7 @@
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-        synchronized(lock) {
-            theIntent = intent
-        }
+        synchronized(lock) { theIntent = intent }
         countDown!!.countDown()
         finish()
     }
@@ -134,11 +132,9 @@
 @RequiresApi(Build.VERSION_CODES.O_MR1)
 public class WatchFaceServiceImageTest {
 
-    @Mock
-    private lateinit var surfaceHolder: SurfaceHolder
+    @Mock private lateinit var surfaceHolder: SurfaceHolder
 
-    @Mock
-    private lateinit var surface: Surface
+    @Mock private lateinit var surface: Surface
 
     private val handler = Handler(Looper.getMainLooper())
 
@@ -149,36 +145,37 @@
     private val pretendBinderThread = HandlerThread("PretendBinderThread")
     private lateinit var pretendBinderHandler: Handler
 
-    private val complicationDataSources = mapOf(
-        SystemDataSources.DATA_SOURCE_DAY_OF_WEEK to
-            ShortTextComplicationData.Builder(
-                PlainComplicationText.Builder("Mon").build(),
-                ComplicationText.EMPTY
-            )
-                .setTitle(PlainComplicationText.Builder("23rd").build())
-                .setTapAction(
-                    PendingIntent.getActivity(
-                        ApplicationProvider.getApplicationContext<Context>(),
-                        123,
-                        Intent(
-                            ApplicationProvider.getApplicationContext<Context>(),
-                            ComplicationTapActivity::class.java
-                        ).apply {
-                        },
-                        PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE
+    private val complicationDataSources =
+        mapOf(
+            SystemDataSources.DATA_SOURCE_DAY_OF_WEEK to
+                ShortTextComplicationData.Builder(
+                        PlainComplicationText.Builder("Mon").build(),
+                        ComplicationText.EMPTY
                     )
-                )
-                .build()
-                .asWireComplicationData(),
-        SystemDataSources.DATA_SOURCE_STEP_COUNT to
-            ShortTextComplicationData.Builder(
-                PlainComplicationText.Builder("100").build(),
-                ComplicationText.EMPTY
-            )
-                .setTitle(PlainComplicationText.Builder("Steps").build())
-                .build()
-                .asWireComplicationData()
-    )
+                    .setTitle(PlainComplicationText.Builder("23rd").build())
+                    .setTapAction(
+                        PendingIntent.getActivity(
+                            ApplicationProvider.getApplicationContext<Context>(),
+                            123,
+                            Intent(
+                                    ApplicationProvider.getApplicationContext<Context>(),
+                                    ComplicationTapActivity::class.java
+                                )
+                                .apply {},
+                            PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE
+                        )
+                    )
+                    .build()
+                    .asWireComplicationData(),
+            SystemDataSources.DATA_SOURCE_STEP_COUNT to
+                ShortTextComplicationData.Builder(
+                        PlainComplicationText.Builder("100").build(),
+                        ComplicationText.EMPTY
+                    )
+                    .setTitle(PlainComplicationText.Builder("Steps").build())
+                    .build()
+                    .asWireComplicationData()
+        )
 
     @get:Rule
     public val screenshotRule: AndroidXScreenshotTestRule =
@@ -220,16 +217,17 @@
     }
 
     private fun initCanvasWatchFace(onInvalidateCountDownLatch: CountDownLatch? = null) {
-        canvasAnalogWatchFaceService = TestCanvasAnalogWatchFaceService(
-            ApplicationProvider.getApplicationContext<Context>(),
-            handler,
-            100000,
-            ZoneId.of("UTC"),
-            surfaceHolder,
-            true, // Not direct boot.
-            null,
-            onInvalidateCountDownLatch
-        )
+        canvasAnalogWatchFaceService =
+            TestCanvasAnalogWatchFaceService(
+                ApplicationProvider.getApplicationContext<Context>(),
+                handler,
+                100000,
+                ZoneId.of("UTC"),
+                surfaceHolder,
+                true, // Not direct boot.
+                null,
+                onInvalidateCountDownLatch
+            )
 
         Mockito.`when`(surfaceHolder.surfaceFrame)
             .thenReturn(Rect(0, 0, BITMAP_WIDTH, BITMAP_HEIGHT))
@@ -247,14 +245,15 @@
     }
 
     private fun initGles2WatchFace() {
-        glesWatchFaceService = TestGlesWatchFaceService(
-            ApplicationProvider.getApplicationContext<Context>(),
-            handler,
-            100000,
-            ZoneId.of("UTC"),
-            surfaceHolder,
-            null
-        )
+        glesWatchFaceService =
+            TestGlesWatchFaceService(
+                ApplicationProvider.getApplicationContext<Context>(),
+                handler,
+                100000,
+                ZoneId.of("UTC"),
+                surfaceHolder,
+                null
+            )
 
         surfaceTexture.setDefaultBufferSize(BITMAP_WIDTH, BITMAP_HEIGHT)
 
@@ -269,40 +268,37 @@
     }
 
     private fun setPendingWallpaperInteractiveWatchFaceInstance() {
-        val existingInstance = InteractiveInstanceManager
-            .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
-                InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
-                    WallpaperInteractiveWatchFaceInstanceParams(
-                        INTERACTIVE_INSTANCE_ID,
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
+        val existingInstance =
+            InteractiveInstanceManager
+                .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
+                    InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
+                        WallpaperInteractiveWatchFaceInstanceParams(
+                            INTERACTIVE_INSTANCE_ID,
+                            DeviceConfig(false, false, 0, 0),
+                            WatchUiState(false, 0),
+                            UserStyleWireFormat(emptyMap()),
+                            null,
+                            null,
+                            null
                         ),
-                        WatchUiState(false, 0),
-                        UserStyleWireFormat(emptyMap()),
-                        null,
-                        null,
-                        null
-                    ),
-                    object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        object : IPendingInteractiveWatchFace.Stub() {
+                            override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
-                        override fun onInteractiveWatchFaceCreated(
-                            iInteractiveWatchFace: IInteractiveWatchFace
-                        ) {
-                            interactiveWatchFaceInstance = iInteractiveWatchFace
-                            initLatch.countDown()
-                        }
+                            override fun onInteractiveWatchFaceCreated(
+                                iInteractiveWatchFace: IInteractiveWatchFace
+                            ) {
+                                interactiveWatchFaceInstance = iInteractiveWatchFace
+                                initLatch.countDown()
+                            }
 
-                        override fun onInteractiveWatchFaceCrashed(exception: CrashInfoParcel?) {
-                            fail("WatchFace crashed: $exception")
+                            override fun onInteractiveWatchFaceCrashed(
+                                exception: CrashInfoParcel?
+                            ) {
+                                fail("WatchFace crashed: $exception")
+                            }
                         }
-                    }
+                    )
                 )
-            )
         assertThat(existingInstance).isNull()
     }
 
@@ -324,12 +320,7 @@
             )!!
 
         try {
-            interactiveWatchFaceInstance.setWatchUiState(
-                WatchUiState(
-                    ambient,
-                    0
-                )
-            )
+            interactiveWatchFaceInstance.setWatchUiState(WatchUiState(ambient, 0))
         } finally {
             interactiveWatchFaceInstance.release()
         }
@@ -342,9 +333,7 @@
         assertThat(initLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
         sendComplications()
 
-        handler.post {
-            engineWrapper.draw(engineWrapper.getWatchFaceImplOrNull())
-        }
+        handler.post { engineWrapper.draw(engineWrapper.getWatchFaceImplOrNull()) }
 
         assertThat(renderDoneLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
         bitmap.assertAgainstGolden(screenshotRule, "active_screenshot")
@@ -376,28 +365,27 @@
 
         var bitmap: Bitmap? = null
         pretendBinderHandler.post {
-            bitmap = SharedMemoryImage.ashmemReadImageBundle(
-                interactiveWatchFaceInstance.renderWatchFaceToBitmap(
-                    WatchFaceRenderParams(
-                        RenderParameters(
-                            DrawMode.AMBIENT,
-                            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+            bitmap =
+                SharedMemoryImage.ashmemReadImageBundle(
+                    interactiveWatchFaceInstance.renderWatchFaceToBitmap(
+                        WatchFaceRenderParams(
+                            RenderParameters(
+                                    DrawMode.AMBIENT,
+                                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                    null
+                                )
+                                .toWireFormat(),
+                            123456789,
+                            null,
                             null
-                        ).toWireFormat(),
-                        123456789,
-                        null,
-                        null
+                        )
                     )
                 )
-            )
             latch.countDown()
         }
 
         assertThat(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
-        bitmap!!.assertAgainstGolden(
-            screenshotRule,
-            "testCommandTakeScreenShot"
-        )
+        bitmap!!.assertAgainstGolden(screenshotRule, "testCommandTakeScreenShot")
     }
 
     @SuppressLint("NewApi")
@@ -411,28 +399,27 @@
 
         var bitmap: Bitmap? = null
         pretendBinderHandler.post {
-            bitmap = SharedMemoryImage.ashmemReadImageBundle(
-                interactiveWatchFaceInstance.renderWatchFaceToBitmap(
-                    WatchFaceRenderParams(
-                        RenderParameters(
-                            DrawMode.INTERACTIVE,
-                            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+            bitmap =
+                SharedMemoryImage.ashmemReadImageBundle(
+                    interactiveWatchFaceInstance.renderWatchFaceToBitmap(
+                        WatchFaceRenderParams(
+                            RenderParameters(
+                                    DrawMode.INTERACTIVE,
+                                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                    null
+                                )
+                                .toWireFormat(),
+                            123456789,
+                            null,
                             null
-                        ).toWireFormat(),
-                        123456789,
-                        null,
-                        null
+                        )
                     )
                 )
-            )
             latch.countDown()
         }
 
         assertThat(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
-        bitmap!!.assertAgainstGolden(
-            screenshotRule,
-            "ambient_gl_screenshot"
-        )
+        bitmap!!.assertAgainstGolden(screenshotRule, "ambient_gl_screenshot")
     }
 
     @Test
@@ -472,9 +459,7 @@
             UserStyleWireFormat(mapOf(COLOR_STYLE_SETTING to GREEN_STYLE.encodeToByteArray()))
         )
 
-        handler.post {
-            engineWrapper.draw(engineWrapper.getWatchFaceImplOrNull())
-        }
+        handler.post { engineWrapper.draw(engineWrapper.getWatchFaceImplOrNull()) }
 
         assertThat(renderDoneLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
         bitmap.assertAgainstGolden(screenshotRule, "green_screenshot_no_complication_data")
@@ -490,22 +475,26 @@
         // Latch that countsDown when the complication below has been delivered.
         val complicationReceivedLatch = CountDownLatch(2)
         CoroutineScope(handler.asCoroutineDispatcher()).launch {
-            engineWrapper.deferredWatchFaceImpl.await().complicationSlotsManager[
-                EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID
-            ]!!.complicationData.collect {
-                if (it is NoDataComplicationData && it.placeholder != null) {
-                    complicationReceivedLatch.countDown()
+            engineWrapper.deferredWatchFaceImpl
+                .await()
+                .complicationSlotsManager[EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID]!!
+                .complicationData
+                .collect {
+                    if (it is NoDataComplicationData && it.placeholder != null) {
+                        complicationReceivedLatch.countDown()
+                    }
                 }
-            }
         }
         CoroutineScope(handler.asCoroutineDispatcher()).launch {
-            engineWrapper.deferredWatchFaceImpl.await().complicationSlotsManager[
-                EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID
-            ]!!.complicationData.collect {
-                if (it is NoDataComplicationData && it.placeholder != null) {
-                    complicationReceivedLatch.countDown()
+            engineWrapper.deferredWatchFaceImpl
+                .await()
+                .complicationSlotsManager[EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID]!!
+                .complicationData
+                .collect {
+                    if (it is NoDataComplicationData && it.placeholder != null) {
+                        complicationReceivedLatch.countDown()
+                    }
                 }
-            }
         }
 
         // This is a oneway call.
@@ -514,28 +503,30 @@
                 IdAndComplicationDataWireFormat(
                     EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
                     NoDataComplicationData(
-                        LongTextComplicationData.Builder(
-                            ComplicationText.PLACEHOLDER,
-                            ComplicationText.EMPTY
+                            LongTextComplicationData.Builder(
+                                    ComplicationText.PLACEHOLDER,
+                                    ComplicationText.EMPTY
+                                )
+                                .setTitle(ComplicationText.PLACEHOLDER)
+                                .setSmallImage(SmallImage.PLACEHOLDER)
+                                .build(),
                         )
-                            .setTitle(ComplicationText.PLACEHOLDER)
-                            .setSmallImage(SmallImage.PLACEHOLDER)
-                            .build(),
-                    ).asWireComplicationData()
+                        .asWireComplicationData()
                 ),
                 IdAndComplicationDataWireFormat(
                     EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
                     NoDataComplicationData(
-                        RangedValueComplicationData.Builder(
-                            RangedValueComplicationData.PLACEHOLDER,
-                            0f,
-                            100f,
-                            ComplicationText.EMPTY
+                            RangedValueComplicationData.Builder(
+                                    RangedValueComplicationData.PLACEHOLDER,
+                                    0f,
+                                    100f,
+                                    ComplicationText.EMPTY
+                                )
+                                .setText(ComplicationText.PLACEHOLDER)
+                                .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
+                                .build()
                         )
-                            .setText(ComplicationText.PLACEHOLDER)
-                            .setMonochromaticImage(MonochromaticImage.PLACEHOLDER)
-                            .build()
-                    ).asWireComplicationData()
+                        .asWireComplicationData()
                 )
             )
         )
@@ -544,28 +535,27 @@
 
         var bitmap: Bitmap? = null
         pretendBinderHandler.post {
-            bitmap = SharedMemoryImage.ashmemReadImageBundle(
-                interactiveWatchFaceInstance.renderWatchFaceToBitmap(
-                    WatchFaceRenderParams(
-                        RenderParameters(
-                            DrawMode.AMBIENT,
-                            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+            bitmap =
+                SharedMemoryImage.ashmemReadImageBundle(
+                    interactiveWatchFaceInstance.renderWatchFaceToBitmap(
+                        WatchFaceRenderParams(
+                            RenderParameters(
+                                    DrawMode.AMBIENT,
+                                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                    null
+                                )
+                                .toWireFormat(),
+                            123456789,
+                            null,
                             null
-                        ).toWireFormat(),
-                        123456789,
-                        null,
-                        null
+                        )
                     )
                 )
-            )
             latch.countDown()
         }
 
         assertThat(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
-        bitmap!!.assertAgainstGolden(
-            screenshotRule,
-            "placeholderComplications"
-        )
+        bitmap!!.assertAgainstGolden(screenshotRule, "placeholderComplications")
     }
 
     @SuppressLint("NewApi")
@@ -576,18 +566,18 @@
         // Latch that countsDown when the complications below have been delivered and the images
         // have been loaded asynchronoiusly.
         val onInvalidateCountDownLatch = CountDownLatch(2)
-        handler.post {
-            initCanvasWatchFace(onInvalidateCountDownLatch)
-        }
+        handler.post { initCanvasWatchFace(onInvalidateCountDownLatch) }
         assertThat(initLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
 
-        val smallImage = SmallImage.Builder(
-            Icon.createWithResource(
-                ApplicationProvider.getApplicationContext<Context>(),
-                R.drawable.color_icon
-            ),
-            SmallImageType.ICON
-        ).build()
+        val smallImage =
+            SmallImage.Builder(
+                    Icon.createWithResource(
+                        ApplicationProvider.getApplicationContext<Context>(),
+                        R.drawable.color_icon
+                    ),
+                    SmallImageType.ICON
+                )
+                .build()
 
         // This is a oneway call.
         interactiveWatchFaceInstance.updateComplicationData(
@@ -595,21 +585,16 @@
                 IdAndComplicationDataWireFormat(
                     EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
                     ShortTextComplicationData.Builder(
-                        PlainComplicationText.Builder("Test").build(),
-                        ComplicationText.EMPTY
-                    )
+                            PlainComplicationText.Builder("Test").build(),
+                            ComplicationText.EMPTY
+                        )
                         .setSmallImage(smallImage)
                         .build()
                         .asWireComplicationData()
                 ),
                 IdAndComplicationDataWireFormat(
                     EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
-                    RangedValueComplicationData.Builder(
-                        25f,
-                        0f,
-                        100f,
-                        ComplicationText.EMPTY
-                    )
+                    RangedValueComplicationData.Builder(25f, 0f, 100f, ComplicationText.EMPTY)
                         .setSmallImage(smallImage)
                         .build()
                         .asWireComplicationData()
@@ -621,28 +606,27 @@
 
         var bitmap: Bitmap? = null
         pretendBinderHandler.post {
-            bitmap = SharedMemoryImage.ashmemReadImageBundle(
-                interactiveWatchFaceInstance.renderWatchFaceToBitmap(
-                    WatchFaceRenderParams(
-                        RenderParameters(
-                            DrawMode.INTERACTIVE,
-                            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+            bitmap =
+                SharedMemoryImage.ashmemReadImageBundle(
+                    interactiveWatchFaceInstance.renderWatchFaceToBitmap(
+                        WatchFaceRenderParams(
+                            RenderParameters(
+                                    DrawMode.INTERACTIVE,
+                                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                    null
+                                )
+                                .toWireFormat(),
+                            123456789,
+                            null,
                             null
-                        ).toWireFormat(),
-                        123456789,
-                        null,
-                        null
+                        )
                     )
                 )
-            )
             latch.countDown()
         }
 
         assertThat(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
-        bitmap!!.assertAgainstGolden(
-            screenshotRule,
-            "smallImageComplications"
-        )
+        bitmap!!.assertAgainstGolden(screenshotRule, "smallImageComplications")
     }
 
     @SuppressLint("NewApi")
@@ -656,32 +640,31 @@
 
         var bitmap: Bitmap? = null
         pretendBinderHandler.post {
-            bitmap = SharedMemoryImage.ashmemReadImageBundle(
-                interactiveWatchFaceInstance.renderWatchFaceToBitmap(
-                    WatchFaceRenderParams(
-                        RenderParameters(
-                            DrawMode.INTERACTIVE,
-                            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                            RenderParameters.HighlightLayer(
-                                RenderParameters.HighlightedElement.AllComplicationSlots,
-                                Color.RED,
-                                Color.argb(128, 0, 0, 0)
-                            )
-                        ).toWireFormat(),
-                        123456789,
-                        null,
-                        null
+            bitmap =
+                SharedMemoryImage.ashmemReadImageBundle(
+                    interactiveWatchFaceInstance.renderWatchFaceToBitmap(
+                        WatchFaceRenderParams(
+                            RenderParameters(
+                                    DrawMode.INTERACTIVE,
+                                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                    RenderParameters.HighlightLayer(
+                                        RenderParameters.HighlightedElement.AllComplicationSlots,
+                                        Color.RED,
+                                        Color.argb(128, 0, 0, 0)
+                                    )
+                                )
+                                .toWireFormat(),
+                            123456789,
+                            null,
+                            null
+                        )
                     )
                 )
-            )
             latch.countDown()
         }
 
         assertThat(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
-        bitmap!!.assertAgainstGolden(
-            screenshotRule,
-            "highlight_complications"
-        )
+        bitmap!!.assertAgainstGolden(screenshotRule, "highlight_complications")
     }
 
     @SuppressLint("NewApi")
@@ -695,32 +678,31 @@
 
         var bitmap: Bitmap? = null
         pretendBinderHandler.post {
-            bitmap = SharedMemoryImage.ashmemReadImageBundle(
-                interactiveWatchFaceInstance.renderWatchFaceToBitmap(
-                    WatchFaceRenderParams(
-                        RenderParameters(
-                            DrawMode.INTERACTIVE,
-                            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+            bitmap =
+                SharedMemoryImage.ashmemReadImageBundle(
+                    interactiveWatchFaceInstance.renderWatchFaceToBitmap(
+                        WatchFaceRenderParams(
+                            RenderParameters(
+                                    DrawMode.INTERACTIVE,
+                                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                    null,
+                                    mapOf(
+                                        EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID to
+                                            TapEvent(1, 1, Instant.ofEpochMilli(123456789))
+                                    )
+                                )
+                                .toWireFormat(),
+                            123456789,
                             null,
-                            mapOf(
-                                EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID to
-                                    TapEvent(1, 1, Instant.ofEpochMilli(123456789))
-                            )
-                        ).toWireFormat(),
-                        123456789,
-                        null,
-                        null
+                            null
+                        )
                     )
                 )
-            )
             latch.countDown()
         }
 
         assertThat(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
-        bitmap!!.assertAgainstGolden(
-            screenshotRule,
-            "left_complication_pressed"
-        )
+        bitmap!!.assertAgainstGolden(screenshotRule, "left_complication_pressed")
     }
 
     @SuppressLint("NewApi")
@@ -734,62 +716,62 @@
 
         var bitmap: Bitmap? = null
         pretendBinderHandler.post {
-            bitmap = SharedMemoryImage.ashmemReadImageBundle(
-                interactiveWatchFaceInstance.renderWatchFaceToBitmap(
-                    WatchFaceRenderParams(
-                        RenderParameters(
-                            DrawMode.INTERACTIVE,
-                            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                            RenderParameters.HighlightLayer(
-                                RenderParameters.HighlightedElement.ComplicationSlot(
-                                    EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID
-                                ),
-                                Color.RED,
-                                Color.argb(128, 0, 0, 0)
-                            )
-                        ).toWireFormat(),
-                        123456789,
-                        null,
-                        null
+            bitmap =
+                SharedMemoryImage.ashmemReadImageBundle(
+                    interactiveWatchFaceInstance.renderWatchFaceToBitmap(
+                        WatchFaceRenderParams(
+                            RenderParameters(
+                                    DrawMode.INTERACTIVE,
+                                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                    RenderParameters.HighlightLayer(
+                                        RenderParameters.HighlightedElement.ComplicationSlot(
+                                            EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID
+                                        ),
+                                        Color.RED,
+                                        Color.argb(128, 0, 0, 0)
+                                    )
+                                )
+                                .toWireFormat(),
+                            123456789,
+                            null,
+                            null
+                        )
                     )
                 )
-            )
             latch.countDown()
         }
 
         assertThat(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
-        bitmap!!.assertAgainstGolden(
-            screenshotRule,
-            "highlight_right_complication"
-        )
+        bitmap!!.assertAgainstGolden(screenshotRule, "highlight_right_complication")
     }
 
     @SuppressLint("NewApi")
     @Test
     public fun testScreenshotWithPreviewComplicationData() {
         val latch = CountDownLatch(1)
-        val previewComplicationData = listOf(
-            IdAndComplicationDataWireFormat(
-                EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
-                ShortTextComplicationData.Builder(
-                    PlainComplicationText.Builder("A").build(),
-                    ComplicationText.EMPTY
+        val previewComplicationData =
+            listOf(
+                IdAndComplicationDataWireFormat(
+                    EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
+                    ShortTextComplicationData.Builder(
+                            PlainComplicationText.Builder("A").build(),
+                            ComplicationText.EMPTY
+                        )
+                        .setTitle(PlainComplicationText.Builder("Preview").build())
+                        .build()
+                        .asWireComplicationData()
+                ),
+                IdAndComplicationDataWireFormat(
+                    EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
+                    ShortTextComplicationData.Builder(
+                            PlainComplicationText.Builder("B").build(),
+                            ComplicationText.EMPTY
+                        )
+                        .setTitle(PlainComplicationText.Builder("Preview").build())
+                        .build()
+                        .asWireComplicationData()
                 )
-                    .setTitle(PlainComplicationText.Builder("Preview").build())
-                    .build()
-                    .asWireComplicationData()
-            ),
-            IdAndComplicationDataWireFormat(
-                EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
-                ShortTextComplicationData.Builder(
-                    PlainComplicationText.Builder("B").build(),
-                    ComplicationText.EMPTY
-                )
-                    .setTitle(PlainComplicationText.Builder("Preview").build())
-                    .build()
-                    .asWireComplicationData()
             )
-        )
 
         handler.post(this::initCanvasWatchFace)
         assertThat(initLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
@@ -797,28 +779,27 @@
 
         var bitmap: Bitmap? = null
         pretendBinderHandler.post {
-            bitmap = SharedMemoryImage.ashmemReadImageBundle(
-                interactiveWatchFaceInstance.renderWatchFaceToBitmap(
-                    WatchFaceRenderParams(
-                        RenderParameters(
-                            DrawMode.INTERACTIVE,
-                            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                            null
-                        ).toWireFormat(),
-                        123456789,
-                        null,
-                        previewComplicationData
+            bitmap =
+                SharedMemoryImage.ashmemReadImageBundle(
+                    interactiveWatchFaceInstance.renderWatchFaceToBitmap(
+                        WatchFaceRenderParams(
+                            RenderParameters(
+                                    DrawMode.INTERACTIVE,
+                                    WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                                    null
+                                )
+                                .toWireFormat(),
+                            123456789,
+                            null,
+                            previewComplicationData
+                        )
                     )
                 )
-            )
             latch.countDown()
         }
 
         assertThat(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue()
-        bitmap!!.assertAgainstGolden(
-            screenshotRule,
-            "preview_complications"
-        )
+        bitmap!!.assertAgainstGolden(screenshotRule, "preview_complications")
     }
 
     @Test
@@ -836,38 +817,32 @@
         // pending PendingWallpaperInteractiveWatchFaceInstance and no wallpaper command. It
         // instead uses the WallpaperInteractiveWatchFaceInstanceParams which normally would be
         // read from disk, but provided directly in this test.
-        val service = TestCanvasAnalogWatchFaceService(
-            ApplicationProvider.getApplicationContext<Context>(),
-            handler,
-            100000,
-            ZoneId.of("UTC"),
-            surfaceHolder,
-            false, // Direct boot.
-            WallpaperInteractiveWatchFaceInstanceParams(
-                INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
+        val service =
+            TestCanvasAnalogWatchFaceService(
+                ApplicationProvider.getApplicationContext<Context>(),
+                handler,
+                100000,
+                ZoneId.of("UTC"),
+                surfaceHolder,
+                false, // Direct boot.
+                WallpaperInteractiveWatchFaceInstanceParams(
+                    INTERACTIVE_INSTANCE_ID,
+                    DeviceConfig(false, false, 0, 0),
+                    WatchUiState(false, 0),
+                    UserStyleWireFormat(
+                        mapOf(COLOR_STYLE_SETTING to GREEN_STYLE.encodeToByteArray())
+                    ),
+                    null,
+                    null,
+                    null
                 ),
-                WatchUiState(false, 0),
-                UserStyleWireFormat(
-                    mapOf(COLOR_STYLE_SETTING to GREEN_STYLE.encodeToByteArray())
-                ),
-                null,
-                null,
                 null
-            ),
-            null
-        )
+            )
 
         val engineWrapper = service.onCreateEngine() as WatchFaceService.EngineWrapper
 
         // Make sure init has completed before trying to draw.
-        runBlocking {
-            engineWrapper.deferredWatchFaceImpl.await()
-        }
+        runBlocking { engineWrapper.deferredWatchFaceImpl.await() }
 
         handler.post { engineWrapper.draw(engineWrapper.getWatchFaceImplOrNull()) }
 
@@ -899,11 +874,7 @@
                 interactiveWatchFaceInstance.instanceId
             )!!
         try {
-            interactiveWatchFaceInstance.sendTouchEvent(
-                85,
-                165,
-                TapType.UP
-            )
+            interactiveWatchFaceInstance.sendTouchEvent(85, 165, TapType.UP)
 
             assertThat(ComplicationTapActivity.awaitIntent()).isNotNull()
         } finally {
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/XmlDefinedUserStyleSchemaAndComplicationSlotsTest.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/XmlDefinedUserStyleSchemaAndComplicationSlotsTest.kt
index 1da812c..f375f2a 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/XmlDefinedUserStyleSchemaAndComplicationSlotsTest.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/XmlDefinedUserStyleSchemaAndComplicationSlotsTest.kt
@@ -59,7 +59,11 @@
 import androidx.wear.watchface.style.UserStyleSetting.LongRangeUserStyleSetting.LongRangeOption
 import androidx.wear.watchface.style.data.UserStyleWireFormat
 import com.google.common.truth.Truth.assertThat
+import java.time.ZonedDateTime
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.runBlocking
+import org.junit.After
 import org.junit.Assert
 import org.junit.Assume
 import org.junit.Before
@@ -68,10 +72,6 @@
 import org.mockito.Mock
 import org.mockito.Mockito
 import org.mockito.MockitoAnnotations
-import java.time.ZonedDateTime
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import org.junit.After
 
 private const val BITMAP_WIDTH = 400
 private const val BITMAP_HEIGHT = 400
@@ -93,7 +93,8 @@
 
     override fun getComplicationSlotInflationFactory(
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = object : ComplicationSlotInflationFactory() {
+    ) =
+        object : ComplicationSlotInflationFactory() {
             override fun getCanvasComplicationFactory(slotId: Int): CanvasComplicationFactory {
                 return CanvasComplicationFactory { _, _ ->
                     object : CanvasComplication {
@@ -103,8 +104,7 @@
                             zonedDateTime: ZonedDateTime,
                             renderParameters: RenderParameters,
                             slotId: Int
-                        ) {
-                        }
+                        ) {}
 
                         override fun drawHighlight(
                             canvas: Canvas,
@@ -112,57 +112,54 @@
                             boundsType: Int,
                             zonedDateTime: ZonedDateTime,
                             color: Int
-                        ) {
-                        }
+                        ) {}
 
                         override fun getData() = NoDataComplicationData()
 
                         override fun loadData(
                             complicationData: ComplicationData,
                             loadDrawablesAsynchronous: Boolean
-                        ) {
-                        }
+                        ) {}
                     }
                 }
+            }
         }
-    }
 
     override suspend fun createWatchFace(
         surfaceHolder: SurfaceHolder,
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16L
-        ) {
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("deprecation")
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16L
+                ) {
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {}
             }
-        }
-    )
+        )
 }
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
 public class XmlDefinedUserStyleSchemaAndComplicationSlotsTest {
 
-    @Mock
-    private lateinit var surfaceHolder: SurfaceHolder
+    @Mock private lateinit var surfaceHolder: SurfaceHolder
 
-    @Mock
-    private lateinit var surface: Surface
+    @Mock private lateinit var surface: Surface
 
     private val bitmap = Bitmap.createBitmap(BITMAP_WIDTH, BITMAP_HEIGHT, Bitmap.Config.ARGB_8888)
     private val canvas = Canvas(bitmap)
@@ -184,50 +181,48 @@
     }
 
     private fun setPendingWallpaperInteractiveWatchFaceInstance() {
-        val existingInstance = InteractiveInstanceManager
-            .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
-                InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
-                    WallpaperInteractiveWatchFaceInstanceParams(
-                        INTERACTIVE_INSTANCE_ID,
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
+        val existingInstance =
+            InteractiveInstanceManager
+                .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
+                    InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
+                        WallpaperInteractiveWatchFaceInstanceParams(
+                            INTERACTIVE_INSTANCE_ID,
+                            DeviceConfig(false, false, 0, 0),
+                            WatchUiState(false, 0),
+                            UserStyleWireFormat(emptyMap()),
+                            null,
+                            null,
+                            null
                         ),
-                        WatchUiState(false, 0),
-                        UserStyleWireFormat(emptyMap()),
-                        null,
-                        null,
-                        null
-                    ),
-                    object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        object : IPendingInteractiveWatchFace.Stub() {
+                            override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
-                        override fun onInteractiveWatchFaceCreated(
-                            iInteractiveWatchFace: IInteractiveWatchFace
-                        ) {
-                            interactiveWatchFaceInstance = iInteractiveWatchFace
-                            initLatch.countDown()
-                        }
+                            override fun onInteractiveWatchFaceCreated(
+                                iInteractiveWatchFace: IInteractiveWatchFace
+                            ) {
+                                interactiveWatchFaceInstance = iInteractiveWatchFace
+                                initLatch.countDown()
+                            }
 
-                        override fun onInteractiveWatchFaceCrashed(exception: CrashInfoParcel?) {
-                            Assert.fail("WatchFace crashed: $exception")
+                            override fun onInteractiveWatchFaceCrashed(
+                                exception: CrashInfoParcel?
+                            ) {
+                                Assert.fail("WatchFace crashed: $exception")
+                            }
                         }
-                    }
+                    )
                 )
-            )
         assertThat(existingInstance).isNull()
     }
 
     @Test
     @Suppress("Deprecation", "NewApi") // userStyleSettings
     public fun staticSchemaAndComplicationsRead() {
-        val service = TestXmlWatchFaceService(
-            ApplicationProvider.getApplicationContext<Context>(),
-            surfaceHolder
-        )
+        val service =
+            TestXmlWatchFaceService(
+                ApplicationProvider.getApplicationContext<Context>(),
+                surfaceHolder
+            )
 
         Mockito.`when`(surfaceHolder.surfaceFrame)
             .thenReturn(Rect(0, 0, BITMAP_WIDTH, BITMAP_HEIGHT))
@@ -243,68 +238,57 @@
         runBlocking {
             val watchFaceImpl = wrapper.deferredWatchFaceImpl.await()
             val schema = watchFaceImpl.currentUserStyleRepository.schema
-            assertThat(schema.userStyleSettings.map { it.id.value }).containsExactly(
-                "TimeStyle", "BooleanId", "DoubleId", "LongId"
-            )
+            assertThat(schema.userStyleSettings.map { it.id.value })
+                .containsExactly("TimeStyle", "BooleanId", "DoubleId", "LongId")
 
-            assertThat(
-                watchFaceImpl.complicationSlotsManager.complicationSlots.size
-            ).isEqualTo(5)
+            assertThat(watchFaceImpl.complicationSlotsManager.complicationSlots.size).isEqualTo(5)
 
             val slotA = watchFaceImpl.complicationSlotsManager.complicationSlots[10]!!
             assertThat(slotA.boundsType).isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
-            assertThat(slotA.supportedTypes).containsExactly(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.SMALL_IMAGE
-            ).inOrder()
+            assertThat(slotA.supportedTypes)
+                .containsExactly(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.SMALL_IMAGE
+                )
+                .inOrder()
             assertThat(slotA.defaultDataSourcePolicy.primaryDataSource).isNull()
-            assertThat(slotA.defaultDataSourcePolicy.primaryDataSourceDefaultType)
-                .isNull()
+            assertThat(slotA.defaultDataSourcePolicy.primaryDataSourceDefaultType).isNull()
             assertThat(slotA.defaultDataSourcePolicy.secondaryDataSource).isNull()
-            assertThat(slotA.defaultDataSourcePolicy.secondaryDataSourceDefaultType)
-                .isNull()
-            assertThat(slotA.defaultDataSourcePolicy.systemDataSourceFallback).isEqualTo(
-                SystemDataSources.DATA_SOURCE_WATCH_BATTERY
-            )
+            assertThat(slotA.defaultDataSourcePolicy.secondaryDataSourceDefaultType).isNull()
+            assertThat(slotA.defaultDataSourcePolicy.systemDataSourceFallback)
+                .isEqualTo(SystemDataSources.DATA_SOURCE_WATCH_BATTERY)
             assertThat(slotA.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType)
                 .isEqualTo(ComplicationType.RANGED_VALUE)
             assertThat(
-                slotA.complicationSlotBounds.perComplicationTypeBounds[
-                    ComplicationType.SHORT_TEXT
-                ]!!
-            ).isEqualTo(
-                RectF(0.3f, 0.7f, 0.7f, 0.9f)
-            )
+                    slotA.complicationSlotBounds.perComplicationTypeBounds[
+                            ComplicationType.SHORT_TEXT]!!
+                )
+                .isEqualTo(RectF(0.3f, 0.7f, 0.7f, 0.9f))
             assertThat(slotA.nameResourceId).isEqualTo(R.string.complication_name_one)
             assertThat(slotA.screenReaderNameResourceId)
                 .isEqualTo(R.string.complication_screen_reader_name_one)
 
             val slotB = watchFaceImpl.complicationSlotsManager.complicationSlots[20]!!
             assertThat(slotB.boundsType).isEqualTo(ComplicationSlotBoundsType.BACKGROUND)
-            assertThat(slotB.supportedTypes).containsExactly(
-                ComplicationType.LONG_TEXT, ComplicationType.SHORT_TEXT
-            ).inOrder()
-            assertThat(slotB.defaultDataSourcePolicy.primaryDataSource).isEqualTo(
-                ComponentName("com.package", "com.app")
-            )
+            assertThat(slotB.supportedTypes)
+                .containsExactly(ComplicationType.LONG_TEXT, ComplicationType.SHORT_TEXT)
+                .inOrder()
+            assertThat(slotB.defaultDataSourcePolicy.primaryDataSource)
+                .isEqualTo(ComponentName("com.package", "com.app"))
             assertThat(slotB.defaultDataSourcePolicy.primaryDataSourceDefaultType)
                 .isEqualTo(ComplicationType.SHORT_TEXT)
             assertThat(slotB.defaultDataSourcePolicy.secondaryDataSource).isNull()
-            assertThat(slotB.defaultDataSourcePolicy.secondaryDataSourceDefaultType)
-                .isNull()
-            assertThat(slotB.defaultDataSourcePolicy.systemDataSourceFallback).isEqualTo(
-                SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
-            )
+            assertThat(slotB.defaultDataSourcePolicy.secondaryDataSourceDefaultType).isNull()
+            assertThat(slotB.defaultDataSourcePolicy.systemDataSourceFallback)
+                .isEqualTo(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET)
             assertThat(slotB.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType)
                 .isEqualTo(ComplicationType.LONG_TEXT)
             assertThat(
-                slotB.complicationSlotBounds.perComplicationTypeBounds[
-                    ComplicationType.SHORT_TEXT
-                ]!!
-            ).isEqualTo(
-                RectF(0.1f, 0.2f, 0.3f, 0.4f)
-            )
+                    slotB.complicationSlotBounds.perComplicationTypeBounds[
+                            ComplicationType.SHORT_TEXT]!!
+                )
+                .isEqualTo(RectF(0.1f, 0.2f, 0.3f, 0.4f))
             assertThat(slotB.nameResourceId).isEqualTo(R.string.complication_name_two)
             assertThat(slotB.screenReaderNameResourceId)
                 .isEqualTo(R.string.complication_screen_reader_name_two)
@@ -314,43 +298,42 @@
             assertThat(slotC.defaultDataSourcePolicy.primaryDataSourceDefaultType).isNull()
             assertThat(slotC.defaultDataSourcePolicy.secondaryDataSource).isNull()
             assertThat(slotC.defaultDataSourcePolicy.secondaryDataSourceDefaultType).isNull()
-            assertThat(slotC.defaultDataSourcePolicy.systemDataSourceFallback).isEqualTo(
-                SystemDataSources.NO_DATA_SOURCE
-            )
+            assertThat(slotC.defaultDataSourcePolicy.systemDataSourceFallback)
+                .isEqualTo(SystemDataSources.NO_DATA_SOURCE)
             assertThat(slotC.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType)
                 .isEqualTo(ComplicationType.NOT_CONFIGURED)
 
             val slotD = watchFaceImpl.complicationSlotsManager.complicationSlots[40]!!
-            assertThat(slotD.supportedTypes).containsExactly(
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.SMALL_IMAGE
-            ).inOrder()
-            assertThat(slotD.defaultDataSourcePolicy.primaryDataSource).isEqualTo(
-                ComponentName("com.package", "com.app.example1"))
+            assertThat(slotD.supportedTypes)
+                .containsExactly(
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.SMALL_IMAGE
+                )
+                .inOrder()
+            assertThat(slotD.defaultDataSourcePolicy.primaryDataSource)
+                .isEqualTo(ComponentName("com.package", "com.app.example1"))
             assertThat(slotD.defaultDataSourcePolicy.primaryDataSourceDefaultType)
                 .isEqualTo(ComplicationType.SHORT_TEXT)
-            assertThat(slotD.defaultDataSourcePolicy.secondaryDataSource).isEqualTo(
-                ComponentName("com.package", "com.app.example2"))
+            assertThat(slotD.defaultDataSourcePolicy.secondaryDataSource)
+                .isEqualTo(ComponentName("com.package", "com.app.example2"))
             assertThat(slotD.defaultDataSourcePolicy.secondaryDataSourceDefaultType)
                 .isEqualTo(ComplicationType.SMALL_IMAGE)
-            assertThat(slotD.defaultDataSourcePolicy.systemDataSourceFallback).isEqualTo(
-                SystemDataSources.DATA_SOURCE_WATCH_BATTERY
-            )
+            assertThat(slotD.defaultDataSourcePolicy.systemDataSourceFallback)
+                .isEqualTo(SystemDataSources.DATA_SOURCE_WATCH_BATTERY)
             assertThat(slotD.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType)
                 .isEqualTo(ComplicationType.RANGED_VALUE)
 
             val slotE = watchFaceImpl.complicationSlotsManager.complicationSlots[50]!!
-            assertThat(slotE.supportedTypes).containsExactly(
-                ComplicationType.GOAL_PROGRESS, ComplicationType.WEIGHTED_ELEMENTS
-            ).inOrder()
-            assertThat(slotE.defaultDataSourcePolicy.primaryDataSource).isEqualTo(
-                ComponentName("com.package", "com.app"))
+            assertThat(slotE.supportedTypes)
+                .containsExactly(ComplicationType.GOAL_PROGRESS, ComplicationType.WEIGHTED_ELEMENTS)
+                .inOrder()
+            assertThat(slotE.defaultDataSourcePolicy.primaryDataSource)
+                .isEqualTo(ComponentName("com.package", "com.app"))
             assertThat(slotE.defaultDataSourcePolicy.primaryDataSourceDefaultType)
                 .isEqualTo(ComplicationType.GOAL_PROGRESS)
-            assertThat(slotE.defaultDataSourcePolicy.systemDataSourceFallback).isEqualTo(
-                SystemDataSources.DATA_SOURCE_WATCH_BATTERY
-            )
+            assertThat(slotE.defaultDataSourcePolicy.systemDataSourceFallback)
+                .isEqualTo(SystemDataSources.DATA_SOURCE_WATCH_BATTERY)
             assertThat(slotE.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType)
                 .isEqualTo(ComplicationType.WEIGHTED_ELEMENTS)
 
@@ -375,36 +358,38 @@
             val complications = flavor.complications
             assertThat(complications.size).isEqualTo(1)
             val complicationPolicy = complications[10]!!
-            assertThat(complicationPolicy.primaryDataSource).isEqualTo(
-                ComponentName("com.package", "com.app"))
-            assertThat(complicationPolicy.primaryDataSourceDefaultType).isEqualTo(
-                ComplicationType.SHORT_TEXT)
-            assertThat(complicationPolicy.systemDataSourceFallback).isEqualTo(
-                SystemDataSources.DATA_SOURCE_DAY_AND_DATE)
-            assertThat(complicationPolicy.systemDataSourceFallbackDefaultType).isEqualTo(
-                ComplicationType.SHORT_TEXT)
+            assertThat(complicationPolicy.primaryDataSource)
+                .isEqualTo(ComponentName("com.package", "com.app"))
+            assertThat(complicationPolicy.primaryDataSourceDefaultType)
+                .isEqualTo(ComplicationType.SHORT_TEXT)
+            assertThat(complicationPolicy.systemDataSourceFallback)
+                .isEqualTo(SystemDataSources.DATA_SOURCE_DAY_AND_DATE)
+            assertThat(complicationPolicy.systemDataSourceFallbackDefaultType)
+                .isEqualTo(ComplicationType.SHORT_TEXT)
 
             var fixedString = flavor.toString()
 
             // remove binary data from option values
             val booleanIndex = fixedString.indexOf("BooleanId=") + "BooleanId=".length
-            fixedString = fixedString.removeRange(booleanIndex,
-                fixedString.indexOf(',', booleanIndex))
+            fixedString =
+                fixedString.removeRange(booleanIndex, fixedString.indexOf(',', booleanIndex))
 
             val doubleIndex = fixedString.indexOf("DoubleId=") + "DoubleId=".length
-            fixedString = fixedString.removeRange(doubleIndex,
-                fixedString.indexOf(',', doubleIndex))
+            fixedString =
+                fixedString.removeRange(doubleIndex, fixedString.indexOf(',', doubleIndex))
 
             val longIndex = fixedString.indexOf("LongId=") + "LongId=".length
-            fixedString = fixedString.removeRange(longIndex,
-                fixedString.indexOf('}', longIndex))
+            fixedString = fixedString.removeRange(longIndex, fixedString.indexOf('}', longIndex))
 
-            assertThat(fixedString).isEqualTo("UserStyleFlavor[flavor1: " +
-                "{BooleanId=, TimeStyle=minimal, DoubleId=, LongId=}, " +
-                "{10=DefaultComplicationDataSourcePolicy[" +
-                    "primary(ComponentInfo{com.package/com.app}, SHORT_TEXT), " +
-                    "secondary(null, null), " +
-                    "system(16, SHORT_TEXT)]}]")
+            assertThat(fixedString)
+                .isEqualTo(
+                    "UserStyleFlavor[flavor1: " +
+                        "{BooleanId=, TimeStyle=minimal, DoubleId=, LongId=}, " +
+                        "{10=DefaultComplicationDataSourcePolicy[" +
+                        "primary(ComponentInfo{com.package/com.app}, SHORT_TEXT), " +
+                        "secondary(null, null), " +
+                        "system(16, SHORT_TEXT)]}]"
+                )
         }
     }
 }
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsObserver.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsObserver.kt
index 0f3a5fd..62ec1af 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsObserver.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsObserver.kt
@@ -51,15 +51,11 @@
     }
 
     override fun onActionTimeZoneChanged() {
-        uiThreadCoroutineScope.launch {
-            deferredWatchFaceImpl.await().onActionTimeZoneChanged()
-        }
+        uiThreadCoroutineScope.launch { deferredWatchFaceImpl.await().onActionTimeZoneChanged() }
     }
 
     override fun onActionTimeChanged() {
-        uiThreadCoroutineScope.launch {
-            deferredWatchFaceImpl.await().onActionTimeChanged()
-        }
+        uiThreadCoroutineScope.launch { deferredWatchFaceImpl.await().onActionTimeChanged() }
     }
 
     override fun onActionBatteryLow() {
@@ -87,14 +83,11 @@
     }
 
     override fun onMockTime(intent: Intent) {
-        uiThreadCoroutineScope.launch {
-            deferredWatchFaceImpl.await().onMockTime(intent)
-        }
+        uiThreadCoroutineScope.launch { deferredWatchFaceImpl.await().onMockTime(intent) }
     }
 
     private fun updateBatteryLowAndNotChargingStatus(value: Boolean) {
-        val isBatteryLowAndNotCharging =
-            watchState.isBatteryLowAndNotCharging as MutableStateFlow
+        val isBatteryLowAndNotCharging = watchState.isBatteryLowAndNotCharging as MutableStateFlow
         if (!isBatteryLowAndNotCharging.hasValue() || value != isBatteryLowAndNotCharging.value) {
             isBatteryLowAndNotCharging.value = value
             watchFaceHostApi.invalidate()
@@ -123,12 +116,13 @@
         // This is a backup signal for when SysUI is unable to deliver the ambient state (e.g. in
         // direct boot mode). We need to distinguish between ACTION_SCREEN_OFF for entering ambient
         // and the screen turning off. This is only possible from R.
-        isAmbient.value = if (ambientSettingAvailable) {
-            Settings.Global.getInt(contentResolver, AMBIENT_ENABLED_PATH, 0) == 1
-        } else {
-            // On P and below we just have to assume we're not ambient.
-            false
-        }
+        isAmbient.value =
+            if (ambientSettingAvailable) {
+                Settings.Global.getInt(contentResolver, AMBIENT_ENABLED_PATH, 0) == 1
+            } else {
+                // On P and below we just have to assume we're not ambient.
+                false
+            }
     }
 
     override fun onActionScreenOn() {
@@ -145,4 +139,4 @@
     override fun onActionUserPresent() {
         (watchState.isLocked as MutableStateFlow).value = false
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsReceiver.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsReceiver.kt
index a22d479..456f2af 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsReceiver.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsReceiver.kt
@@ -28,61 +28,46 @@
 /**
  * This class decouples [BroadcastEventObserver]s from the actual broadcast event receivers to make
  * testing easier.
+ *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-public class BroadcastsReceiver constructor(
-    private val context: Context,
-    private val observer: BroadcastEventObserver
-) {
+public class BroadcastsReceiver
+constructor(private val context: Context, private val observer: BroadcastEventObserver) {
 
     public interface BroadcastEventObserver {
         /** Called when we receive [Intent.ACTION_TIME_TICK]. */
-        @UiThread
-        public fun onActionTimeTick()
+        @UiThread public fun onActionTimeTick()
 
         /** Called when we receive [Intent.ACTION_TIMEZONE_CHANGED]. */
-        @UiThread
-        public fun onActionTimeZoneChanged()
+        @UiThread public fun onActionTimeZoneChanged()
 
         /** Called when we receive [Intent.ACTION_TIME_CHANGED]. */
-        @UiThread
-        public fun onActionTimeChanged()
+        @UiThread public fun onActionTimeChanged()
 
         /** Called when we receive [Intent.ACTION_BATTERY_LOW]. */
-        @UiThread
-        public fun onActionBatteryLow()
+        @UiThread public fun onActionBatteryLow()
 
         /** Called when we receive [Intent.ACTION_BATTERY_OKAY]. */
-        @UiThread
-        public fun onActionBatteryOkay()
+        @UiThread public fun onActionBatteryOkay()
 
         /** Called when we receive [Intent.ACTION_POWER_CONNECTED]. */
-        @UiThread
-        public fun onActionPowerConnected()
+        @UiThread public fun onActionPowerConnected()
 
         /** Called when we receive [Intent.ACTION_POWER_DISCONNECTED]. */
-        @UiThread
-        public fun onActionPowerDisconnected()
+        @UiThread public fun onActionPowerDisconnected()
 
         /** Called when we receive [WatchFaceImpl.MOCK_TIME_INTENT]. */
-        @UiThread
-        public fun onMockTime(intent: Intent)
+        @UiThread public fun onMockTime(intent: Intent)
 
         /** Called when we receive [Intent.ACTION_SCREEN_OFF] */
-        @UiThread
-        public fun onActionScreenOff() {
-        }
+        @UiThread public fun onActionScreenOff() {}
 
         /** Called when we receive [Intent.ACTION_SCREEN_ON] */
-        @UiThread
-        public fun onActionScreenOn() {
-        }
+        @UiThread public fun onActionScreenOn() {}
 
         /** Called when we receive [Intent.ACTION_USER_PRESENT] */
-        @UiThread
-        public fun onActionUserPresent() {
-        }
+        @UiThread public fun onActionUserPresent() {}
     }
 
     companion object {
@@ -93,25 +78,26 @@
         internal const val INITIAL_LOW_BATTERY_THRESHOLD = 15f
     }
 
-    internal val receiver: BroadcastReceiver = object : BroadcastReceiver() {
-        @SuppressWarnings("SyntheticAccessor")
-        override fun onReceive(context: Context, intent: Intent) {
-            when (intent.action) {
-                Intent.ACTION_BATTERY_LOW -> observer.onActionBatteryLow()
-                Intent.ACTION_BATTERY_OKAY -> observer.onActionBatteryOkay()
-                Intent.ACTION_POWER_CONNECTED -> observer.onActionPowerConnected()
-                Intent.ACTION_POWER_DISCONNECTED -> observer.onActionPowerDisconnected()
-                Intent.ACTION_TIME_CHANGED -> observer.onActionTimeChanged()
-                Intent.ACTION_TIME_TICK -> observer.onActionTimeTick()
-                Intent.ACTION_TIMEZONE_CHANGED -> observer.onActionTimeZoneChanged()
-                Intent.ACTION_SCREEN_OFF -> observer.onActionScreenOff()
-                Intent.ACTION_SCREEN_ON -> observer.onActionScreenOn()
-                Intent.ACTION_USER_PRESENT -> observer.onActionUserPresent()
-                WatchFaceImpl.MOCK_TIME_INTENT -> observer.onMockTime(intent)
-                else -> System.err.println("<< IGNORING $intent")
+    internal val receiver: BroadcastReceiver =
+        object : BroadcastReceiver() {
+            @SuppressWarnings("SyntheticAccessor")
+            override fun onReceive(context: Context, intent: Intent) {
+                when (intent.action) {
+                    Intent.ACTION_BATTERY_LOW -> observer.onActionBatteryLow()
+                    Intent.ACTION_BATTERY_OKAY -> observer.onActionBatteryOkay()
+                    Intent.ACTION_POWER_CONNECTED -> observer.onActionPowerConnected()
+                    Intent.ACTION_POWER_DISCONNECTED -> observer.onActionPowerDisconnected()
+                    Intent.ACTION_TIME_CHANGED -> observer.onActionTimeChanged()
+                    Intent.ACTION_TIME_TICK -> observer.onActionTimeTick()
+                    Intent.ACTION_TIMEZONE_CHANGED -> observer.onActionTimeZoneChanged()
+                    Intent.ACTION_SCREEN_OFF -> observer.onActionScreenOff()
+                    Intent.ACTION_SCREEN_ON -> observer.onActionScreenOn()
+                    Intent.ACTION_USER_PRESENT -> observer.onActionUserPresent()
+                    WatchFaceImpl.MOCK_TIME_INTENT -> observer.onMockTime(intent)
+                    else -> System.err.println("<< IGNORING $intent")
+                }
             }
         }
-    }
 
     init {
         context.registerReceiver(
@@ -134,19 +120,22 @@
     /** Called to send observers initial battery state in advance of receiving any broadcasts. */
     internal fun processBatteryStatus(batteryStatus: Intent?) {
         val status = batteryStatus?.getIntExtra(BatteryManager.EXTRA_STATUS, -1) ?: -1
-        if (status == BatteryManager.BATTERY_STATUS_CHARGING ||
-            status == BatteryManager.BATTERY_STATUS_FULL
+        if (
+            status == BatteryManager.BATTERY_STATUS_CHARGING ||
+                status == BatteryManager.BATTERY_STATUS_FULL
         ) {
             observer.onActionPowerConnected()
         } else {
             observer.onActionPowerDisconnected()
         }
 
-        val batteryPercent: Float = batteryStatus?.let { intent ->
-            val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
-            val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
-            level * 100 / scale.toFloat()
-        } ?: 100.0f
+        val batteryPercent: Float =
+            batteryStatus?.let { intent ->
+                val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
+                val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
+                level * 100 / scale.toFloat()
+            }
+                ?: 100.0f
         if (batteryPercent < INITIAL_LOW_BATTERY_THRESHOLD) {
             observer.onActionBatteryLow()
         } else {
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/CancellableUniqueTask.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/CancellableUniqueTask.kt
index 76fdc41..64d7a5a 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/CancellableUniqueTask.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/CancellableUniqueTask.kt
@@ -19,9 +19,7 @@
 import android.os.Handler
 import java.time.Duration
 
-/**
- * Task posting helper which allows only one pending task at a time.
- */
+/** Task posting helper which allows only one pending task at a time. */
 internal class CancellableUniqueTask(private val handler: Handler) {
     private var pendingTask: Runnable? = null
 
@@ -41,4 +39,4 @@
         handler.postDelayed(runnable, delay.toMillis())
         pendingTask = runnable
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/CanvasComplicationFactory.java b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/CanvasComplicationFactory.java
index 25c050a..ac5d1a0 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/CanvasComplicationFactory.java
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/CanvasComplicationFactory.java
@@ -20,8 +20,8 @@
 import androidx.annotation.WorkerThread;
 
 /**
- * Factory for creating a CanvasComplication. This decouples construction of Complications and
- * their CanvasComplication renderers.
+ * Factory for creating a CanvasComplication. This decouples construction of Complications and their
+ * CanvasComplication renderers.
  */
 // TODO(b/188035300): Put links into the comments.
 public interface CanvasComplicationFactory {
@@ -34,9 +34,9 @@
      *
      * @param watchState The current WatchState
      * @param invalidateCallback The CanvasComplication.InvalidateCallback the constructed
-     * CanvasComplication can use to request redrawing. This is typically used in
-     * conjunction with asynchronous loading of Drawables to update the watch face once the
-     * drawable has loaded.
+     *     CanvasComplication can use to request redrawing. This is typically used in conjunction
+     *     with asynchronous loading of Drawables to update the watch face once the drawable has
+     *     loaded.
      * @return The constructed CanvasComplication.
      */
     @NonNull
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationDataSourceChooserIntent.java b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationDataSourceChooserIntent.java
index 6105f6b..1bd1a98 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationDataSourceChooserIntent.java
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationDataSourceChooserIntent.java
@@ -35,9 +35,7 @@
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class ComplicationDataSourceChooserIntent {
 
-    /**
-     * The intent action used to open the complication data source chooser activity.
-     */
+    /** The intent action used to open the complication data source chooser activity. */
     @SuppressWarnings("ActionValue")
     private static final String ACTION_CHOOSE_DATA_SOURCE =
             "com.google.android.clockwork.home.complications.ACTION_CHOOSE_PROVIDER";
@@ -139,9 +137,9 @@
      * will not work. The result delivered back to your activity will have a result code of {@link
      * Activity#RESULT_OK RESULT_OK} if a complication data source was successfully set, or a result
      * code of {@link Activity#RESULT_CANCELED RESULT_CANCELED} if no complication data source was
-     * set. In the case where a complication data source was set,
-     * {@link ComplicationProviderInfo} for the chosen complication data source will be included
-     * in the data intent of the result, as an extra with the key {@link #EXTRA_PROVIDER_INFO}.
+     * set. In the case where a complication data source was set, {@link ComplicationProviderInfo}
+     * for the chosen complication data source will be included in the data intent of the result, as
+     * an extra with the key {@link #EXTRA_PROVIDER_INFO}.
      *
      * <p>The package of the calling Activity must match the package of the watch face, or this will
      * not work.
@@ -178,8 +176,8 @@
      * automatically if it is not already granted.
      *
      * <p>This is intended for use when starting the chooser directly from the watch face. If the
-     * chooser is being started from an Activity, use
-     * {@link #createComplicationDataSourceChooserIntent} instead.
+     * chooser is being started from an Activity, use {@link
+     * #createComplicationDataSourceChooserIntent} instead.
      *
      * <p>The package of the caller must match the package of the watch face, or this will not work.
      *
@@ -197,11 +195,13 @@
             @NonNull ComponentName watchFace,
             int watchFaceComplicationId,
             @NonNull @ComplicationData.ComplicationType int... supportedTypes) {
-        Intent intent = createComplicationDataSourceChooserIntent(
-                watchFace, watchFaceComplicationId, supportedTypes);
+        Intent intent =
+                createComplicationDataSourceChooserIntent(
+                        watchFace, watchFaceComplicationId, supportedTypes);
         // Add a placeholder PendingIntent to allow the UID to be checked.
         intent.putExtra(
-                EXTRA_PENDING_INTENT, PendingIntent.getActivity(
+                EXTRA_PENDING_INTENT,
+                PendingIntent.getActivity(
                         context, 0, new Intent(""), PendingIntent.FLAG_IMMUTABLE));
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         context.startActivity(intent);
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationHelperActivity.java b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationHelperActivity.java
index bf2a9f7..454e02e 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationHelperActivity.java
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationHelperActivity.java
@@ -40,17 +40,17 @@
 /**
  * Activity to handle permission requests for complications.
  *
- * <p>This can be used to start the complication data source chooser, making a permission request
- * if necessary, or to just make a permission request, and update all active complications if the
+ * <p>This can be used to start the complication data source chooser, making a permission request if
+ * necessary, or to just make a permission request, and update all active complications if the
  * permission is granted.
  *
  * <p>To use, add this activity to your app, and also add the {@code
  * com.google.android.wearable.permission.RECEIVE_COMPLICATION_DATA} permission.
  *
- * <p>Then, to start the complication data source chooser chooser, use
- * {@link #createComplicationDataSourceChooserHelperIntent} to obtain an intent. If the
- * permission has not yet been granted, the permission will be requested and the complication
- * data source chooser chooser will only be started if the request is accepted by the user.
+ * <p>Then, to start the complication data source chooser chooser, use {@link
+ * #createComplicationDataSourceChooserHelperIntent} to obtain an intent. If the permission has not
+ * yet been granted, the permission will be requested and the complication data source chooser
+ * chooser will only be started if the request is accepted by the user.
  *
  * <p>Or, to request the permission, for instance if {@link ComplicationData} of {@link
  * ComplicationData#TYPE_NO_PERMISSION TYPE_NO_PERMISSION} has been received and tapped on, use
@@ -66,7 +66,7 @@
      * Whether to invoke a specified activity instead of the system's complication data source
      * chooser.
      *
-     * To be used in tests.
+     * <p>To be used in tests.
      */
     public static boolean useTestComplicationDataSourceChooserActivity = false;
 
@@ -74,7 +74,7 @@
      * Whether to skip th permission check and directly attempt to invoke the complication data
      * source chooser.
      *
-     * To be used in tests.
+     * <p>To be used in tests.
      */
     public static boolean skipPermissionCheck = false;
 
@@ -114,14 +114,10 @@
     private static final String COMPLICATIONS_PERMISSION_PRIVILEGED =
             "com.google.android.wearable.permission.RECEIVE_COMPLICATION_DATA_PRIVILEGED";
 
-    @Nullable
-    ComponentName mWatchFace;
+    @Nullable ComponentName mWatchFace;
     int mWfComplicationId;
-    @Nullable
-    Bundle mAdditionalExtras;
-    @Nullable
-    @ComplicationData.ComplicationType
-    int[] mTypes;
+    @Nullable Bundle mAdditionalExtras;
+    @Nullable @ComplicationData.ComplicationType int[] mTypes;
     Delegate mDelegate = new DelegateImpl(this);
 
     /** Allows the logic to be tested. */
@@ -159,27 +155,28 @@
         @Override
         public boolean checkPermission() {
             return ActivityCompat.checkSelfPermission(
-                    mActivity, COMPLICATIONS_PERMISSION_PRIVILEGED)
-                    == PackageManager.PERMISSION_GRANTED
+                                    mActivity, COMPLICATIONS_PERMISSION_PRIVILEGED)
+                            == PackageManager.PERMISSION_GRANTED
                     || ActivityCompat.checkSelfPermission(mActivity, COMPLICATIONS_PERMISSION)
-                    == PackageManager.PERMISSION_GRANTED
+                            == PackageManager.PERMISSION_GRANTED
                     || skipPermissionCheck;
         }
 
         @Override
         public void requestPermissions(int requestCode) {
             ActivityCompat.requestPermissions(
-                    mActivity,
-                    new String[]{COMPLICATIONS_PERMISSION},
-                    requestCode);
+                    mActivity, new String[] {COMPLICATIONS_PERMISSION}, requestCode);
         }
 
         @Override
         @SuppressWarnings("deprecation") // startActivityForResult
         public boolean launchComplicationRationaleActivity() {
             Intent complicationRationalIntent =
-                    mActivity.getIntent().getParcelableExtra(
-                            ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_RATIONALE);
+                    mActivity
+                            .getIntent()
+                            .getParcelableExtra(
+                                    ComplicationDataSourceChooserIntent
+                                            .EXTRA_COMPLICATION_RATIONALE);
 
             if (complicationRationalIntent != null) {
                 mActivity.startActivityForResult(
@@ -194,8 +191,10 @@
         @SuppressWarnings("deprecation")
         public void launchComplicationDeniedActivity() {
             Intent complicationDeniedIntent =
-                    mActivity.getIntent().getParcelableExtra(
-                            ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_DENIED);
+                    mActivity
+                            .getIntent()
+                            .getParcelableExtra(
+                                    ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_DENIED);
 
             if (complicationDeniedIntent != null) {
                 mActivity.startActivity(complicationDeniedIntent);
@@ -216,10 +215,11 @@
             extras.putAll(intent.getExtras());
             intent.replaceExtras(extras);
             if (useTestComplicationDataSourceChooserActivity) {
-                intent.setComponent(new ComponentName(
-                        "androidx.wear.watchface.editor.test",
-                        "androidx.wear.watchface.editor"
-                                + ".TestComplicationDataSourceChooserActivity"));
+                intent.setComponent(
+                        new ComponentName(
+                                "androidx.wear.watchface.editor.test",
+                                "androidx.wear.watchface.editor"
+                                        + ".TestComplicationDataSourceChooserActivity"));
             }
             mActivity.startActivityForResult(intent, START_REQUEST_CODE_PROVIDER_CHOOSER);
         }
@@ -257,33 +257,39 @@
 
         switch (Objects.requireNonNull(intent.getAction())) {
             case ACTION_START_PROVIDER_CHOOSER:
-                mWatchFace = intent.getParcelableExtra(
-                        ComplicationDataSourceChooserIntent.EXTRA_WATCH_FACE_COMPONENT_NAME);
+                mWatchFace =
+                        intent.getParcelableExtra(
+                                ComplicationDataSourceChooserIntent
+                                        .EXTRA_WATCH_FACE_COMPONENT_NAME);
                 mWfComplicationId =
                         intent.getIntExtra(
                                 ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_ID, 0);
-                mTypes = intent.getIntArrayExtra(
-                        ComplicationDataSourceChooserIntent.EXTRA_SUPPORTED_TYPES);
+                mTypes =
+                        intent.getIntArrayExtra(
+                                ComplicationDataSourceChooserIntent.EXTRA_SUPPORTED_TYPES);
                 mAdditionalExtras = getAdditionalExtras(intent);
                 if (mDelegate.checkPermission()) {
                     mDelegate.startComplicationDataSourceChooser();
                 } else {
-                    int requestCode = shouldShowRequestPermissionRationale
-                            ? PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER :
-                            PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER_NO_DENIED_INTENT;
+                    int requestCode =
+                            shouldShowRequestPermissionRationale
+                                    ? PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER
+                                    : PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER_NO_DENIED_INTENT;
                     mDelegate.requestPermissions(requestCode);
                 }
                 break;
             case ACTION_PERMISSION_REQUEST_ONLY:
-                mWatchFace = intent.getParcelableExtra(
-                        ComplicationDataSourceChooserIntent.EXTRA_WATCH_FACE_COMPONENT_NAME);
+                mWatchFace =
+                        intent.getParcelableExtra(
+                                ComplicationDataSourceChooserIntent
+                                        .EXTRA_WATCH_FACE_COMPONENT_NAME);
                 if (mDelegate.checkPermission()) {
                     finish();
                 } else {
                     mDelegate.requestPermissions(
                             shouldShowRequestPermissionRationale
-                                    ? PERMISSION_REQUEST_CODE_REQUEST_ONLY :
-                                    PERMISSION_REQUEST_CODE_REQUEST_ONLY_NO_DENIED_INTENT);
+                                    ? PERMISSION_REQUEST_CODE_REQUEST_ONLY
+                                    : PERMISSION_REQUEST_CODE_REQUEST_ONLY_NO_DENIED_INTENT);
                 }
                 break;
             default:
@@ -302,8 +308,7 @@
         }
         if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
             if (requestCode == PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER
-                    || requestCode
-                    == PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER_NO_DENIED_INTENT) {
+                    || requestCode == PERMISSION_REQUEST_CODE_PROVIDER_CHOOSER_NO_DENIED_INTENT) {
                 mDelegate.startComplicationDataSourceChooser();
             } else {
                 finish();
@@ -353,28 +358,25 @@
      * RESULT_OK} if a complication data source was successfully set, or a result code of {@link
      * Activity#RESULT_CANCELED RESULT_CANCELED} if no complication data source was set. In the case
      * where a complication data source was set, {@link ComplicationProviderInfo} for the chosen
-     * complication data source will be included in the data intent of the result, as an extra
-     * with the key android.support.wearable.complications.EXTRA_PROVIDER_INFO.
+     * complication data source will be included in the data intent of the result, as an extra with
+     * the key android.support.wearable.complications.EXTRA_PROVIDER_INFO.
      *
      * <p>The package of the calling app must match the package of the watch face, or this will not
      * work.
      *
      * <p>From android R onwards this API can only be called during an editing session.
      *
-     * @param context                 context for the current app, that must contain a
-     *                                ComplicationHelperActivity
-     * @param watchFace               the ComponentName of the WatchFaceService being configured.
+     * @param context context for the current app, that must contain a ComplicationHelperActivity
+     * @param watchFace the ComponentName of the WatchFaceService being configured.
      * @param watchFaceComplicationId the watch face's id for the complication being configured.
-     *                                This must match the id passed in when the watch face calls
-     *                                WatchFaceService.Engine#setActiveComplications.
-     * @param supportedTypes          the types supported by the complication, in decreasing
-     *                                order of
-     *                                preference. If a complication data source can supply data for
-     *                                more than one of these types, the type chosen will be
-     *                                whichever was specified first.
-     * @param watchFaceInstanceId     The ID of the watchface being edited.
-     * @param complicationDenied      Intent to launch the complication permission denied dialog.
-     * @param complicationRationale   Intent to launch the complication permission rationale dialog.
+     *     This must match the id passed in when the watch face calls
+     *     WatchFaceService.Engine#setActiveComplications.
+     * @param supportedTypes the types supported by the complication, in decreasing order of
+     *     preference. If a complication data source can supply data for more than one of these
+     *     types, the type chosen will be whichever was specified first.
+     * @param watchFaceInstanceId The ID of the watchface being edited.
+     * @param complicationDenied Intent to launch the complication permission denied dialog.
+     * @param complicationRationale Intent to launch the complication permission rationale dialog.
      */
     @NonNull
     public static Intent createComplicationDataSourceChooserHelperIntent(
@@ -392,15 +394,18 @@
         intent.putExtra(
                 ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_ID, watchFaceComplicationId);
         if (watchFaceInstanceId != null) {
-            intent.putExtra(ComplicationDataSourceChooserIntent.EXTRA_WATCHFACE_INSTANCE_ID,
+            intent.putExtra(
+                    ComplicationDataSourceChooserIntent.EXTRA_WATCHFACE_INSTANCE_ID,
                     watchFaceInstanceId);
         }
         if (complicationDenied != null) {
-            intent.putExtra(ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_DENIED,
+            intent.putExtra(
+                    ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_DENIED,
                     complicationDenied);
         }
         if (complicationRationale != null) {
-            intent.putExtra(ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_RATIONALE,
+            intent.putExtra(
+                    ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_RATIONALE,
                     complicationRationale);
         }
         int[] wireSupportedTypes = new int[supportedTypes.size()];
@@ -408,8 +413,8 @@
         for (ComplicationType supportedType : supportedTypes) {
             wireSupportedTypes[i++] = supportedType.toWireComplicationType();
         }
-        intent.putExtra(ComplicationDataSourceChooserIntent.EXTRA_SUPPORTED_TYPES,
-                wireSupportedTypes);
+        intent.putExtra(
+                ComplicationDataSourceChooserIntent.EXTRA_SUPPORTED_TYPES, wireSupportedTypes);
         return intent;
     }
 
@@ -429,11 +434,9 @@
      * watch face will be triggered. The provided {@code watchFace} must match the current watch
      * face for this to occur.
      *
-     * @param context               context for the current app, that must contain a
-     *                              ComplicationHelperActivity
-     * @param watchFace             the ComponentName of the WatchFaceService for the current
-     *                              watch face
-     * @param complicationDenied    Intent to launch the complication permission denied dialog.
+     * @param context context for the current app, that must contain a ComplicationHelperActivity
+     * @param watchFace the ComponentName of the WatchFaceService for the current watch face
+     * @param complicationDenied Intent to launch the complication permission denied dialog.
      * @param complicationRationale Intent to launch the complication permission rationale dialog.
      */
     @NonNull
@@ -444,14 +447,16 @@
             @Nullable Intent complicationRationale) {
         Intent intent = new Intent(context, ComplicationHelperActivity.class);
         intent.setAction(ACTION_PERMISSION_REQUEST_ONLY);
-        intent.putExtra(ComplicationDataSourceChooserIntent.EXTRA_WATCH_FACE_COMPONENT_NAME,
-                watchFace);
+        intent.putExtra(
+                ComplicationDataSourceChooserIntent.EXTRA_WATCH_FACE_COMPONENT_NAME, watchFace);
         if (complicationDenied != null) {
-            intent.putExtra(ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_DENIED,
+            intent.putExtra(
+                    ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_DENIED,
                     complicationDenied);
         }
         if (complicationRationale != null) {
-            intent.putExtra(ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_RATIONALE,
+            intent.putExtra(
+                    ComplicationDataSourceChooserIntent.EXTRA_COMPLICATION_RATIONALE,
                     complicationRationale);
         }
         return intent;
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlot.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlot.kt
index 7d5ff70..f1e65dd 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlot.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlot.kt
@@ -16,13 +16,13 @@
 
 package androidx.wear.watchface
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.graphics.Canvas
 import android.graphics.Rect
 import android.graphics.RectF
 import android.graphics.drawable.Drawable
 import android.os.Build
 import android.os.Bundle
+import android.support.wearable.complications.ComplicationData as WireComplicationData
 import androidx.annotation.ColorInt
 import androidx.annotation.IntDef
 import androidx.annotation.Px
@@ -76,14 +76,13 @@
      * [Renderer] is created asynchronously which is why we can't pass it in via
      * [CanvasComplicationFactory.create] as it may not be available at that time.
      */
-    @WorkerThread
-    public fun onRendererCreated(renderer: Renderer) {}
+    @WorkerThread public fun onRendererCreated(renderer: Renderer) {}
 
     /**
-     * Draws the complication defined by [getData] into the canvas with the specified bounds.
-     * This will usually be called by user watch face drawing code, but the system may also call it
-     * for complication selection UI rendering. The width and height will be the same as that
-     * computed by computeBounds but the translation and canvas size may differ.
+     * Draws the complication defined by [getData] into the canvas with the specified bounds. This
+     * will usually be called by user watch face drawing code, but the system may also call it for
+     * complication selection UI rendering. The width and height will be the same as that computed
+     * by computeBounds but the translation and canvas size may differ.
      *
      * @param canvas The [Canvas] to render into
      * @param bounds A [Rect] describing the bounds of the complication
@@ -122,8 +121,8 @@
 
     /**
      * Draws a highlight for a [ComplicationSlotBoundsType.ROUND_RECT] complication. The default
-     * implementation does this by drawing a dashed line around the complication, other visual effects
-     * may be used if desired.
+     * implementation does this by drawing a dashed line around the complication, other visual
+     * effects may be used if desired.
      *
      * @param canvas The [Canvas] to render into
      * @param bounds A [Rect] describing the bounds of the complication
@@ -201,7 +200,9 @@
     ): Boolean = hitTest(complicationSlot, screenBounds, x, y, false)
 }
 
-/** Default [ComplicationTapFilter] for [ComplicationSlotBoundsType.ROUND_RECT] complicationSlots. */
+/**
+ * Default [ComplicationTapFilter] for [ComplicationSlotBoundsType.ROUND_RECT] complicationSlots.
+ */
 public class RoundRectComplicationTapFilter : ComplicationTapFilter {
     override fun hitTest(
         complicationSlot: ComplicationSlot,
@@ -212,7 +213,9 @@
     ): Boolean = complicationSlot.computeBounds(screenBounds, includeMargins).contains(x, y)
 }
 
-/** Default [ComplicationTapFilter] for [ComplicationSlotBoundsType.BACKGROUND] complicationSlots. */
+/**
+ * Default [ComplicationTapFilter] for [ComplicationSlotBoundsType.BACKGROUND] complicationSlots.
+ */
 public class BackgroundComplicationTapFilter : ComplicationTapFilter {
     override fun hitTest(
         complicationSlot: ComplicationSlot,
@@ -225,11 +228,12 @@
 
 /** @hide */
 @IntDef(
-    value = [
-        ComplicationSlotBoundsType.ROUND_RECT,
-        ComplicationSlotBoundsType.BACKGROUND,
-        ComplicationSlotBoundsType.EDGE
-    ]
+    value =
+        [
+            ComplicationSlotBoundsType.ROUND_RECT,
+            ComplicationSlotBoundsType.BACKGROUND,
+            ComplicationSlotBoundsType.EDGE
+        ]
 )
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public annotation class ComplicationSlotBoundsType {
@@ -254,8 +258,8 @@
  *
  * @property startAngle The staring angle of the arc in degrees (0 degrees = 12 o'clock position).
  * @property totalAngle The total angle of the arc on degrees.
- * @property thickness The thickness of the arc as a fraction of
- * min(boundingRect.width, boundingRect.height).
+ * @property thickness The thickness of the arc as a fraction of min(boundingRect.width,
+ *   boundingRect.height).
  */
 @ComplicationExperimental
 public class BoundingArc(val startAngle: Float, val totalAngle: Float, @Px val thickness: Float) {
@@ -329,47 +333,46 @@
 
 /**
  * Represents the slot an individual complication on the screen may go in. The number of
- * ComplicationSlots is fixed (see [ComplicationSlotsManager]) but ComplicationSlots can be
- * enabled or disabled via [UserStyleSetting.ComplicationSlotsUserStyleSetting].
+ * ComplicationSlots is fixed (see [ComplicationSlotsManager]) but ComplicationSlots can be enabled
+ * or disabled via [UserStyleSetting.ComplicationSlotsUserStyleSetting].
  *
  * Taps on the watch are tested first against each ComplicationSlot's
  * [ComplicationSlotBounds.perComplicationTypeBounds] for the relevant [ComplicationType]. Its
  * assumed that [ComplicationSlotBounds.perComplicationTypeBounds] don't overlap. If no intersection
  * was found then taps are checked against [ComplicationSlotBounds.perComplicationTypeBounds]
- * expanded by [ComplicationSlotBounds.perComplicationTypeMargins]. Expanded bounds can overlap
- * so the [ComplicationSlot] with the lowest id that intersects the coordinates, if any, is
- * selected.
+ * expanded by [ComplicationSlotBounds.perComplicationTypeMargins]. Expanded bounds can overlap so
+ * the [ComplicationSlot] with the lowest id that intersects the coordinates, if any, is selected.
  *
- * @property id The Watch Face's ID for the complication slot.
  * @param accessibilityTraversalIndex Used to sort Complications when generating accessibility
- * content description labels.
- * @property boundsType The [ComplicationSlotBoundsType] of the complication slot.
+ *   content description labels.
  * @param bounds The complication slot's [ComplicationSlotBounds].
- * @property canvasComplicationFactory The [CanvasComplicationFactory] used to generate a
- * [CanvasComplication] for rendering the complication. The factory allows us to decouple
- * ComplicationSlot from potentially expensive asset loading.
  * @param supportedTypes The list of [ComplicationType]s accepted by this complication slot. Used
- * during complication data source selection, this list should be non-empty.
- * @param defaultPolicy The [DefaultComplicationDataSourcePolicy] which controls the
- * initial complication data source when the watch face is first installed.
+ *   during complication data source selection, this list should be non-empty.
+ * @param defaultPolicy The [DefaultComplicationDataSourcePolicy] which controls the initial
+ *   complication data source when the watch face is first installed.
  * @param defaultDataSourceType The default [ComplicationType] for the default complication data
- * source.
- * @property initiallyEnabled At creation a complication slot is either enabled or disabled. This
- * can be overridden by a [ComplicationSlotsUserStyleSetting] (see
- * [ComplicationSlotOverlay.enabled]).
- * Editors need to know the initial state of a complication slot to predict the effects of making a
- * style change.
+ *   source.
  * @param configExtras Extras to be merged into the Intent sent when invoking the complication data
- * source chooser activity. This features is intended for OEM watch faces where they have elements
- * that behave like a complication but are in fact entirely watch face specific.
- * @property fixedComplicationDataSource  Whether or not the complication data source is fixed (i.e.
- * can't be changed by the user).  This is useful for watch faces built around specific
- * complications.
+ *   source chooser activity. This features is intended for OEM watch faces where they have elements
+ *   that behave like a complication but are in fact entirely watch face specific.
+ * @property id The Watch Face's ID for the complication slot.
+ * @property boundsType The [ComplicationSlotBoundsType] of the complication slot.
+ * @property canvasComplicationFactory The [CanvasComplicationFactory] used to generate a
+ *   [CanvasComplication] for rendering the complication. The factory allows us to decouple
+ *   ComplicationSlot from potentially expensive asset loading.
+ * @property initiallyEnabled At creation a complication slot is either enabled or disabled. This
+ *   can be overridden by a [ComplicationSlotsUserStyleSetting] (see
+ *   [ComplicationSlotOverlay.enabled]). Editors need to know the initial state of a complication
+ *   slot to predict the effects of making a style change.
+ * @property fixedComplicationDataSource Whether or not the complication data source is fixed (i.e.
+ *   can't be changed by the user). This is useful for watch faces built around specific
+ *   complications.
  * @property tapFilter The [ComplicationTapFilter] used to determine whether or not a tap hit the
- * complication slot.
+ *   complication slot.
  */
 public class ComplicationSlot
-@ComplicationExperimental internal constructor(
+@ComplicationExperimental
+internal constructor(
     public val id: Int,
     accessibilityTraversalIndex: Int,
     @ComplicationSlotBoundsType public val boundsType: Int,
@@ -378,19 +381,16 @@
     public val supportedTypes: List<ComplicationType>,
     defaultPolicy: DefaultComplicationDataSourcePolicy,
     defaultDataSourceType: ComplicationType,
-    @get:JvmName("isInitiallyEnabled")
-    public val initiallyEnabled: Boolean,
+    @get:JvmName("isInitiallyEnabled") public val initiallyEnabled: Boolean,
     configExtras: Bundle,
-    @get:JvmName("isFixedComplicationDataSource")
-    public val fixedComplicationDataSource: Boolean,
+    @get:JvmName("isFixedComplicationDataSource") public val fixedComplicationDataSource: Boolean,
     public val tapFilter: ComplicationTapFilter,
     nameResourceId: Int?,
     screenReaderNameResourceId: Int?,
     // TODO(b/230364881): This should really be public but some metalava bug is preventing
     // @ComplicationExperimental from working on the getter so it's currently hidden.
     /** @hide */
-    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    public val boundingArc: BoundingArc?
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) public val boundingArc: BoundingArc?
 ) {
     /**
      * The [ComplicationSlotsManager] this is attached to. Only set after the
@@ -450,33 +450,33 @@
             entries[writeIndex] = entry
         }
 
-        override fun iterator() = object : Iterator<ComplicationDataHistoryEntry> {
-            var iteratorReadIndex = readIndex
+        override fun iterator() =
+            object : Iterator<ComplicationDataHistoryEntry> {
+                var iteratorReadIndex = readIndex
 
-            override fun hasNext() = iteratorReadIndex != writeIndex
+                override fun hasNext() = iteratorReadIndex != writeIndex
 
-            override fun next(): ComplicationDataHistoryEntry {
-                iteratorReadIndex = (iteratorReadIndex + 1) % size
-                return entries[iteratorReadIndex]!!
+                override fun next(): ComplicationDataHistoryEntry {
+                    iteratorReadIndex = (iteratorReadIndex + 1) % size
+                    return entries[iteratorReadIndex]!!
+                }
             }
-        }
     }
 
     /**
      * In userdebug builds maintain a history of the last [MAX_COMPLICATION_HISTORY_ENTRIES]-1
      * complications, which is logged in dumpsys to help debug complication issues.
      */
-    private val complicationHistory = if (Build.TYPE.equals("userdebug")) {
-        RingBuffer(MAX_COMPLICATION_HISTORY_ENTRIES)
-    } else {
-        null
-    }
+    private val complicationHistory =
+        if (Build.TYPE.equals("userdebug")) {
+            RingBuffer(MAX_COMPLICATION_HISTORY_ENTRIES)
+        } else {
+            null
+        }
 
     init {
         require(id >= 0) { "id must be >= 0" }
-        require(accessibilityTraversalIndex >= 0) {
-            "accessibilityTraversalIndex must be >= 0"
-        }
+        require(accessibilityTraversalIndex >= 0) { "accessibilityTraversalIndex must be >= 0" }
     }
 
     public companion object {
@@ -489,18 +489,18 @@
 
         /**
          * Constructs a [Builder] for a complication with bounds type
-         * [ComplicationSlotBoundsType.ROUND_RECT]. This is the most common type of complication. These
-         * can be tapped by the user to trigger the associated intent.
+         * [ComplicationSlotBoundsType.ROUND_RECT]. This is the most common type of complication.
+         * These can be tapped by the user to trigger the associated intent.
          *
          * @param id The watch face's ID for this complication. Can be any integer but should be
-         * unique within the watch face.
+         *   unique within the watch face.
          * @param canvasComplicationFactory The [CanvasComplicationFactory] to supply the
-         * [CanvasComplication] to use for rendering. Note renderers should not be shared between
-         * complicationSlots.
+         *   [CanvasComplication] to use for rendering. Note renderers should not be shared between
+         *   complicationSlots.
          * @param supportedTypes The types of complication supported by this ComplicationSlot. Used
-         * during complication, this list should be non-empty.
+         *   during complication, this list should be non-empty.
          * @param defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] used to select
-         * the initial complication data source when the watch is first installed.
+         *   the initial complication data source when the watch is first installed.
          * @param bounds The complication's [ComplicationSlotBounds].
          */
         @JvmStatic
@@ -510,33 +510,34 @@
             supportedTypes: List<ComplicationType>,
             defaultDataSourcePolicy: DefaultComplicationDataSourcePolicy,
             bounds: ComplicationSlotBounds
-        ): Builder = Builder(
-            id,
-            canvasComplicationFactory,
-            supportedTypes,
-            defaultDataSourcePolicy,
-            ComplicationSlotBoundsType.ROUND_RECT,
-            bounds,
-            RoundRectComplicationTapFilter(),
-            null
-        )
+        ): Builder =
+            Builder(
+                id,
+                canvasComplicationFactory,
+                supportedTypes,
+                defaultDataSourcePolicy,
+                ComplicationSlotBoundsType.ROUND_RECT,
+                bounds,
+                RoundRectComplicationTapFilter(),
+                null
+            )
 
         /**
          * Constructs a [Builder] for a complication with bound type
          * [ComplicationSlotBoundsType.BACKGROUND] whose bounds cover the entire screen. A
          * background complication is for watch faces that wish to have a full screen user
-         * selectable  backdrop. This sort of complication isn't clickable and at most one may be
+         * selectable backdrop. This sort of complication isn't clickable and at most one may be
          * present in the list of complicationSlots.
          *
          * @param id The watch face's ID for this complication. Can be any integer but should be
-         * unique within the watch face.
+         *   unique within the watch face.
          * @param canvasComplicationFactory The [CanvasComplicationFactory] to supply the
-         * [CanvasComplication] to use for rendering. Note renderers should not be shared between
-         * complicationSlots.
+         *   [CanvasComplication] to use for rendering. Note renderers should not be shared between
+         *   complicationSlots.
          * @param supportedTypes The types of complication supported by this ComplicationSlot. Used
-         * during complication, this list should be non-empty.
+         *   during complication, this list should be non-empty.
          * @param defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] used to select
-         * the initial complication data source when the watch is first installed.
+         *   the initial complication data source when the watch is first installed.
          */
         @JvmStatic
         public fun createBackgroundComplicationSlotBuilder(
@@ -544,42 +545,44 @@
             canvasComplicationFactory: CanvasComplicationFactory,
             supportedTypes: List<ComplicationType>,
             defaultDataSourcePolicy: DefaultComplicationDataSourcePolicy
-        ): Builder = Builder(
-            id,
-            canvasComplicationFactory,
-            supportedTypes,
-            defaultDataSourcePolicy,
-            ComplicationSlotBoundsType.BACKGROUND,
-            ComplicationSlotBounds(RectF(0f, 0f, 1f, 1f)),
-            BackgroundComplicationTapFilter(),
-            null
-        )
+        ): Builder =
+            Builder(
+                id,
+                canvasComplicationFactory,
+                supportedTypes,
+                defaultDataSourcePolicy,
+                ComplicationSlotBoundsType.BACKGROUND,
+                ComplicationSlotBounds(RectF(0f, 0f, 1f, 1f)),
+                BackgroundComplicationTapFilter(),
+                null
+            )
 
         /**
          * Constructs a [Builder] for a complication with bounds type
          * [ComplicationSlotBoundsType.EDGE].
          *
          * An edge complication is drawn around the border of the display and has custom hit test
-         * logic (see [complicationTapFilter]). When tapped the associated intent is
-         * dispatched. Edge complicationSlots should have a custom [renderer] with
+         * logic (see [complicationTapFilter]). When tapped the associated intent is dispatched.
+         * Edge complicationSlots should have a custom [renderer] with
          * [CanvasComplication.drawHighlight] overridden.
          *
          * Note hit detection in an editor for [ComplicationSlot]s created with this method is not
          * supported.
          *
          * @param id The watch face's ID for this complication. Can be any integer but should be
-         * unique within the watch face.
+         *   unique within the watch face.
          * @param canvasComplicationFactory The [CanvasComplicationFactory] to supply the
-         * [CanvasComplication] to use for rendering. Note renderers should not be shared between
-         * complicationSlots.
+         *   [CanvasComplication] to use for rendering. Note renderers should not be shared between
+         *   complicationSlots.
          * @param supportedTypes The types of complication supported by this ComplicationSlot. Used
-         * during complication, this list should be non-empty.
+         *   during complication, this list should be non-empty.
          * @param defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] used to select
-         * the initial complication data source when the watch is first installed.
+         *   the initial complication data source when the watch is first installed.
          * @param bounds The complication's [ComplicationSlotBounds]. Its likely the bounding rect
-         * will be much larger than the complication and shouldn't directly be used for hit testing.
-         * @param complicationTapFilter The [ComplicationTapFilter] used to determine whether or
-         * not a tap hit the complication.
+         *   will be much larger than the complication and shouldn't directly be used for hit
+         *   testing.
+         * @param complicationTapFilter The [ComplicationTapFilter] used to determine whether or not
+         *   a tap hit the complication.
          */
         // TODO(b/230364881): Deprecate when BoundingArc is no longer experimental.
         @JvmStatic
@@ -590,32 +593,34 @@
             defaultDataSourcePolicy: DefaultComplicationDataSourcePolicy,
             bounds: ComplicationSlotBounds,
             complicationTapFilter: ComplicationTapFilter
-        ): Builder = Builder(
-            id,
-            canvasComplicationFactory,
-            supportedTypes,
-            defaultDataSourcePolicy,
-            ComplicationSlotBoundsType.EDGE,
-            bounds,
-            complicationTapFilter,
-            null
-        )
+        ): Builder =
+            Builder(
+                id,
+                canvasComplicationFactory,
+                supportedTypes,
+                defaultDataSourcePolicy,
+                ComplicationSlotBoundsType.EDGE,
+                bounds,
+                complicationTapFilter,
+                null
+            )
 
         /**
          * Constructs a [Builder] for a complication with bounds type
          * [ComplicationSlotBoundsType.EDGE], whose contents are contained within [boundingArc].
          *
          * @param id The watch face's ID for this complication. Can be any integer but should be
-         * unique within the watch face.
+         *   unique within the watch face.
          * @param canvasComplicationFactory The [CanvasComplicationFactory] to supply the
-         * [CanvasComplication] to use for rendering. Note renderers should not be shared between
-         * complicationSlots.
+         *   [CanvasComplication] to use for rendering. Note renderers should not be shared between
+         *   complicationSlots.
          * @param supportedTypes The types of complication supported by this ComplicationSlot. Used
-         * during complication, this list should be non-empty.
+         *   during complication, this list should be non-empty.
          * @param defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] used to select
-         * the initial complication data source when the watch is first installed.
+         *   the initial complication data source when the watch is first installed.
          * @param bounds The complication's [ComplicationSlotBounds]. Its likely the bounding rect
-         * will be much larger than the complication and shouldn't directly be used for hit testing.
+         *   will be much larger than the complication and shouldn't directly be used for hit
+         *   testing.
          */
         @JvmStatic
         @JvmOverloads
@@ -627,50 +632,54 @@
             defaultDataSourcePolicy: DefaultComplicationDataSourcePolicy,
             bounds: ComplicationSlotBounds,
             boundingArc: BoundingArc,
-            complicationTapFilter: ComplicationTapFilter = object : ComplicationTapFilter {
-                override fun hitTest(
-                    complicationSlot: ComplicationSlot,
-                    screenBounds: Rect,
-                    x: Int,
-                    y: Int,
-                    @Suppress("UNUSED_PARAMETER") includeMargins: Boolean
-                ) = boundingArc.hitTest(
-                    complicationSlot.computeBounds(screenBounds),
-                    x.toFloat(),
-                    y.toFloat()
-                )
-            }
-        ): Builder = Builder(
-            id,
-            canvasComplicationFactory,
-            supportedTypes,
-            defaultDataSourcePolicy,
-            ComplicationSlotBoundsType.EDGE,
-            bounds,
-            complicationTapFilter,
-            boundingArc
-        )
+            complicationTapFilter: ComplicationTapFilter =
+                object : ComplicationTapFilter {
+                    override fun hitTest(
+                        complicationSlot: ComplicationSlot,
+                        screenBounds: Rect,
+                        x: Int,
+                        y: Int,
+                        @Suppress("UNUSED_PARAMETER") includeMargins: Boolean
+                    ) =
+                        boundingArc.hitTest(
+                            complicationSlot.computeBounds(screenBounds),
+                            x.toFloat(),
+                            y.toFloat()
+                        )
+                }
+        ): Builder =
+            Builder(
+                id,
+                canvasComplicationFactory,
+                supportedTypes,
+                defaultDataSourcePolicy,
+                ComplicationSlotBoundsType.EDGE,
+                bounds,
+                complicationTapFilter,
+                boundingArc
+            )
     }
 
     /**
      * Builder for constructing [ComplicationSlot]s.
      *
      * @param id The watch face's ID for this complication. Can be any integer but should be unique
-     * within the watch face.
+     *   within the watch face.
      * @param canvasComplicationFactory The [CanvasComplicationFactory] to supply the
-     * [CanvasComplication] to use for rendering. Note renderers should not be shared between
-     * complicationSlots.
+     *   [CanvasComplication] to use for rendering. Note renderers should not be shared between
+     *   complicationSlots.
      * @param supportedTypes The types of complication supported by this ComplicationSlot. Used
-     * during complication, this list should be non-empty.
-     * @param defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] used to select
-     * the initial complication data source when the watch is first installed.
+     *   during complication, this list should be non-empty.
+     * @param defaultDataSourcePolicy The [DefaultComplicationDataSourcePolicy] used to select the
+     *   initial complication data source when the watch is first installed.
      * @param boundsType The [ComplicationSlotBoundsType] of the complication.
      * @param bounds The complication's [ComplicationSlotBounds].
      * @param complicationTapFilter The [ComplicationTapFilter] used to perform hit testing for this
-     * complication.
+     *   complication.
      */
     @OptIn(ComplicationExperimental::class)
-    public class Builder internal constructor(
+    public class Builder
+    internal constructor(
         private val id: Int,
         private val canvasComplicationFactory: CanvasComplicationFactory,
         private val supportedTypes: List<ComplicationType>,
@@ -698,9 +707,7 @@
          */
         public fun setAccessibilityTraversalIndex(accessibilityTraversalIndex: Int): Builder {
             this.accessibilityTraversalIndex = accessibilityTraversalIndex
-            require(accessibilityTraversalIndex >= 0) {
-                "accessibilityTraversalIndex must be >= 0"
-            }
+            require(accessibilityTraversalIndex >= 0) { "accessibilityTraversalIndex must be >= 0" }
             return this
         }
 
@@ -713,36 +720,34 @@
             "Instead set DefaultComplicationDataSourcePolicy" +
                 ".systemDataSourceFallbackDefaultType."
         )
-        public fun setDefaultDataSourceType(
-            defaultDataSourceType: ComplicationType
-        ): Builder {
-            defaultDataSourcePolicy = when {
-                defaultDataSourcePolicy.secondaryDataSource != null ->
-                    DefaultComplicationDataSourcePolicy(
-                        defaultDataSourcePolicy.primaryDataSource!!,
-                        defaultDataSourcePolicy.primaryDataSourceDefaultType
-                            ?: defaultDataSourceType,
-                        defaultDataSourcePolicy.secondaryDataSource!!,
-                        defaultDataSourcePolicy.secondaryDataSourceDefaultType
-                            ?: defaultDataSourceType,
-                        defaultDataSourcePolicy.systemDataSourceFallback,
-                        defaultDataSourceType
-                    )
-
-                defaultDataSourcePolicy.primaryDataSource != null ->
-                    DefaultComplicationDataSourcePolicy(
-                        defaultDataSourcePolicy.primaryDataSource!!,
-                        defaultDataSourcePolicy.primaryDataSourceDefaultType
-                            ?: defaultDataSourceType,
-                        defaultDataSourcePolicy.systemDataSourceFallback,
-                        defaultDataSourceType
-                    )
-
-                else -> DefaultComplicationDataSourcePolicy(
-                    defaultDataSourcePolicy.systemDataSourceFallback,
-                    defaultDataSourceType
-                )
-            }
+        public fun setDefaultDataSourceType(defaultDataSourceType: ComplicationType): Builder {
+            defaultDataSourcePolicy =
+                when {
+                    defaultDataSourcePolicy.secondaryDataSource != null ->
+                        DefaultComplicationDataSourcePolicy(
+                            defaultDataSourcePolicy.primaryDataSource!!,
+                            defaultDataSourcePolicy.primaryDataSourceDefaultType
+                                ?: defaultDataSourceType,
+                            defaultDataSourcePolicy.secondaryDataSource!!,
+                            defaultDataSourcePolicy.secondaryDataSourceDefaultType
+                                ?: defaultDataSourceType,
+                            defaultDataSourcePolicy.systemDataSourceFallback,
+                            defaultDataSourceType
+                        )
+                    defaultDataSourcePolicy.primaryDataSource != null ->
+                        DefaultComplicationDataSourcePolicy(
+                            defaultDataSourcePolicy.primaryDataSource!!,
+                            defaultDataSourcePolicy.primaryDataSourceDefaultType
+                                ?: defaultDataSourceType,
+                            defaultDataSourcePolicy.systemDataSourceFallback,
+                            defaultDataSourceType
+                        )
+                    else ->
+                        DefaultComplicationDataSourcePolicy(
+                            defaultDataSourcePolicy.systemDataSourceFallback,
+                            defaultDataSourceType
+                        )
+                }
             this.defaultDataSourceType = defaultDataSourceType
             return this
         }
@@ -765,9 +770,7 @@
             return this
         }
 
-        /**
-         * Whether or not the complication source is fixed (i.e. the user can't change it).
-         */
+        /** Whether or not the complication source is fixed (i.e. the user can't change it). */
         @Suppress("MissingGetterMatchingBuilder")
         public fun setFixedComplicationDataSource(fixedComplicationDataSource: Boolean): Builder {
             this.fixedComplicationDataSource = fixedComplicationDataSource
@@ -777,19 +780,17 @@
         /**
          * If non-null sets the ID of a string resource containing the name of this complication
          * slot, for use visually in an editor. This resource should be short and should not contain
-         * the word "Complication".  E.g. "Left" for the left complication.
+         * the word "Complication". E.g. "Left" for the left complication.
          */
-        public fun setNameResourceId(
-            @Suppress("AutoBoxing") nameResourceId: Int?
-        ): Builder {
+        public fun setNameResourceId(@Suppress("AutoBoxing") nameResourceId: Int?): Builder {
             this.nameResourceId = nameResourceId
             return this
         }
 
         /**
          * If non-null sets the ID of a string resource containing the name of this complication
-         * slot, for use by a screen reader. This resource should be a short sentence. E.g.
-         * "Left complication" for the left complication.
+         * slot, for use by a screen reader. This resource should be a short sentence. E.g. "Left
+         * complication" for the left complication.
          */
         public fun setScreenReaderNameResourceId(
             @Suppress("AutoBoxing") screenReaderNameResourceId: Int?
@@ -799,23 +800,24 @@
         }
 
         /** Constructs the [ComplicationSlot]. */
-        public fun build(): ComplicationSlot = ComplicationSlot(
-            id,
-            accessibilityTraversalIndex,
-            boundsType,
-            bounds,
-            canvasComplicationFactory,
-            supportedTypes,
-            defaultDataSourcePolicy,
-            defaultDataSourceType,
-            initiallyEnabled,
-            configExtras,
-            fixedComplicationDataSource,
-            complicationTapFilter,
-            nameResourceId,
-            screenReaderNameResourceId,
-            boundingArc
-        )
+        public fun build(): ComplicationSlot =
+            ComplicationSlot(
+                id,
+                accessibilityTraversalIndex,
+                boundsType,
+                bounds,
+                canvasComplicationFactory,
+                supportedTypes,
+                defaultDataSourcePolicy,
+                defaultDataSourceType,
+                initiallyEnabled,
+                configExtras,
+                fixedComplicationDataSource,
+                complicationTapFilter,
+                nameResourceId,
+                screenReaderNameResourceId,
+                boundingArc
+            )
     }
 
     internal interface InvalidateListener {
@@ -830,12 +832,11 @@
     /**
      * The complication's [ComplicationSlotBounds] which are converted to pixels during rendering.
      *
-     * Note it's not allowed to change the bounds of a background complication because
-     * they are assumed to always cover the entire screen.
+     * Note it's not allowed to change the bounds of a background complication because they are
+     * assumed to always cover the entire screen.
      */
     public var complicationSlotBounds: ComplicationSlotBounds = bounds
-        @UiThread
-        get
+        @UiThread get
         @UiThread
         internal set(value) {
             require(boundsType != ComplicationSlotBoundsType.BACKGROUND)
@@ -850,9 +851,7 @@
 
     /** Whether or not the complication should be drawn and accept taps. */
     public var enabled: Boolean = initiallyEnabled
-        @JvmName("isEnabled")
-        @UiThread
-        get
+        @JvmName("isEnabled") @UiThread get
         @UiThread
         internal set(value) {
             if (field == value) {
@@ -869,8 +868,7 @@
      * providers selected when the user hasn't yet made a choice. See also [defaultDataSourceType].
      */
     public var defaultDataSourcePolicy: DefaultComplicationDataSourcePolicy = defaultPolicy
-        @UiThread
-        get
+        @UiThread get
         @UiThread
         internal set(value) {
             if (field == value) {
@@ -882,16 +880,12 @@
 
     internal var defaultDataSourceTypeDirty = true
 
-    /**
-     * The default [ComplicationType] to use alongside [defaultDataSourcePolicy].
-     */
+    /** The default [ComplicationType] to use alongside [defaultDataSourcePolicy]. */
     @Deprecated(
-        "Use DefaultComplicationDataSourcePolicy." +
-            "systemDataSourceFallbackDefaultType instead"
+        "Use DefaultComplicationDataSourcePolicy." + "systemDataSourceFallbackDefaultType instead"
     )
     public var defaultDataSourceType: ComplicationType = defaultDataSourceType
-        @UiThread
-        get
+        @UiThread get
         @UiThread
         internal set(value) {
             if (field == value) {
@@ -904,18 +898,15 @@
     internal var accessibilityTraversalIndexDirty = true
 
     /**
-     * This is used to determine the order in which accessibility labels for the watch face are
-     * read to the user. Accessibility labels are automatically generated for the time and
-     * complicationSlots.  See also [Renderer.additionalContentDescriptionLabels].
+     * This is used to determine the order in which accessibility labels for the watch face are read
+     * to the user. Accessibility labels are automatically generated for the time and
+     * complicationSlots. See also [Renderer.additionalContentDescriptionLabels].
      */
     public var accessibilityTraversalIndex: Int = accessibilityTraversalIndex
-        @UiThread
-        get
+        @UiThread get
         @UiThread
         internal set(value) {
-            require(value >= 0) {
-                "accessibilityTraversalIndex must be >= 0"
-            }
+            require(value >= 0) { "accessibilityTraversalIndex must be >= 0" }
             if (field == value) {
                 return
             }
@@ -932,9 +923,7 @@
      * the user selects a complication slot for editing.
      */
     public var nameResourceId: Int? = nameResourceId
-        @Suppress("AutoBoxing")
-        @UiThread
-        get
+        @Suppress("AutoBoxing") @UiThread get
         @UiThread
         internal set(value) {
             require(value != 0)
@@ -948,15 +937,13 @@
     internal var screenReaderNameResourceIdDirty = true
 
     /**
-     * The optional ID of a string resource (or `null` if absent) for use by a
-     * watch face editor to identify the complication slot in a screen reader. While similar to
-     * [nameResourceId] this string can be longer and should be more descriptive. E.g. saying
-     * 'left complication' rather than just 'left'.
+     * The optional ID of a string resource (or `null` if absent) for use by a watch face editor to
+     * identify the complication slot in a screen reader. While similar to [nameResourceId] this
+     * string can be longer and should be more descriptive. E.g. saying 'left complication' rather
+     * than just 'left'.
      */
     public var screenReaderNameResourceId: Int? = screenReaderNameResourceId
-        @Suppress("AutoBoxing")
-        @UiThread
-        get
+        @Suppress("AutoBoxing") @UiThread get
         @UiThread
         internal set(value) {
             if (field == value) {
@@ -1028,9 +1015,9 @@
 
         // If the screen is locked and our policy is to not display it when locked then select
         // screenLockedFallback instead.
-        if ((best.displayPolicy and
-                ComplicationDisplayPolicies.DO_NOT_SHOW_WHEN_DEVICE_LOCKED) != 0 &&
-            complicationSlotsManager.watchState.isLocked.value
+        if (
+            (best.displayPolicy and ComplicationDisplayPolicies.DO_NOT_SHOW_WHEN_DEVICE_LOCKED) !=
+                0 && complicationSlotsManager.watchState.isLocked.value
         ) {
             best = screenLockedFallback // This is NoDataComplicationData.
         }
@@ -1103,7 +1090,6 @@
                     boundingArc
                 )
             }
-
             is HighlightedElement.ComplicationSlot -> {
                 if (highlightedElement.id == id) {
                     renderer.drawHighlight(
@@ -1116,11 +1102,9 @@
                     )
                 }
             }
-
             is HighlightedElement.UserStyle -> {
                 // Nothing
             }
-
             null -> {
                 // Nothing
             }
@@ -1142,7 +1126,7 @@
      *
      * @param screen A [Rect] describing the dimensions of the screen.
      * @param complicationType The [ComplicationType] to use when looking up the slot's
-     * [ComplicationSlotBounds.perComplicationTypeBounds].
+     *   [ComplicationSlotBounds.perComplicationTypeBounds].
      * @param applyMargins Whether or not the margins should be applied to the computed [Rect].
      * @hide
      */
@@ -1184,10 +1168,8 @@
      * @param applyMargins Whether or not the margins should be applied to the computed [Rect].
      */
     @JvmOverloads
-    public fun computeBounds(
-        screen: Rect,
-        applyMargins: Boolean = false
-    ): Rect = computeBounds(screen, complicationData.value.type, applyMargins)
+    public fun computeBounds(screen: Rect, applyMargins: Boolean = false): Rect =
+        computeBounds(screen, complicationData.value.type, applyMargins)
 
     @UiThread
     internal fun dump(writer: IndentingPrintWriter) {
@@ -1225,8 +1207,7 @@
         writer.println("timelineComplicationData=$timelineComplicationData")
         writer.println("timelineEntries=" + timelineEntries?.joinToString())
         writer.println("data=${renderer.getData()}")
-        @OptIn(ComplicationExperimental::class)
-        writer.println("boundingArc=$boundingArc")
+        @OptIn(ComplicationExperimental::class) writer.println("boundingArc=$boundingArc")
         writer.println("complicationSlotBounds=$complicationSlotBounds")
         writer.println("lastComplicationUpdate=$lastComplicationUpdate")
         writer.println("data history")
@@ -1253,15 +1234,15 @@
         if (complicationSlotBounds != other.complicationSlotBounds) return false
         if (
             supportedTypes.size != other.supportedTypes.size ||
-            !supportedTypes.containsAll(other.supportedTypes)
-        ) return false
+                !supportedTypes.containsAll(other.supportedTypes)
+        )
+            return false
         if (defaultDataSourcePolicy != other.defaultDataSourcePolicy) return false
         if (initiallyEnabled != other.initiallyEnabled) return false
         if (fixedComplicationDataSource != other.fixedComplicationDataSource) return false
         if (nameResourceId != other.nameResourceId) return false
         if (screenReaderNameResourceId != other.screenReaderNameResourceId) return false
-        @OptIn(ComplicationExperimental::class)
-        if (boundingArc != other.boundingArc) return false
+        @OptIn(ComplicationExperimental::class) if (boundingArc != other.boundingArc) return false
 
         return true
     }
@@ -1269,10 +1250,17 @@
     override fun hashCode(): Int {
         @OptIn(ComplicationExperimental::class)
         return Objects.hash(
-            id, accessibilityTraversalIndex, boundsType, complicationSlotBounds,
+            id,
+            accessibilityTraversalIndex,
+            boundsType,
+            complicationSlotBounds,
             supportedTypes.sorted(),
-            defaultDataSourcePolicy, initiallyEnabled, fixedComplicationDataSource,
-            nameResourceId, screenReaderNameResourceId, boundingArc
+            defaultDataSourcePolicy,
+            initiallyEnabled,
+            fixedComplicationDataSource,
+            nameResourceId,
+            screenReaderNameResourceId,
+            boundingArc
         )
     }
 }
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlotInflationFactory.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlotInflationFactory.kt
index 5215aa9..c00ba43 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlotInflationFactory.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlotInflationFactory.kt
@@ -34,4 +34,4 @@
     open fun getEdgeComplicationTapFilter(slotId: Int): ComplicationTapFilter {
         throw UnsupportedOperationException("You need to override getEdgeComplicationTapFilter")
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlotsManager.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlotsManager.kt
index a693dc2..ea17261 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlotsManager.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlotsManager.kt
@@ -33,21 +33,19 @@
 import androidx.wear.watchface.complications.data.ComplicationData
 import androidx.wear.watchface.complications.data.ComplicationExperimental
 import androidx.wear.watchface.complications.data.ComplicationType
-import androidx.wear.watchface.utility.TraceEvent
 import androidx.wear.watchface.control.data.IdTypeAndDefaultProviderPolicyWireFormat
 import androidx.wear.watchface.data.ComplicationStateWireFormat
 import androidx.wear.watchface.data.IdAndComplicationStateWireFormat
 import androidx.wear.watchface.style.CurrentUserStyleRepository
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption
+import androidx.wear.watchface.utility.TraceEvent
+import java.time.Instant
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
-import java.time.Instant
 
-private fun getComponentName(context: Context) = ComponentName(
-    context.packageName,
-    context.javaClass.name
-)
+private fun getComponentName(context: Context) =
+    ComponentName(context.packageName, context.javaClass.name)
 
 /**
  * The [ComplicationSlot]s associated with the [WatchFace]. Dynamic creation of ComplicationSlots
@@ -55,9 +53,9 @@
  * [ComplicationSlotsUserStyleSetting].
  *
  * @param complicationSlotCollection The [ComplicationSlot]s associated with the watch face, may be
- * empty.
+ *   empty.
  * @param currentUserStyleRepository The [CurrentUserStyleRepository] used to listen for
- * [ComplicationSlotsUserStyleSetting] changes and apply them.
+ *   [ComplicationSlotsUserStyleSetting] changes and apply them.
  */
 public class ComplicationSlotsManager(
     complicationSlotCollection: Collection<ComplicationSlot>,
@@ -172,9 +170,7 @@
             )
 
         // Apply the initial settings on the worker thread.
-        previousOption?.let {
-            applyComplicationSlotsStyleCategoryOption(it)
-        }
+        previousOption?.let { applyComplicationSlotsStyleCategoryOption(it) }
 
         // Add a listener so we can track changes and automatically apply them on the UIThread
         coroutineScope.launch {
@@ -201,27 +197,31 @@
     internal fun init(
         renderer: Renderer,
         complicationSlotInvalidateListener: ComplicationSlot.InvalidateListener
-    ) = TraceEvent("ComplicationSlotsManager.init").use {
-        this.renderer = renderer
+    ) =
+        TraceEvent("ComplicationSlotsManager.init").use {
+            this.renderer = renderer
 
-        for ((_, complication) in complicationSlots) {
-            complication.init(complicationSlotInvalidateListener, renderer.watchState.isHeadless)
+            for ((_, complication) in complicationSlots) {
+                complication.init(
+                    complicationSlotInvalidateListener,
+                    renderer.watchState.isHeadless
+                )
 
-            // Force lazy construction of renderers.
-            complication.renderer.onRendererCreated(renderer)
+                // Force lazy construction of renderers.
+                complication.renderer.onRendererCreated(renderer)
+            }
+
+            require(
+                complicationSlots.values.distinctBy { it.renderer }.size ==
+                    complicationSlots.values.size
+            ) {
+                "Complication renderer instances are not sharable."
+            }
+
+            // Activate complicationSlots.
+            onComplicationsUpdated()
         }
 
-        require(
-            complicationSlots.values.distinctBy { it.renderer }.size ==
-                complicationSlots.values.size
-        ) {
-            "Complication renderer instances are not sharable."
-        }
-
-        // Activate complicationSlots.
-        onComplicationsUpdated()
-    }
-
     internal fun applyComplicationSlotsStyleCategoryOption(styleOption: ComplicationSlotsOption) {
         for ((id, complication) in complicationSlots) {
             val override = styleOption.complicationSlotOverlays.find { it.complicationSlotId == id }
@@ -229,8 +229,7 @@
             // Apply styleOption overrides.
             complication.complicationSlotBounds =
                 override?.complicationSlotBounds ?: initialConfig.complicationSlotBounds
-            complication.enabled =
-                override?.enabled ?: initialConfig.enabled
+            complication.enabled = override?.enabled ?: initialConfig.enabled
             complication.accessibilityTraversalIndex =
                 override?.accessibilityTraversalIndex ?: initialConfig.accessibilityTraversalIndex
             complication.nameResourceId = override?.nameResourceId ?: initialConfig.nameResourceId
@@ -244,71 +243,73 @@
     public operator fun get(id: Int): ComplicationSlot? = complicationSlots[id]
 
     @UiThread
-    internal fun onComplicationsUpdated() = TraceEvent(
-        "ComplicationSlotsManager.updateComplications"
-    ).use {
-        if (!this::watchFaceHostApi.isInitialized) {
-            return
-        }
-        val activeKeys = mutableListOf<Int>()
+    internal fun onComplicationsUpdated() =
+        TraceEvent("ComplicationSlotsManager.updateComplications").use {
+            if (!this::watchFaceHostApi.isInitialized) {
+                return
+            }
+            val activeKeys = mutableListOf<Int>()
 
-        // Work out what's changed using the dirty flags and issue appropriate watchFaceHostApi
-        // calls.
-        var enabledDirty = false
-        var labelsDirty = false
-        for ((id, complication) in complicationSlots) {
-            enabledDirty = enabledDirty || complication.enabledDirty
-            labelsDirty = labelsDirty || complication.enabledDirty
+            // Work out what's changed using the dirty flags and issue appropriate watchFaceHostApi
+            // calls.
+            var enabledDirty = false
+            var labelsDirty = false
+            for ((id, complication) in complicationSlots) {
+                enabledDirty = enabledDirty || complication.enabledDirty
+                labelsDirty = labelsDirty || complication.enabledDirty
 
-            if (complication.enabled) {
-                activeKeys.add(id)
+                if (complication.enabled) {
+                    activeKeys.add(id)
 
-                labelsDirty =
-                    labelsDirty || complication.dataDirty || complication.complicationBoundsDirty ||
-                        complication.accessibilityTraversalIndexDirty ||
-                        complication.nameResourceIdDirty ||
-                        complication.screenReaderNameResourceIdDirty
+                    labelsDirty =
+                        labelsDirty ||
+                            complication.dataDirty ||
+                            complication.complicationBoundsDirty ||
+                            complication.accessibilityTraversalIndexDirty ||
+                            complication.nameResourceIdDirty ||
+                            complication.screenReaderNameResourceIdDirty
 
-                if (complication.defaultDataSourcePolicyDirty ||
-                    complication.defaultDataSourceTypeDirty
-                ) {
-                    // Note this is a NOP in the androidx flow.
-                    watchFaceHostApi.setDefaultComplicationDataSourceWithFallbacks(
-                        complication.id,
-                        complication.defaultDataSourcePolicy.dataSourcesAsList(),
-                        complication.defaultDataSourcePolicy.systemDataSourceFallback,
-                        complication.defaultDataSourcePolicy
-                            .systemDataSourceFallbackDefaultType.toWireComplicationType()
-                    )
+                    if (
+                        complication.defaultDataSourcePolicyDirty ||
+                            complication.defaultDataSourceTypeDirty
+                    ) {
+                        // Note this is a NOP in the androidx flow.
+                        watchFaceHostApi.setDefaultComplicationDataSourceWithFallbacks(
+                            complication.id,
+                            complication.defaultDataSourcePolicy.dataSourcesAsList(),
+                            complication.defaultDataSourcePolicy.systemDataSourceFallback,
+                            complication.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
+                                .toWireComplicationType()
+                        )
+                    }
+
+                    complication.dataDirty = false
+                    complication.complicationBoundsDirty = false
+                    complication.defaultDataSourcePolicyDirty = false
+                    complication.defaultDataSourceTypeDirty = false
+                    complication.accessibilityTraversalIndexDirty = false
+                    complication.nameResourceIdDirty = false
+                    complication.screenReaderNameResourceIdDirty = false
                 }
 
-                complication.dataDirty = false
-                complication.complicationBoundsDirty = false
-                complication.defaultDataSourcePolicyDirty = false
-                complication.defaultDataSourceTypeDirty = false
-                complication.accessibilityTraversalIndexDirty = false
-                complication.nameResourceIdDirty = false
-                complication.screenReaderNameResourceIdDirty = false
+                complication.enabledDirty = false
             }
 
-            complication.enabledDirty = false
-        }
+            if (enabledDirty) {
+                watchFaceHostApi.setActiveComplicationSlots(activeKeys.toIntArray())
+            }
 
-        if (enabledDirty) {
-            watchFaceHostApi.setActiveComplicationSlots(activeKeys.toIntArray())
+            if (labelsDirty) {
+                watchFaceHostApi.updateContentDescriptionLabels()
+            }
         }
 
-        if (labelsDirty) {
-            watchFaceHostApi.updateContentDescriptionLabels()
-        }
-    }
-
     /**
      * Called when new complication data is received.
      *
-     * @param complicationSlotId The id of the complication that the data relates to. If this
-     * id is unrecognized the call will be a NOP, the only circumstance when that happens is if the
-     * watch face changes it's complication config between runs e.g. during development.
+     * @param complicationSlotId The id of the complication that the data relates to. If this id is
+     *   unrecognized the call will be a NOP, the only circumstance when that happens is if the
+     *   watch face changes it's complication config between runs e.g. during development.
      * @param data The [ComplicationData] that should be displayed in the complication.
      */
     @UiThread
@@ -326,8 +327,7 @@
             )
             return
         }
-        complication.dataDirty = complication.dataDirty ||
-            (complication.renderer.getData() != data)
+        complication.dataDirty = complication.dataDirty || (complication.renderer.getData() != data)
         complication.setComplicationData(data, true, instant)
     }
 
@@ -378,22 +378,25 @@
      */
     public fun getComplicationSlotAt(@Px x: Int, @Px y: Int): ComplicationSlot? =
         findLowestIdMatchingComplicationOrNull { complication ->
-            complication.enabled && complication.tapFilter.hitTest(
-                complication,
-                renderer.screenBounds,
-                x,
-                y,
-                includeMargins = false
-            )
-        } ?: findLowestIdMatchingComplicationOrNull { complication ->
-            complication.enabled && complication.tapFilter.hitTest(
-                complication,
-                renderer.screenBounds,
-                x,
-                y,
-                includeMargins = true
-            )
+            complication.enabled &&
+                complication.tapFilter.hitTest(
+                    complication,
+                    renderer.screenBounds,
+                    x,
+                    y,
+                    includeMargins = false
+                )
         }
+            ?: findLowestIdMatchingComplicationOrNull { complication ->
+                complication.enabled &&
+                    complication.tapFilter.hitTest(
+                        complication,
+                        renderer.screenBounds,
+                        x,
+                        y,
+                        includeMargins = true
+                    )
+            }
 
     /**
      * Finds the [ComplicationSlot] with the lowest id for which [predicate] returns true, returns
@@ -419,9 +422,9 @@
      * @return The background [ComplicationSlot] if there is one or `null` otherwise
      */
     public fun getBackgroundComplicationSlot(): ComplicationSlot? =
-        complicationSlots.entries.firstOrNull {
-            it.value.boundsType == ComplicationSlotBoundsType.BACKGROUND
-        }?.value
+        complicationSlots.entries
+            .firstOrNull { it.value.boundsType == ComplicationSlotBoundsType.BACKGROUND }
+            ?.value
 
     /**
      * Called when the user single taps on a [ComplicationSlot], invokes the permission request
@@ -435,14 +438,17 @@
         // Check if the complication is missing permissions.
         val data = complicationSlots[complicationSlotId]?.renderer?.getData() ?: return
         if (data.type == ComplicationType.NO_PERMISSION) {
-            watchFaceHostApi.getContext().startActivity(
-                ComplicationHelperActivity.createPermissionRequestHelperIntent(
-                    watchFaceHostApi.getContext(),
-                    getComponentName(watchFaceHostApi.getContext()),
-                    watchFaceHostApi.getComplicationDeniedIntent(),
-                    watchFaceHostApi.getComplicationRationaleIntent()
-                ).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-            )
+            watchFaceHostApi
+                .getContext()
+                .startActivity(
+                    ComplicationHelperActivity.createPermissionRequestHelperIntent(
+                            watchFaceHostApi.getContext(),
+                            getComponentName(watchFaceHostApi.getContext()),
+                            watchFaceHostApi.getComplicationDeniedIntent(),
+                            watchFaceHostApi.getComplicationRationaleIntent()
+                        )
+                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+                )
             return
         }
 
@@ -463,35 +469,38 @@
      */
     @OptIn(ComplicationExperimental::class)
     @UiThread
-    internal fun getComplicationsState(screenBounds: Rect) = complicationSlots.map {
-        val systemDataSourceFallbackDefaultType =
-            it.value.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
-                .toWireComplicationType()
-        IdAndComplicationStateWireFormat(
-            it.key,
-            ComplicationStateWireFormat(
-                it.value.computeBounds(screenBounds, applyMargins = false),
-                it.value.computeBounds(screenBounds, applyMargins = true),
-                it.value.boundsType,
-                ComplicationType.toWireTypes(it.value.supportedTypes),
-                it.value.defaultDataSourcePolicy.dataSourcesAsList(),
-                it.value.defaultDataSourcePolicy.systemDataSourceFallback,
-                systemDataSourceFallbackDefaultType,
-                it.value.defaultDataSourcePolicy.primaryDataSourceDefaultType
-                    ?.toWireComplicationType() ?: systemDataSourceFallbackDefaultType,
-                it.value.defaultDataSourcePolicy.secondaryDataSourceDefaultType
-                    ?.toWireComplicationType() ?: systemDataSourceFallbackDefaultType,
-                it.value.enabled,
-                it.value.initiallyEnabled,
-                it.value.renderer.getData().type.toWireComplicationType(),
-                it.value.fixedComplicationDataSource,
-                it.value.configExtras,
-                it.value.nameResourceId,
-                it.value.screenReaderNameResourceId,
-                it.value.boundingArc?.toWireFormat()
+    internal fun getComplicationsState(screenBounds: Rect) =
+        complicationSlots.map {
+            val systemDataSourceFallbackDefaultType =
+                it.value.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
+                    .toWireComplicationType()
+            IdAndComplicationStateWireFormat(
+                it.key,
+                ComplicationStateWireFormat(
+                    it.value.computeBounds(screenBounds, applyMargins = false),
+                    it.value.computeBounds(screenBounds, applyMargins = true),
+                    it.value.boundsType,
+                    ComplicationType.toWireTypes(it.value.supportedTypes),
+                    it.value.defaultDataSourcePolicy.dataSourcesAsList(),
+                    it.value.defaultDataSourcePolicy.systemDataSourceFallback,
+                    systemDataSourceFallbackDefaultType,
+                    it.value.defaultDataSourcePolicy.primaryDataSourceDefaultType
+                        ?.toWireComplicationType()
+                        ?: systemDataSourceFallbackDefaultType,
+                    it.value.defaultDataSourcePolicy.secondaryDataSourceDefaultType
+                        ?.toWireComplicationType()
+                        ?: systemDataSourceFallbackDefaultType,
+                    it.value.enabled,
+                    it.value.initiallyEnabled,
+                    it.value.renderer.getData().type.toWireComplicationType(),
+                    it.value.fixedComplicationDataSource,
+                    it.value.configExtras,
+                    it.value.nameResourceId,
+                    it.value.screenReaderNameResourceId,
+                    it.value.boundingArc?.toWireFormat()
+                )
             )
-        )
-    }
+        }
 
     @UiThread
     internal fun onTapDown(complicationSlotId: Int, tapEvent: TapEvent) {
@@ -507,9 +516,7 @@
         complicationListeners.add(tapCallback)
     }
 
-    /**
-     * Removes a [TapCallback] previously added by [addTapListener].
-     */
+    /** Removes a [TapCallback] previously added by [addTapListener]. */
     @UiThread
     public fun removeTapListener(tapCallback: TapCallback) {
         complicationListeners.remove(tapCallback)
@@ -519,9 +526,10 @@
     internal fun dump(writer: IndentingPrintWriter) {
         writer.println("ComplicationSlotsManager:")
         writer.println(
-            "lastComplicationTapDownEvents=" + lastComplicationTapDownEvents.map {
-                it.key.toString() + "->" + it.value
-            }.joinToString(", ")
+            "lastComplicationTapDownEvents=" +
+                lastComplicationTapDownEvents
+                    .map { it.key.toString() + "->" + it.value }
+                    .joinToString(", ")
         )
         writer.increaseIndent()
         for ((_, complication) in complicationSlots) {
@@ -537,15 +545,17 @@
      */
     @WorkerThread
     internal fun getDefaultProviderPolicies(): Array<IdTypeAndDefaultProviderPolicyWireFormat> =
-        complicationSlots.map {
-            IdTypeAndDefaultProviderPolicyWireFormat(
-                it.key,
-                it.value.defaultDataSourcePolicy.dataSourcesAsList(),
-                it.value.defaultDataSourcePolicy.systemDataSourceFallback,
-                it.value.defaultDataSourcePolicy
-                    .systemDataSourceFallbackDefaultType.toWireComplicationType()
-            )
-        }.toTypedArray()
+        complicationSlots
+            .map {
+                IdTypeAndDefaultProviderPolicyWireFormat(
+                    it.key,
+                    it.value.defaultDataSourcePolicy.dataSourcesAsList(),
+                    it.value.defaultDataSourcePolicy.systemDataSourceFallback,
+                    it.value.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
+                        .toWireComplicationType()
+                )
+            }
+            .toTypedArray()
 
     /**
      * Returns the earliest [Instant] after [afterInstant] at which any complication field in any
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ContentDescriptionLabel.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ContentDescriptionLabel.kt
index bc87a3b..b9163d4 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ContentDescriptionLabel.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ContentDescriptionLabel.kt
@@ -28,8 +28,7 @@
  *
  * @param text [ComplicationText] associated with the region, to be read by the screen reader.
  * @param bounds [Rect] describing the area of the feature on screen.
- * @param tapAction [PendingIntent] to be used if the screen reader's user triggers a tap
- * action.
+ * @param tapAction [PendingIntent] to be used if the screen reader's user triggers a tap action.
  */
 public class ContentDescriptionLabel(
     public val text: ComplicationText,
@@ -52,10 +51,6 @@
             tapAction == other.tapAction
 
     override fun hashCode(): Int {
-        return Objects.hash(
-            text,
-            bounds,
-            tapAction
-        )
+        return Objects.hash(text, bounds, tapAction)
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/IndentingPrintWriter.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/IndentingPrintWriter.kt
index 46db63b..cd27109 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/IndentingPrintWriter.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/IndentingPrintWriter.kt
@@ -21,22 +21,20 @@
 import java.io.Writer
 
 /**
- * Lightweight wrapper around [java.io.PrintWriter] that automatically indents newlines based
- * on internal state.
+ * Lightweight wrapper around [java.io.PrintWriter] that automatically indents newlines based on
+ * internal state.
  *
  * Delays writing indent until first actual write on a newline, enabling indent modification after
  * newline.
  */
-internal class IndentingPrintWriter(
-    writer: Writer,
-    private val singleIndent: String = "\t"
-) : Printer {
+internal class IndentingPrintWriter(writer: Writer, private val singleIndent: String = "\t") :
+    Printer {
     internal val writer: PrintWriter = PrintWriter(writer)
 
-    /** Mutable version of current indent  */
+    /** Mutable version of current indent */
     private val indentBuilder = StringBuilder()
 
-    /** Cache of current [indentBuilder] value  */
+    /** Cache of current [indentBuilder] value */
     private var currentIndent: CharArray? = null
 
     /**
@@ -45,32 +43,32 @@
      */
     private var emptyLine = true
 
-    /** Increases the indentation level for future lines.  */
+    /** Increases the indentation level for future lines. */
     fun increaseIndent() {
         indentBuilder.append(singleIndent)
         currentIndent = null
     }
 
-    /** Decreases the indentation level for future lines.  */
+    /** Decreases the indentation level for future lines. */
     fun decreaseIndent() {
         indentBuilder.delete(0, singleIndent.length)
         currentIndent = null
     }
 
-    /** Prints `string`, followed by a newline.  */
+    /** Prints `string`, followed by a newline. */
     // Printer
     override fun println(string: String) {
         print(string)
         print("\n")
     }
 
-    /** Prints `string`, or `"null"`  */
+    /** Prints `string`, or `"null"` */
     fun print(string: String?) {
         val str = string ?: "null"
         write(str, 0, str.length)
     }
 
-    /** Ensures that all pending data is sent out to the target  */
+    /** Ensures that all pending data is sent out to the target */
     fun flush() {
         writer.flush()
     }
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/RenderBufferTexture.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/RenderBufferTexture.kt
index fbc24f5..dbe6f3f 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/RenderBufferTexture.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/RenderBufferTexture.kt
@@ -25,18 +25,15 @@
 import java.nio.ByteOrder
 import java.nio.FloatBuffer
 
-/**
- * Whether to check for GL errors. This is slow, so not appropriate for production builds.
- */
+/** Whether to check for GL errors. This is slow, so not appropriate for production builds. */
 internal const val CHECK_GL_ERRORS = false
 
 private const val TAG = "RenderBufferTexture"
 
 /**
- * Checks if any of the GL calls since the last time this method was called set an error
- * condition. Call this method immediately after calling a GL method. Pass the name of the
- * GL operation. For example:
- *
+ * Checks if any of the GL calls since the last time this method was called set an error condition.
+ * Call this method immediately after calling a GL method. Pass the name of the GL operation. For
+ * example:
  * <pre>
  * mColorHandle = GLES20.glGetUniformLocation(mProgram, "uColor");
  * MyGLRenderer.checkGlError("glGetUniformLocation");</pre>
@@ -55,8 +52,7 @@
             errorString = GLUtils.getEGLErrorString(error)
         }
         val message =
-            glOperation + " caused GL error 0x" + Integer.toHexString(error) +
-                ": " + errorString
+            glOperation + " caused GL error 0x" + Integer.toHexString(error) + ": " + errorString
         Log.e(TAG, message)
         throw RuntimeException(message)
     }
@@ -66,66 +62,40 @@
  * Handles a framebuffer and texture for rendering to texture. Also handles drawing a full screen
  * quad to apply the texture as an overlay.
  */
-internal class RenderBufferTexture(
-    @Px
-    private val width: Int,
+internal class RenderBufferTexture(@Px private val width: Int, @Px private val height: Int) {
 
-    @Px
-    private val height: Int
-) {
     val framebuffer = IntArray(1)
     val textureId = IntArray(1)
 
-    val fullScreenQuad = Gles2TexturedTriangleList(
-        Gles2TexturedTriangleList.Program(),
-        // List of (x,y,z) coordinates for two triangles to make a quad that covers the whole screen
-        floatArrayOf(
-            -1.0f,
-            -1.0f,
-            0.5f,
+    val fullScreenQuad =
+        Gles2TexturedTriangleList(
+            Gles2TexturedTriangleList.Program(),
+            // List of (x,y,z) coordinates for two triangles to make a quad that covers the whole
+            // screen
+            floatArrayOf(
+                -1.0f,
+                -1.0f,
+                0.5f,
+                -1.0f,
+                1.0f,
+                0.5f,
+                1.0f,
+                -1.0f,
+                0.5f,
+                -1.0f,
+                1.0f,
+                0.5f,
+                1.0f,
+                -1.0f,
+                0.5f,
+                1.0f,
+                1.0f,
+                0.5f
+            ),
 
-            -1.0f,
-            1.0f,
-            0.5f,
-
-            1.0f,
-            -1.0f,
-            0.5f,
-
-            -1.0f,
-            1.0f,
-            0.5f,
-
-            1.0f,
-            -1.0f,
-            0.5f,
-
-            1.0f,
-            1.0f,
-            0.5f
-        ),
-
-        // List of (u, v) texture coordinates.
-        floatArrayOf(
-            0.0f,
-            0.0f,
-
-            0.0f,
-            1.0f,
-
-            1.0f,
-            0.0f,
-
-            0.0f,
-            1.0f,
-
-            1.0f,
-            0.0f,
-
-            1.0f,
-            1.0f
+            // List of (u, v) texture coordinates.
+            floatArrayOf(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f)
         )
-    )
 
     init {
         // Create the texture
@@ -142,16 +112,8 @@
             GLES20.GL_TEXTURE_WRAP_T,
             GLES20.GL_CLAMP_TO_EDGE
         )
-        GLES20.glTexParameteri(
-            GLES20.GL_TEXTURE_2D,
-            GLES20.GL_TEXTURE_MAG_FILTER,
-            GLES20.GL_LINEAR
-        )
-        GLES20.glTexParameteri(
-            GLES20.GL_TEXTURE_2D,
-            GLES20.GL_TEXTURE_MIN_FILTER,
-            GLES20.GL_LINEAR
-        )
+        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR)
+        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR)
 
         GLES20.glTexImage2D(
             GLES20.GL_TEXTURE_2D,
@@ -221,9 +183,7 @@
     }
 }
 
-/**
- * A list of triangles drawn with a texture using OpenGL ES 2.0.
- */
+/** A list of triangles drawn with a texture using OpenGL ES 2.0. */
 internal class Gles2TexturedTriangleList(
     internal val program: Program,
     triangleCoords: FloatArray,
@@ -234,10 +194,8 @@
             ("must be multiple of VERTICES_PER_TRIANGLE * COORDS_PER_VERTEX coordinates")
         }
         require(textureCoords.size % (VERTICES_PER_TRIANGLE * TEXTURE_COORDS_PER_VERTEX) == 0) {
-            (
-                "must be multiple of VERTICES_PER_TRIANGLE * NUM_TEXTURE_COMPONENTS texture " +
-                    "coordinates"
-                )
+            ("must be multiple of VERTICES_PER_TRIANGLE * NUM_TEXTURE_COMPONENTS texture " +
+                "coordinates")
         }
     }
 
@@ -245,7 +203,8 @@
     private val vertexBuffer =
         ByteBuffer.allocateDirect(triangleCoords.size * BYTES_PER_FLOAT)
             .apply { order(ByteOrder.nativeOrder()) }
-            .asFloatBuffer().apply {
+            .asFloatBuffer()
+            .apply {
                 put(triangleCoords)
                 position(0)
             }
@@ -254,64 +213,63 @@
     private val textureCoordsBuffer =
         ByteBuffer.allocateDirect(textureCoords.size * BYTES_PER_FLOAT)
             .apply { order(ByteOrder.nativeOrder()) }
-            .asFloatBuffer().apply {
+            .asFloatBuffer()
+            .apply {
                 put(textureCoords)
                 position(0)
             }
 
-    /** Number of coordinates in this triangle list.  */
+    /** Number of coordinates in this triangle list. */
     private val numCoords = triangleCoords.size / COORDS_PER_VERTEX
 
-    /**
-     * Draws this triangle list using OpenGL commands.
-     */
+    /** Draws this triangle list using OpenGL commands. */
     internal fun draw() {
         // Pass vertex data, and texture coordinates to OpenGL.
         program.bind(vertexBuffer, textureCoordsBuffer)
 
         // Draw the triangle list.
         GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, numCoords)
-        if (CHECK_GL_ERRORS) checkGlError(
-            "glDrawArrays"
-        )
+        if (CHECK_GL_ERRORS) checkGlError("glDrawArrays")
 
         program.unbindAttribs()
     }
 
-    /** OpenGL shaders for drawing textured triangle lists.  */
+    /** OpenGL shaders for drawing textured triangle lists. */
     internal class Program {
-        /** ID OpenGL uses to identify this program.  */
+        /** ID OpenGL uses to identify this program. */
         private val programId: Int
 
-        /** Handle for aPosition attribute in vertex shader.  */
+        /** Handle for aPosition attribute in vertex shader. */
         private val positionHandle: Int
 
-        /** Handle for aTextureCoordinate uniform in fragment shader.  */
+        /** Handle for aTextureCoordinate uniform in fragment shader. */
         private val textureCoordinateHandle: Int
 
         companion object {
             /** Trivial pass through vertex shader. */
-            private const val VERTEX_SHADER_CODE = "" +
-                "attribute vec4 aPosition;\n" +
-                "attribute vec4 aTextureCoordinate;\n" +
-                "varying vec2 textureCoordinate;\n" +
-                "void main() {\n" +
-                "    gl_Position = aPosition;\n" +
-                "    textureCoordinate = aTextureCoordinate.xy;\n" +
-                "}\n"
+            private const val VERTEX_SHADER_CODE =
+                "" +
+                    "attribute vec4 aPosition;\n" +
+                    "attribute vec4 aTextureCoordinate;\n" +
+                    "varying vec2 textureCoordinate;\n" +
+                    "void main() {\n" +
+                    "    gl_Position = aPosition;\n" +
+                    "    textureCoordinate = aTextureCoordinate.xy;\n" +
+                    "}\n"
 
-            /** Trivial fragment shader that draws with a texture.  */
-            private const val FRAGMENT_SHADER_CODE = "" +
-                "varying highp vec2 textureCoordinate;\n" +
-                "uniform sampler2D texture;\n" +
-                "void main() {\n" +
-                "    gl_FragColor = texture2D(texture, textureCoordinate);\n" +
-                "}\n"
+            /** Trivial fragment shader that draws with a texture. */
+            private const val FRAGMENT_SHADER_CODE =
+                "" +
+                    "varying highp vec2 textureCoordinate;\n" +
+                    "uniform sampler2D texture;\n" +
+                    "void main() {\n" +
+                    "    gl_FragColor = texture2D(texture, textureCoordinate);\n" +
+                    "}\n"
         }
 
         /**
-         * Tells OpenGL to use this program. Call this method before drawing a sequence of
-         * triangle lists.
+         * Tells OpenGL to use this program. Call this method before drawing a sequence of triangle
+         * lists.
          */
         fun bindProgramAndAttribs() {
             GLES20.glUseProgram(programId)
@@ -343,11 +301,8 @@
             }
         }
 
-        /** Sends the given MVP matrix, vertex data, and color to OpenGL.  */
-        fun bind(
-            vertexBuffer: FloatBuffer?,
-            textureCoordinatesBuffer: FloatBuffer?
-        ) {
+        /** Sends the given MVP matrix, vertex data, and color to OpenGL. */
+        fun bind(vertexBuffer: FloatBuffer?, textureCoordinatesBuffer: FloatBuffer?) {
             // Pass the VBO with the triangle list's vertices to OpenGL.
             GLES20.glVertexAttribPointer(
                 positionHandle,
@@ -381,20 +336,12 @@
          */
         init {
             // Prepare shaders.
-            val vertexShader = loadShader(
-                GLES20.GL_VERTEX_SHADER,
-                VERTEX_SHADER_CODE
-            )
-            val fragmentShader = loadShader(
-                GLES20.GL_FRAGMENT_SHADER,
-                FRAGMENT_SHADER_CODE
-            )
+            val vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, VERTEX_SHADER_CODE)
+            val fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, FRAGMENT_SHADER_CODE)
 
             // Create empty OpenGL Program.
             programId = GLES20.glCreateProgram()
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glCreateProgram"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glCreateProgram")
             check(programId != 0) { "glCreateProgram failed" }
 
             // Add the shaders to the program.
@@ -417,8 +364,7 @@
             }
 
             // Get a handle to vertex shader's aUV attribute.
-            textureCoordinateHandle =
-                GLES20.glGetAttribLocation(programId, "aTextureCoordinate")
+            textureCoordinateHandle = GLES20.glGetAttribLocation(programId, "aTextureCoordinate")
             if (CHECK_GL_ERRORS) {
                 checkGlError("glGetAttribLocation textureCoordinateHandle")
             }
@@ -432,19 +378,19 @@
     }
 
     internal companion object {
-        /** Number of coordinates per vertex in this array: one for each of x, y, and z.  */
+        /** Number of coordinates per vertex in this array: one for each of x, y, and z. */
         private const val COORDS_PER_VERTEX = 3
 
         /** Number of texture coordinates per vertex in this array: one for u & v */
         private const val TEXTURE_COORDS_PER_VERTEX = 2
 
-        /** Number of bytes to store a float in GL.  */
+        /** Number of bytes to store a float in GL. */
         const val BYTES_PER_FLOAT = 4
 
-        /** Number of bytes per vertex.  */
+        /** Number of bytes per vertex. */
         private const val VERTEX_STRIDE = COORDS_PER_VERTEX * BYTES_PER_FLOAT
 
-        /** Number of bytes per vertex for texture coords.  */
+        /** Number of bytes per vertex for texture coords. */
         private const val TEXTURE_COORDS_VERTEX_STRIDE = TEXTURE_COORDS_PER_VERTEX * BYTES_PER_FLOAT
 
         /** Triangles have three vertices. */
@@ -460,21 +406,15 @@
         internal fun loadShader(type: Int, shaderCode: String): Int {
             // Create a vertex or fragment shader.
             val shader = GLES20.glCreateShader(type)
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glCreateShader"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glCreateShader")
             check(shader != 0) { "glCreateShader failed" }
 
             // Add the source code to the shader and compile it.
             GLES20.glShaderSource(shader, shaderCode)
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glShaderSource"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glShaderSource")
             GLES20.glCompileShader(shader)
-            if (CHECK_GL_ERRORS) checkGlError(
-                "glCompileShader"
-            )
+            if (CHECK_GL_ERRORS) checkGlError("glCompileShader")
             return shader
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/RenderParameters.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/RenderParameters.kt
index b6e4527..e86f82d 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/RenderParameters.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/RenderParameters.kt
@@ -22,8 +22,8 @@
 import androidx.wear.watchface.RenderParameters.HighlightLayer
 import androidx.wear.watchface.data.IdAndTapEventWireFormat
 import androidx.wear.watchface.data.RenderParametersWireFormat
-import androidx.wear.watchface.style.WatchFaceLayer
 import androidx.wear.watchface.style.UserStyleSetting
+import androidx.wear.watchface.style.WatchFaceLayer
 import java.time.Instant
 
 /* Used to parameterize watch face drawing based on the current system state. */
@@ -36,14 +36,12 @@
     INTERACTIVE,
 
     /**
-     * This mode is used when the user is interacting with the watch face but the battery is
-     * low, the watch face should render fewer pixels, ideally with darker colors.
+     * This mode is used when the user is interacting with the watch face but the battery is low,
+     * the watch face should render fewer pixels, ideally with darker colors.
      */
     LOW_BATTERY_INTERACTIVE,
 
-    /**
-     * This mode is used when there's an interruption filter. The watch face should look muted.
-     */
+    /** This mode is used when there's an interruption filter. The watch face should look muted. */
     MUTE,
 
     /**
@@ -62,9 +60,9 @@
  *
  * Watch face rendering is split up in a number of layers: the base layer [WatchFaceLayer.BASE], the
  * [ComplicationSlot]s layer [WatchFaceLayer.COMPLICATIONS], and the layer above the
- * complicationSlots [WatchFaceLayer.COMPLICATIONS_OVERLAY]. These layers are always drawn in
- * this order, one on top of the previous one. These are the layers that are used to render the
- * watch face itself.
+ * complicationSlots [WatchFaceLayer.COMPLICATIONS_OVERLAY]. These layers are always drawn in this
+ * order, one on top of the previous one. These are the layers that are used to render the watch
+ * face itself.
  *
  * An additional layer, the highlight layer, can be drawn during editing the watch face to highlight
  * different elements of the watch face, namely a set of [ComplicationSlot]s (which may be a single
@@ -73,7 +71,7 @@
  * The watch face should provide a way to highlight any of the above combinations so that its own
  * editor, or the one provided by the Wear OS companion phone app is able to highlight the editable
  * part of the watch face to the user. If an individual user style setting is meant to affect the
- * entire watch face (e.g. an overall color setting),then  the entire watch face should be
+ * entire watch face (e.g. an overall color setting),then the entire watch face should be
  * highlighted.
  *
  * The watch face layers and highlight layer can be configured independently, so that it is possible
@@ -85,13 +83,15 @@
  *
  * @param drawMode The overall drawing parameters based on system state.
  * @param watchFaceLayers The parts of the watch face to draw.
- * @param highlightLayer Optional [HighlightLayer] used by editors to visually highlight an
- * aspect of the watch face. Rendered last on top of [watchFaceLayers]. If highlighting isn't needed
- * this will be `null`.
+ * @param highlightLayer Optional [HighlightLayer] used by editors to visually highlight an aspect
+ *   of the watch face. Rendered last on top of [watchFaceLayers]. If highlighting isn't needed this
+ *   will be `null`.
  * @param lastComplicationTapDownEvents Map of [ComplicationSlot] id to the latest [TapType.DOWN]
- * [TapEvent] that ComplicationSlot received, if any.
+ *   [TapEvent] that ComplicationSlot received, if any.
  */
-public class RenderParameters @JvmOverloads constructor(
+public class RenderParameters
+@JvmOverloads
+constructor(
     public val drawMode: DrawMode,
     public val watchFaceLayers: Set<WatchFaceLayer>,
     public val highlightLayer: HighlightLayer? = null,
@@ -105,7 +105,7 @@
      * for screenshots.
      */
     public var isForScreenshot: Boolean = false
-      internal set
+        internal set
 
     init {
         require(watchFaceLayers.isNotEmpty() || highlightLayer != null) {
@@ -169,8 +169,8 @@
      * The highlight layer is used by editors to show the parts of the watch face affected by a
      * setting. E.g. a set of [ComplicationSlot]s or a user style setting.
      *
-     * The highlight layer is composited on top of the watch face with an alpha blend. It should
-     * be cleared with [backgroundTint]. The solid or semi-transparent outline around
+     * The highlight layer is composited on top of the watch face with an alpha blend. It should be
+     * cleared with [backgroundTint]. The solid or semi-transparent outline around
      * [highlightedElement] should be rendered using the provided [highlightTint]. The highlighted
      * element itself should be rendered as fully transparent (an alpha value of 0) to leave it
      * unaffected.
@@ -178,18 +178,12 @@
      * @param highlightedElement The [HighlightedElement] to draw highlighted with [highlightTint].
      * @param highlightTint The highlight tint to apply to [highlightedElement].
      * @param backgroundTint The tint to apply to everything other than [highlightedElement].
-     * Typically this will darken everything else to increase contrast.
+     *   Typically this will darken everything else to increase contrast.
      */
     public class HighlightLayer(
         public val highlightedElement: HighlightedElement,
-
-        @ColorInt
-        @get:ColorInt
-        public val highlightTint: Int,
-
-        @ColorInt
-        @get:ColorInt
-        public val backgroundTint: Int
+        @ColorInt @get:ColorInt public val highlightTint: Int,
+        @ColorInt @get:ColorInt public val backgroundTint: Int
     ) {
         override fun equals(other: Any?): Boolean {
             if (this === other) return true
@@ -221,7 +215,9 @@
 
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    public constructor(wireFormat: RenderParametersWireFormat) : this(
+    public constructor(
+        wireFormat: RenderParametersWireFormat
+    ) : this(
         DrawMode.values()[wireFormat.drawMode],
         HashSet<WatchFaceLayer>().apply {
             WatchFaceLayer.values().forEachIndexed { index, layer ->
@@ -232,7 +228,6 @@
         },
         when (wireFormat.elementType) {
             RenderParametersWireFormat.ELEMENT_TYPE_NONE -> null
-
             RenderParametersWireFormat.ELEMENT_TYPE_ALL_COMPLICATIONS -> {
                 HighlightLayer(
                     HighlightedElement.AllComplicationSlots,
@@ -240,7 +235,6 @@
                     wireFormat.backgroundTint
                 )
             }
-
             RenderParametersWireFormat.ELEMENT_TYPE_COMPLICATION -> {
                 HighlightLayer(
                     HighlightedElement.ComplicationSlot(wireFormat.elementComplicationSlotId),
@@ -248,7 +242,6 @@
                     wireFormat.backgroundTint
                 )
             }
-
             RenderParametersWireFormat.ELEMENT_TYPE_USER_STYLE -> {
                 HighlightLayer(
                     HighlightedElement.UserStyle(
@@ -258,69 +251,71 @@
                     wireFormat.backgroundTint
                 )
             }
-
             else -> null
         },
         wireFormat.idAndTapEventWireFormat?.associate {
             Pair(it.id, TapEvent(it.x, it.y, Instant.ofEpochMilli(it.calendarTapTimeMillis)))
-        } ?: emptyMap()
+        }
+            ?: emptyMap()
     )
 
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public fun toWireFormat(): RenderParametersWireFormat {
-        val idAndTapEventWireFormats = lastComplicationTapDownEvents.map {
-            IdAndTapEventWireFormat(
-                it.key,
-                it.value.xPos,
-                it.value.yPos,
-                it.value.tapTime.toEpochMilli()
-            )
-        }
+        val idAndTapEventWireFormats =
+            lastComplicationTapDownEvents.map {
+                IdAndTapEventWireFormat(
+                    it.key,
+                    it.value.xPos,
+                    it.value.yPos,
+                    it.value.tapTime.toEpochMilli()
+                )
+            }
         return when (val thingHighlighted = highlightLayer?.highlightedElement) {
-            is HighlightedElement.AllComplicationSlots -> RenderParametersWireFormat(
-                drawMode.ordinal,
-                computeLayersBitfield(),
-                RenderParametersWireFormat.ELEMENT_TYPE_ALL_COMPLICATIONS,
-                0,
-                null,
-                highlightLayer!!.highlightTint,
-                highlightLayer.backgroundTint,
-                idAndTapEventWireFormats
-            )
-
-            is HighlightedElement.ComplicationSlot -> RenderParametersWireFormat(
-                drawMode.ordinal,
-                computeLayersBitfield(),
-                RenderParametersWireFormat.ELEMENT_TYPE_COMPLICATION,
-                thingHighlighted.id,
-                null,
-                highlightLayer!!.highlightTint,
-                highlightLayer.backgroundTint,
-                idAndTapEventWireFormats
-            )
-
-            is HighlightedElement.UserStyle -> RenderParametersWireFormat(
-                drawMode.ordinal,
-                computeLayersBitfield(),
-                RenderParametersWireFormat.ELEMENT_TYPE_USER_STYLE,
-                0,
-                thingHighlighted.id.value,
-                highlightLayer!!.highlightTint,
-                highlightLayer.backgroundTint,
-                idAndTapEventWireFormats
-            )
-
-            else -> RenderParametersWireFormat(
-                drawMode.ordinal,
-                computeLayersBitfield(),
-                RenderParametersWireFormat.ELEMENT_TYPE_NONE,
-                0,
-                null,
-                Color.BLACK,
-                Color.BLACK,
-                idAndTapEventWireFormats
-            )
+            is HighlightedElement.AllComplicationSlots ->
+                RenderParametersWireFormat(
+                    drawMode.ordinal,
+                    computeLayersBitfield(),
+                    RenderParametersWireFormat.ELEMENT_TYPE_ALL_COMPLICATIONS,
+                    0,
+                    null,
+                    highlightLayer!!.highlightTint,
+                    highlightLayer.backgroundTint,
+                    idAndTapEventWireFormats
+                )
+            is HighlightedElement.ComplicationSlot ->
+                RenderParametersWireFormat(
+                    drawMode.ordinal,
+                    computeLayersBitfield(),
+                    RenderParametersWireFormat.ELEMENT_TYPE_COMPLICATION,
+                    thingHighlighted.id,
+                    null,
+                    highlightLayer!!.highlightTint,
+                    highlightLayer.backgroundTint,
+                    idAndTapEventWireFormats
+                )
+            is HighlightedElement.UserStyle ->
+                RenderParametersWireFormat(
+                    drawMode.ordinal,
+                    computeLayersBitfield(),
+                    RenderParametersWireFormat.ELEMENT_TYPE_USER_STYLE,
+                    0,
+                    thingHighlighted.id.value,
+                    highlightLayer!!.highlightTint,
+                    highlightLayer.backgroundTint,
+                    idAndTapEventWireFormats
+                )
+            else ->
+                RenderParametersWireFormat(
+                    drawMode.ordinal,
+                    computeLayersBitfield(),
+                    RenderParametersWireFormat.ELEMENT_TYPE_NONE,
+                    0,
+                    null,
+                    Color.BLACK,
+                    Color.BLACK,
+                    idAndTapEventWireFormats
+                )
         }
     }
 
@@ -340,9 +335,10 @@
         writer.println("drawMode=${drawMode.name}")
         writer.println("watchFaceLayers=${watchFaceLayers.joinToString()}")
         writer.println(
-            "lastComplicationTapDownEvents=" + lastComplicationTapDownEvents.map {
-                it.key.toString() + "->" + it.value
-            }.joinToString(", ")
+            "lastComplicationTapDownEvents=" +
+                lastComplicationTapDownEvents
+                    .map { it.key.toString() + "->" + it.value }
+                    .joinToString(", ")
         )
 
         highlightLayer?.let {
@@ -352,14 +348,12 @@
                 is HighlightedElement.AllComplicationSlots -> {
                     writer.println("HighlightedElement.AllComplicationSlots:")
                 }
-
                 is HighlightedElement.ComplicationSlot -> {
                     writer.println("HighlightedElement.ComplicationSlot:")
                     writer.increaseIndent()
                     writer.println("id=${it.highlightedElement.id}")
                     writer.decreaseIndent()
                 }
-
                 is HighlightedElement.UserStyle -> {
                     writer.println("HighlightedElement.UserStyle:")
                     writer.increaseIndent()
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/Renderer.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/Renderer.kt
index 878108f..8af3b01 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/Renderer.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/Renderer.kt
@@ -40,17 +40,17 @@
 import androidx.annotation.Px
 import androidx.annotation.UiThread
 import androidx.annotation.WorkerThread
-import androidx.wear.watchface.utility.TraceEvent
 import androidx.wear.watchface.style.CurrentUserStyleRepository
 import androidx.wear.watchface.style.UserStyleSchema
+import androidx.wear.watchface.utility.TraceEvent
+import java.io.PrintWriter
+import java.nio.ByteBuffer
+import java.time.ZonedDateTime
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.sync.Mutex
 import kotlinx.coroutines.sync.withLock
-import java.io.PrintWriter
-import java.nio.ByteBuffer
-import java.time.ZonedDateTime
 
 /**
  * Describes the type of [Canvas] a [Renderer.CanvasRenderer] or [Renderer.CanvasRenderer2] should
@@ -58,12 +58,7 @@
  *
  * @hide
  */
-@IntDef(
-    value = [
-        CanvasType.SOFTWARE,
-        CanvasType.HARDWARE
-    ]
-)
+@IntDef(value = [CanvasType.SOFTWARE, CanvasType.HARDWARE])
 public annotation class CanvasType {
     public companion object {
         /** A software canvas will be requested. */
@@ -84,28 +79,28 @@
     }
 }
 
-internal val EGL_CONFIG_ATTRIB_LIST = intArrayOf(
-    EGL14.EGL_RENDERABLE_TYPE,
-    EGL14.EGL_OPENGL_ES2_BIT,
-    EGL14.EGL_RED_SIZE,
-    8,
-    EGL14.EGL_GREEN_SIZE,
-    8,
-    EGL14.EGL_BLUE_SIZE,
-    8,
-    EGL14.EGL_ALPHA_SIZE,
-    8,
-    EGL14.EGL_NONE
-)
+internal val EGL_CONFIG_ATTRIB_LIST =
+    intArrayOf(
+        EGL14.EGL_RENDERABLE_TYPE,
+        EGL14.EGL_OPENGL_ES2_BIT,
+        EGL14.EGL_RED_SIZE,
+        8,
+        EGL14.EGL_GREEN_SIZE,
+        8,
+        EGL14.EGL_BLUE_SIZE,
+        8,
+        EGL14.EGL_ALPHA_SIZE,
+        8,
+        EGL14.EGL_NONE
+    )
 
 private val EGL_CONTEXT_ATTRIB_LIST =
     intArrayOf(EGL14.EGL_CONTEXT_CLIENT_VERSION, 2, EGL14.EGL_NONE)
 
 internal val EGL_SURFACE_ATTRIB_LIST = intArrayOf(EGL14.EGL_NONE)
 
-private val HIGHLIGHT_LAYER_COMPOSITE_PAINT = Paint().apply {
-    xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)
-}
+private val HIGHLIGHT_LAYER_COMPOSITE_PAINT =
+    Paint().apply { xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_OVER) }
 
 /**
  * Flips a bitmap.
@@ -114,23 +109,13 @@
  * @param width The width of the bitmap in pixels
  * @param height The height of the bitmap in pixels
  */
-internal fun verticalFlip(
-    buffer: ByteBuffer,
-    width: Int,
-    height: Int
-) {
+internal fun verticalFlip(buffer: ByteBuffer, width: Int, height: Int) {
     val stride = width * 4
     val heightMinusOne = height - 1
     val halfHeight = height / 2
     val tmp = ByteArray(stride)
     for (i in 0 until halfHeight) {
-        System.arraycopy(
-            buffer.array(),
-            i * stride,
-            tmp,
-            0,
-            stride
-        )
+        System.arraycopy(buffer.array(), i * stride, tmp, 0, stride)
 
         System.arraycopy(
             buffer.array(),
@@ -140,21 +125,14 @@
             stride
         )
 
-        System.arraycopy(
-            tmp,
-            0,
-            buffer.array(),
-            (heightMinusOne - i) * stride,
-            stride
-        )
+        System.arraycopy(tmp, 0, buffer.array(), (heightMinusOne - i) * stride, stride)
     }
     buffer.rewind()
 }
 
 /**
- * The base class for [CanvasRenderer], [CanvasRenderer2], [GlesRenderer],
- * [GlesRenderer2].  Where possible it is recommended to use
- * [CanvasRenderer2] or [GlesRenderer2] which allow memory to be
+ * The base class for [CanvasRenderer], [CanvasRenderer2], [GlesRenderer], [GlesRenderer2]. Where
+ * possible it is recommended to use [CanvasRenderer2] or [GlesRenderer2] which allow memory to be
  * saved during editing because there can be more than one watchface instance during editing.
  *
  * Renderers are constructed on a background thread but all rendering is done on the UiThread. There
@@ -167,9 +145,9 @@
  * Please note [android.graphics.drawable.AnimatedImageDrawable] and similar classes which rely on
  * [android.graphics.drawable.Drawable.Callback] do not animate properly out of the box unless you
  * register an implementation with [android.graphics.drawable.Drawable.setCallback] that calls
- * [invalidate]. Even then these classes are not recommend because the [ZonedDateTime] passed
- * to [Renderer.CanvasRenderer.render] or [Renderer.GlesRenderer.render] is not guaranteed to match
- * the system time (e.g. for taking screenshots). In addition care is needed when implementing
+ * [invalidate]. Even then these classes are not recommend because the [ZonedDateTime] passed to
+ * [Renderer.CanvasRenderer.render] or [Renderer.GlesRenderer.render] is not guaranteed to match the
+ * system time (e.g. for taking screenshots). In addition care is needed when implementing
  * [android.graphics.drawable.Drawable.Callback] to ensure it does not animate in ambient mode which
  * could lead to a significant power regression.
  *
@@ -177,22 +155,22 @@
  * @param currentUserStyleRepository The associated [CurrentUserStyleRepository].
  * @param watchState The associated [WatchState].
  * @param interactiveDrawModeUpdateDelayMillis The interval in milliseconds between frames in
- * interactive [DrawMode]s. To render at 60hz set to 16. Note when battery is low, the frame rate
- * will be clamped to 10fps. Watch faces are recommended to use lower frame rates if possible for
- * better battery life. Variable frame rates can also help preserve battery life, e.g. if a watch
- * face has a short animation once per second it can adjust the frame rate inorder to sleep when
- * not animating. In ambient mode the watch face will be rendered once per minute.
+ *   interactive [DrawMode]s. To render at 60hz set to 16. Note when battery is low, the frame rate
+ *   will be clamped to 10fps. Watch faces are recommended to use lower frame rates if possible for
+ *   better battery life. Variable frame rates can also help preserve battery life, e.g. if a watch
+ *   face has a short animation once per second it can adjust the frame rate inorder to sleep when
+ *   not animating. In ambient mode the watch face will be rendered once per minute.
  */
 @Suppress("Deprecation")
-public sealed class Renderer @WorkerThread constructor(
+public sealed class Renderer
+@WorkerThread
+constructor(
     public val surfaceHolder: SurfaceHolder,
     private val currentUserStyleRepository: CurrentUserStyleRepository,
     internal val watchState: WatchState,
-    @IntRange(from = 0, to = 60000)
-    public var interactiveDrawModeUpdateDelayMillis: Long,
+    @IntRange(from = 0, to = 60000) public var interactiveDrawModeUpdateDelayMillis: Long,
 ) {
-    @OptIn(WatchFaceExperimental::class)
-    private var pendingWatchFaceColors: WatchFaceColors? = null
+    @OptIn(WatchFaceExperimental::class) private var pendingWatchFaceColors: WatchFaceColors? = null
     private var pendingWatchFaceColorsSet = false
 
     // Protected by lock
@@ -202,10 +180,11 @@
     // Protected by lock. NB UI thread code doesn't need the lock.
     internal var watchFaceHostApi: WatchFaceHostApi? = null
         set(value) {
-            val pendingSendPreviewImageNeedsUpdateRequestCopy = synchronized(lock) {
-                field = value
-                pendingSendPreviewImageNeedsUpdateRequest
-            }
+            val pendingSendPreviewImageNeedsUpdateRequestCopy =
+                synchronized(lock) {
+                    field = value
+                    pendingSendPreviewImageNeedsUpdateRequest
+                }
             if (pendingWatchFaceColorsSet) {
                 @OptIn(WatchFaceExperimental::class)
                 value?.onWatchFaceColorsChanged(pendingWatchFaceColors)
@@ -252,14 +231,10 @@
         private val sharedAssetsCache = HashMap<String, SharedAssetsHolder>()
         private val sharedAssetsCacheLock = Mutex()
 
-        internal fun getOrCreateSharedAssetsHolder(
-            renderer: Renderer
-        ): SharedAssetsHolder {
+        internal fun getOrCreateSharedAssetsHolder(renderer: Renderer): SharedAssetsHolder {
             val key = renderer::class.java.name
             synchronized(sharedAssetsCacheLock) {
-                sharedAssetsCache.computeIfAbsent(key) {
-                    SharedAssetsHolder()
-                }
+                sharedAssetsCache.computeIfAbsent(key) { SharedAssetsHolder() }
                 val holder = sharedAssetsCache[key]!!
                 holder.refCount++
                 return holder
@@ -294,11 +269,9 @@
                     centerY = screenBounds.exactCenterY()
                 }
 
-                override fun surfaceDestroyed(holder: SurfaceHolder) {
-                }
+                override fun surfaceDestroyed(holder: SurfaceHolder) {}
 
-                override fun surfaceCreated(holder: SurfaceHolder) {
-                }
+                override fun surfaceCreated(holder: SurfaceHolder) {}
             }
         )
     }
@@ -306,7 +279,7 @@
     /**
      * The bounds of the [SurfaceHolder] this Renderer renders into. Depending on the shape of the
      * device's screen not all of these pixels may be visible to the user (see
-     * [Configuration.isScreenRound]).  Note also that API level 27+ devices draw indicators in the
+     * [Configuration.isScreenRound]). Note also that API level 27+ devices draw indicators in the
      * top and bottom 24dp of the screen, avoid rendering anything important there.
      */
     public var screenBounds: Rect = surfaceHolder.surfaceFrame
@@ -343,8 +316,8 @@
      * and each [ComplicationSlot]'s index is defined by its
      * [ComplicationSlot.accessibilityTraversalIndex].
      */
-    public var additionalContentDescriptionLabels:
-        Collection<Pair<Int, ContentDescriptionLabel>> = emptyList()
+    public var additionalContentDescriptionLabels: Collection<Pair<Int, ContentDescriptionLabel>> =
+        emptyList()
         set(value) {
             field = value
             for (pair in value) {
@@ -365,13 +338,11 @@
     }
 
     /** Called when the Renderer is destroyed. */
-    @UiThread
-    public open fun onDestroy() {
-    }
+    @UiThread public open fun onDestroy() {}
 
     /**
-     * Renders the watch face into the [surfaceHolder] using the current [renderParameters]
-     * with the user style specified by the [currentUserStyleRepository].
+     * Renders the watch face into the [surfaceHolder] using the current [renderParameters] with the
+     * user style specified by the [currentUserStyleRepository].
      *
      * @param zonedDateTime The [ZonedDateTime] to use when rendering the watch face
      * @return A [Bitmap] containing a screenshot of the watch face
@@ -399,15 +370,13 @@
      * Called when the [RenderParameters] has been updated. Will always be called before the first
      * call to [CanvasRenderer.render] or [GlesRenderer.render].
      */
-    @UiThread
-    protected open fun onRenderParametersChanged(renderParameters: RenderParameters) {
-    }
+    @UiThread protected open fun onRenderParametersChanged(renderParameters: RenderParameters) {}
 
     /**
      * This method is used for accessibility support to describe the portion of the screen
-     * containing  the main clock element. By default we assume this is contained in the central
-     * half of the watch face. Watch faces should override this to return the correct bounds for
-     * the main clock element.
+     * containing the main clock element. By default we assume this is contained in the central half
+     * of the watch face. Watch faces should override this to return the correct bounds for the main
+     * clock element.
      *
      * @return A [Rect] describing the bounds of the watch faces' main clock element
      */
@@ -416,8 +385,10 @@
         val quarterX = centerX / 2
         val quarterY = centerY / 2
         return Rect(
-            (centerX - quarterX).toInt(), (centerY - quarterY).toInt(),
-            (centerX + quarterX).toInt(), (centerY + quarterY).toInt()
+            (centerX - quarterX).toInt(),
+            (centerY - quarterY).toInt(),
+            (centerX + quarterX).toInt(),
+            (centerY + quarterY).toInt()
         )
     }
 
@@ -428,8 +399,8 @@
      * shouldAnimate returns true we inhibit entering [DrawMode.AMBIENT].
      *
      * By default we remain at an interactive frame rate when the watch face is visible and we're
-     * not in ambient mode. Watch faces with animated transitions for entering ambient mode may
-     * need to override this to ensure they play smoothly.
+     * not in ambient mode. Watch faces with animated transitions for entering ambient mode may need
+     * to override this to ensure they play smoothly.
      *
      * @return Whether we should schedule an onDraw call to maintain an interactive frame rate
      */
@@ -448,32 +419,29 @@
 
     /**
      * Posts a message to schedule a call to either [CanvasRenderer.render] or [GlesRenderer.render]
-     * to draw the next frame. Unlike [invalidate], this method is thread-safe and may be called
-     * on any thread.
+     * to draw the next frame. Unlike [invalidate], this method is thread-safe and may be called on
+     * any thread.
      */
     public fun postInvalidate() {
         watchFaceHostApi?.getUiThreadHandler()?.post { watchFaceHostApi!!.invalidate() }
     }
 
-    @UiThread
-    internal abstract fun dumpInternal(writer: IndentingPrintWriter)
+    @UiThread internal abstract fun dumpInternal(writer: IndentingPrintWriter)
 
     /**
      * Called when adb shell dumpsys is invoked for the WatchFaceService, allowing the renderer to
      * optionally record state for debugging purposes.
      */
-    @UiThread
-    public abstract fun onDump(writer: PrintWriter)
+    @UiThread public abstract fun onDump(writer: PrintWriter)
 
     /**
-     * Perform UiThread specific initialization.  Will be called once during initialization before
+     * Perform UiThread specific initialization. Will be called once during initialization before
      * any subsequent calls to [renderInternal] or [takeScreenshot].
      */
     @UiThread
     internal abstract suspend fun uiThreadInitInternal(uiThreadCoroutineScope: CoroutineScope)
 
-    @WorkerThread
-    internal open suspend fun backgroundThreadInitInternal() {}
+    @WorkerThread internal open suspend fun backgroundThreadInitInternal() {}
 
     /**
      * Representative [WatchFaceColors] which are made available to system clients via
@@ -488,17 +456,17 @@
     @get:WatchFaceExperimental
     @set:WatchFaceExperimental
     public var watchfaceColors: WatchFaceColors? = null
-       set(value) {
-           require(value != null) { "watchfaceColors must be non-null " }
+        set(value) {
+            require(value != null) { "watchfaceColors must be non-null " }
 
-           val hostApi = watchFaceHostApi
-           if (hostApi == null) {
-               pendingWatchFaceColors = value
-               pendingWatchFaceColorsSet = true
-           } else {
-               hostApi.onWatchFaceColorsChanged(value)
-           }
-       }
+            val hostApi = watchFaceHostApi
+            if (hostApi == null) {
+                pendingWatchFaceColors = value
+                pendingWatchFaceColorsSet = true
+            } else {
+                hostApi.onWatchFaceColorsChanged(value)
+            }
+        }
 
     /**
      * Multiple [WatchFaceService] instances and hence Renderers can exist concurrently (e.g. a
@@ -513,22 +481,21 @@
          * Notification that any resources owned by SharedAssets should be released, called when no
          * renderer instances are left.
          */
-        @UiThread
-        public fun onDestroy()
+        @UiThread public fun onDestroy()
     }
 
     internal abstract fun renderBlackFrame()
 
     /**
-     * Sends a request to the system asking it to update the preview image. This is useful for
-     * watch faces with configuration outside of the [UserStyleSchema] E.g. a watchface with a
-     * selectable background.
+     * Sends a request to the system asking it to update the preview image. This is useful for watch
+     * faces with configuration outside of the [UserStyleSchema] E.g. a watchface with a selectable
+     * background.
      *
      * The system may choose to rate limit this method for performance reasons and the system is
      * free to schedule when the update occurs.
      *
-     * Requires a compatible system to work (if the system is incompatible this does nothing).
-     * This can be called from any thread.
+     * Requires a compatible system to work (if the system is incompatible this does nothing). This
+     * can be called from any thread.
      */
     public fun sendPreviewImageNeedsUpdateRequest() {
         synchronized(lock) {
@@ -541,9 +508,9 @@
     }
 
     /**
-     * Watch faces that require [Canvas] rendering should extend their [Renderer] from this class
-     * or [CanvasRenderer2] if they can take advantage of [SharedAssets] to save
-     * memory when editing (there can be more than once WatchFace instance when editing).
+     * Watch faces that require [Canvas] rendering should extend their [Renderer] from this class or
+     * [CanvasRenderer2] if they can take advantage of [SharedAssets] to save memory when editing
+     * (there can be more than once WatchFace instance when editing).
      *
      * A CanvasRenderer is expected to be constructed on the background thread associated with
      * [WatchFaceService.getBackgroundThreadHandler] inside a call to
@@ -555,47 +522,48 @@
      * instead.
      *
      * @param surfaceHolder The [SurfaceHolder] from which a [Canvas] to will be obtained and passed
-     * into [render].
+     *   into [render].
      * @param currentUserStyleRepository The watch face's associated [CurrentUserStyleRepository].
      * @param watchState The watch face's associated [WatchState].
      * @param canvasType The [CanvasType] to request. Note even if [CanvasType.HARDWARE] is used,
-     * screenshots will taken using the software rendering pipeline, as such [Bitmap]s with
-     * [Bitmap.Config.HARDWARE] must be avoided.
+     *   screenshots will taken using the software rendering pipeline, as such [Bitmap]s with
+     *   [Bitmap.Config.HARDWARE] must be avoided.
      * @param interactiveDrawModeUpdateDelayMillis The interval in milliseconds between frames in
-     * interactive [DrawMode]s. To render at 60hz set to 16. Note when battery is low, the frame
-     * rate will be clamped to 10fps. Watch faces are recommended to use lower frame rates if
-     * possible for better battery life. Variable frame rates can also help preserve battery life,
-     * e.g. if a watch face has a short animation once per second it can adjust the framerate
-     * inorder to sleep when not animating.
+     *   interactive [DrawMode]s. To render at 60hz set to 16. Note when battery is low, the frame
+     *   rate will be clamped to 10fps. Watch faces are recommended to use lower frame rates if
+     *   possible for better battery life. Variable frame rates can also help preserve battery life,
+     *   e.g. if a watch face has a short animation once per second it can adjust the framerate
+     *   inorder to sleep when not animating.
      * @param clearWithBackgroundTintBeforeRenderingHighlightLayer Whether the [Canvas] is cleared
-     * with [RenderParameters.HighlightLayer.backgroundTint] before [renderHighlightLayer] is
-     * called. Defaults to `false`.
+     *   with [RenderParameters.HighlightLayer.backgroundTint] before [renderHighlightLayer] is
+     *   called. Defaults to `false`.
      */
     @Deprecated(message = "CanvasRenderer is deprecated", ReplaceWith("CanvasRenderer2"))
-    public abstract class CanvasRenderer @WorkerThread @JvmOverloads constructor(
+    public abstract class CanvasRenderer
+    @WorkerThread
+    @JvmOverloads
+    constructor(
         surfaceHolder: SurfaceHolder,
         currentUserStyleRepository: CurrentUserStyleRepository,
         watchState: WatchState,
         @CanvasType private val canvasType: Int,
-        @IntRange(from = 0, to = 60000)
-        interactiveDrawModeUpdateDelayMillis: Long,
+        @IntRange(from = 0, to = 60000) interactiveDrawModeUpdateDelayMillis: Long,
         val clearWithBackgroundTintBeforeRenderingHighlightLayer: Boolean = false
-    ) : Renderer(
-        surfaceHolder,
-        currentUserStyleRepository,
-        watchState,
-        interactiveDrawModeUpdateDelayMillis
-    ) {
-        internal override fun renderInternal(
-            zonedDateTime: ZonedDateTime
+    ) :
+        Renderer(
+            surfaceHolder,
+            currentUserStyleRepository,
+            watchState,
+            interactiveDrawModeUpdateDelayMillis
         ) {
-            val canvas = (
-                if (canvasType == CanvasType.HARDWARE) {
+        internal override fun renderInternal(zonedDateTime: ZonedDateTime) {
+            val canvas =
+                (if (canvasType == CanvasType.HARDWARE) {
                     surfaceHolder.lockHardwareCanvas()
                 } else {
                     surfaceHolder.lockCanvas()
-                }
-                ) ?: return
+                })
+                    ?: return
             try {
                 if (Build.VERSION.SDK_INT >= 30 || watchState.isVisible.value!!) {
                     renderAndComposite(canvas, zonedDateTime)
@@ -610,23 +578,25 @@
         internal override fun takeScreenshot(
             zonedDateTime: ZonedDateTime,
             renderParameters: RenderParameters
-        ): Bitmap = TraceEvent("CanvasRenderer.takeScreenshot").use {
-            val bitmap = Bitmap.createBitmap(
-                screenBounds.width(),
-                screenBounds.height(),
-                Bitmap.Config.ARGB_8888
-            )
-            val prevRenderParameters = this.renderParameters
-            val originalIsForScreenshot = renderParameters.isForScreenshot
+        ): Bitmap =
+            TraceEvent("CanvasRenderer.takeScreenshot").use {
+                val bitmap =
+                    Bitmap.createBitmap(
+                        screenBounds.width(),
+                        screenBounds.height(),
+                        Bitmap.Config.ARGB_8888
+                    )
+                val prevRenderParameters = this.renderParameters
+                val originalIsForScreenshot = renderParameters.isForScreenshot
 
-            renderParameters.isForScreenshot = true
-            this.renderParameters = renderParameters
-            renderAndComposite(Canvas(bitmap), zonedDateTime)
-            this.renderParameters = prevRenderParameters
-            renderParameters.isForScreenshot = originalIsForScreenshot
+                renderParameters.isForScreenshot = true
+                this.renderParameters = renderParameters
+                renderAndComposite(Canvas(bitmap), zonedDateTime)
+                this.renderParameters = prevRenderParameters
+                renderParameters.isForScreenshot = originalIsForScreenshot
 
-            return bitmap
-        }
+                return bitmap
+            }
 
         private fun renderAndComposite(canvas: Canvas, zonedDateTime: ZonedDateTime) {
             // Usually renderParameters.watchFaceWatchFaceLayers will be non-empty.
@@ -636,11 +606,12 @@
                 // Render and composite the HighlightLayer
                 val highlightLayer = renderParameters.highlightLayer
                 if (highlightLayer != null) {
-                    val highlightLayerBitmap = Bitmap.createBitmap(
-                        screenBounds.width(),
-                        screenBounds.height(),
-                        Bitmap.Config.ARGB_8888
-                    )
+                    val highlightLayerBitmap =
+                        Bitmap.createBitmap(
+                            screenBounds.width(),
+                            screenBounds.height(),
+                            Bitmap.Config.ARGB_8888
+                        )
                     val highlightCanvas = Canvas(highlightLayerBitmap)
                     if (clearWithBackgroundTintBeforeRenderingHighlightLayer) {
                         highlightCanvas.drawColor(highlightLayer.backgroundTint)
@@ -667,20 +638,18 @@
         }
 
         /**
-         * Perform UiThread specific initialization.  Will be called once during initialization
-         * before any subsequent calls to [render].  If you need to override this method in java,
+         * Perform UiThread specific initialization. Will be called once during initialization
+         * before any subsequent calls to [render]. If you need to override this method in java,
          * consider using [androidx.wear.watchface.ListenableCanvasRenderer] instead.
          */
-        @UiThread
-        public open suspend fun init() {
-        }
+        @UiThread public open suspend fun init() {}
 
         /**
          * Sub-classes should override this to implement their watch face rendering logic which
          * should respect the current [renderParameters]. Please note [WatchState.isAmbient] may not
          * match the [RenderParameters.drawMode] and should not be used to decide what to render.
-         * E.g. when editing from the companion phone while the watch is ambient, renders
-         * may be requested with [DrawMode.INTERACTIVE].
+         * E.g. when editing from the companion phone while the watch is ambient, renders may be
+         * requested with [DrawMode.INTERACTIVE].
          *
          * Any highlights due to [RenderParameters.highlightLayer] should be rendered by
          * [renderHighlightLayer] instead where possible. For correct behavior this function must
@@ -689,23 +658,20 @@
          * Before any calls to render, [init] will be called once.
          *
          * @param canvas The [Canvas] to render into. Don't assume this is always the canvas from
-         * the [SurfaceHolder] backing the display
+         *   the [SurfaceHolder] backing the display
          * @param bounds A [Rect] describing the bonds of the canvas to draw into
          * @param zonedDateTime The [ZonedDateTime] to render with
          */
         @UiThread
-        public abstract fun render(
-            canvas: Canvas,
-            bounds: Rect,
-            zonedDateTime: ZonedDateTime
-        )
+        public abstract fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime)
 
         internal override fun renderBlackFrame() {
-            val canvas = if (canvasType == CanvasType.SOFTWARE) {
-                surfaceHolder.lockCanvas()
-            } else {
-                surfaceHolder.lockHardwareCanvas()
-            }
+            val canvas =
+                if (canvasType == CanvasType.SOFTWARE) {
+                    surfaceHolder.lockCanvas()
+                } else {
+                    surfaceHolder.lockHardwareCanvas()
+                }
             try {
                 canvas.drawColor(Color.BLACK)
             } finally {
@@ -729,7 +695,7 @@
          * the Canvas if necessary.
          *
          * @param canvas The [Canvas] to render into. Don't assume this is always the canvas from
-         * the [SurfaceHolder] backing the display
+         *   the [SurfaceHolder] backing the display
          * @param bounds A [Rect] describing the bonds of the canvas to draw into
          * @param zonedDateTime the [ZonedDateTime] to render with
          */
@@ -772,40 +738,42 @@
      * instead.
      *
      * @param SharedAssetsT The type extending [SharedAssets] returned by [createSharedAssets] and
-     * passed into [render] and [renderHighlightLayer].
+     *   passed into [render] and [renderHighlightLayer].
      * @param surfaceHolder The [SurfaceHolder] from which a [Canvas] to will be obtained and passed
-     * into [render].
+     *   into [render].
      * @param currentUserStyleRepository The watch face's associated [CurrentUserStyleRepository].
      * @param watchState The watch face's associated [WatchState].
      * @param canvasType The [CanvasType] to request. Note even if [CanvasType.HARDWARE] is used,
-     * screenshots will taken using the software rendering pipeline, as such [Bitmap]s with
-     * [Bitmap.Config.HARDWARE] must be avoided.
+     *   screenshots will taken using the software rendering pipeline, as such [Bitmap]s with
+     *   [Bitmap.Config.HARDWARE] must be avoided.
      * @param interactiveDrawModeUpdateDelayMillis The interval in milliseconds between frames in
-     * interactive [DrawMode]s. To render at 60hz set to 16. Note when battery is low, the frame
-     * rate will be clamped to 10fps. Watch faces are recommended to use lower frame rates if
-     * possible for better battery life. Variable frame rates can also help preserve battery life,
-     * e.g. if a watch face has a short animation once per second it can adjust the framerate
-     * inorder to sleep when not animating.
+     *   interactive [DrawMode]s. To render at 60hz set to 16. Note when battery is low, the frame
+     *   rate will be clamped to 10fps. Watch faces are recommended to use lower frame rates if
+     *   possible for better battery life. Variable frame rates can also help preserve battery life,
+     *   e.g. if a watch face has a short animation once per second it can adjust the framerate
+     *   inorder to sleep when not animating.
      * @param clearWithBackgroundTintBeforeRenderingHighlightLayer Whether the [Canvas] is cleared
-     * with [RenderParameters.HighlightLayer.backgroundTint] before [renderHighlightLayer] is
-     * called. Defaults to `false`.
+     *   with [RenderParameters.HighlightLayer.backgroundTint] before [renderHighlightLayer] is
+     *   called. Defaults to `false`.
      */
-    public abstract class CanvasRenderer2<SharedAssetsT> @WorkerThread constructor(
+    public abstract class CanvasRenderer2<SharedAssetsT>
+    @WorkerThread
+    constructor(
         surfaceHolder: SurfaceHolder,
         currentUserStyleRepository: CurrentUserStyleRepository,
         watchState: WatchState,
         @CanvasType private val canvasType: Int,
-        @IntRange(from = 0, to = 60000)
-        interactiveDrawModeUpdateDelayMillis: Long,
+        @IntRange(from = 0, to = 60000) interactiveDrawModeUpdateDelayMillis: Long,
         clearWithBackgroundTintBeforeRenderingHighlightLayer: Boolean
-    ) : CanvasRenderer(
-        surfaceHolder,
-        currentUserStyleRepository,
-        watchState,
-        canvasType,
-        interactiveDrawModeUpdateDelayMillis,
-        clearWithBackgroundTintBeforeRenderingHighlightLayer
-    ) where SharedAssetsT : SharedAssets {
+    ) :
+        CanvasRenderer(
+            surfaceHolder,
+            currentUserStyleRepository,
+            watchState,
+            canvasType,
+            interactiveDrawModeUpdateDelayMillis,
+            clearWithBackgroundTintBeforeRenderingHighlightLayer
+        ) where SharedAssetsT : SharedAssets {
         /**
          * When editing multiple [WatchFaceService] instances and hence Renderers can exist
          * concurrently (e.g. a headless instance and an interactive instance) and using
@@ -823,8 +791,7 @@
          *
          * @return The [SharedAssetsT] that will be passed into [render] and [renderHighlightLayer].
          */
-        @WorkerThread
-        protected abstract suspend fun createSharedAssets(): SharedAssetsT
+        @WorkerThread protected abstract suspend fun createSharedAssets(): SharedAssetsT
 
         internal override suspend fun backgroundThreadInitInternal() {
             if (sharedAssetsHolder.sharedAssets == null) {
@@ -836,8 +803,8 @@
          * Sub-classes should override this to implement their watch face rendering logic which
          * should respect the current [renderParameters]. Please note [WatchState.isAmbient] may not
          * match the [RenderParameters.drawMode] and should not be used to decide what to render.
-         * E.g. when editing from the companion phone while the watch is ambient, renders
-         * may be requested with [DrawMode.INTERACTIVE].
+         * E.g. when editing from the companion phone while the watch is ambient, renders may be
+         * requested with [DrawMode.INTERACTIVE].
          *
          * Any highlights due to [RenderParameters.highlightLayer] should be rendered by
          * [renderHighlightLayer] instead where possible. For correct behavior this function must
@@ -846,7 +813,7 @@
          * Before any calls to render, [init] will be called once.
          *
          * @param canvas The [Canvas] to render into. Don't assume this is always the canvas from
-         * the [SurfaceHolder] backing the display
+         *   the [SurfaceHolder] backing the display
          * @param bounds A [Rect] describing the bonds of the canvas to draw into
          * @param zonedDateTime The [ZonedDateTime] to render with
          * @param sharedAssets The [SharedAssetsT] returned by [createSharedAssets]
@@ -875,7 +842,7 @@
          * the Canvas if necessary.
          *
          * @param canvas The [Canvas] to render into. Don't assume this is always the canvas from
-         * the [SurfaceHolder] backing the display
+         *   the [SurfaceHolder] backing the display
          * @param bounds A [Rect] describing the bonds of the canvas to draw into
          * @param zonedDateTime the [ZonedDateTime] to render with
          * @param sharedAssets The [SharedAssetsT] returned by [createSharedAssets]
@@ -914,9 +881,9 @@
     }
 
     /**
-     * Watch faces that require [GLES20] rendering should extend their [Renderer] from this class
-     * or [GlesRenderer2] if they can take advantage of [SharedAssets] to save memory
-     * when editing (there can be more than once WatchFace instance when editing).
+     * Watch faces that require [GLES20] rendering should extend their [Renderer] from this class or
+     * [GlesRenderer2] if they can take advantage of [SharedAssets] to save memory when editing
+     * (there can be more than once WatchFace instance when editing).
      *
      * A GlesRenderer is expected to be constructed on the background thread associated with
      * [WatchFaceService.getBackgroundThreadHandler] inside a call to
@@ -931,31 +898,31 @@
      *
      * If you need to make any OpenGl calls outside of [render],
      * [onBackgroundThreadGlContextCreated] or [onUiThreadGlSurfaceCreated] then you must use either
-     * [runUiThreadGlCommands] or [runBackgroundThreadGlCommands] to execute a [Runnable] inside
-     * of the corresponding context. Access to the GL contexts this way is necessary because GL
+     * [runUiThreadGlCommands] or [runBackgroundThreadGlCommands] to execute a [Runnable] inside of
+     * the corresponding context. Access to the GL contexts this way is necessary because GL
      * contexts are not shared between renderers and there can be multiple watch face instances
-     * existing concurrently (e.g. headless and interactive, potentially from different watch
-     * faces if an APK contains more than one [WatchFaceService]). In addition most drivers do not
-     * support concurrent access.
+     * existing concurrently (e.g. headless and interactive, potentially from different watch faces
+     * if an APK contains more than one [WatchFaceService]). In addition most drivers do not support
+     * concurrent access.
      *
      * In Java it may be easier to extend [androidx.wear.watchface.ListenableGlesRenderer] instead.
      *
      * @param surfaceHolder The [SurfaceHolder] whose [android.view.Surface] [render] will draw
-     * into.
+     *   into.
      * @param currentUserStyleRepository The associated [CurrentUserStyleRepository].
      * @param watchState The associated [WatchState].
      * @param interactiveDrawModeUpdateDelayMillis The interval in milliseconds between frames in
-     * interactive [DrawMode]s. To render at 60hz set to 16. Note when battery is low, the frame
-     * rate will be clamped to 10fps. Watch faces are recommended to use lower frame rates if
-     * possible for better battery life. Variable frame rates can also help preserve battery life,
-     * e.g. if a watch face has a short animation once per second it can adjust the frame rate
-     * inorder to sleep when not animating.
+     *   interactive [DrawMode]s. To render at 60hz set to 16. Note when battery is low, the frame
+     *   rate will be clamped to 10fps. Watch faces are recommended to use lower frame rates if
+     *   possible for better battery life. Variable frame rates can also help preserve battery life,
+     *   e.g. if a watch face has a short animation once per second it can adjust the frame rate
+     *   inorder to sleep when not animating.
      * @param eglConfigAttribList Attributes for [EGL14.eglChooseConfig]. By default this selects an
-     * RGBA8888 back buffer.
+     *   RGBA8888 back buffer.
      * @param eglSurfaceAttribList The attributes to be passed to [EGL14.eglCreateWindowSurface]. By
-     * default this is empty.
+     *   default this is empty.
      * @param eglContextAttribList The attributes to be passed to [EGL14.eglCreateContext]. By
-     * default this selects [EGL14.EGL_CONTEXT_CLIENT_VERSION] 2.
+     *   default this selects [EGL14.EGL_CONTEXT_CLIENT_VERSION] 2.
      * @throws [GlesException] If any GL calls fail during initialization.
      */
     @Deprecated(message = "GlesRenderer is deprecated", ReplaceWith("GlesRenderer2"))
@@ -967,17 +934,17 @@
         surfaceHolder: SurfaceHolder,
         currentUserStyleRepository: CurrentUserStyleRepository,
         watchState: WatchState,
-        @IntRange(from = 0, to = 60000)
-        interactiveDrawModeUpdateDelayMillis: Long,
+        @IntRange(from = 0, to = 60000) interactiveDrawModeUpdateDelayMillis: Long,
         private val eglConfigAttribList: IntArray = EGL_CONFIG_ATTRIB_LIST,
         private val eglSurfaceAttribList: IntArray = EGL_SURFACE_ATTRIB_LIST,
         private val eglContextAttribList: IntArray = EGL_CONTEXT_ATTRIB_LIST
-    ) : Renderer(
-        surfaceHolder,
-        currentUserStyleRepository,
-        watchState,
-        interactiveDrawModeUpdateDelayMillis
-    ) {
+    ) :
+        Renderer(
+            surfaceHolder,
+            currentUserStyleRepository,
+            watchState,
+            interactiveDrawModeUpdateDelayMillis
+        ) {
         /** @hide */
         internal companion object {
             internal const val TAG = "Gles2WatchFace"
@@ -1009,11 +976,11 @@
 
         /**
          * The GlesRenderer's [EGLDisplay].
+         *
          * @throws UnsupportedOperationException setEglDisplay is unsupported.
          */
         public var eglDisplay: EGLDisplay
             get() = sharedAssetsHolder.eglDisplay
-
             @Deprecated("It's not intended for eglDisplay to be set")
             set(@Suppress("UNUSED_PARAMETER") eglDisplay) {
                 throw UnsupportedOperationException()
@@ -1021,11 +988,11 @@
 
         /**
          * The GlesRenderer's [EGLConfig].
+         *
          * @throws UnsupportedOperationException setEglConfig is unsupported.
          */
         public var eglConfig: EGLConfig
             get() = sharedAssetsHolder.eglConfig
-
             @Deprecated("It's not intended for eglConfig to be set")
             set(@Suppress("UNUSED_PARAMETER") eglConfig) {
                 throw UnsupportedOperationException()
@@ -1043,22 +1010,23 @@
             get() = sharedAssetsHolder.eglUiThreadContext
 
         // A 1x1 surface which is needed by EGL14.eglMakeCurrent.
-        private val fakeBackgroundThreadSurface = EGL14.eglCreatePbufferSurface(
-            eglDisplay,
-            eglConfig,
-            intArrayOf(
-                EGL14.EGL_WIDTH,
-                1,
-                EGL14.EGL_HEIGHT,
-                1,
-                EGL14.EGL_TEXTURE_TARGET,
-                EGL14.EGL_NO_TEXTURE,
-                EGL14.EGL_TEXTURE_FORMAT,
-                EGL14.EGL_NO_TEXTURE,
-                EGL14.EGL_NONE
-            ),
-            0
-        )
+        private val fakeBackgroundThreadSurface =
+            EGL14.eglCreatePbufferSurface(
+                eglDisplay,
+                eglConfig,
+                intArrayOf(
+                    EGL14.EGL_WIDTH,
+                    1,
+                    EGL14.EGL_HEIGHT,
+                    1,
+                    EGL14.EGL_TEXTURE_TARGET,
+                    EGL14.EGL_NO_TEXTURE,
+                    EGL14.EGL_TEXTURE_FORMAT,
+                    EGL14.EGL_NO_TEXTURE,
+                    EGL14.EGL_NONE
+                ),
+                0
+            )
         private lateinit var eglSurface: EGLSurface
         private var calledOnGlContextCreated = false
         private val renderBufferTexture by lazy {
@@ -1070,12 +1038,14 @@
 
         /**
          * Chooses the EGLConfig to use.
+         *
          * @throws [GlesException] if [EGL14.eglChooseConfig] fails
          */
         private fun chooseEglConfig(eglDisplay: EGLDisplay): EGLConfig {
             val numEglConfigs = IntArray(1)
             val eglConfigs = arrayOfNulls<EGLConfig>(1)
-            if (!EGL14.eglChooseConfig(
+            if (
+                !EGL14.eglChooseConfig(
                     eglDisplay,
                     eglConfigAttribList,
                     0,
@@ -1094,45 +1064,53 @@
             return eglConfigs[0]!!
         }
 
-        private suspend fun createWindowSurface(width: Int, height: Int) = TraceEvent(
-            "GlesRenderer.createWindowSurface"
-        ).use {
-            if (this::eglSurface.isInitialized) {
-                if (!EGL14.eglDestroySurface(eglDisplay, eglSurface)) {
-                    Log.w(TAG, "eglDestroySurface failed")
+        private suspend fun createWindowSurface(width: Int, height: Int) =
+            TraceEvent("GlesRenderer.createWindowSurface").use {
+                if (this::eglSurface.isInitialized) {
+                    if (!EGL14.eglDestroySurface(eglDisplay, eglSurface)) {
+                        Log.w(TAG, "eglDestroySurface failed")
+                    }
                 }
-            }
-            eglSurface = if (watchState.isHeadless) {
-                // Headless instances have a fake surfaceHolder so fall back to a Pbuffer.
-                EGL14.eglCreatePbufferSurface(
-                    eglDisplay,
-                    eglConfig,
-                    intArrayOf(EGL14.EGL_WIDTH, width, EGL14.EGL_HEIGHT, height, EGL14.EGL_NONE),
-                    0
-                )
-            } else {
-                require(surfaceHolder.surface.isValid) { "A valid surfaceHolder is required. " }
-                EGL14.eglCreateWindowSurface(
-                    eglDisplay,
-                    eglConfig,
-                    surfaceHolder.surface,
-                    eglSurfaceAttribList,
-                    0
-                )
-            }
-            if (eglSurface == EGL14.EGL_NO_SURFACE) {
-                throw GlesException("eglCreateWindowSurface failed")
-            }
+                eglSurface =
+                    if (watchState.isHeadless) {
+                        // Headless instances have a fake surfaceHolder so fall back to a Pbuffer.
+                        EGL14.eglCreatePbufferSurface(
+                            eglDisplay,
+                            eglConfig,
+                            intArrayOf(
+                                EGL14.EGL_WIDTH,
+                                width,
+                                EGL14.EGL_HEIGHT,
+                                height,
+                                EGL14.EGL_NONE
+                            ),
+                            0
+                        )
+                    } else {
+                        require(surfaceHolder.surface.isValid) {
+                            "A valid surfaceHolder is required. "
+                        }
+                        EGL14.eglCreateWindowSurface(
+                            eglDisplay,
+                            eglConfig,
+                            surfaceHolder.surface,
+                            eglSurfaceAttribList,
+                            0
+                        )
+                    }
+                if (eglSurface == EGL14.EGL_NO_SURFACE) {
+                    throw GlesException("eglCreateWindowSurface failed")
+                }
 
-            runUiThreadGlCommands {
-                if (!calledOnGlContextCreated) {
-                    calledOnGlContextCreated = true
-                }
-                TraceEvent("GlesRenderer.onGlSurfaceCreated").use {
-                    onUiThreadGlSurfaceCreated(width, height)
+                runUiThreadGlCommands {
+                    if (!calledOnGlContextCreated) {
+                        calledOnGlContextCreated = true
+                    }
+                    TraceEvent("GlesRenderer.onGlSurfaceCreated").use {
+                        onUiThreadGlSurfaceCreated(width, height)
+                    }
                 }
             }
-        }
 
         @CallSuper
         override fun onDestroy() {
@@ -1148,16 +1126,16 @@
          * [WatchFaceService.getBackgroundThreadHandler]'s looper thread as the current one,
          * executes [commands] and finally unsets the GL context.
          *
-         * Access to the GL context this way is necessary because GL contexts are not shared
-         * between renderers and there can be multiple watch face instances existing concurrently
-         * (e.g. headless and interactive, potentially from different watch faces if an APK
-         * contains more than one [WatchFaceService]).
+         * Access to the GL context this way is necessary because GL contexts are not shared between
+         * renderers and there can be multiple watch face instances existing concurrently (e.g.
+         * headless and interactive, potentially from different watch faces if an APK contains more
+         * than one [WatchFaceService]).
          *
-         * NB this function is called by the library before running
-         * [runBackgroundThreadGlCommands] so there's no need to use this directly in client
-         * code unless you need to make GL calls outside of those methods. If you need to call this
-         * method from java, consider using [androidx.wear.watchface.ListenableGlesRenderer] which
-         * provides an overload taking a [Runnable].
+         * NB this function is called by the library before running [runBackgroundThreadGlCommands]
+         * so there's no need to use this directly in client code unless you need to make GL calls
+         * outside of those methods. If you need to call this method from java, consider using
+         * [androidx.wear.watchface.ListenableGlesRenderer] which provides an overload taking a
+         * [Runnable].
          *
          * @throws [IllegalStateException] if the calls to [EGL14.eglMakeCurrent] fails
          */
@@ -1171,7 +1149,8 @@
             }
             // It's only safe to run GL command from one thread at a time.
             glContextLock.withLock {
-                if (!EGL14.eglMakeCurrent(
+                if (
+                    !EGL14.eglMakeCurrent(
                         eglDisplay,
                         fakeBackgroundThreadSurface,
                         fakeBackgroundThreadSurface,
@@ -1212,13 +1191,14 @@
         internal override suspend fun backgroundThreadInitInternal() =
             TraceEvent("GlesRenderer.initBackgroundThreadOpenGlContext").use {
                 if (!sharedAssetsHolder.eglBackgroundThreadContextInitialized()) {
-                    sharedAssetsHolder.eglBackgroundThreadContext = EGL14.eglCreateContext(
-                        eglDisplay,
-                        eglConfig,
-                        EGL14.EGL_NO_CONTEXT,
-                        eglContextAttribList,
-                        0
-                    )
+                    sharedAssetsHolder.eglBackgroundThreadContext =
+                        EGL14.eglCreateContext(
+                            eglDisplay,
+                            eglConfig,
+                            EGL14.EGL_NO_CONTEXT,
+                            eglContextAttribList,
+                            0
+                        )
                     if (sharedAssetsHolder.eglBackgroundThreadContext == EGL14.EGL_NO_CONTEXT) {
                         throw RuntimeException("eglCreateContext failed")
                     }
@@ -1237,13 +1217,13 @@
         }
 
         /**
-         * Inside of a [Mutex] this function sets the UiThread GL context as the current
-         * one, executes [commands] and finally unsets the GL context.
+         * Inside of a [Mutex] this function sets the UiThread GL context as the current one,
+         * executes [commands] and finally unsets the GL context.
          *
-         * Access to the GL context this way is necessary because GL contexts are not shared
-         * between renderers and there can be multiple watch face instances existing concurrently
-         * (e.g. headless and interactive, potentially from different watch faces if an APK
-         * contains more than one [WatchFaceService]).
+         * Access to the GL context this way is necessary because GL contexts are not shared between
+         * renderers and there can be multiple watch face instances existing concurrently (e.g.
+         * headless and interactive, potentially from different watch faces if an APK contains more
+         * than one [WatchFaceService]).
          *
          * If you need to call this method from java, consider using
          * [androidx.wear.watchface.ListenableGlesRenderer] which provides an overload taking a
@@ -1258,13 +1238,7 @@
 
             // It's only safe to run GL command from one thread at a time.
             glContextLock.withLock {
-                if (!EGL14.eglMakeCurrent(
-                        eglDisplay,
-                        eglSurface,
-                        eglSurface,
-                        eglUiThreadContext
-                    )
-                ) {
+                if (!EGL14.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglUiThreadContext)) {
                     throw IllegalStateException(
                         "eglMakeCurrent failed, eglGetError() = " + EGL14.eglGetError()
                     )
@@ -1299,44 +1273,40 @@
         internal override suspend fun uiThreadInitInternal(uiThreadCoroutineScope: CoroutineScope) =
             TraceEvent("GlesRenderer.initUiThreadOpenGlContext").use {
                 if (!sharedAssetsHolder.eglUiThreadContextInitialized()) {
-                    sharedAssetsHolder.eglUiThreadContext = EGL14.eglCreateContext(
-                        eglDisplay,
-                        eglConfig,
-                        eglBackgroundThreadContext,
-                        intArrayOf(
-                            EGL14.EGL_CONTEXT_CLIENT_VERSION,
-                            2,
-                            EGL14.EGL_NONE
-                        ),
-                        0
-                    )
+                    sharedAssetsHolder.eglUiThreadContext =
+                        EGL14.eglCreateContext(
+                            eglDisplay,
+                            eglConfig,
+                            eglBackgroundThreadContext,
+                            intArrayOf(EGL14.EGL_CONTEXT_CLIENT_VERSION, 2, EGL14.EGL_NONE),
+                            0
+                        )
                 }
 
-                surfaceHolder.addCallback(object : SurfaceHolder.Callback {
-                    @SuppressLint("SyntheticAccessor")
-                    override fun surfaceChanged(
-                        holder: SurfaceHolder,
-                        format: Int,
-                        width: Int,
-                        height: Int
-                    ) {
-                        uiThreadCoroutineScope.launch {
-                            createWindowSurface(width, height)
+                surfaceHolder.addCallback(
+                    object : SurfaceHolder.Callback {
+                        @SuppressLint("SyntheticAccessor")
+                        override fun surfaceChanged(
+                            holder: SurfaceHolder,
+                            format: Int,
+                            width: Int,
+                            height: Int
+                        ) {
+                            uiThreadCoroutineScope.launch { createWindowSurface(width, height) }
                         }
-                    }
 
-                    @SuppressLint("SyntheticAccessor")
-                    override fun surfaceDestroyed(holder: SurfaceHolder) {
-                        if (this@GlesRenderer::eglSurface.isInitialized) {
-                            if (!EGL14.eglDestroySurface(eglDisplay, eglSurface)) {
-                                Log.w(TAG, "eglDestroySurface failed")
+                        @SuppressLint("SyntheticAccessor")
+                        override fun surfaceDestroyed(holder: SurfaceHolder) {
+                            if (this@GlesRenderer::eglSurface.isInitialized) {
+                                if (!EGL14.eglDestroySurface(eglDisplay, eglSurface)) {
+                                    Log.w(TAG, "eglDestroySurface failed")
+                                }
                             }
                         }
-                    }
 
-                    override fun surfaceCreated(holder: SurfaceHolder) {
+                        override fun surfaceCreated(holder: SurfaceHolder) {}
                     }
-                })
+                )
 
                 // Note we have to call this after the derived class's init() method has run or it's
                 // typically going to fail because members have not been initialized.
@@ -1349,21 +1319,19 @@
         /**
          * Called once a background thread when a new GL context is created on the background
          * thread, before any subsequent calls to [render]. Note this function is called inside a
-         * lambda passed to [runBackgroundThreadGlCommands] which has synchronized access to the
-         * GL context.
+         * lambda passed to [runBackgroundThreadGlCommands] which has synchronized access to the GL
+         * context.
          *
          * If you need to override this method in java, consider using
          * [androidx.wear.watchface.ListenableGlesRenderer] instead.
          */
-        @WorkerThread
-        public open suspend fun onBackgroundThreadGlContextCreated() {
-        }
+        @WorkerThread public open suspend fun onBackgroundThreadGlContextCreated() {}
 
         /**
-         * Called when a new GL surface is created on the UiThread, before any subsequent calls
-         * to [render] or in response to [SurfaceHolder.Callback.surfaceChanged]. Note this function
-         * is  called inside a lambda passed to [runUiThreadGlCommands] which has synchronized
-         * access to the GL context.
+         * Called when a new GL surface is created on the UiThread, before any subsequent calls to
+         * [render] or in response to [SurfaceHolder.Callback.surfaceChanged]. Note this function is
+         * called inside a lambda passed to [runUiThreadGlCommands] which has synchronized access to
+         * the GL context.
          *
          * If you need to override this method in java, consider using
          * [androidx.wear.watchface.ListenableGlesRenderer] instead.
@@ -1372,15 +1340,9 @@
          * @param height height of surface in pixels
          */
         @UiThread
-        public open suspend fun onUiThreadGlSurfaceCreated(
-            @Px width: Int,
-            @Px height: Int
-        ) {
-        }
+        public open suspend fun onUiThreadGlSurfaceCreated(@Px width: Int, @Px height: Int) {}
 
-        internal override fun renderInternal(
-            zonedDateTime: ZonedDateTime
-        ) {
+        internal override fun renderInternal(zonedDateTime: ZonedDateTime) {
             runBlocking {
                 runUiThreadGlCommands {
                     renderAndComposite(zonedDateTime)
@@ -1394,37 +1356,39 @@
         internal override fun takeScreenshot(
             zonedDateTime: ZonedDateTime,
             renderParameters: RenderParameters
-        ): Bitmap = TraceEvent("GlesRenderer.takeScreenshot").use {
-            val width = screenBounds.width()
-            val height = screenBounds.height()
-            val pixelBuf = ByteBuffer.allocateDirect(width * height * 4)
-            val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
-            runBlocking {
-                runUiThreadGlCommands {
-                    val prevRenderParameters = this@GlesRenderer.renderParameters
-                    this@GlesRenderer.renderParameters = renderParameters
-                    renderParameters.isForScreenshot = true
-                    renderAndComposite(zonedDateTime)
-                    renderParameters.isForScreenshot = false
-                    this@GlesRenderer.renderParameters = prevRenderParameters
-                    GLES20.glFinish()
-                    GLES20.glReadPixels(
-                        0,
-                        0,
-                        width,
-                        height,
-                        GLES20.GL_RGBA,
-                        GLES20.GL_UNSIGNED_BYTE,
-                        pixelBuf
-                    )
-                    // The image is flipped when using read pixels because the first pixel in the
-                    // OpenGL buffer is in bottom left.
-                    verticalFlip(pixelBuf, width, height)
-                    bitmap.copyPixelsFromBuffer(pixelBuf)
+        ): Bitmap =
+            TraceEvent("GlesRenderer.takeScreenshot").use {
+                val width = screenBounds.width()
+                val height = screenBounds.height()
+                val pixelBuf = ByteBuffer.allocateDirect(width * height * 4)
+                val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
+                runBlocking {
+                    runUiThreadGlCommands {
+                        val prevRenderParameters = this@GlesRenderer.renderParameters
+                        this@GlesRenderer.renderParameters = renderParameters
+                        renderParameters.isForScreenshot = true
+                        renderAndComposite(zonedDateTime)
+                        renderParameters.isForScreenshot = false
+                        this@GlesRenderer.renderParameters = prevRenderParameters
+                        GLES20.glFinish()
+                        GLES20.glReadPixels(
+                            0,
+                            0,
+                            width,
+                            height,
+                            GLES20.GL_RGBA,
+                            GLES20.GL_UNSIGNED_BYTE,
+                            pixelBuf
+                        )
+                        // The image is flipped when using read pixels because the first pixel in
+                        // the
+                        // OpenGL buffer is in bottom left.
+                        verticalFlip(pixelBuf, width, height)
+                        bitmap.copyPixelsFromBuffer(pixelBuf)
+                    }
                 }
+                return bitmap
             }
-            return bitmap
-        }
 
         private fun renderAndComposite(zonedDateTime: ZonedDateTime) {
             GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ZERO)
@@ -1467,15 +1431,15 @@
          * Sub-classes should override this to implement their watch face rendering logic which
          * should respect the current [renderParameters]. Please note [WatchState.isAmbient] may not
          * match the [RenderParameters.drawMode] and should not be used to decide what to render.
-         * E.g. when editing from the companion phone while the watch is ambient, renders
-         * may be requested with [DrawMode.INTERACTIVE].
+         * E.g. when editing from the companion phone while the watch is ambient, renders may be
+         * requested with [DrawMode.INTERACTIVE].
          *
          * Any highlights due to [RenderParameters.highlightLayer] should be rendered by
          * [renderHighlightLayer] instead where possible. For correct behavior this function must
          * use the supplied [ZonedDateTime] in favor of any other ways of getting the time.
          *
-         * Note this function is called inside a lambda passed to [runUiThreadGlCommands] which
-         * has synchronized access to the GL context.
+         * Note this function is called inside a lambda passed to [runUiThreadGlCommands] which has
+         * synchronized access to the GL context.
          *
          * Note also `GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ZERO)` is called by the library
          * before this method.
@@ -1485,8 +1449,7 @@
          *
          * @param zonedDateTime The zonedDateTime [ZonedDateTime] to render with
          */
-        @UiThread
-        public abstract fun render(zonedDateTime: ZonedDateTime)
+        @UiThread public abstract fun render(zonedDateTime: ZonedDateTime)
 
         /**
          * Sub-classes should override this to implement their watch face highlight layer rendering
@@ -1498,16 +1461,15 @@
          * function must use the supplied [ZonedDateTime] in favor of any other ways of getting the
          * time.
          *
-         * Note this function is called inside a lambda passed to [runUiThreadGlCommands] which
-         * has synchronized access to the GL context.
+         * Note this function is called inside a lambda passed to [runUiThreadGlCommands] which has
+         * synchronized access to the GL context.
          *
          * Note also `GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ZERO)` is called by the library
          * before this method.
          *
          * @param zonedDateTime The zonedDateTime [ZonedDateTime] to render with
          */
-        @UiThread
-        public abstract fun renderHighlightLayer(zonedDateTime: ZonedDateTime)
+        @UiThread public abstract fun renderHighlightLayer(zonedDateTime: ZonedDateTime)
 
         internal override fun dumpInternal(writer: IndentingPrintWriter) {
             writer.println("GlesRenderer:")
@@ -1544,33 +1506,33 @@
      *
      * If you need to make any OpenGl calls outside of [render],
      * [onBackgroundThreadGlContextCreated] or [onUiThreadGlSurfaceCreated] then you must use either
-     * [runUiThreadGlCommands] or [runBackgroundThreadGlCommands] to execute a [Runnable] inside
-     * of the corresponding context. Access to the GL contexts this way is necessary because GL
+     * [runUiThreadGlCommands] or [runBackgroundThreadGlCommands] to execute a [Runnable] inside of
+     * the corresponding context. Access to the GL contexts this way is necessary because GL
      * contexts are not shared between renderers and there can be multiple watch face instances
-     * existing concurrently (e.g. headless and interactive, potentially from different watch
-     * faces if an APK contains more than one [WatchFaceService]). In addition most drivers do not
-     * support concurrent access.
+     * existing concurrently (e.g. headless and interactive, potentially from different watch faces
+     * if an APK contains more than one [WatchFaceService]). In addition most drivers do not support
+     * concurrent access.
      *
      * In Java it may be easier to extend [androidx.wear.watchface.ListenableGlesRenderer2] instead.
      *
      * @param SharedAssetsT The type extending [SharedAssets] returned by [createSharedAssets] and
-     * passed into [render] and [renderHighlightLayer].
+     *   passed into [render] and [renderHighlightLayer].
      * @param surfaceHolder The [SurfaceHolder] whose [android.view.Surface] [render] will draw
-     * into.
+     *   into.
      * @param currentUserStyleRepository The associated [CurrentUserStyleRepository].
      * @param watchState The associated [WatchState].
      * @param interactiveDrawModeUpdateDelayMillis The interval in milliseconds between frames in
-     * interactive [DrawMode]s. To render at 60hz set to 16. Note when battery is low, the frame
-     * rate will be clamped to 10fps. Watch faces are recommended to use lower frame rates if
-     * possible for better battery life. Variable frame rates can also help preserve battery life,
-     * e.g. if a watch face has a short animation once per second it can adjust the frame rate
-     * inorder to sleep when not animating.
+     *   interactive [DrawMode]s. To render at 60hz set to 16. Note when battery is low, the frame
+     *   rate will be clamped to 10fps. Watch faces are recommended to use lower frame rates if
+     *   possible for better battery life. Variable frame rates can also help preserve battery life,
+     *   e.g. if a watch face has a short animation once per second it can adjust the frame rate
+     *   inorder to sleep when not animating.
      * @param eglConfigAttribList Attributes for [EGL14.eglChooseConfig]. By default this selects an
-     * RGBA8888 back buffer.
+     *   RGBA8888 back buffer.
      * @param eglSurfaceAttribList The attributes to be passed to [EGL14.eglCreateWindowSurface]. By
-     * default this is empty.
+     *   default this is empty.
      * @param eglContextAttribList The attributes to be passed to [EGL14.eglCreateContext]. By
-     * default this selects [EGL14.EGL_CONTEXT_CLIENT_VERSION] 2.
+     *   default this selects [EGL14.EGL_CONTEXT_CLIENT_VERSION] 2.
      * @throws [Renderer.GlesException] If any GL calls fail during initialization.
      */
     public abstract class GlesRenderer2<SharedAssetsT>
@@ -1581,20 +1543,20 @@
         surfaceHolder: SurfaceHolder,
         currentUserStyleRepository: CurrentUserStyleRepository,
         watchState: WatchState,
-        @IntRange(from = 0, to = 60000)
-        interactiveDrawModeUpdateDelayMillis: Long,
+        @IntRange(from = 0, to = 60000) interactiveDrawModeUpdateDelayMillis: Long,
         eglConfigAttribList: IntArray = EGL_CONFIG_ATTRIB_LIST,
         eglSurfaceAttribList: IntArray = EGL_SURFACE_ATTRIB_LIST,
         eglContextAttribList: IntArray = EGL_CONTEXT_ATTRIB_LIST
-    ) : GlesRenderer(
-        surfaceHolder,
-        currentUserStyleRepository,
-        watchState,
-        interactiveDrawModeUpdateDelayMillis,
-        eglConfigAttribList,
-        eglSurfaceAttribList,
-        eglContextAttribList
-    ) where SharedAssetsT : SharedAssets {
+    ) :
+        GlesRenderer(
+            surfaceHolder,
+            currentUserStyleRepository,
+            watchState,
+            interactiveDrawModeUpdateDelayMillis,
+            eglConfigAttribList,
+            eglSurfaceAttribList,
+            eglContextAttribList
+        ) where SharedAssetsT : SharedAssets {
         /**
          * When editing multiple [WatchFaceService] instances and hence Renderers can exist
          * concurrently (e.g. a headless instance and an interactive instance) and using
@@ -1602,8 +1564,8 @@
          * shaders, etc...) between them.
          *
          * To take advantage of SharedAssets, override this method. The constructed SharedAssets are
-         * passed into the [render] as an argument (NB you'll have to cast this to your type).
-         * It is safe to make GLES calls within this method.
+         * passed into the [render] as an argument (NB you'll have to cast this to your type). It is
+         * safe to make GLES calls within this method.
          *
          * When all instances using SharedAssets have been closed, [SharedAssets.onDestroy] will be
          * called.
@@ -1614,22 +1576,21 @@
          *
          * @return The [SharedAssetsT] that will be passed into [render] and [renderHighlightLayer].
          */
-        @WorkerThread
-        protected abstract suspend fun createSharedAssets(): SharedAssetsT
+        @WorkerThread protected abstract suspend fun createSharedAssets(): SharedAssetsT
 
         /**
          * Sub-classes should override this to implement their watch face rendering logic which
          * should respect the current [renderParameters]. Please note [WatchState.isAmbient] may not
          * match the [RenderParameters.drawMode] and should not be used to decide what to render.
-         * E.g. when editing from the companion phone while the watch is ambient, renders
-         * may be requested with [DrawMode.INTERACTIVE].
+         * E.g. when editing from the companion phone while the watch is ambient, renders may be
+         * requested with [DrawMode.INTERACTIVE].
          *
          * Any highlights due to [RenderParameters.highlightLayer] should be rendered by
          * [renderHighlightLayer] instead where possible. For correct behavior this function must
          * use the supplied [ZonedDateTime] in favor of any other ways of getting the time.
          *
-         * Note this function is called inside a lambda passed to [runUiThreadGlCommands] which
-         * has synchronized access to the GL context.
+         * Note this function is called inside a lambda passed to [runUiThreadGlCommands] which has
+         * synchronized access to the GL context.
          *
          * Note also `GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ZERO)` is called by the library
          * before this method.
@@ -1661,8 +1622,8 @@
          * function must use the supplied [ZonedDateTime] in favor of any other ways of getting the
          * time.
          *
-         * Note this function is called inside a lambda passed to [runUiThreadGlCommands] which
-         * has synchronized access to the GL context.
+         * Note this function is called inside a lambda passed to [runUiThreadGlCommands] which has
+         * synchronized access to the GL context.
          *
          * Note also `GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ZERO)` is called by the library
          * before this method.
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/TapEvent.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/TapEvent.kt
index 982e7a7..d091ddc 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/TapEvent.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/TapEvent.kt
@@ -22,21 +22,15 @@
 import java.time.Instant
 
 /** @hide */
-@IntDef(
-    value = [
-        TapType.DOWN,
-        TapType.UP,
-        TapType.CANCEL
-    ]
-)
+@IntDef(value = [TapType.DOWN, TapType.UP, TapType.CANCEL])
 public annotation class TapType {
     public companion object {
         /**
          * Used to indicate a "down" touch event on the watch face.
          *
-         * The watch face will receive an [UP] or a [CANCEL] event to follow this event, to
-         * indicate whether this down event corresponds to a tap gesture to be handled by the watch
-         * face, or a different type of gesture that is handled by the system, respectively.
+         * The watch face will receive an [UP] or a [CANCEL] event to follow this event, to indicate
+         * whether this down event corresponds to a tap gesture to be handled by the watch face, or
+         * a different type of gesture that is handled by the system, respectively.
          */
         public const val DOWN: Int = IInteractiveWatchFace.TAP_TYPE_DOWN
 
@@ -51,11 +45,11 @@
 
         /**
          * Used to indicate that an "up" event on the watch face has occurred that has not been
-         * consumed by the system. A [TapType.DOWN] will always occur first. This event will not
-         * be sent if a [TapType.CANCEL] is sent.
+         * consumed by the system. A [TapType.DOWN] will always occur first. This event will not be
+         * sent if a [TapType.CANCEL] is sent.
          *
-         * Therefore, a [TapType.DOWN] event and the successive [TapType.UP] event are guaranteed
-         * to be close enough to be considered a tap according to the value returned by
+         * Therefore, a [TapType.DOWN] event and the successive [TapType.UP] event are guaranteed to
+         * be close enough to be considered a tap according to the value returned by
          * [android.view.ViewConfiguration.getScaledTouchSlop].
          */
         public const val UP: Int = IInteractiveWatchFace.TAP_TYPE_UP
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFace.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFace.kt
index 6ed0000..fe4aaa7 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFace.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFace.kt
@@ -55,17 +55,17 @@
 import androidx.wear.watchface.style.WatchFaceLayer
 import androidx.wear.watchface.utility.TraceEvent
 import java.lang.Long.min
-import kotlinx.coroutines.CompletableDeferred
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.flow.StateFlow
-import kotlinx.coroutines.launch
 import java.security.InvalidParameterException
 import java.time.Duration
 import java.time.Instant
 import java.time.ZoneId
 import java.time.ZonedDateTime
 import kotlin.math.max
+import kotlinx.coroutines.CompletableDeferred
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.launch
 
 // Human reaction time is limited to ~100ms.
 private const val MIN_PERCEPTIBLE_DELAY_MILLIS = 100
@@ -80,12 +80,7 @@
  *
  * @hide
  */
-@IntDef(
-    value = [
-        WatchFaceType.DIGITAL,
-        WatchFaceType.ANALOG
-    ]
-)
+@IntDef(value = [WatchFaceType.DIGITAL, WatchFaceType.ANALOG])
 public annotation class WatchFaceType {
     public companion object {
         /* The WatchFace has an analog time display. */
@@ -101,7 +96,7 @@
  * complicationSlots and state observers.
  *
  * @param watchFaceType The type of watch face, whether it's digital or analog. Used to determine
- * the default time for editor preview screenshots.
+ *   the default time for editor preview screenshots.
  * @param renderer The [Renderer] for this WatchFace.
  */
 public class WatchFace(
@@ -160,6 +155,7 @@
 
         /**
          * For use by on watch face editors.
+         *
          * @hide
          */
         @JvmStatic
@@ -181,6 +177,7 @@
 
         /**
          * For use by on watch face editors.
+         *
          * @hide
          */
         @SuppressLint("NewApi")
@@ -195,9 +192,8 @@
             // Attempt to construct the class for the specified watchFaceName, failing if it either
             // doesn't exist or isn't a [WatchFaceService].
             val watchFaceServiceClass =
-                Class.forName(componentName.className) ?: throw IllegalArgumentException(
-                    "Can't create ${componentName.className}"
-                )
+                Class.forName(componentName.className)
+                    ?: throw IllegalArgumentException("Can't create ${componentName.className}")
             if (!WatchFaceService::class.java.isAssignableFrom(WatchFaceService::class.java)) {
                 throw IllegalArgumentException(
                     "${componentName.className} is not a WatchFaceService"
@@ -206,8 +202,8 @@
                 val watchFaceService =
                     watchFaceServiceClass.getConstructor().newInstance() as WatchFaceService
                 watchFaceService.setContext(context)
-                val engine = watchFaceService.createHeadlessEngine() as
-                    WatchFaceService.EngineWrapper
+                val engine =
+                    watchFaceService.createHeadlessEngine() as WatchFaceService.EngineWrapper
                 val headlessWatchFaceImpl = engine.createHeadlessInstance(params)
                 return engine.deferredWatchFaceImpl.await().WFEditorDelegate(headlessWatchFaceImpl)
             }
@@ -216,6 +212,7 @@
 
     /**
      * Delegate used by on watch face editors.
+     *
      * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -223,7 +220,7 @@
         /** The [WatchFace]'s [UserStyleSchema]. */
         public val userStyleSchema: UserStyleSchema
 
-        /** The watch face's  [UserStyle]. */
+        /** The watch face's [UserStyle]. */
         public var userStyle: UserStyle
 
         /** The [WatchFace]'s [ComplicationSlotsManager]. */
@@ -283,13 +280,13 @@
          * - [TapType.CANCEL] when the system detects that the user is performing a gesture other
          *   than a tap
          *
-         * Note that the watch face is only given tap events, i.e., events where the user puts
-         * the finger down on the screen and then lifts it at the position. If the user performs any
+         * Note that the watch face is only given tap events, i.e., events where the user puts the
+         * finger down on the screen and then lifts it at the position. If the user performs any
          * other type of gesture while their finger in on the touchscreen, the watch face will be
          * receive a cancel, as all other gestures are reserved by the system.
          *
-         * Therefore, a [TapType.DOWN] event and the successive [TapType.UP] event are guaranteed
-         * to be close enough to be considered a tap according to the value returned by
+         * Therefore, a [TapType.DOWN] event and the successive [TapType.UP] event are guaranteed to
+         * be close enough to be considered a tap according to the value returned by
          * [android.view.ViewConfiguration.getScaledTouchSlop].
          *
          * If the watch face receives a [TapType.CANCEL] event, it should not trigger any action, as
@@ -311,33 +308,36 @@
      * Legacy Wear 2.0 watch face styling. These settings will be ignored on Wear 3.0 devices.
      *
      * @param viewProtectionMode The view protection mode bit field, must be a combination of zero
-     * or more of [WatchFaceStyle.PROTECT_STATUS_BAR], [WatchFaceStyle.PROTECT_HOTWORD_INDICATOR],
-     * [WatchFaceStyle.PROTECT_WHOLE_SCREEN].
+     *   or more of [WatchFaceStyle.PROTECT_STATUS_BAR], [WatchFaceStyle.PROTECT_HOTWORD_INDICATOR],
+     *   [WatchFaceStyle.PROTECT_WHOLE_SCREEN].
      * @param statusBarGravity Controls the position of status icons (battery state, lack of
-     * connection) on the screen. This must be any combination of horizontal Gravity constant:
-     * ([Gravity.LEFT], [Gravity.CENTER_HORIZONTAL], [Gravity.RIGHT]) and vertical Gravity
-     * constants ([Gravity.TOP], [Gravity.CENTER_VERTICAL], [Gravity.BOTTOM]), e.g.
-     * `[Gravity.LEFT] | [Gravity.BOTTOM]`. On circular screens, only the vertical gravity is
-     * respected.
-     * @param tapEventsAccepted Controls whether this watch face accepts tap events. Watchfaces
-     * that set this `true` are indicating they are prepared to receive [TapType.DOWN],
-     * [TapType.CANCEL], and [TapType.UP] events.
+     *   connection) on the screen. This must be any combination of horizontal Gravity constant:
+     *   ([Gravity.LEFT], [Gravity.CENTER_HORIZONTAL], [Gravity.RIGHT]) and vertical Gravity
+     *   constants ([Gravity.TOP], [Gravity.CENTER_VERTICAL], [Gravity.BOTTOM]), e.g.
+     *   `[Gravity.LEFT] | [Gravity.BOTTOM]`. On circular screens, only the vertical gravity is
+     *   respected.
+     * @param tapEventsAccepted Controls whether this watch face accepts tap events. Watchfaces that
+     *   set this `true` are indicating they are prepared to receive [TapType.DOWN],
+     *   [TapType.CANCEL], and [TapType.UP] events.
      * @param accentColor The accent color which will be used when drawing the unread notification
-     * indicator. Default color is white.
+     *   indicator. Default color is white.
      * @throws IllegalArgumentException if [viewProtectionMode] has an unexpected value
      */
-    public class LegacyWatchFaceOverlayStyle @JvmOverloads constructor(
+    public class LegacyWatchFaceOverlayStyle
+    @JvmOverloads
+    constructor(
         public val viewProtectionMode: Int,
         public val statusBarGravity: Int,
-        @get:JvmName("isTapEventsAccepted")
-        public val tapEventsAccepted: Boolean,
+        @get:JvmName("isTapEventsAccepted") public val tapEventsAccepted: Boolean,
         @ColorInt public val accentColor: Int = WatchFaceStyle.DEFAULT_ACCENT_COLOR
     ) {
         init {
-            if (viewProtectionMode < 0 ||
-                viewProtectionMode >
-                WatchFaceStyle.PROTECT_STATUS_BAR + WatchFaceStyle.PROTECT_HOTWORD_INDICATOR +
-                WatchFaceStyle.PROTECT_WHOLE_SCREEN
+            if (
+                viewProtectionMode < 0 ||
+                    viewProtectionMode >
+                        WatchFaceStyle.PROTECT_STATUS_BAR +
+                            WatchFaceStyle.PROTECT_HOTWORD_INDICATOR +
+                            WatchFaceStyle.PROTECT_WHOLE_SCREEN
             ) {
                 throw IllegalArgumentException(
                     "View protection must be combination " +
@@ -348,21 +348,14 @@
     }
 
     /** The legacy [LegacyWatchFaceOverlayStyle] which only affects Wear 2.0 devices. */
-    public var legacyWatchFaceStyle: LegacyWatchFaceOverlayStyle = LegacyWatchFaceOverlayStyle(
-        0,
-        0,
-        true
-    )
+    public var legacyWatchFaceStyle: LegacyWatchFaceOverlayStyle =
+        LegacyWatchFaceOverlayStyle(0, 0, true)
         private set
 
-    /**
-     * Sets the legacy [LegacyWatchFaceOverlayStyle] which only affects Wear 2.0 devices.
-     */
+    /** Sets the legacy [LegacyWatchFaceOverlayStyle] which only affects Wear 2.0 devices. */
     public fun setLegacyWatchFaceStyle(
         legacyWatchFaceStyle: LegacyWatchFaceOverlayStyle
-    ): WatchFace = apply {
-        this.legacyWatchFaceStyle = legacyWatchFaceStyle
-    }
+    ): WatchFace = apply { this.legacyWatchFaceStyle = legacyWatchFaceStyle }
 
     /**
      * This class allows the watch face to configure the status overlay which is rendered by the
@@ -433,12 +426,8 @@
     public var overlayStyle: OverlayStyle = OverlayStyle()
         private set
 
-    /**
-     * Sets the [OverlayStyle] which affects Wear 3.0 devices and beyond.
-     */
-    public fun setOverlayStyle(
-        watchFaceOverlayStyle: OverlayStyle
-    ): WatchFace = apply {
+    /** Sets the [OverlayStyle] which affects Wear 3.0 devices and beyond. */
+    public fun setOverlayStyle(watchFaceOverlayStyle: OverlayStyle): WatchFace = apply {
         this.overlayStyle = watchFaceOverlayStyle
     }
 
@@ -455,7 +444,9 @@
      * @param previewReferenceTimeMillis The UTC preview time in milliseconds since the epoch
      */
     public fun setOverridePreviewReferenceInstant(previewReferenceTimeMillis: Instant): WatchFace =
-        apply { overridePreviewReferenceInstant = previewReferenceTimeMillis }
+        apply {
+            overridePreviewReferenceInstant = previewReferenceTimeMillis
+        }
 
     /**
      * Sets an optional [TapListener] which if not `null` gets called on the ui thread whenever the
@@ -479,9 +470,7 @@
      */
     public fun setComplicationDeniedDialogIntent(
         complicationDeniedDialogIntent: Intent?
-    ): WatchFace = apply {
-        this.complicationDeniedDialogIntent = complicationDeniedDialogIntent
-    }
+    ): WatchFace = apply { this.complicationDeniedDialogIntent = complicationDeniedDialogIntent }
 
     /**
      * Sets the [Intent] to launch an activity that explains the rational for the requesting the
@@ -516,15 +505,15 @@
 /** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @SuppressLint("SyntheticAccessor")
-public class WatchFaceImpl @UiThread constructor(
+public class WatchFaceImpl
+@UiThread
+constructor(
     watchface: WatchFace,
     private val watchFaceHostApi: WatchFaceHostApi,
     private val watchState: WatchState,
     internal val currentUserStyleRepository: CurrentUserStyleRepository,
-
     @get:VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
     public var complicationSlotsManager: ComplicationSlotsManager,
-
     internal val broadcastsObserver: BroadcastsObserver,
     internal var broadcastsReceiver: BroadcastsReceiver?
 ) {
@@ -597,10 +586,8 @@
     private val legacyWatchFaceStyle = watchface.legacyWatchFaceStyle
     internal val renderer = watchface.renderer
     private val tapListener = watchface.tapListener
-    internal var complicationDeniedDialogIntent =
-        watchface.complicationDeniedDialogIntent
-    internal var complicationRationaleDialogIntent =
-        watchface.complicationRationaleDialogIntent
+    internal var complicationDeniedDialogIntent = watchface.complicationDeniedDialogIntent
+    internal var complicationRationaleDialogIntent = watchface.complicationRationaleDialogIntent
     internal var overlayStyle = watchface.overlayStyle
 
     private var mockTime = MockTime(1.0, 0, Long.MAX_VALUE)
@@ -618,15 +605,16 @@
             watchFaceHostApi.getContext().javaClass.name
         )
 
-    internal fun getWatchFaceStyle() = WatchFaceStyle(
-        componentName,
-        legacyWatchFaceStyle.viewProtectionMode,
-        legacyWatchFaceStyle.statusBarGravity,
-        legacyWatchFaceStyle.accentColor,
-        false,
-        false,
-        legacyWatchFaceStyle.tapEventsAccepted
-    )
+    internal fun getWatchFaceStyle() =
+        WatchFaceStyle(
+            componentName,
+            legacyWatchFaceStyle.viewProtectionMode,
+            legacyWatchFaceStyle.statusBarGravity,
+            legacyWatchFaceStyle.accentColor,
+            false,
+            false,
+            legacyWatchFaceStyle.tapEventsAccepted
+        )
 
     internal fun onActionTimeZoneChanged() {
         renderer.invalidate()
@@ -639,14 +627,15 @@
     }
 
     internal fun onMockTime(intent: Intent) {
-        mockTime.speed = intent.getFloatExtra(
-            EXTRA_MOCK_TIME_SPEED_MULTIPLIER,
-            MOCK_TIME_DEFAULT_SPEED_MULTIPLIER
-        ).toDouble()
-        mockTime.minTime = intent.getLongExtra(
-            EXTRA_MOCK_TIME_WRAPPING_MIN_TIME,
-            MOCK_TIME_WRAPPING_MIN_TIME_DEFAULT
-        )
+        mockTime.speed =
+            intent
+                .getFloatExtra(EXTRA_MOCK_TIME_SPEED_MULTIPLIER, MOCK_TIME_DEFAULT_SPEED_MULTIPLIER)
+                .toDouble()
+        mockTime.minTime =
+            intent.getLongExtra(
+                EXTRA_MOCK_TIME_WRAPPING_MIN_TIME,
+                MOCK_TIME_WRAPPING_MIN_TIME_DEFAULT
+            )
         // If MOCK_TIME_WRAPPING_MIN_TIME_DEFAULT is specified then use the current time.
         if (mockTime.minTime == MOCK_TIME_WRAPPING_MIN_TIME_DEFAULT) {
             mockTime.minTime = systemTimeProvider.getSystemTimeMillis()
@@ -656,22 +645,24 @@
 
     /** The reference [Instant] time for editor preview images in milliseconds since the epoch. */
     public val previewReferenceInstant: Instant =
-        watchface.overridePreviewReferenceInstant ?: Instant.ofEpochMilli(
-            when (watchface.watchFaceType) {
-                WatchFaceType.ANALOG -> watchState.analogPreviewReferenceTimeMillis
-                WatchFaceType.DIGITAL -> watchState.digitalPreviewReferenceTimeMillis
-                else -> throw InvalidParameterException("Unrecognized watchFaceType")
-            }
-        )
+        watchface.overridePreviewReferenceInstant
+            ?: Instant.ofEpochMilli(
+                when (watchface.watchFaceType) {
+                    WatchFaceType.ANALOG -> watchState.analogPreviewReferenceTimeMillis
+                    WatchFaceType.DIGITAL -> watchState.digitalPreviewReferenceTimeMillis
+                    else -> throw InvalidParameterException("Unrecognized watchFaceType")
+                }
+            )
 
     internal var initComplete = false
 
     private fun interruptionFilter(it: Int) {
         // We are in mute mode in any of the following modes. The specific mode depends on the
         // device's implementation of "Do Not Disturb".
-        val inMuteMode = it == NotificationManager.INTERRUPTION_FILTER_NONE ||
-            it == NotificationManager.INTERRUPTION_FILTER_PRIORITY ||
-            it == NotificationManager.INTERRUPTION_FILTER_ALARMS
+        val inMuteMode =
+            it == NotificationManager.INTERRUPTION_FILTER_NONE ||
+                it == NotificationManager.INTERRUPTION_FILTER_PRIORITY ||
+                it == NotificationManager.INTERRUPTION_FILTER_ALARMS
         if (muteMode != inMuteMode) {
             muteMode = inMuteMode
             watchFaceHostApi.invalidate()
@@ -721,8 +712,9 @@
     init {
         renderer.watchFaceHostApi = watchFaceHostApi
 
-        if (renderer.additionalContentDescriptionLabels.isNotEmpty() ||
-            complicationSlotsManager.complicationSlots.isEmpty()
+        if (
+            renderer.additionalContentDescriptionLabels.isNotEmpty() ||
+                complicationSlotsManager.complicationSlots.isEmpty()
         ) {
             watchFaceHostApi.updateContentDescriptionLabels()
         }
@@ -772,11 +764,13 @@
     internal fun invalidateIfNotAnimating() {
         // Ensure we render a frame if the ComplicationSlot needs rendering, e.g. because it loaded
         // an image. However if we're animating there's no need to trigger an extra invalidation.
-        if (!renderer.shouldAnimate() || computeDelayTillNextFrame(
-                nextDrawTimeMillis,
-                systemTimeProvider.getSystemTimeMillis(),
-                Instant.now()
-            ) > MIN_PERCEPTIBLE_DELAY_MILLIS
+        if (
+            !renderer.shouldAnimate() ||
+                computeDelayTillNextFrame(
+                    nextDrawTimeMillis,
+                    systemTimeProvider.getSystemTimeMillis(),
+                    Instant.now()
+                ) > MIN_PERCEPTIBLE_DELAY_MILLIS
         ) {
             watchFaceHostApi.invalidate()
         }
@@ -816,38 +810,40 @@
             renderParameters: RenderParameters,
             instant: Instant,
             slotIdToComplicationData: Map<Int, ComplicationData>?
-        ): Bitmap = TraceEvent("WFEditorDelegate.takeScreenshot").use {
-            val oldComplicationData =
-                complicationSlotsManager.complicationSlots.values.associateBy(
-                    { it.id },
-                    { it.renderer.getData() }
-                )
+        ): Bitmap =
+            TraceEvent("WFEditorDelegate.takeScreenshot").use {
+                val oldComplicationData =
+                    complicationSlotsManager.complicationSlots.values.associateBy(
+                        { it.id },
+                        { it.renderer.getData() }
+                    )
 
-            slotIdToComplicationData?.let {
-                for ((id, complicationData) in it) {
-                    complicationSlotsManager.setComplicationDataUpdateSync(
-                        id,
-                        complicationData,
-                        instant
-                    )
+                slotIdToComplicationData?.let {
+                    for ((id, complicationData) in it) {
+                        complicationSlotsManager.setComplicationDataUpdateSync(
+                            id,
+                            complicationData,
+                            instant
+                        )
+                    }
                 }
-            }
-            val screenShot = renderer.takeScreenshot(
-                ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")),
-                renderParameters
-            )
-            slotIdToComplicationData?.let {
-                val now = getNow()
-                for ((id, complicationData) in oldComplicationData) {
-                    complicationSlotsManager.setComplicationDataUpdateSync(
-                        id,
-                        complicationData,
-                        now
+                val screenShot =
+                    renderer.takeScreenshot(
+                        ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")),
+                        renderParameters
                     )
+                slotIdToComplicationData?.let {
+                    val now = getNow()
+                    for ((id, complicationData) in oldComplicationData) {
+                        complicationSlotsManager.setComplicationDataUpdateSync(
+                            id,
+                            complicationData,
+                            now
+                        )
+                    }
                 }
+                return screenShot
             }
-            return screenShot
-        }
 
         override fun setComplicationSlotConfigExtrasChangeCallback(
             callback: WatchFace.ComplicationSlotConfigExtrasChangeCallback?
@@ -856,12 +852,13 @@
         }
 
         @SuppressLint("NewApi") // release
-        override fun onDestroy(): Unit = TraceEvent("WFEditorDelegate.onDestroy").use {
-            if (watchState.isHeadless) {
-                headlessWatchFaceImpl!!.release()
-                this@WatchFaceImpl.onDestroy()
+        override fun onDestroy(): Unit =
+            TraceEvent("WFEditorDelegate.onDestroy").use {
+                if (watchState.isHeadless) {
+                    headlessWatchFaceImpl!!.release()
+                    this@WatchFaceImpl.onDestroy()
+                }
             }
-        }
     }
 
     internal fun onDestroy() {
@@ -919,11 +916,12 @@
     /** @hide */
     @UiThread
     internal fun maybeUpdateDrawMode() {
-        var newDrawMode = if (watchState.isBatteryLowAndNotCharging.getValueOr(false)) {
-            DrawMode.LOW_BATTERY_INTERACTIVE
-        } else {
-            DrawMode.INTERACTIVE
-        }
+        var newDrawMode =
+            if (watchState.isBatteryLowAndNotCharging.getValueOr(false)) {
+                DrawMode.LOW_BATTERY_INTERACTIVE
+            } else {
+                DrawMode.INTERACTIVE
+            }
         // Watch faces may wish to run an animation while entering ambient mode and we let them
         // defer entering ambient mode.
         if (watchState.isAmbient.value!! && !renderer.shouldAnimate()) {
@@ -975,7 +973,6 @@
      * @param startTimeMillis The SystemTime in milliseconds at which we started rendering
      * @param currentTimeMillis The current SystemTime in milliseconds
      * @param nowInstant The current [Instant].
-     *
      * @hide
      */
     @UiThread
@@ -1008,13 +1005,14 @@
         }
 
         // If the delay is long then round to the beginning of the next period.
-        var nextFrameTimeMillis = if (updateRateMillis >= 500) {
-            val nextUnroundedTime = previousRequestedFrameTimeMillis + updateRateMillis
-            val delay = updateRateMillis - (nextUnroundedTime % updateRateMillis)
-            previousRequestedFrameTimeMillis + delay
-        } else {
-            previousRequestedFrameTimeMillis + updateRateMillis
-        }
+        var nextFrameTimeMillis =
+            if (updateRateMillis >= 500) {
+                val nextUnroundedTime = previousRequestedFrameTimeMillis + updateRateMillis
+                val delay = updateRateMillis - (nextUnroundedTime % updateRateMillis)
+                previousRequestedFrameTimeMillis + delay
+            } else {
+                previousRequestedFrameTimeMillis + updateRateMillis
+            }
 
         // If updateRateMillis is a multiple of 1 minute then align rendering to the beginning of
         // the minute.
@@ -1055,8 +1053,9 @@
 
         when (tapType) {
             TapType.UP -> {
-                if (tappedComplication.id != lastTappedComplicationId &&
-                    lastTappedComplicationId != null
+                if (
+                    tappedComplication.id != lastTappedComplicationId &&
+                        lastTappedComplicationId != null
                 ) {
                     // The UP event belongs to a different complication then the DOWN event,
                     // do not consider this a tap on either of them.
@@ -1077,112 +1076,118 @@
 
     @UiThread
     @RequiresApi(27)
-    internal fun renderWatchFaceToBitmap(
-        params: WatchFaceRenderParams
-    ): Bundle = TraceEvent("WatchFaceImpl.renderWatchFaceToBitmap").use {
-        val oldStyle = currentUserStyleRepository.userStyle.value
-        val instant = Instant.ofEpochMilli(params.calendarTimeMillis)
-
-        params.userStyle?.let {
-            currentUserStyleRepository.updateUserStyle(
-                UserStyle(UserStyleData(it), currentUserStyleRepository.schema)
-            )
-        }
-
-        val oldComplicationData =
-            complicationSlotsManager.complicationSlots.values.associateBy(
-                { it.id },
-                { it.renderer.getData() }
-            )
-
-        params.idAndComplicationDatumWireFormats?.let {
-            for (idAndData in it) {
-                complicationSlotsManager.setComplicationDataUpdateSync(
-                    idAndData.id, idAndData.complicationData.toApiComplicationData(), instant
-                )
-            }
-        }
-
-        val bitmap = renderer.takeScreenshot(
-            ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")),
-            RenderParameters(params.renderParametersWireFormat)
-        )
-
-        // Restore previous style & complicationSlots if required.
-        if (params.userStyle != null) {
-            currentUserStyleRepository.updateUserStyle(oldStyle)
-        }
-
-        if (params.idAndComplicationDatumWireFormats != null) {
-            val now = getNow()
-            for ((id, complicationData) in oldComplicationData) {
-                complicationSlotsManager.setComplicationDataUpdateSync(id, complicationData, now)
-            }
-        }
-
-        return SharedMemoryImage.ashmemWriteImageBundle(bitmap)
-    }
-
-    @UiThread
-    @RequiresApi(27)
-    internal fun renderComplicationToBitmap(
-        params: ComplicationRenderParams
-    ): Bundle? = TraceEvent("WatchFaceImpl.renderComplicationToBitmap").use {
-        val zonedDateTime = ZonedDateTime.ofInstant(
-            Instant.ofEpochMilli(params.calendarTimeMillis),
-            ZoneId.of("UTC")
-        )
-        return complicationSlotsManager[params.complicationSlotId]?.let {
+    internal fun renderWatchFaceToBitmap(params: WatchFaceRenderParams): Bundle =
+        TraceEvent("WatchFaceImpl.renderWatchFaceToBitmap").use {
             val oldStyle = currentUserStyleRepository.userStyle.value
             val instant = Instant.ofEpochMilli(params.calendarTimeMillis)
 
-            val newStyle = params.userStyle
-            if (newStyle != null) {
+            params.userStyle?.let {
                 currentUserStyleRepository.updateUserStyle(
-                    UserStyle(UserStyleData(newStyle), currentUserStyleRepository.schema)
+                    UserStyle(UserStyleData(it), currentUserStyleRepository.schema)
                 )
             }
 
-            val bounds = it.computeBounds(renderer.screenBounds)
-            val complicationBitmap =
-                Bitmap.createBitmap(bounds.width(), bounds.height(), Bitmap.Config.ARGB_8888)
-
-            var prevData: ComplicationData? = null
-            val screenshotComplicationData = params.complicationData
-            if (screenshotComplicationData != null) {
-                prevData = it.renderer.getData()
-                complicationSlotsManager.setComplicationDataUpdateSync(
-                    params.complicationSlotId,
-                    screenshotComplicationData.toApiComplicationData(),
-                    instant
+            val oldComplicationData =
+                complicationSlotsManager.complicationSlots.values.associateBy(
+                    { it.id },
+                    { it.renderer.getData() }
                 )
+
+            params.idAndComplicationDatumWireFormats?.let {
+                for (idAndData in it) {
+                    complicationSlotsManager.setComplicationDataUpdateSync(
+                        idAndData.id,
+                        idAndData.complicationData.toApiComplicationData(),
+                        instant
+                    )
+                }
             }
 
-            it.renderer.render(
-                Canvas(complicationBitmap),
-                Rect(0, 0, bounds.width(), bounds.height()),
-                zonedDateTime,
-                RenderParameters(params.renderParametersWireFormat),
-                params.complicationSlotId
-            )
-
-            // Restore previous ComplicationData & style if required.
-            if (prevData != null) {
-                val now = getNow()
-                complicationSlotsManager.setComplicationDataUpdateSync(
-                    params.complicationSlotId,
-                    prevData,
-                    now
+            val bitmap =
+                renderer.takeScreenshot(
+                    ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")),
+                    RenderParameters(params.renderParametersWireFormat)
                 )
-            }
 
-            if (newStyle != null) {
+            // Restore previous style & complicationSlots if required.
+            if (params.userStyle != null) {
                 currentUserStyleRepository.updateUserStyle(oldStyle)
             }
 
-            SharedMemoryImage.ashmemWriteImageBundle(complicationBitmap)
+            if (params.idAndComplicationDatumWireFormats != null) {
+                val now = getNow()
+                for ((id, complicationData) in oldComplicationData) {
+                    complicationSlotsManager.setComplicationDataUpdateSync(
+                        id,
+                        complicationData,
+                        now
+                    )
+                }
+            }
+
+            return SharedMemoryImage.ashmemWriteImageBundle(bitmap)
         }
-    }
+
+    @UiThread
+    @RequiresApi(27)
+    internal fun renderComplicationToBitmap(params: ComplicationRenderParams): Bundle? =
+        TraceEvent("WatchFaceImpl.renderComplicationToBitmap").use {
+            val zonedDateTime =
+                ZonedDateTime.ofInstant(
+                    Instant.ofEpochMilli(params.calendarTimeMillis),
+                    ZoneId.of("UTC")
+                )
+            return complicationSlotsManager[params.complicationSlotId]?.let {
+                val oldStyle = currentUserStyleRepository.userStyle.value
+                val instant = Instant.ofEpochMilli(params.calendarTimeMillis)
+
+                val newStyle = params.userStyle
+                if (newStyle != null) {
+                    currentUserStyleRepository.updateUserStyle(
+                        UserStyle(UserStyleData(newStyle), currentUserStyleRepository.schema)
+                    )
+                }
+
+                val bounds = it.computeBounds(renderer.screenBounds)
+                val complicationBitmap =
+                    Bitmap.createBitmap(bounds.width(), bounds.height(), Bitmap.Config.ARGB_8888)
+
+                var prevData: ComplicationData? = null
+                val screenshotComplicationData = params.complicationData
+                if (screenshotComplicationData != null) {
+                    prevData = it.renderer.getData()
+                    complicationSlotsManager.setComplicationDataUpdateSync(
+                        params.complicationSlotId,
+                        screenshotComplicationData.toApiComplicationData(),
+                        instant
+                    )
+                }
+
+                it.renderer.render(
+                    Canvas(complicationBitmap),
+                    Rect(0, 0, bounds.width(), bounds.height()),
+                    zonedDateTime,
+                    RenderParameters(params.renderParametersWireFormat),
+                    params.complicationSlotId
+                )
+
+                // Restore previous ComplicationData & style if required.
+                if (prevData != null) {
+                    val now = getNow()
+                    complicationSlotsManager.setComplicationDataUpdateSync(
+                        params.complicationSlotId,
+                        prevData,
+                        now
+                    )
+                }
+
+                if (newStyle != null) {
+                    currentUserStyleRepository.updateUserStyle(oldStyle)
+                }
+
+                SharedMemoryImage.ashmemWriteImageBundle(complicationBitmap)
+            }
+        }
 
     @UiThread
     internal fun dump(writer: IndentingPrintWriter) {
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceColors.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceColors.kt
index a74c8b6..c6b1d7b 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceColors.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceColors.kt
@@ -21,9 +21,8 @@
 import androidx.wear.watchface.data.WatchFaceColorsWireFormat
 
 /**
- * Provides information about the colors of a watch face, exposing the three most
- * representative colors. This may be used by the system to influence the colors used for the
- * system ui.
+ * Provides information about the colors of a watch face, exposing the three most representative
+ * colors. This may be used by the system to influence the colors used for the system ui.
  */
 @WatchFaceExperimental
 public class WatchFaceColors(
@@ -56,18 +55,20 @@
             "tertiaryColor=$tertiaryColor)"
     }
 
-    internal fun toWireFormat() = WatchFaceColorsWireFormat(
-        primaryColor.toArgb(),
-        secondaryColor.toArgb(),
-        tertiaryColor.toArgb()
-    )
+    internal fun toWireFormat() =
+        WatchFaceColorsWireFormat(
+            primaryColor.toArgb(),
+            secondaryColor.toArgb(),
+            tertiaryColor.toArgb()
+        )
 }
 
 /** @hide */
 @OptIn(WatchFaceExperimental::class)
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-fun WatchFaceColorsWireFormat.toApiFormat() = WatchFaceColors(
-    Color.valueOf(primaryColor),
-    Color.valueOf(secondaryColor),
-    Color.valueOf(tertiaryColor)
-)
\ No newline at end of file
+fun WatchFaceColorsWireFormat.toApiFormat() =
+    WatchFaceColors(
+        Color.valueOf(primaryColor),
+        Color.valueOf(secondaryColor),
+        Color.valueOf(tertiaryColor)
+    )
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceExperimental.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceExperimental.kt
index 13c27b4..758241a 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceExperimental.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceExperimental.kt
@@ -16,8 +16,6 @@
 
 package androidx.wear.watchface
 
-@RequiresOptIn(
-    "This is an experimental API that may change or be removed without warning."
-)
+@RequiresOptIn("This is an experimental API that may change or be removed without warning.")
 @Retention(AnnotationRetention.BINARY)
-annotation class WatchFaceExperimental
\ No newline at end of file
+annotation class WatchFaceExperimental
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceHostApi.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceHostApi.kt
index 4e70ee1..47dab79 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceHostApi.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceHostApi.kt
@@ -30,6 +30,7 @@
 
 /**
  * The API [WatchFaceImpl] uses to communicate with the system.
+ *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -67,13 +68,12 @@
      * Creates/updates ContentDescriptionLabels for text-to-speech screen readers to make your
      * [ComplicationSlot]s, buttons, and any other text on your watchface accessible.
      *
-     * Each label is a region of the screen in absolute pixel coordinates, along with
-     * time-dependent text, the labels are generated from data in [ComplicationSlotsManager],
+     * Each label is a region of the screen in absolute pixel coordinates, along with time-dependent
+     * text, the labels are generated from data in [ComplicationSlotsManager],
      * [Renderer.additionalContentDescriptionLabels], [Renderer.screenBounds] and
      * [Renderer.getMainClockElementBounds].
      *
-     * This is a fairly expensive operation so use it sparingly (e.g. do not call it in
-     * `onDraw()`).
+     * This is a fairly expensive operation so use it sparingly (e.g. do not call it in `onDraw()`).
      */
     public fun updateContentDescriptionLabels()
 
@@ -87,8 +87,7 @@
      * received will match the type chosen by the user. If no complication data source has been
      * configured, data of type [ComplicationData.TYPE_NOT_CONFIGURED] will be received.
      *
-     * Ids here are chosen by the watch face to represent each complication and can be any
-     * integer.
+     * Ids here are chosen by the watch face to represent each complication and can be any integer.
      */
     public fun setActiveComplicationSlots(complicationSlotIds: IntArray)
 
@@ -97,9 +96,9 @@
      *
      * Accepts a list of custom complication data sources to attempt to set as the default
      * complication data source for the specified watch face [ComplicationSlot] id. The custom
-     * complication data sources are tried in turn, if the first doesn't exist then the next one
-     * is tried and so on. If none of them exist then the specified system complication data
-     * source is set as the default instead.
+     * complication data sources are tried in turn, if the first doesn't exist then the next one is
+     * tried and so on. If none of them exist then the specified system complication data source is
+     * set as the default instead.
      *
      * This will do nothing if the complication data sources are not installed, or if the specified
      * type is not supported by the complication data sources, or if the user has already selected a
@@ -118,12 +117,11 @@
      *
      * @param complicationSlotId The [ComplicationSlot] id.
      * @param dataSources data sources The list of non-system complication data sources to try in
-     * order before falling back to
-     * fallbackSystemProvider. This list may be null.
+     *   order before falling back to fallbackSystemProvider. This list may be null.
      * @param fallbackSystemProvider The system complication data source to use if none of the
-     * complication data sources could be used.
+     *   complication data sources could be used.
      * @param type The type of complication data that should be provided. Must be one of the types
-     * defined in [ComplicationData].
+     *   defined in [ComplicationData].
      */
     public fun setDefaultComplicationDataSourceWithFallbacks(
         complicationSlotId: Int,
@@ -133,8 +131,7 @@
     )
 
     /** Schedules a call to [Renderer.renderInternal] to draw the next frame. */
-    @UiThread
-    public fun invalidate()
+    @UiThread public fun invalidate()
 
     public fun postInvalidate(delay: Duration = Duration.ZERO)
 
@@ -148,8 +145,7 @@
      * Sent by the system at the top of the minute. This may trigger rendering if SysUI hasn't sent
      * called setWatchUiState.
      */
-    @UiThread
-    public fun onActionTimeTick() {}
+    @UiThread public fun onActionTimeTick() {}
 
     /** The engine must notify the system that the watch face's colors have changed. */
     @OptIn(WatchFaceExperimental::class)
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 b3ee562..d2db005 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
@@ -16,7 +16,6 @@
 
 package androidx.wear.watchface
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.app.KeyguardManager
 import android.content.ComponentName
 import android.content.Context
@@ -36,6 +35,7 @@
 import android.os.RemoteException
 import android.os.Trace
 import android.service.wallpaper.WallpaperService
+import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.support.wearable.watchface.Constants
 import android.support.wearable.watchface.IWatchFaceService
 import android.support.wearable.watchface.accessibility.AccessibilityUtils
@@ -122,14 +122,14 @@
 internal const val SURFACE_DRAW_TIMEOUT_MS = 100L
 
 /**
- * WatchFaceService and [WatchFace] are a pair of classes intended to handle much of
- * the boilerplate needed to implement a watch face without being too opinionated. The suggested
- * structure of a WatchFaceService based watch face is:
+ * WatchFaceService and [WatchFace] are a pair of classes intended to handle much of the boilerplate
+ * needed to implement a watch face without being too opinionated. The suggested structure of a
+ * WatchFaceService based watch face is:
  *
  * @sample androidx.wear.watchface.samples.kDocCreateExampleWatchFaceService
  *
- * Sub classes of WatchFaceService are expected to implement [createWatchFace] which is the
- * factory for making [WatchFace]s. If the watch faces uses complications then
+ * Sub classes of WatchFaceService are expected to implement [createWatchFace] which is the factory
+ * for making [WatchFace]s. If the watch faces uses complications then
  * [createComplicationSlotsManager] should be overridden. All [ComplicationSlot]s are assumed to be
  * enumerated up upfront and passed as a collection into [ComplicationSlotsManager]'s constructor
  * which is returned by [createComplicationSlotsManager].
@@ -138,37 +138,33 @@
  * hands and ticks, etc...) and companion editing is directly supported via [UserStyleSchema] and
  * [UserStyleSetting]. To enable support for styling override [createUserStyleSchema].
  *
- * WatchFaceService can expose pre-populated style presets by overriding [createUserStyleFlavors]
- * or via XML (see below). Each presents represents separate style configured with [UserStyle]
- * and complication slot policies configured with
- * [androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy]. The system will
- * only access flavors if metadata tag is present in manifest:
- *
+ * WatchFaceService can expose pre-populated style presets by overriding [createUserStyleFlavors] or
+ * via XML (see below). Each presents represents separate style configured with [UserStyle] and
+ * complication slot policies configured with
+ * [androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy]. The system will only
+ * access flavors if metadata tag is present in manifest:
  * ```
  *    <meta-data
  *      android:name="androidx.wear.watchface.FLAVORS_SUPPORTED"
  *      android:value="true" />
  * ```
  *
- * WatchFaces are initially constructed on a background thread before being used exclusively on
- * the ui thread afterwards. There is a memory barrier between construction and rendering so no
- * special threading primitives are required.
+ * WatchFaces are initially constructed on a background thread before being used exclusively on the
+ * ui thread afterwards. There is a memory barrier between construction and rendering so no special
+ * threading primitives are required.
  *
  * To aid debugging watch face animations, WatchFaceService allows you to speed up or slow down
- * time, and to loop between two instants.  This is controlled by MOCK_TIME_INTENT intents
- * with a float extra called "androidx.wear.watchface.extra.MOCK_TIME_SPEED_MULTIPLIE" and to long
- * extras called "androidx.wear.watchface.extra.MOCK_TIME_WRAPPING_MIN_TIME" and
+ * time, and to loop between two instants. This is controlled by MOCK_TIME_INTENT intents with a
+ * float extra called "androidx.wear.watchface.extra.MOCK_TIME_SPEED_MULTIPLIE" and to long extras
+ * called "androidx.wear.watchface.extra.MOCK_TIME_WRAPPING_MIN_TIME" and
  * "androidx.wear.watchface.extra.MOCK_TIME_WRAPPING_MAX_TIME" (which are UTC time in milliseconds).
  * If minTime is omitted or set to -1 then the current time is sampled as minTime.
  *
- * E.g, to make time go twice as fast:
- *  adb shell am broadcast -a androidx.wear.watchface.MockTime \
- *            --ef androidx.wear.watchface.extra.MOCK_TIME_SPEED_MULTIPLIER 2.0
- *
+ * E.g., to make time go twice as fast: adb shell am broadcast -a androidx.wear.watchface.MockTime \
+ * --ef androidx.wear.watchface.extra.MOCK_TIME_SPEED_MULTIPLIER 2.0
  *
  * To use the sample on watch face editor UI, import the wear:wear-watchface-editor-samples library
  * and add the following into your watch face's AndroidManifest.xml:
- *
  * ```
  * <activity
  *   android:name="androidx.wear.watchface.editor.sample.WatchFaceConfigActivity"
@@ -186,7 +182,6 @@
  *
  * To register a WatchFaceService with the system add a <service> tag to the <application> in your
  * watch face's AndroidManifest.xml:
- *
  * ```
  *  <service
  *    android:name=".MyWatchFaceServiceClass"
@@ -222,22 +217,19 @@
  * can choose to allow the user to create multiple instances (each with their own styling and a
  * distinct [WatchState.watchFaceInstanceId]) by adding this meta-data to your watch face's
  * manifest:
- *
  * ```
  *    <meta-data
  *      android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
  *      android:value="true" />
  * ```
  *
- *
  * A watch face can declare the [UserStyleSchema], [ComplicationSlot]s and [UserStyleFlavors] in
  * XML. The main advantage is simplicity for the developer, however meta data queries (see
- * androidx.wear.watchface.client.WatchFaceMetadataClient) are faster because they can be
- * performed without having to bind to the WatchFaceService.
+ * androidx.wear.watchface.client.WatchFaceMetadataClient) are faster because they can be performed
+ * without having to bind to the WatchFaceService.
  *
- * To use xml inflation, add an androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition
- * meta date tag to your service:
- *
+ * To use xml inflation, add an androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition meta
+ * date tag to your service:
  * ```
  *     <meta-data
  *         android:name="androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition"
@@ -245,7 +237,6 @@
  * ```
  *
  * And the linked xml/my_watchface_definition resource must contain a XmlWatchFace node. E.g.:
- *
  * ```
  *     <XmlWatchFace xmlns:android="http://schemas.android.com/apk/res/android"
  *             xmlns:app="http://schemas.android.com/apk/res-auto">
@@ -290,8 +281,8 @@
  *    </XmlWatchFace>
  * ```
  *
- * If you use resources references to specify identifiers, they should be locale independent
- * (i.e. translatable="false").
+ * If you use resources references to specify identifiers, they should be locale independent (i.e.
+ * translatable="false").
  *
  * If you use XmlSchemaAndComplicationSlotsDefinition then you shouldn't override
  * [createUserStyleSchema] or [createComplicationSlotsManager]. However if <ComplicationSlot> tags
@@ -345,11 +336,9 @@
         internal const val MAX_REASONABLE_SCHEMA_WIRE_SIZE_BYTES = 50000
 
         /** The maximum reasonable wire size for an Icon in a [UserStyleSchema] in pixels. */
-        @Px
-        internal const val MAX_REASONABLE_SCHEMA_ICON_WIDTH = 400
+        @Px internal const val MAX_REASONABLE_SCHEMA_ICON_WIDTH = 400
 
-        @Px
-        internal const val MAX_REASONABLE_SCHEMA_ICON_HEIGHT = 400
+        @Px internal const val MAX_REASONABLE_SCHEMA_ICON_HEIGHT = 400
 
         /** @hide */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -363,8 +352,8 @@
         }
 
         /**
-         * Waits for deferredValue using runBlocking, then executes the task on the thread
-         * specified by executionThread param.
+         * Waits for deferredValue using runBlocking, then executes the task on the thread specified
+         * by executionThread param.
          */
         private fun <R, V> awaitDeferredThenRunTaskOnThread(
             engine: EngineWrapper?,
@@ -372,41 +361,42 @@
             executionThread: ExecutionThread,
             task: (deferredValue: V) -> R,
             waitDeferred: suspend (engine: EngineWrapper) -> V
-        ): R? = TraceEvent(traceName).use {
-            if (engine == null) {
-                Log.w(TAG, "Task $traceName posted after close(), ignoring.")
-                return null
-            }
-            runBlocking {
-                try {
-                    withTimeout(AWAIT_DEFERRED_TIMEOUT) {
-                        val deferredValue = waitDeferred(engine)
-                        when (executionThread) {
-                            ExecutionThread.UI -> {
-                                withContext(engine.uiThreadCoroutineScope.coroutineContext) {
+        ): R? =
+            TraceEvent(traceName).use {
+                if (engine == null) {
+                    Log.w(TAG, "Task $traceName posted after close(), ignoring.")
+                    return null
+                }
+                runBlocking {
+                    try {
+                        withTimeout(AWAIT_DEFERRED_TIMEOUT) {
+                            val deferredValue = waitDeferred(engine)
+                            when (executionThread) {
+                                ExecutionThread.UI -> {
+                                    withContext(engine.uiThreadCoroutineScope.coroutineContext) {
+                                        task(deferredValue)
+                                    }
+                                }
+                                ExecutionThread.CURRENT -> {
                                     task(deferredValue)
                                 }
                             }
-
-                            ExecutionThread.CURRENT -> {
-                                task(deferredValue)
-                            }
                         }
+                    } catch (e: Exception) {
+                        Log.e(TAG, "Operation $traceName failed", e)
+                        throw e
                     }
-                } catch (e: Exception) {
-                    Log.e(TAG, "Operation $traceName failed", e)
-                    throw e
                 }
             }
-        }
 
         internal fun <R> awaitDeferredWatchFaceImplThenRunOnUiThreadBlocking(
             engine: EngineWrapper?,
             traceName: String,
             task: (watchFaceImpl: WatchFaceImpl) -> R
-        ): R? = awaitDeferredThenRunTaskOnThread(engine, traceName, ExecutionThread.UI, task) {
-            it.deferredWatchFaceImpl.await()
-        }
+        ): R? =
+            awaitDeferredThenRunTaskOnThread(engine, traceName, ExecutionThread.UI, task) {
+                it.deferredWatchFaceImpl.await()
+            }
 
         /**
          * During startup tasks will run before those posted by
@@ -416,9 +406,10 @@
             engine: EngineWrapper?,
             traceName: String,
             task: (watchFace: WatchFace) -> R
-        ): R? = awaitDeferredThenRunTaskOnThread(engine, traceName, ExecutionThread.UI, task) {
-            it.deferredWatchFace.await()
-        }
+        ): R? =
+            awaitDeferredThenRunTaskOnThread(engine, traceName, ExecutionThread.UI, task) {
+                it.deferredWatchFace.await()
+            }
 
         /**
          * During startup tasks will run before those posted by
@@ -430,18 +421,19 @@
             traceName: String,
             executionThread: ExecutionThread,
             task: (earlyInitDetails: EarlyInitDetails) -> R
-        ): R? = awaitDeferredThenRunTaskOnThread(engine, traceName, executionThread, task) {
-            it.deferredEarlyInitDetails.await()
-        }
+        ): R? =
+            awaitDeferredThenRunTaskOnThread(engine, traceName, executionThread, task) {
+                it.deferredEarlyInitDetails.await()
+            }
     }
 
     /**
      * The context used to resolve resources. Unlocks future work.
+     *
      * @hide
      */
     protected open val resourcesContext: Context
-        @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-        get() = this
+        @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) get() = this
 
     /**
      * Returns the id of the XmlSchemaAndComplicationSlotsDefinition XML resource or 0 if it can't
@@ -453,18 +445,18 @@
     @Suppress("DEPRECATION")
     public open fun getXmlWatchFaceResourceId(): Int {
         return try {
-            packageManager.getServiceInfo(
-                ComponentName(this, javaClass),
-                PackageManager.GET_META_DATA
-            ).metaData.getInt(XML_WATCH_FACE_METADATA)
+            packageManager
+                .getServiceInfo(ComponentName(this, javaClass), PackageManager.GET_META_DATA)
+                .metaData
+                .getInt(XML_WATCH_FACE_METADATA)
         } catch (e: Exception) {
             // If an exception occurs here, we'll ignore it and return 0 meaning it can't be fond.
             0
         }
     }
 
-    private val
-        xmlSchemaAndComplicationSlotsDefinition: XmlSchemaAndComplicationSlotsDefinition by lazy {
+    private val xmlSchemaAndComplicationSlotsDefinition:
+        XmlSchemaAndComplicationSlotsDefinition by lazy {
         val resourceId = getXmlWatchFaceResourceId()
         if (resourceId == 0) {
             XmlSchemaAndComplicationSlotsDefinition(
@@ -473,10 +465,7 @@
                 flavors = null
             )
         } else {
-            XmlSchemaAndComplicationSlotsDefinition.inflate(
-                resources,
-                resources.getXml(resourceId)
-            )
+            XmlSchemaAndComplicationSlotsDefinition.inflate(resources, resources.getXml(resourceId))
         }
     }
 
@@ -488,7 +477,7 @@
      * [createUserStyleFlavors] and [createWatchFace]. This is called on a background thread.
      *
      * @return The [UserStyleSchema] to create a [CurrentUserStyleRepository] with, which is passed
-     * to [createComplicationSlotsManager] and [createWatchFace].
+     *   to [createComplicationSlotsManager] and [createWatchFace].
      */
     @WorkerThread
     @Suppress("Deprecation") // userStyleSettings
@@ -501,12 +490,12 @@
      * If the WatchFaceService's manifest doesn't define a
      * androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition meta data tag then override
      * this factory method to create a non-empty [ComplicationSlotsManager]. This manager will be
-     * passed to [createUserStyleFlavors] and [createWatchFace].
-     * This will be called from a background thread but the ComplicationSlotsManager should be
-     * accessed exclusively from the UiThread afterwards.
+     * passed to [createUserStyleFlavors] and [createWatchFace]. This will be called from a
+     * background thread but the ComplicationSlotsManager should be accessed exclusively from the
+     * UiThread afterwards.
      *
      * @param currentUserStyleRepository The [CurrentUserStyleRepository] constructed using the
-     * [UserStyleSchema] returned by [createUserStyleSchema].
+     *   [UserStyleSchema] returned by [createUserStyleSchema].
      * @return The [ComplicationSlotsManager] to pass into [createWatchFace].
      */
     @WorkerThread
@@ -553,7 +542,7 @@
      * must override this method. A [NotImplementedError] exception will be thrown if you don't.
      *
      * @param currentUserStyleRepository The [CurrentUserStyleRepository] constructed using the
-     * [UserStyleSchema] returned by [createUserStyleSchema].
+     *   [UserStyleSchema] returned by [createUserStyleSchema].
      */
     @Suppress("DEPRECATION")
     @WorkerThread
@@ -569,24 +558,22 @@
     /**
      * If the WatchFaceService's manifest doesn't define a
      * androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition meta data tag then override
-     * this factory method to create non-empty [UserStyleFlavors].
-     * This is called on a background thread. The system reads the flavors once and changes may be
-     * ignored until the APK is updated.
-     * Metadata tag "androidx.wear.watchface.FLAVORS_SUPPORTED" should be added to let the system
-     * know the service supports flavors.
+     * this factory method to create non-empty [UserStyleFlavors]. This is called on a background
+     * thread. The system reads the flavors once and changes may be ignored until the APK is
+     * updated. Metadata tag "androidx.wear.watchface.FLAVORS_SUPPORTED" should be added to let the
+     * system know the service supports flavors.
      *
      * @param currentUserStyleRepository The [CurrentUserStyleRepository] constructed using the
-     * [UserStyleSchema] returned by [createUserStyleSchema].
+     *   [UserStyleSchema] returned by [createUserStyleSchema].
      * @param complicationSlotsManager The [ComplicationSlotsManager] returned by
-     * [createComplicationSlotsManager]
+     *   [createComplicationSlotsManager]
      * @return The [UserStyleFlavors], which is exposed to the system.
      */
     @WorkerThread
     protected open fun createUserStyleFlavors(
         currentUserStyleRepository: CurrentUserStyleRepository,
         complicationSlotsManager: ComplicationSlotsManager
-    ): UserStyleFlavors =
-        xmlSchemaAndComplicationSlotsDefinition.flavors ?: UserStyleFlavors()
+    ): UserStyleFlavors = xmlSchemaAndComplicationSlotsDefinition.flavors ?: UserStyleFlavors()
 
     /**
      * Override this factory method to create your WatchFaceImpl. This method will be called by the
@@ -601,9 +588,9 @@
      * @param surfaceHolder The [SurfaceHolder] to pass to the [Renderer]'s constructor.
      * @param watchState The [WatchState] for the watch face.
      * @param complicationSlotsManager The [ComplicationSlotsManager] returned by
-     * [createComplicationSlotsManager].
+     *   [createComplicationSlotsManager].
      * @param currentUserStyleRepository The [CurrentUserStyleRepository] constructed using the
-     * [UserStyleSchema] returned by [createUserStyleSchema].
+     *   [UserStyleSchema] returned by [createUserStyleSchema].
      * @return A [WatchFace] whose [Renderer] uses the provided [surfaceHolder].
      */
     @WorkerThread
@@ -634,8 +621,7 @@
      *
      * @hide
      */
-    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    open fun forceIsVisibleForTesting() = false
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) open fun forceIsVisibleForTesting() = false
 
     /* Interface for setting the main thread priority. This exists for testing. */
     internal interface MainThreadPriorityDelegate {
@@ -644,16 +630,17 @@
         fun setInteractivePriority()
     }
 
-    internal open fun getMainThreadPriorityDelegate() = object : MainThreadPriorityDelegate {
-        override fun setNormalPriority() {
-            // NB pID is the same as the main thread tID.
-            Process.setThreadPriority(Process.myPid(), Process.THREAD_PRIORITY_DEFAULT)
-        }
+    internal open fun getMainThreadPriorityDelegate() =
+        object : MainThreadPriorityDelegate {
+            override fun setNormalPriority() {
+                // NB pID is the same as the main thread tID.
+                Process.setThreadPriority(Process.myPid(), Process.THREAD_PRIORITY_DEFAULT)
+            }
 
-        override fun setInteractivePriority() {
-            Process.setThreadPriority(Process.myPid(), Process.THREAD_PRIORITY_DISPLAY)
+            override fun setInteractivePriority() {
+                Process.setThreadPriority(Process.myPid(), Process.THREAD_PRIORITY_DISPLAY)
+            }
         }
-    }
 
     /** Used for testing calls to invalidate. */
     internal open fun onInvalidate() {}
@@ -669,6 +656,7 @@
 
     /**
      * Interface for getting the current system time.
+     *
      * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -682,25 +670,33 @@
 
     /** @hide */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    public open fun getSystemTimeProvider(): SystemTimeProvider = object : SystemTimeProvider {
-        override fun getSystemTimeMillis() = System.currentTimeMillis()
+    public open fun getSystemTimeProvider(): SystemTimeProvider =
+        object : SystemTimeProvider {
+            override fun getSystemTimeMillis() = System.currentTimeMillis()
 
-        override fun getSystemTimeZoneId() = ZoneId.systemDefault()
-    }
+            override fun getSystemTimeZoneId() = ZoneId.systemDefault()
+        }
 
     /** This is open for testing. The background thread is used for watch face initialization. */
     internal open fun getBackgroundThreadHandlerImpl(): Handler {
         synchronized(this) {
             if (backgroundThread == null) {
-                backgroundThread = HandlerThread(
-                    "WatchFaceBackground",
-                    Process.THREAD_PRIORITY_FOREGROUND // The user is waiting on WF init.
-                ).apply {
-                    uncaughtExceptionHandler = Thread.UncaughtExceptionHandler { _, throwable ->
-                        Log.e(TAG, "Uncaught exception on watch face background thread", throwable)
-                    }
-                    start()
-                }
+                backgroundThread =
+                    HandlerThread(
+                            "WatchFaceBackground",
+                            Process.THREAD_PRIORITY_FOREGROUND // The user is waiting on WF init.
+                        )
+                        .apply {
+                            uncaughtExceptionHandler =
+                                Thread.UncaughtExceptionHandler { _, throwable ->
+                                    Log.e(
+                                        TAG,
+                                        "Uncaught exception on watch face background thread",
+                                        throwable
+                                    )
+                                }
+                            start()
+                        }
             }
             return Handler(backgroundThread!!.looper)
         }
@@ -721,8 +717,7 @@
      *
      * Note that this cannot override platform-dependent versioning, which means inconsistency.
      */
-    @VisibleForTesting
-    internal open val wearSdkVersion = Build.VERSION.SDK_INT
+    @VisibleForTesting internal open val wearSdkVersion = Build.VERSION.SDK_INT
 
     /** [Choreographer] isn't supposed to be mocked, so we use a thin wrapper. */
     internal interface ChoreographerWrapper {
@@ -731,28 +726,30 @@
     }
 
     /** This is open to allow mocking. */
-    internal open fun getChoreographer(): ChoreographerWrapper = object : ChoreographerWrapper {
-        private val choreographer = Choreographer.getInstance()
+    internal open fun getChoreographer(): ChoreographerWrapper =
+        object : ChoreographerWrapper {
+            private val choreographer = Choreographer.getInstance()
 
-        init {
-            require(Looper.myLooper() == Looper.getMainLooper()) {
-                "Creating choreographer not on the main thread"
+            init {
+                require(Looper.myLooper() == Looper.getMainLooper()) {
+                    "Creating choreographer not on the main thread"
+                }
+            }
+
+            override fun postFrameCallback(callback: Choreographer.FrameCallback) {
+                choreographer.postFrameCallback(callback)
+            }
+
+            override fun removeFrameCallback(callback: Choreographer.FrameCallback) {
+                choreographer.removeFrameCallback(callback)
             }
         }
 
-        override fun postFrameCallback(callback: Choreographer.FrameCallback) {
-            choreographer.postFrameCallback(callback)
-        }
-
-        override fun removeFrameCallback(callback: Choreographer.FrameCallback) {
-            choreographer.removeFrameCallback(callback)
-        }
-    }
-
     internal open fun cancelCoroutineScopesInOnDestroy() = true
 
     /**
      * This is open for use by tests, it allows them to inject a custom [SurfaceHolder].
+     *
      * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -769,19 +766,18 @@
     internal open fun readDirectBootPrefs(
         context: Context,
         fileName: String
-    ): WallpaperInteractiveWatchFaceInstanceParams? = TraceEvent(
-        "WatchFaceService.readDirectBootPrefs"
-    ).use {
-        try {
-            val directBootContext = context.createDeviceProtectedStorageContext()
-            val reader = directBootContext.openFileInput(fileName)
-            reader.use {
-                ParcelUtils.fromInputStream<WallpaperInteractiveWatchFaceInstanceParams>(reader)
+    ): WallpaperInteractiveWatchFaceInstanceParams? =
+        TraceEvent("WatchFaceService.readDirectBootPrefs").use {
+            try {
+                val directBootContext = context.createDeviceProtectedStorageContext()
+                val reader = directBootContext.openFileInput(fileName)
+                reader.use {
+                    ParcelUtils.fromInputStream<WallpaperInteractiveWatchFaceInstanceParams>(reader)
+                }
+            } catch (e: Exception) {
+                null
             }
-        } catch (e: Exception) {
-            null
         }
-    }
 
     /**
      * Writes WallpaperInteractiveWatchFaceInstanceParams to a file. This is only used in the
@@ -791,30 +787,26 @@
         context: Context,
         fileName: String,
         prefs: WallpaperInteractiveWatchFaceInstanceParams
-    ): Unit = TraceEvent("WatchFaceService.writeDirectBootPrefs").use {
-        val directBootContext = context.createDeviceProtectedStorageContext()
-        val writer = directBootContext.openFileOutput(fileName, Context.MODE_PRIVATE)
-        writer.use {
-            ParcelUtils.toOutputStream(prefs, writer)
+    ): Unit =
+        TraceEvent("WatchFaceService.writeDirectBootPrefs").use {
+            val directBootContext = context.createDeviceProtectedStorageContext()
+            val writer = directBootContext.openFileOutput(fileName, Context.MODE_PRIVATE)
+            writer.use { ParcelUtils.toOutputStream(prefs, writer) }
         }
-    }
 
     internal open fun readComplicationDataCacheByteArray(
         context: Context,
         fileName: String
-    ): ByteArray? = TraceEvent(
-        "WatchFaceService.readComplicationCache"
-    ).use {
-        try {
-            val directBootContext = context.createDeviceProtectedStorageContext()
-            val reader = directBootContext.openFileInput(fileName)
-            reader.use {
-                it.readBytes()
+    ): ByteArray? =
+        TraceEvent("WatchFaceService.readComplicationCache").use {
+            try {
+                val directBootContext = context.createDeviceProtectedStorageContext()
+                val reader = directBootContext.openFileInput(fileName)
+                reader.use { it.readBytes() }
+            } catch (e: Exception) {
+                null
             }
-        } catch (e: Exception) {
-            null
         }
-    }
 
     internal open fun writeComplicationDataCacheByteArray(
         context: Context,
@@ -823,79 +815,78 @@
     ) {
         val directBootContext = context.createDeviceProtectedStorageContext()
         val writer = directBootContext.openFileOutput(fileName, Context.MODE_PRIVATE)
-        writer.use {
-            writer.write(byteArray)
-        }
+        writer.use { writer.write(byteArray) }
     }
 
     internal fun periodicallyWriteComplicationDataCache(
         context: Context,
         fileName: String,
         complicationsFlow: MutableStateFlow<List<IdAndComplicationDataWireFormat>>
-    ) = TraceEvent(
-        "WatchFaceService.writeComplicationCache"
-    ).use {
-        val backgroundThreadCoroutineScope =
-            CoroutineScope(getBackgroundThreadHandler().asCoroutineDispatcher().immediate)
-        backgroundThreadCoroutineScope.launch {
-            complicationsFlow.collect { complicationDataWireFormats ->
-                try {
-                    // The combination of 'collect' which conflates the updates and adding a delay
-                    // here ensures that we write updates at least 1 second apart. The delay is at
-                    // the beginning to delay writes during WF init.
-                    delay(1000)
-                    val stream = ByteArrayOutputStream()
-                    val objectOutputStream = ObjectOutputStream(stream)
-                    objectOutputStream.writeInt(complicationDataWireFormats.size)
-                    for (wireData in complicationDataWireFormats) {
-                        objectOutputStream.writeInt(wireData.id)
-                        objectOutputStream.writeObject(
-                            if ((wireData.complicationData.persistencePolicy and
-                                    ComplicationPersistencePolicies.DO_NOT_PERSIST) != 0
-                            ) {
-                                NoDataComplicationData().asWireComplicationData()
-                            } else {
-                                wireData.complicationData
-                            }
-                        )
+    ) =
+        TraceEvent("WatchFaceService.writeComplicationCache").use {
+            val backgroundThreadCoroutineScope =
+                CoroutineScope(getBackgroundThreadHandler().asCoroutineDispatcher().immediate)
+            backgroundThreadCoroutineScope.launch {
+                complicationsFlow.collect { complicationDataWireFormats ->
+                    try {
+                        // The combination of 'collect' which conflates the updates and adding a
+                        // delay
+                        // here ensures that we write updates at least 1 second apart. The delay is
+                        // at
+                        // the beginning to delay writes during WF init.
+                        delay(1000)
+                        val stream = ByteArrayOutputStream()
+                        val objectOutputStream = ObjectOutputStream(stream)
+                        objectOutputStream.writeInt(complicationDataWireFormats.size)
+                        for (wireData in complicationDataWireFormats) {
+                            objectOutputStream.writeInt(wireData.id)
+                            objectOutputStream.writeObject(
+                                if (
+                                    (wireData.complicationData.persistencePolicy and
+                                        ComplicationPersistencePolicies.DO_NOT_PERSIST) != 0
+                                ) {
+                                    NoDataComplicationData().asWireComplicationData()
+                                } else {
+                                    wireData.complicationData
+                                }
+                            )
+                        }
+                        objectOutputStream.close()
+                        val byteArray = stream.toByteArray()
+                        writeComplicationDataCacheByteArray(context, fileName, byteArray)
+                    } catch (e: Exception) {
+                        Log.w(TAG, "Failed to write to complication cache due to exception", e)
                     }
-                    objectOutputStream.close()
-                    val byteArray = stream.toByteArray()
-                    writeComplicationDataCacheByteArray(context, fileName, byteArray)
-                } catch (e: Exception) {
-                    Log.w(TAG, "Failed to write to complication cache due to exception", e)
                 }
             }
         }
-    }
 
     internal fun readComplicationDataCache(
         context: Context,
         fileName: String
-    ): List<IdAndComplicationDataWireFormat>? = TraceEvent(
-        "WatchFaceService.readComplicationCache"
-    ).use {
-        return readComplicationDataCacheByteArray(context, fileName)?.let {
-            try {
-                val objectInputStream = ObjectInputStream(ByteArrayInputStream(it))
-                val complicationData = ArrayList<IdAndComplicationDataWireFormat>()
-                val numComplications = objectInputStream.readInt()
-                for (i in 0 until numComplications) {
-                    complicationData.add(
-                        IdAndComplicationDataWireFormat(
-                            objectInputStream.readInt(),
-                            (objectInputStream.readObject() as WireComplicationData)
+    ): List<IdAndComplicationDataWireFormat>? =
+        TraceEvent("WatchFaceService.readComplicationCache").use {
+            return readComplicationDataCacheByteArray(context, fileName)?.let {
+                try {
+                    val objectInputStream = ObjectInputStream(ByteArrayInputStream(it))
+                    val complicationData = ArrayList<IdAndComplicationDataWireFormat>()
+                    val numComplications = objectInputStream.readInt()
+                    for (i in 0 until numComplications) {
+                        complicationData.add(
+                            IdAndComplicationDataWireFormat(
+                                objectInputStream.readInt(),
+                                (objectInputStream.readObject() as WireComplicationData)
+                            )
                         )
-                    )
+                    }
+                    objectInputStream.close()
+                    complicationData
+                } catch (e: Exception) {
+                    Log.w(TAG, "Failed to read to complication cache due to exception", e)
+                    null
                 }
-                objectInputStream.close()
-                complicationData
-            } catch (e: Exception) {
-                Log.w(TAG, "Failed to read to complication cache due to exception", e)
-                null
             }
         }
-    }
 
     /** Reads user style from a file. This is only used in the pre-android R flow. */
     internal fun readPrefs(context: Context, fileName: String): UserStyleWireFormat {
@@ -997,7 +988,9 @@
                 // setDefaultComplicationProviderWithFallbacks albeit with more calls.
                 if (fallbackSystemDataSource != WatchFaceImpl.NO_DEFAULT_DATA_SOURCE) {
                     iWatchFaceService.setDefaultSystemComplicationProvider(
-                        complicationSlotId, fallbackSystemDataSource, type
+                        complicationSlotId,
+                        fallbackSystemDataSource,
+                        type
                     )
                 }
 
@@ -1006,7 +999,9 @@
                     // and the list is probably an ArrayList so it's probably O(n) in practice.
                     for (i in dataSources.size - 1 downTo 0) {
                         iWatchFaceService.setDefaultComplicationProvider(
-                            complicationSlotId, dataSources[i], type
+                            complicationSlotId,
+                            dataSources[i],
+                            type
                         )
                     }
                 }
@@ -1023,7 +1018,8 @@
 
             try {
                 iWatchFaceService.setActiveComplications(
-                    complicationSlotIds, /* updateAll= */ !complicationsActivated
+                    complicationSlotIds,
+                    /* updateAll= */ !complicationsActivated
                 )
                 complicationsActivated = true
             } catch (e: RemoteException) {
@@ -1117,44 +1113,44 @@
             )
         }
 
-        private suspend fun maybeCreateWatchFace(): Unit = TraceEvent(
-            "EngineWrapper.maybeCreateWatchFace"
-        ).use {
-            // To simplify handling of watch face state, we only construct the [WatchFaceImpl]
-            // once iWatchFaceService have been initialized and pending properties sent.
-            if (iWatchFaceServiceInitialized() &&
-                pendingProperties != null && !engineWrapper.watchFaceCreatedOrPending()
-            ) {
-                watchFaceInitStarted = true
+        private suspend fun maybeCreateWatchFace(): Unit =
+            TraceEvent("EngineWrapper.maybeCreateWatchFace").use {
+                // To simplify handling of watch face state, we only construct the [WatchFaceImpl]
+                // once iWatchFaceService have been initialized and pending properties sent.
+                if (
+                    iWatchFaceServiceInitialized() &&
+                        pendingProperties != null &&
+                        !engineWrapper.watchFaceCreatedOrPending()
+                ) {
+                    watchFaceInitStarted = true
 
-                // Apply immutable properties to mutableWatchState before creating the watch face.
-                onPropertiesChanged(pendingProperties!!)
-                pendingProperties = null
+                    // Apply immutable properties to mutableWatchState before creating the watch
+                    // face.
+                    onPropertiesChanged(pendingProperties!!)
+                    pendingProperties = null
 
-                val watchState = engineWrapper.mutableWatchState.asWatchState()
-                engineWrapper.createWatchFaceInternal(
-                    watchState, null, "maybeCreateWatchFace"
-                )
+                    val watchState = engineWrapper.mutableWatchState.asWatchState()
+                    engineWrapper.createWatchFaceInternal(watchState, null, "maybeCreateWatchFace")
 
-                // Wait for watchface init to complete.
-                val watchFaceImpl = engineWrapper.deferredWatchFaceImpl.await()
+                    // Wait for watchface init to complete.
+                    val watchFaceImpl = engineWrapper.deferredWatchFaceImpl.await()
 
-                val backgroundAction = pendingBackgroundAction
-                if (backgroundAction != null) {
-                    onBackgroundAction(backgroundAction)
-                    pendingBackgroundAction = null
+                    val backgroundAction = pendingBackgroundAction
+                    if (backgroundAction != null) {
+                        onBackgroundAction(backgroundAction)
+                        pendingBackgroundAction = null
+                    }
+                    if (pendingSetWatchFaceStyle) {
+                        onRequestStyle()
+                    }
+                    val visibility = pendingVisibilityChanged
+                    if (visibility != null) {
+                        engineWrapper.onVisibilityChanged(visibility)
+                        pendingVisibilityChanged = null
+                    }
+                    watchFaceImpl.complicationSlotsManager.onComplicationsUpdated()
                 }
-                if (pendingSetWatchFaceStyle) {
-                    onRequestStyle()
-                }
-                val visibility = pendingVisibilityChanged
-                if (visibility != null) {
-                    engineWrapper.onVisibilityChanged(visibility)
-                    pendingVisibilityChanged = null
-                }
-                watchFaceImpl.complicationSlotsManager.onComplicationsUpdated()
             }
-        }
     }
 
     internal class EarlyInitDetails(
@@ -1170,7 +1166,8 @@
         private val uiThreadHandler: Handler,
         private val backgroundThreadHandler: Handler,
         headless: Boolean
-    ) : WallpaperService.Engine(),
+    ) :
+        WallpaperService.Engine(),
         WatchFaceHostApi,
         AccessibilityManager.AccessibilityStateChangeListener {
         internal val backgroundThreadCoroutineScope =
@@ -1197,33 +1194,33 @@
         @get:RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         public val deferredWatchFaceImpl = CompletableDeferred<WatchFaceImpl>()
 
-        @VisibleForTesting
-        public var deferredValidation = CompletableDeferred<Unit>()
+        @VisibleForTesting public var deferredValidation = CompletableDeferred<Unit>()
 
         /**
-         * [deferredSurfaceHolder] will complete after [onSurfaceChanged], before then it's not
-         * safe to create a UiThread OpenGL context.
+         * [deferredSurfaceHolder] will complete after [onSurfaceChanged], before then it's not safe
+         * to create a UiThread OpenGL context.
          */
         private var deferredSurfaceHolder = CompletableDeferred<SurfaceHolder>()
 
         private val pendingUpdateTime: CancellableUniqueTask =
             CancellableUniqueTask(getUiThreadHandler())
 
-        internal val mutableWatchState = getMutableWatchState().apply {
-            isVisible.value = this@EngineWrapper.isVisible || forceIsVisibleForTesting()
-            // Watch faces with the old [onSetBinder] init flow don't know whether the system
-            // is ambient until they have received a background action wallpaper command.
-            // That's supposed to get sent very quickly, but in case it doesn't we initially
-            // assume we're not in ambient mode which should be correct most of the time.
-            isAmbient.value = false
-            isHeadless = headless
-            isLocked.value =
-                (getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager).isDeviceLocked
-        }
+        internal val mutableWatchState =
+            getMutableWatchState().apply {
+                isVisible.value = this@EngineWrapper.isVisible || forceIsVisibleForTesting()
+                // Watch faces with the old [onSetBinder] init flow don't know whether the system
+                // is ambient until they have received a background action wallpaper command.
+                // That's supposed to get sent very quickly, but in case it doesn't we initially
+                // assume we're not in ambient mode which should be correct most of the time.
+                isAmbient.value = false
+                isHeadless = headless
+                isLocked.value =
+                    (getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager).isDeviceLocked
+            }
 
         /**
-         * Whether or not we allow watch faces to animate. In some tests or for headless
-         * rendering (for remote config) we don't want this.
+         * Whether or not we allow watch faces to animate. In some tests or for headless rendering
+         * (for remote config) we don't want this.
          */
         internal var allowWatchfaceToAnimate = allowWatchFaceToAnimate()
 
@@ -1243,28 +1240,29 @@
          */
         private var frameCallbackPending = false
 
-        private val frameCallback = object : Choreographer.FrameCallback {
-            @SuppressWarnings("SyntheticAccessor")
-            override fun doFrame(frameTimeNs: Long) {
-                if (destroyed) {
-                    return
-                }
-                require(allowWatchfaceToAnimate) {
-                    "Choreographer doFrame called but allowWatchfaceToAnimate is false"
-                }
-                frameCallbackPending = false
+        private val frameCallback =
+            object : Choreographer.FrameCallback {
+                @SuppressWarnings("SyntheticAccessor")
+                override fun doFrame(frameTimeNs: Long) {
+                    if (destroyed) {
+                        return
+                    }
+                    require(allowWatchfaceToAnimate) {
+                        "Choreographer doFrame called but allowWatchfaceToAnimate is false"
+                    }
+                    frameCallbackPending = false
 
-                val watchFaceImpl: WatchFaceImpl? = getWatchFaceImplOrNull()
+                    val watchFaceImpl: WatchFaceImpl? = getWatchFaceImplOrNull()
 
-                /**
-                 * It's possible we went ambient by the time our callback occurred in which case
-                 * there's no point drawing.
-                 */
-                if (watchFaceImpl?.renderer?.shouldAnimate() != false) {
-                    draw(watchFaceImpl)
+                    /**
+                     * It's possible we went ambient by the time our callback occurred in which case
+                     * there's no point drawing.
+                     */
+                    if (watchFaceImpl?.renderer?.shouldAnimate() != false) {
+                        draw(watchFaceImpl)
+                    }
                 }
             }
-        }
 
         private val invalidateRunnable = Runnable(this::invalidate)
 
@@ -1323,9 +1321,7 @@
             }
 
             return if (deferredWatchFaceImpl.isCompleted) {
-                runBlocking {
-                    deferredWatchFaceImpl.await()
-                }
+                runBlocking { deferredWatchFaceImpl.await() }
             } else {
                 null
             }
@@ -1337,9 +1333,7 @@
          */
         internal fun getEarlyInitDetailsOrNull(): EarlyInitDetails? {
             return if (deferredEarlyInitDetails.isCompleted) {
-                runBlocking {
-                    deferredEarlyInitDetails.await()
-                }
+                runBlocking { deferredEarlyInitDetails.await() }
             } else {
                 null
             }
@@ -1352,125 +1346,134 @@
         /** Note this function should only be called once. */
         @SuppressWarnings("NewApi")
         @UiThread
-        private fun maybeCreateWCSApi(): Unit = TraceEvent(
-            "EngineWrapper.maybeCreateWCSApi"
-        ).use {
-            // If this is a headless instance then we don't want to create a WCS instance.
-            if (mutableWatchState.isHeadless) {
-                return
-            }
+        private fun maybeCreateWCSApi(): Unit =
+            TraceEvent("EngineWrapper.maybeCreateWCSApi").use {
+                // If this is a headless instance then we don't want to create a WCS instance.
+                if (mutableWatchState.isHeadless) {
+                    return
+                }
 
-            val pendingWallpaperInstance =
-                InteractiveInstanceManager.takePendingWallpaperInteractiveWatchFaceInstance()
+                val pendingWallpaperInstance =
+                    InteractiveInstanceManager.takePendingWallpaperInteractiveWatchFaceInstance()
 
-            // In a direct boot scenario attempt to load the previously serialized parameters.
-            if (pendingWallpaperInstance == null && wearSdkVersion >= Build.VERSION_CODES.R) {
-                val params = readDirectBootPrefs(_context, DIRECT_BOOT_PREFS)
-                directBootParams = params
-                // In tests a watchface may already have been created.
-                if (params != null && !watchFaceCreatedOrPending()) {
-                    val asyncTraceEvent = AsyncTraceEvent("DirectBoot")
-                    try {
-                        val instance = createInteractiveInstance(params, "DirectBoot")
-                        // WatchFace init is async so its possible we now have a pending
-                        // WallpaperInteractiveWatchFaceInstance request.
-                        InteractiveInstanceManager
-                            .takePendingWallpaperInteractiveWatchFaceInstance()?.let {
-                                require(it.params.instanceId == params.instanceId) {
-                                    "Mismatch between pendingWallpaperInstance id " +
-                                        "${it.params.instanceId} and constructed instance id " +
-                                        params.instanceId
+                // In a direct boot scenario attempt to load the previously serialized parameters.
+                if (pendingWallpaperInstance == null && wearSdkVersion >= Build.VERSION_CODES.R) {
+                    val params = readDirectBootPrefs(_context, DIRECT_BOOT_PREFS)
+                    directBootParams = params
+                    // In tests a watchface may already have been created.
+                    if (params != null && !watchFaceCreatedOrPending()) {
+                        val asyncTraceEvent = AsyncTraceEvent("DirectBoot")
+                        try {
+                            val instance = createInteractiveInstance(params, "DirectBoot")
+                            // WatchFace init is async so its possible we now have a pending
+                            // WallpaperInteractiveWatchFaceInstance request.
+                            InteractiveInstanceManager
+                                .takePendingWallpaperInteractiveWatchFaceInstance()
+                                ?.let {
+                                    require(it.params.instanceId == params.instanceId) {
+                                        "Mismatch between pendingWallpaperInstance id " +
+                                            "${it.params.instanceId} and constructed instance id " +
+                                            params.instanceId
+                                    }
+                                    it.callback.onInteractiveWatchFaceCreated(instance)
                                 }
-                                it.callback.onInteractiveWatchFaceCreated(instance)
-                            }
-                    } catch (e: Exception) {
-                        InteractiveInstanceManager
-                            .takePendingWallpaperInteractiveWatchFaceInstance()?.let {
-                                Log.e(
-                                    TAG,
-                                    "takePendingWallpaperInteractiveWatchFaceInstance failed"
+                        } catch (e: Exception) {
+                            InteractiveInstanceManager
+                                .takePendingWallpaperInteractiveWatchFaceInstance()
+                                ?.let {
+                                    Log.e(
+                                        TAG,
+                                        "takePendingWallpaperInteractiveWatchFaceInstance failed"
+                                    )
+                                    it.callback.onInteractiveWatchFaceCrashed(CrashInfoParcel(e))
+                                }
+                        } finally {
+                            asyncTraceEvent.close()
+                        }
+                    }
+                }
+
+                // If there's a pending WallpaperInteractiveWatchFaceInstance then create it.
+                if (pendingWallpaperInstance != null) {
+                    val asyncTraceEvent =
+                        AsyncTraceEvent("Create PendingWallpaperInteractiveWatchFaceInstance")
+                    val instance: InteractiveWatchFaceImpl? =
+                        try {
+                            val instance =
+                                createInteractiveInstance(
+                                    pendingWallpaperInstance.params,
+                                    "Boot with pendingWallpaperInstance"
                                 )
-                                it.callback.onInteractiveWatchFaceCrashed(
-                                    CrashInfoParcel(e)
-                                )
-                            }
-                    } finally {
-                        asyncTraceEvent.close()
+                            pendingWallpaperInstance.callback.onInteractiveWatchFaceCreated(
+                                instance
+                            )
+                            instance
+                        } catch (e: Exception) {
+                            Log.e(TAG, "createInteractiveInstance failed")
+                            pendingWallpaperInstance.callback.onInteractiveWatchFaceCrashed(
+                                CrashInfoParcel(e)
+                            )
+                            null
+                        }
+                    asyncTraceEvent.close()
+                    val params = pendingWallpaperInstance.params
+                    directBootParams = params
+
+                    // Writing even small amounts of data to storage is quite slow and if we did
+                    // that immediately, we'd delay the first frame which is rendered via
+                    // onSurfaceRedrawNeeded. By posting this task we expedite first frame
+                    // rendering. There is a small window where the direct boot could be stale if
+                    // the watchface crashed but this seems unlikely in practice.
+                    backgroundThreadCoroutineScope.launch {
+                        // Wait for init to complete before writing the direct boot prefs, or we
+                        // might
+                        // sneak in before higher priority init tasks.
+                        instance?.engine?.deferredWatchFaceImpl?.await()
+
+                        // We don't want to display complications in direct boot mode so replace
+                        // with an
+                        // empty list. NB we can't actually serialise complications anyway so that's
+                        // just as well...
+                        params.idAndComplicationDataWireFormats = emptyList()
+
+                        writeDirectBootPrefs(_context, DIRECT_BOOT_PREFS, params)
                     }
                 }
             }
 
-            // If there's a pending WallpaperInteractiveWatchFaceInstance then create it.
-            if (pendingWallpaperInstance != null) {
-                val asyncTraceEvent =
-                    AsyncTraceEvent("Create PendingWallpaperInteractiveWatchFaceInstance")
-                val instance: InteractiveWatchFaceImpl? = try {
-                    val instance = createInteractiveInstance(
-                        pendingWallpaperInstance.params,
-                        "Boot with pendingWallpaperInstance"
-                    )
-                    pendingWallpaperInstance.callback.onInteractiveWatchFaceCreated(instance)
-                    instance
-                } catch (e: Exception) {
-                    Log.e(TAG, "createInteractiveInstance failed")
-                    pendingWallpaperInstance.callback.onInteractiveWatchFaceCrashed(
-                        CrashInfoParcel(e)
-                    )
-                    null
-                }
-                asyncTraceEvent.close()
-                val params = pendingWallpaperInstance.params
-                directBootParams = params
-
-                // Writing even small amounts of data to storage is quite slow and if we did
-                // that immediately, we'd delay the first frame which is rendered via
-                // onSurfaceRedrawNeeded. By posting this task we expedite first frame
-                // rendering. There is a small window where the direct boot could be stale if
-                // the watchface crashed but this seems unlikely in practice.
-                backgroundThreadCoroutineScope.launch {
-                    // Wait for init to complete before writing the direct boot prefs, or we might
-                    // sneak in before higher priority init tasks.
-                    instance?.engine?.deferredWatchFaceImpl?.await()
-
-                    // We don't want to display complications in direct boot mode so replace with an
-                    // empty list. NB we can't actually serialise complications anyway so that's
-                    // just as well...
-                    params.idAndComplicationDataWireFormats = emptyList()
-
-                    writeDirectBootPrefs(_context, DIRECT_BOOT_PREFS, params)
-                }
-            }
-        }
-
         @UiThread
-        internal fun ambientTickUpdate(): Unit = TraceEvent("EngineWrapper.ambientTickUpdate").use {
-            if (mutableWatchState.isAmbient.value!!) {
-                ambientUpdateWakelock.acquire(SURFACE_DRAW_TIMEOUT_MS)
-                try {
-                    // It's unlikely an ambient tick would be sent to a watch face that hasn't
-                    // loaded yet (if that did happen then draw would be a NOP). The watch face will
-                    // render at least once upon loading so we don't need to do anything special
-                    // here.
-                    val watchFaceImpl: WatchFaceImpl? = getWatchFaceImplOrNull()
-                    draw(watchFaceImpl)
-                } catch (t: Throwable) {
-                    Log.e(TAG, "ambientTickUpdate failed", t)
-                } finally {
-                    ambientUpdateWakelock.release()
+        internal fun ambientTickUpdate(): Unit =
+            TraceEvent("EngineWrapper.ambientTickUpdate").use {
+                if (mutableWatchState.isAmbient.value!!) {
+                    ambientUpdateWakelock.acquire(SURFACE_DRAW_TIMEOUT_MS)
+                    try {
+                        // It's unlikely an ambient tick would be sent to a watch face that hasn't
+                        // loaded yet (if that did happen then draw would be a NOP). The watch face
+                        // will
+                        // render at least once upon loading so we don't need to do anything special
+                        // here.
+                        val watchFaceImpl: WatchFaceImpl? = getWatchFaceImplOrNull()
+                        draw(watchFaceImpl)
+                    } catch (t: Throwable) {
+                        Log.e(TAG, "ambientTickUpdate failed", t)
+                    } finally {
+                        ambientUpdateWakelock.release()
+                    }
                 }
             }
-        }
 
         @UiThread
         internal fun setWatchUiState(watchUiState: WatchUiState, fromSysUi: Boolean) {
-            if (firstSetWatchUiState ||
-                watchUiState.inAmbientMode != mutableWatchState.isAmbient.value
+            if (
+                firstSetWatchUiState ||
+                    watchUiState.inAmbientMode != mutableWatchState.isAmbient.value
             ) {
                 mutableWatchState.isAmbient.value = watchUiState.inAmbientMode
             }
 
-            if (firstSetWatchUiState ||
-                watchUiState.interruptionFilter != mutableWatchState.interruptionFilter.value
+            if (
+                firstSetWatchUiState ||
+                    watchUiState.interruptionFilter != mutableWatchState.interruptionFilter.value
             ) {
                 mutableWatchState.interruptionFilter.value = watchUiState.interruptionFilter
             }
@@ -1483,21 +1486,20 @@
             }
         }
 
-        fun setUserStyle(userStyle: UserStyleWireFormat): Unit = TraceEvent(
-            "EngineWrapper.setUserStyle"
-        ).use {
-            uiThreadCoroutineScope.launch {
-                try {
-                    setUserStyleImpl(
-                        deferredEarlyInitDetails.await().userStyleRepository,
-                        userStyle
-                    )
-                } catch (e: Exception) {
-                    Log.e(TAG, "setUserStyle failed", e)
-                    throw e
+        fun setUserStyle(userStyle: UserStyleWireFormat): Unit =
+            TraceEvent("EngineWrapper.setUserStyle").use {
+                uiThreadCoroutineScope.launch {
+                    try {
+                        setUserStyleImpl(
+                            deferredEarlyInitDetails.await().userStyleRepository,
+                            userStyle
+                        )
+                    } catch (e: Exception) {
+                        Log.e(TAG, "setUserStyle failed", e)
+                        throw e
+                    }
                 }
             }
-        }
 
         @UiThread
         private fun setUserStyleImpl(
@@ -1541,8 +1543,7 @@
             // These properties never change so set them once only.
             if (!immutableSystemStateDone) {
                 mutableWatchState.hasLowBitAmbient = deviceConfig.hasLowBitAmbient
-                mutableWatchState.hasBurnInProtection =
-                    deviceConfig.hasBurnInProtection
+                mutableWatchState.hasBurnInProtection = deviceConfig.hasBurnInProtection
                 mutableWatchState.analogPreviewReferenceTimeMillis =
                     deviceConfig.analogPreviewReferenceTimeMillis
                 mutableWatchState.digitalPreviewReferenceTimeMillis =
@@ -1555,20 +1556,18 @@
         @AnyThread
         internal fun setComplicationDataList(
             complicationDataWireFormats: List<IdAndComplicationDataWireFormat>
-        ): Unit = TraceEvent("EngineWrapper.setComplicationDataList").use {
-            complicationsFlow.update { base ->
-                // We need to merge the updates.
-                val complicationUpdateMap = base.associate {
-                    Pair(it.id, it.complicationData)
-                }.toMutableMap()
-                for (data in complicationDataWireFormats) {
-                    complicationUpdateMap[data.id] = data.complicationData
-                }
-                complicationUpdateMap.map {
-                    IdAndComplicationDataWireFormat(it.key, it.value)
+        ): Unit =
+            TraceEvent("EngineWrapper.setComplicationDataList").use {
+                complicationsFlow.update { base ->
+                    // We need to merge the updates.
+                    val complicationUpdateMap =
+                        base.associate { Pair(it.id, it.complicationData) }.toMutableMap()
+                    for (data in complicationDataWireFormats) {
+                        complicationUpdateMap[data.id] = data.complicationData
+                    }
+                    complicationUpdateMap.map { IdAndComplicationDataWireFormat(it.key, it.value) }
                 }
             }
-        }
 
         @WorkerThread
         private fun listenForComplicationChanges(
@@ -1622,76 +1621,78 @@
 
         override fun getBackgroundThreadHandler(): Handler = backgroundThreadHandler
 
-        override fun onCreate(
-            holder: SurfaceHolder
-        ): Unit = TraceEvent("EngineWrapper.onCreate").use {
-            super.onCreate(holder)
-            ambientUpdateWakelock =
-                (getSystemService(Context.POWER_SERVICE) as PowerManager)
-                    .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "$TAG:[AmbientUpdate]")
-            // Disable reference counting for our wake lock so that we can use the same wake lock
-            // for user code in invalidate() and after that for having canvas drawn.
-            ambientUpdateWakelock.setReferenceCounted(false)
+        override fun onCreate(holder: SurfaceHolder): Unit =
+            TraceEvent("EngineWrapper.onCreate").use {
+                super.onCreate(holder)
+                ambientUpdateWakelock =
+                    (getSystemService(Context.POWER_SERVICE) as PowerManager).newWakeLock(
+                        PowerManager.PARTIAL_WAKE_LOCK,
+                        "$TAG:[AmbientUpdate]"
+                    )
+                // Disable reference counting for our wake lock so that we can use the same wake
+                // lock
+                // for user code in invalidate() and after that for having canvas drawn.
+                ambientUpdateWakelock.setReferenceCounted(false)
 
-            // Rerender watch face if the surface changes.
-            holder.addCallback(
-                object : SurfaceHolder.Callback {
-                    override fun surfaceChanged(
-                        holder: SurfaceHolder,
-                        format: Int,
-                        width: Int,
-                        height: Int
-                    ) {
-                        // We can sometimes get this callback before the watchface has been created
-                        // in which case it's safe to drop it.
-                        if (deferredWatchFaceImpl.isCompleted) {
-                            invalidate()
+                // Rerender watch face if the surface changes.
+                holder.addCallback(
+                    object : SurfaceHolder.Callback {
+                        override fun surfaceChanged(
+                            holder: SurfaceHolder,
+                            format: Int,
+                            width: Int,
+                            height: Int
+                        ) {
+                            // We can sometimes get this callback before the watchface has been
+                            // created
+                            // in which case it's safe to drop it.
+                            if (deferredWatchFaceImpl.isCompleted) {
+                                invalidate()
+                            }
                         }
-                    }
 
-                    override fun surfaceDestroyed(holder: SurfaceHolder) {
-                    }
+                        override fun surfaceDestroyed(holder: SurfaceHolder) {}
 
-                    override fun surfaceCreated(holder: SurfaceHolder) {
+                        override fun surfaceCreated(holder: SurfaceHolder) {}
                     }
-                }
-            )
-        }
+                )
+            }
 
         override fun onSurfaceChanged(
             holder: SurfaceHolder,
             format: Int,
             width: Int,
             height: Int
-        ): Unit = TraceEvent("EngineWrapper.onSurfaceChanged").use {
-            super.onSurfaceChanged(holder, format, width, height)
-            deferredSurfaceHolder.complete(holder)
-        }
-
-        override fun onApplyWindowInsets(
-            insets: WindowInsets?
-        ): Unit = TraceEvent("EngineWrapper.onApplyWindowInsets").use {
-            super.onApplyWindowInsets(insets)
-            @Px val chinHeight =
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
-                    ChinHeightApi30.extractFromWindowInsets(insets)
-                } else {
-                    ChinHeightApi25.extractFromWindowInsets(insets)
-                }
-            if (immutableChinHeightDone) {
-                // The chin size cannot change so this should be called only once.
-                if (mutableWatchState.chinHeight != chinHeight) {
-                    Log.w(
-                        TAG,
-                        "unexpected chin size change ignored: " +
-                            "${mutableWatchState.chinHeight} != $chinHeight"
-                    )
-                }
-                return
+        ): Unit =
+            TraceEvent("EngineWrapper.onSurfaceChanged").use {
+                super.onSurfaceChanged(holder, format, width, height)
+                deferredSurfaceHolder.complete(holder)
             }
-            mutableWatchState.chinHeight = chinHeight
-            immutableChinHeightDone = true
-        }
+
+        override fun onApplyWindowInsets(insets: WindowInsets?): Unit =
+            TraceEvent("EngineWrapper.onApplyWindowInsets").use {
+                super.onApplyWindowInsets(insets)
+                @Px
+                val chinHeight =
+                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+                        ChinHeightApi30.extractFromWindowInsets(insets)
+                    } else {
+                        ChinHeightApi25.extractFromWindowInsets(insets)
+                    }
+                if (immutableChinHeightDone) {
+                    // The chin size cannot change so this should be called only once.
+                    if (mutableWatchState.chinHeight != chinHeight) {
+                        Log.w(
+                            TAG,
+                            "unexpected chin size change ignored: " +
+                                "${mutableWatchState.chinHeight} != $chinHeight"
+                        )
+                    }
+                    return
+                }
+                mutableWatchState.chinHeight = chinHeight
+                immutableChinHeightDone = true
+            }
 
         private fun quitBackgroundThreadIfCreated() {
             synchronized(this) {
@@ -1701,59 +1702,63 @@
         }
 
         @UiThread
-        override fun onDestroy(): Unit = TraceEvent("EngineWrapper.onDestroy").use {
-            super.onDestroy()
-            pendingUpdateTime.cancel()
-            if (!mutableWatchState.isHeadless) {
-                mainThreadPriorityDelegate.setNormalPriority()
-            }
+        override fun onDestroy(): Unit =
+            TraceEvent("EngineWrapper.onDestroy").use {
+                super.onDestroy()
+                pendingUpdateTime.cancel()
+                if (!mutableWatchState.isHeadless) {
+                    mainThreadPriorityDelegate.setNormalPriority()
+                }
 
-            destroyed = true
-            backgroundThreadCoroutineScope.cancel()
-            quitBackgroundThreadIfCreated()
-            uiThreadHandler.removeCallbacks(invalidateRunnable)
-            if (this::choreographer.isInitialized) {
-                choreographer.removeFrameCallback(frameCallback)
-            }
-            if (this::interactiveInstanceId.isInitialized) {
-                InteractiveInstanceManager.deleteInstance(interactiveInstanceId)
-            }
-            stopListeningForAccessibilityStateChanges()
+                destroyed = true
+                backgroundThreadCoroutineScope.cancel()
+                quitBackgroundThreadIfCreated()
+                uiThreadHandler.removeCallbacks(invalidateRunnable)
+                if (this::choreographer.isInitialized) {
+                    choreographer.removeFrameCallback(frameCallback)
+                }
+                if (this::interactiveInstanceId.isInitialized) {
+                    InteractiveInstanceManager.deleteInstance(interactiveInstanceId)
+                }
+                stopListeningForAccessibilityStateChanges()
 
-            // NB user code could throw an exception so do this last.
-            try {
-                runBlocking {
-                    // The WatchFaceImpl is created on the UiThread so if we get here and it's not
-                    // created we can be sure it'll never be created hence we don't need to destroy
-                    // it.
-                    if (deferredWatchFaceImpl.isCompleted) {
-                        deferredWatchFaceImpl.await().onDestroy()
-                    } else if (deferredWatchFace.isCompleted) {
-                        // However we should destroy the renderer if its been created.
-                        deferredWatchFace.await().renderer.onDestroy()
+                // NB user code could throw an exception so do this last.
+                try {
+                    runBlocking {
+                        // The WatchFaceImpl is created on the UiThread so if we get here and it's
+                        // not
+                        // created we can be sure it'll never be created hence we don't need to
+                        // destroy
+                        // it.
+                        if (deferredWatchFaceImpl.isCompleted) {
+                            deferredWatchFaceImpl.await().onDestroy()
+                        } else if (deferredWatchFace.isCompleted) {
+                            // However we should destroy the renderer if its been created.
+                            deferredWatchFace.await().renderer.onDestroy()
+                        }
+                    }
+                } catch (e: Exception) {
+                    // Throwing an exception here leads to a cascade of errors, log instead.
+                    Log.e(
+                        TAG,
+                        "WatchFace exception observed in onDestroy (may have occurred during init)",
+                        e
+                    )
+                } finally {
+                    if (this@EngineWrapper::ambientUpdateWakelock.isInitialized) {
+                        // Make sure the WakeLock doesn't retain the WatchFaceService.
+                        ambientUpdateWakelock.release()
+                    }
+
+                    // StateFlows may retain WatchFaceService via the coroutineScope. Call cancel to
+                    // ensure resources are released. Headless watch faces call
+                    // cancelCoroutineScopes
+                    // themselves since they call onDestroy from a coroutine context.
+                    if (cancelCoroutineScopesInOnDestroy() && !mutableWatchState.isHeadless) {
+                        cancelCoroutineScopes()
                     }
                 }
-            } catch (e: Exception) {
-                // Throwing an exception here leads to a cascade of errors, log instead.
-                Log.e(
-                    TAG,
-                    "WatchFace exception observed in onDestroy (may have occurred during init)",
-                    e
-                )
-            } finally {
-                if (this@EngineWrapper::ambientUpdateWakelock.isInitialized) {
-                    // Make sure the WakeLock doesn't retain the WatchFaceService.
-                    ambientUpdateWakelock.release()
-                }
-
-                // StateFlows may retain WatchFaceService via the coroutineScope. Call cancel to
-                // ensure resources are released. Headless watch faces call cancelCoroutineScopes
-                // themselves since they call onDestroy from a coroutine context.
-                if (cancelCoroutineScopesInOnDestroy() && !mutableWatchState.isHeadless) {
-                    cancelCoroutineScopes()
-                }
             }
-        }
 
         internal fun cancelCoroutineScopes() {
             uiThreadCoroutineScope.cancel()
@@ -1783,32 +1788,26 @@
                     uiThreadHandler.runOnHandlerWithTracing("onCommand COMMAND_AMBIENT_UPDATE") {
                         ambientTickUpdate()
                     }
-
                 Constants.COMMAND_BACKGROUND_ACTION ->
                     uiThreadHandler.runOnHandlerWithTracing("onCommand COMMAND_BACKGROUND_ACTION") {
                         wslFlow.onBackgroundAction(extras!!)
                     }
-
                 Constants.COMMAND_COMPLICATION_DATA ->
                     uiThreadHandler.runOnHandlerWithTracing("onCommand COMMAND_COMPLICATION_DATA") {
                         wslFlow.onComplicationSlotDataUpdate(extras!!)
                     }
-
                 Constants.COMMAND_REQUEST_STYLE ->
                     uiThreadHandler.runOnHandlerWithTracing("onCommand COMMAND_REQUEST_STYLE") {
                         wslFlow.onRequestStyle()
                     }
-
                 Constants.COMMAND_SET_BINDER ->
                     uiThreadHandler.runOnHandlerWithTracing("onCommand COMMAND_SET_BINDER") {
                         wslFlow.onSetBinder(extras!!)
                     }
-
                 Constants.COMMAND_SET_PROPERTIES ->
                     uiThreadHandler.runOnHandlerWithTracing("onCommand COMMAND_SET_PROPERTIES") {
                         wslFlow.onPropertiesChanged(extras!!)
                     }
-
                 Constants.COMMAND_TAP ->
                     uiThreadCoroutineScope.runBlockingWithTracing("onCommand COMMAND_TAP") {
                         val watchFaceImpl = deferredWatchFaceImpl.await()
@@ -1817,13 +1816,10 @@
                             TapEvent(
                                 x,
                                 y,
-                                Instant.ofEpochMilli(
-                                    systemTimeProvider.getSystemTimeMillis()
-                                )
+                                Instant.ofEpochMilli(systemTimeProvider.getSystemTimeMillis())
                             )
                         )
                     }
-
                 Constants.COMMAND_TOUCH ->
                     uiThreadCoroutineScope.runBlockingWithTracing("onCommand COMMAND_TOUCH") {
                         val watchFaceImpl = deferredWatchFaceImpl.await()
@@ -1832,13 +1828,10 @@
                             TapEvent(
                                 x,
                                 y,
-                                Instant.ofEpochMilli(
-                                    systemTimeProvider.getSystemTimeMillis()
-                                )
+                                Instant.ofEpochMilli(systemTimeProvider.getSystemTimeMillis())
                             )
                         )
                     }
-
                 Constants.COMMAND_TOUCH_CANCEL ->
                     uiThreadCoroutineScope.runBlockingWithTracing(
                         "onCommand COMMAND_TOUCH_CANCEL"
@@ -1849,15 +1842,11 @@
                             TapEvent(
                                 x,
                                 y,
-                                Instant.ofEpochMilli(
-                                    systemTimeProvider.getSystemTimeMillis()
-                                )
+                                Instant.ofEpochMilli(systemTimeProvider.getSystemTimeMillis())
                             )
                         )
                     }
-
-                else -> {
-                }
+                else -> {}
             }
             return null
         }
@@ -1868,8 +1857,9 @@
         @WorkerThread
         internal fun getDefaultProviderPolicies(): Array<IdTypeAndDefaultProviderPolicyWireFormat> {
             return createComplicationSlotsManager(
-                CurrentUserStyleRepository(createUserStyleSchema())
-            ).getDefaultProviderPolicies()
+                    CurrentUserStyleRepository(createUserStyleSchema())
+                )
+                .getDefaultProviderPolicies()
         }
 
         /** This will be called from a binder thread. */
@@ -1881,172 +1871,169 @@
         internal fun getUserStyleFlavorsWireFormat(): UserStyleFlavorsWireFormat {
             val currentUserStyleRepository = CurrentUserStyleRepository(createUserStyleSchema())
             return createUserStyleFlavors(
-                currentUserStyleRepository,
-                createComplicationSlotsManager(currentUserStyleRepository)
-            ).toWireFormat()
+                    currentUserStyleRepository,
+                    createComplicationSlotsManager(currentUserStyleRepository)
+                )
+                .toWireFormat()
         }
 
         /** This will be called from a binder thread. */
         @OptIn(ComplicationExperimental::class)
         @WorkerThread
         internal fun getComplicationSlotMetadataWireFormats() =
-            createComplicationSlotsManager(
-                CurrentUserStyleRepository(createUserStyleSchema())
-            ).complicationSlots.map {
-                val systemDataSourceFallbackDefaultType =
-                    it.value.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
-                        .toWireComplicationType()
-                ComplicationSlotMetadataWireFormat(
-                    it.key,
-                    it.value.complicationSlotBounds.perComplicationTypeBounds.keys.map {
-                        it.toWireComplicationType()
-                    }.toIntArray(),
-                    it.value.complicationSlotBounds.perComplicationTypeBounds
-                        .values.toTypedArray(),
-                    it.value.complicationSlotBounds.perComplicationTypeMargins
-                        .values.toList(),
-                    it.value.boundsType,
-                    it.value.supportedTypes.toWireTypes(),
-                    it.value.defaultDataSourcePolicy.dataSourcesAsList(),
-                    it.value.defaultDataSourcePolicy.systemDataSourceFallback,
-                    systemDataSourceFallbackDefaultType,
-                    it.value.defaultDataSourcePolicy.primaryDataSourceDefaultType
-                        ?.toWireComplicationType() ?: systemDataSourceFallbackDefaultType,
-                    it.value.defaultDataSourcePolicy.secondaryDataSourceDefaultType
-                        ?.toWireComplicationType() ?: systemDataSourceFallbackDefaultType,
-                    it.value.initiallyEnabled,
-                    it.value.fixedComplicationDataSource,
-                    it.value.configExtras,
-                    it.value.boundingArc?.toWireFormat()
-                )
-            }.toTypedArray()
+            createComplicationSlotsManager(CurrentUserStyleRepository(createUserStyleSchema()))
+                .complicationSlots
+                .map {
+                    val systemDataSourceFallbackDefaultType =
+                        it.value.defaultDataSourcePolicy.systemDataSourceFallbackDefaultType
+                            .toWireComplicationType()
+                    ComplicationSlotMetadataWireFormat(
+                        it.key,
+                        it.value.complicationSlotBounds.perComplicationTypeBounds.keys
+                            .map { it.toWireComplicationType() }
+                            .toIntArray(),
+                        it.value.complicationSlotBounds.perComplicationTypeBounds.values
+                            .toTypedArray(),
+                        it.value.complicationSlotBounds.perComplicationTypeMargins.values.toList(),
+                        it.value.boundsType,
+                        it.value.supportedTypes.toWireTypes(),
+                        it.value.defaultDataSourcePolicy.dataSourcesAsList(),
+                        it.value.defaultDataSourcePolicy.systemDataSourceFallback,
+                        systemDataSourceFallbackDefaultType,
+                        it.value.defaultDataSourcePolicy.primaryDataSourceDefaultType
+                            ?.toWireComplicationType()
+                            ?: systemDataSourceFallbackDefaultType,
+                        it.value.defaultDataSourcePolicy.secondaryDataSourceDefaultType
+                            ?.toWireComplicationType()
+                            ?: systemDataSourceFallbackDefaultType,
+                        it.value.initiallyEnabled,
+                        it.value.fixedComplicationDataSource,
+                        it.value.configExtras,
+                        it.value.boundingArc?.toWireFormat()
+                    )
+                }
+                .toTypedArray()
 
         @RequiresApi(27)
         internal fun createHeadlessInstance(
             params: HeadlessWatchFaceInstanceParams
-        ): HeadlessWatchFaceImpl = TraceEvent("EngineWrapper.createHeadlessInstance").use {
-            require(!watchFaceCreatedOrPending()) {
-                "WatchFace already exists! Created by $createdBy"
+        ): HeadlessWatchFaceImpl =
+            TraceEvent("EngineWrapper.createHeadlessInstance").use {
+                require(!watchFaceCreatedOrPending()) {
+                    "WatchFace already exists! Created by $createdBy"
+                }
+                setImmutableSystemState(params.deviceConfig)
+
+                // Fake SurfaceHolder with just enough methods implemented for headless rendering.
+                val fakeSurfaceHolder =
+                    object : SurfaceHolder {
+                        val callbacks = HashSet<SurfaceHolder.Callback>()
+
+                        @Deprecated(
+                            message =
+                                "this is ignored, this value is set automatically when needed."
+                        )
+                        override fun setType(type: Int) {
+                            throw NotImplementedError()
+                        }
+
+                        override fun getSurface(): Surface {
+                            throw NotImplementedError()
+                        }
+
+                        override fun setSizeFromLayout() {
+                            throw NotImplementedError()
+                        }
+
+                        override fun lockCanvas(): Canvas {
+                            throw NotImplementedError()
+                        }
+
+                        override fun lockCanvas(dirty: Rect?): Canvas {
+                            throw NotImplementedError()
+                        }
+
+                        override fun getSurfaceFrame() = Rect(0, 0, params.width, params.height)
+
+                        override fun setFixedSize(width: Int, height: Int) {
+                            throw NotImplementedError()
+                        }
+
+                        override fun removeCallback(callback: SurfaceHolder.Callback) {
+                            callbacks.remove(callback)
+                        }
+
+                        override fun isCreating(): Boolean {
+                            throw NotImplementedError()
+                        }
+
+                        override fun addCallback(callback: SurfaceHolder.Callback) {
+                            callbacks.add(callback)
+                        }
+
+                        override fun setFormat(format: Int) {
+                            throw NotImplementedError()
+                        }
+
+                        override fun setKeepScreenOn(screenOn: Boolean) {
+                            throw NotImplementedError()
+                        }
+
+                        override fun unlockCanvasAndPost(canvas: Canvas?) {
+                            throw NotImplementedError()
+                        }
+                    }
+
+                allowWatchfaceToAnimate = false
+                require(mutableWatchState.isHeadless)
+                mutableWatchState.watchFaceInstanceId.value = sanitizeWatchFaceId(params.instanceId)
+                val watchState = mutableWatchState.asWatchState()
+
+                createWatchFaceInternal(watchState, fakeSurfaceHolder, "createHeadlessInstance")
+
+                mutableWatchState.isVisible.value = true
+                mutableWatchState.isAmbient.value = false
+                return HeadlessWatchFaceImpl(this, this@WatchFaceService)
             }
-            setImmutableSystemState(params.deviceConfig)
-
-            // Fake SurfaceHolder with just enough methods implemented for headless rendering.
-            val fakeSurfaceHolder = object : SurfaceHolder {
-                val callbacks = HashSet<SurfaceHolder.Callback>()
-
-                @Deprecated(
-                    message = "this is ignored, this value is set automatically when needed."
-                )
-                override fun setType(type: Int) {
-                    throw NotImplementedError()
-                }
-
-                override fun getSurface(): Surface {
-                    throw NotImplementedError()
-                }
-
-                override fun setSizeFromLayout() {
-                    throw NotImplementedError()
-                }
-
-                override fun lockCanvas(): Canvas {
-                    throw NotImplementedError()
-                }
-
-                override fun lockCanvas(dirty: Rect?): Canvas {
-                    throw NotImplementedError()
-                }
-
-                override fun getSurfaceFrame() = Rect(0, 0, params.width, params.height)
-
-                override fun setFixedSize(width: Int, height: Int) {
-                    throw NotImplementedError()
-                }
-
-                override fun removeCallback(callback: SurfaceHolder.Callback) {
-                    callbacks.remove(callback)
-                }
-
-                override fun isCreating(): Boolean {
-                    throw NotImplementedError()
-                }
-
-                override fun addCallback(callback: SurfaceHolder.Callback) {
-                    callbacks.add(callback)
-                }
-
-                override fun setFormat(format: Int) {
-                    throw NotImplementedError()
-                }
-
-                override fun setKeepScreenOn(screenOn: Boolean) {
-                    throw NotImplementedError()
-                }
-
-                override fun unlockCanvasAndPost(canvas: Canvas?) {
-                    throw NotImplementedError()
-                }
-            }
-
-            allowWatchfaceToAnimate = false
-            require(mutableWatchState.isHeadless)
-            mutableWatchState.watchFaceInstanceId.value = sanitizeWatchFaceId(params.instanceId)
-            val watchState = mutableWatchState.asWatchState()
-
-            createWatchFaceInternal(
-                watchState,
-                fakeSurfaceHolder,
-                "createHeadlessInstance"
-            )
-
-            mutableWatchState.isVisible.value = true
-            mutableWatchState.isAmbient.value = false
-            return HeadlessWatchFaceImpl(this, this@WatchFaceService)
-        }
 
         @UiThread
         @RequiresApi(27)
         internal fun createInteractiveInstance(
             params: WallpaperInteractiveWatchFaceInstanceParams,
             _createdBy: String
-        ): InteractiveWatchFaceImpl = TraceEvent(
-            "EngineWrapper.createInteractiveInstance"
-        ).use {
-            mainThreadPriorityDelegate.setInteractivePriority()
+        ): InteractiveWatchFaceImpl =
+            TraceEvent("EngineWrapper.createInteractiveInstance").use {
+                mainThreadPriorityDelegate.setInteractivePriority()
 
-            require(!watchFaceCreatedOrPending()) {
-                "WatchFace already exists! Created by $createdBy"
+                require(!watchFaceCreatedOrPending()) {
+                    "WatchFace already exists! Created by $createdBy"
+                }
+                require(!mutableWatchState.isHeadless)
+
+                setImmutableSystemState(params.deviceConfig)
+                setWatchUiState(params.watchUiState, fromSysUi = false)
+                initialUserStyle = params.userStyle
+
+                mutableWatchState.watchFaceInstanceId.value = sanitizeWatchFaceId(params.instanceId)
+                val watchState = mutableWatchState.asWatchState()
+
+                // Store the initial complications, this could be modified by new data before being
+                // applied.
+                var initialComplications = params.idAndComplicationDataWireFormats
+                if (initialComplications.isNullOrEmpty()) {
+                    initialComplications = readComplicationDataCache(_context, params.instanceId)
+                }
+                if (!initialComplications.isNullOrEmpty()) {
+                    setComplicationDataList(initialComplications)
+                }
+
+                createWatchFaceInternal(watchState, getWallpaperSurfaceHolderOverride(), _createdBy)
+
+                val instance = InteractiveWatchFaceImpl(this, params.instanceId)
+                InteractiveInstanceManager.addInstance(instance)
+                interactiveInstanceId = params.instanceId
+                return instance
             }
-            require(!mutableWatchState.isHeadless)
-
-            setImmutableSystemState(params.deviceConfig)
-            setWatchUiState(params.watchUiState, fromSysUi = false)
-            initialUserStyle = params.userStyle
-
-            mutableWatchState.watchFaceInstanceId.value = sanitizeWatchFaceId(params.instanceId)
-            val watchState = mutableWatchState.asWatchState()
-
-            // Store the initial complications, this could be modified by new data before being
-            // applied.
-            var initialComplications = params.idAndComplicationDataWireFormats
-            if (initialComplications.isNullOrEmpty()) {
-                initialComplications = readComplicationDataCache(_context, params.instanceId)
-            }
-            if (!initialComplications.isNullOrEmpty()) {
-                setComplicationDataList(initialComplications)
-            }
-
-            createWatchFaceInternal(
-                watchState,
-                getWallpaperSurfaceHolderOverride(),
-                _createdBy
-            )
-
-            val instance = InteractiveWatchFaceImpl(this, params.instanceId)
-            InteractiveInstanceManager.addInstance(instance)
-            interactiveInstanceId = params.instanceId
-            return instance
-        }
 
         override fun onSurfaceRedrawNeeded(holder: SurfaceHolder) {
             if (TRACE_DRAW) {
@@ -2071,12 +2058,13 @@
 
             // In case of overrideSurfaceHolder provided (tests) return its size instead of real
             // metrics.
-            screenBounds = if (overrideSurfaceHolder != null) {
-                overrideSurfaceHolder.surfaceFrame
-            } else {
-                val displayMetrics = resources.displayMetrics
-                Rect(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels)
-            }
+            screenBounds =
+                if (overrideSurfaceHolder != null) {
+                    overrideSurfaceHolder.surfaceFrame
+                } else {
+                    val displayMetrics = resources.displayMetrics
+                    Rect(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels)
+                }
 
             backgroundThreadCoroutineScope.launch {
                 val timeBefore = System.currentTimeMillis()
@@ -2134,17 +2122,19 @@
                 try {
                     val surfaceHolder = overrideSurfaceHolder ?: deferredSurfaceHolder.await()
 
-                    val watchFace = TraceEvent("WatchFaceService.createWatchFace").use {
-                        // Note by awaiting deferredSurfaceHolder we ensure onSurfaceChanged has
-                        // been called and we're passing the correct updated surface holder. This is
-                        // important for GL rendering.
-                        createWatchFace(
-                            surfaceHolder,
-                            watchState,
-                            complicationSlotsManager,
-                            currentUserStyleRepository
-                        )
-                    }
+                    val watchFace =
+                        TraceEvent("WatchFaceService.createWatchFace").use {
+                            // Note by awaiting deferredSurfaceHolder we ensure onSurfaceChanged has
+                            // been called and we're passing the correct updated surface holder.
+                            // This is
+                            // important for GL rendering.
+                            createWatchFace(
+                                surfaceHolder,
+                                watchState,
+                                complicationSlotsManager,
+                                currentUserStyleRepository
+                            )
+                        }
                     this@EngineWrapper.deferredWatchFace.complete(watchFace)
 
                     watchFace.renderer.backgroundThreadInitInternal()
@@ -2160,7 +2150,8 @@
                             TAG,
                             "createUserStyleSchema, createComplicationSlotsManager and " +
                                 "createWatchFace should complete in less than " +
-                                MAX_CREATE_WATCHFACE_TIME_MILLIS + " milliseconds."
+                                MAX_CREATE_WATCHFACE_TIME_MILLIS +
+                                " milliseconds."
                         )
                     }
 
@@ -2198,43 +2189,46 @@
             initStyleAndComplicationsDone: CompletableDeferred<Unit>,
             watchState: WatchState
         ) {
-            val broadcastsObserver = BroadcastsObserver(
-                watchState,
-                this,
-                deferredWatchFaceImpl,
-                uiThreadCoroutineScope,
-                _context.contentResolver,
-                wearSdkVersion >= Build.VERSION_CODES.R
-            )
+            val broadcastsObserver =
+                BroadcastsObserver(
+                    watchState,
+                    this,
+                    deferredWatchFaceImpl,
+                    uiThreadCoroutineScope,
+                    _context.contentResolver,
+                    wearSdkVersion >= Build.VERSION_CODES.R
+                )
 
             // There's no point creating BroadcastsReceiver or listening for Accessibility state
             // changes if this is a headless instance.
-            val broadcastsReceiver = TraceEvent("create BroadcastsReceiver").use {
-                if (watchState.isHeadless) {
-                    null
-                } else {
-                    startListeningForAccessibilityStateChanges()
-                    BroadcastsReceiver(_context, broadcastsObserver).apply {
-                        processBatteryStatus(
-                            IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { iFilter ->
-                                _context.registerReceiver(null, iFilter)
-                            }
-                        )
+            val broadcastsReceiver =
+                TraceEvent("create BroadcastsReceiver").use {
+                    if (watchState.isHeadless) {
+                        null
+                    } else {
+                        startListeningForAccessibilityStateChanges()
+                        BroadcastsReceiver(_context, broadcastsObserver).apply {
+                            processBatteryStatus(
+                                IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { iFilter ->
+                                    _context.registerReceiver(null, iFilter)
+                                }
+                            )
+                        }
                     }
                 }
-            }
 
             val watchFace = deferredWatchFace.await()
             TraceEvent("WatchFaceImpl.init").use {
-                val watchFaceImpl = WatchFaceImpl(
-                    watchFace,
-                    this@EngineWrapper,
-                    watchState,
-                    currentUserStyleRepository,
-                    complicationSlotsManager,
-                    broadcastsObserver,
-                    broadcastsReceiver
-                )
+                val watchFaceImpl =
+                    WatchFaceImpl(
+                        watchFace,
+                        this@EngineWrapper,
+                        watchState,
+                        currentUserStyleRepository,
+                        complicationSlotsManager,
+                        broadcastsObserver,
+                        broadcastsReceiver
+                    )
 
                 // Perform UI thread render init.
                 if (!surfaceDestroyed) {
@@ -2267,37 +2261,40 @@
 
         /** No UI thread rendering can be done until after this has completed. */
         @WorkerThread
-        internal fun initStyle(
-            currentUserStyleRepository: CurrentUserStyleRepository
-        ) = TraceEvent("initStyle").use {
-            // If the system has a stored user style then Home/SysUI is in charge of style
-            // persistence, otherwise we need to do our own.
-            val storedUserStyle = getInitialUserStyle()
-            if (storedUserStyle != null) {
-                TraceEvent("WatchFaceImpl.init apply userStyle").use {
-                    currentUserStyleRepository.updateUserStyle(
-                        UserStyle(UserStyleData(storedUserStyle), currentUserStyleRepository.schema)
-                    )
-                }
-            } else {
-                TraceEvent("WatchFaceImpl.init apply userStyle from prefs").use {
-                    // The system doesn't support preference persistence we need to do it ourselves.
-                    val preferencesFile = "watchface_prefs_${_context.javaClass.name}.txt"
-                    currentUserStyleRepository.updateUserStyle(
-                        UserStyle(
-                            UserStyleData(readPrefs(_context, preferencesFile)),
-                            currentUserStyleRepository.schema
+        internal fun initStyle(currentUserStyleRepository: CurrentUserStyleRepository) =
+            TraceEvent("initStyle").use {
+                // If the system has a stored user style then Home/SysUI is in charge of style
+                // persistence, otherwise we need to do our own.
+                val storedUserStyle = getInitialUserStyle()
+                if (storedUserStyle != null) {
+                    TraceEvent("WatchFaceImpl.init apply userStyle").use {
+                        currentUserStyleRepository.updateUserStyle(
+                            UserStyle(
+                                UserStyleData(storedUserStyle),
+                                currentUserStyleRepository.schema
+                            )
                         )
-                    )
+                    }
+                } else {
+                    TraceEvent("WatchFaceImpl.init apply userStyle from prefs").use {
+                        // The system doesn't support preference persistence we need to do it
+                        // ourselves.
+                        val preferencesFile = "watchface_prefs_${_context.javaClass.name}.txt"
+                        currentUserStyleRepository.updateUserStyle(
+                            UserStyle(
+                                UserStyleData(readPrefs(_context, preferencesFile)),
+                                currentUserStyleRepository.schema
+                            )
+                        )
 
-                    backgroundThreadCoroutineScope.launch {
-                        currentUserStyleRepository.userStyle.collect {
-                            writePrefs(_context, preferencesFile, it)
+                        backgroundThreadCoroutineScope.launch {
+                            currentUserStyleRepository.userStyle.collect {
+                                writePrefs(_context, preferencesFile, it)
+                            }
                         }
                     }
                 }
             }
-        }
 
         /**
          * It is OK to call this from a worker thread because we carefully ensure there's no
@@ -2308,74 +2305,79 @@
         internal fun initComplications(
             complicationSlotsManager: ComplicationSlotsManager,
             renderer: Renderer
-        ) = TraceEvent("initStyleAndComplications").use {
+        ) =
+            TraceEvent("initStyleAndComplications").use {
 
-            // We need to inhibit an immediate callback during initialization because members are
-            // not fully constructed and it will fail. It's also superfluous because we're going
-            // to render soon anyway.
-            var initFinished = false
-            complicationSlotsManager.init(
-                renderer,
-                object : ComplicationSlot.InvalidateListener {
-                    @SuppressWarnings("SyntheticAccessor")
-                    override fun onInvalidate() {
-                        // This could be called on any thread.
-                        uiThreadHandler.runOnHandlerWithTracing("onInvalidate") {
-                            if (initFinished) {
-                                getWatchFaceImplOrNull()?.invalidateIfNotAnimating()
+                // We need to inhibit an immediate callback during initialization because members
+                // are
+                // not fully constructed and it will fail. It's also superfluous because we're going
+                // to render soon anyway.
+                var initFinished = false
+                complicationSlotsManager.init(
+                    renderer,
+                    object : ComplicationSlot.InvalidateListener {
+                        @SuppressWarnings("SyntheticAccessor")
+                        override fun onInvalidate() {
+                            // This could be called on any thread.
+                            uiThreadHandler.runOnHandlerWithTracing("onInvalidate") {
+                                if (initFinished) {
+                                    getWatchFaceImplOrNull()?.invalidateIfNotAnimating()
+                                }
                             }
                         }
                     }
-                }
-            )
-            initFinished = true
-        }
-
-        override fun onVisibilityChanged(visible: Boolean): Unit = TraceEvent(
-            "onVisibilityChanged"
-        ).use {
-            super.onVisibilityChanged(visible)
-
-            // In the WSL flow Home doesn't know when WallpaperService has actually launched a
-            // watchface after requesting a change. It used [Constants.ACTION_REQUEST_STATE] as a
-            // signal to trigger the old boot flow (sending the binder etc). This is no longer
-            // required from android R onwards. See (b/181965946).
-            if (wearSdkVersion < Build.VERSION_CODES.R) {
-                // We are requesting state every time the watch face changes its visibility because
-                // wallpaper commands have a tendency to be dropped. By requesting it on every
-                // visibility change, we ensure that we don't become a victim of some race
-                // condition.
-                sendBroadcast(
-                    Intent(Constants.ACTION_REQUEST_STATE).apply {
-                        putExtra(Constants.EXTRA_WATCH_FACE_VISIBLE, visible)
-                    }
                 )
-
-                // We can't guarantee the binder has been set and onSurfaceChanged called before
-                // this command.
-                if (!watchFaceCreated()) {
-                    wslFlow.pendingVisibilityChanged = visible
-                    return
-                }
+                initFinished = true
             }
 
-            // During WF init the watch face is initially not visible but we want to keep UI thread
-            // priority high.  Once init has completed we only want the WF UI thread to have high
-            // priority when visible.
-            if (deferredWatchFaceImpl.isCompleted && !mutableWatchState.isHeadless) {
-                if (visible) {
-                    mainThreadPriorityDelegate.setInteractivePriority()
-                } else {
-                    mainThreadPriorityDelegate.setNormalPriority()
+        override fun onVisibilityChanged(visible: Boolean): Unit =
+            TraceEvent("onVisibilityChanged").use {
+                super.onVisibilityChanged(visible)
+
+                // In the WSL flow Home doesn't know when WallpaperService has actually launched a
+                // watchface after requesting a change. It used [Constants.ACTION_REQUEST_STATE] as
+                // a
+                // signal to trigger the old boot flow (sending the binder etc). This is no longer
+                // required from android R onwards. See (b/181965946).
+                if (wearSdkVersion < Build.VERSION_CODES.R) {
+                    // We are requesting state every time the watch face changes its visibility
+                    // because
+                    // wallpaper commands have a tendency to be dropped. By requesting it on every
+                    // visibility change, we ensure that we don't become a victim of some race
+                    // condition.
+                    sendBroadcast(
+                        Intent(Constants.ACTION_REQUEST_STATE).apply {
+                            putExtra(Constants.EXTRA_WATCH_FACE_VISIBLE, visible)
+                        }
+                    )
+
+                    // We can't guarantee the binder has been set and onSurfaceChanged called before
+                    // this command.
+                    if (!watchFaceCreated()) {
+                        wslFlow.pendingVisibilityChanged = visible
+                        return
+                    }
                 }
+
+                // During WF init the watch face is initially not visible but we want to keep UI
+                // thread
+                // priority high.  Once init has completed we only want the WF UI thread to have
+                // high
+                // priority when visible.
+                if (deferredWatchFaceImpl.isCompleted && !mutableWatchState.isHeadless) {
+                    if (visible) {
+                        mainThreadPriorityDelegate.setInteractivePriority()
+                    } else {
+                        mainThreadPriorityDelegate.setNormalPriority()
+                    }
+                }
+
+                mutableWatchState.isVisible.value = visible || forceIsVisibleForTesting()
+                wslFlow.pendingVisibilityChanged = null
+
+                getWatchFaceImplOrNull()?.onVisibility(visible)
             }
 
-            mutableWatchState.isVisible.value = visible || forceIsVisibleForTesting()
-            wslFlow.pendingVisibilityChanged = null
-
-            getWatchFaceImplOrNull()?.onVisibility(visible)
-        }
-
         override fun invalidate() {
             this@WatchFaceService.onInvalidate()
             if (!allowWatchfaceToAnimate) {
@@ -2500,25 +2502,26 @@
             }
         }
 
-        internal fun validateSchemaWireSize(schema: UserStyleSchema) = TraceEvent(
-            "WatchFaceService.validateSchemaWireSize"
-        ).use {
-            var estimatedBytes = 0
-            @Suppress("Deprecation") // userStyleSettings
-            for (styleSetting in schema.userStyleSettings) {
-                estimatedBytes += styleSetting.estimateWireSizeInBytesAndValidateIconDimensions(
-                    resourcesContext,
-                    MAX_REASONABLE_SCHEMA_ICON_WIDTH,
-                    MAX_REASONABLE_SCHEMA_ICON_HEIGHT,
-                )
+        internal fun validateSchemaWireSize(schema: UserStyleSchema) =
+            TraceEvent("WatchFaceService.validateSchemaWireSize").use {
+                var estimatedBytes = 0
+                @Suppress("Deprecation") // userStyleSettings
+                for (styleSetting in schema.userStyleSettings) {
+                    estimatedBytes +=
+                        styleSetting.estimateWireSizeInBytesAndValidateIconDimensions(
+                            resourcesContext,
+                            MAX_REASONABLE_SCHEMA_ICON_WIDTH,
+                            MAX_REASONABLE_SCHEMA_ICON_HEIGHT,
+                        )
+                }
+                require(estimatedBytes < MAX_REASONABLE_SCHEMA_WIRE_SIZE_BYTES) {
+                    "The estimated wire size of the supplied UserStyleSchemas for watch face " +
+                        "$packageName is too big at $estimatedBytes bytes. " +
+                        "UserStyleSchemas get sent to the companion over bluetooth and should be " +
+                        "as small as possible for this to be performant. The maximum size is " +
+                        MAX_REASONABLE_SCHEMA_WIRE_SIZE_BYTES
+                }
             }
-            require(estimatedBytes < MAX_REASONABLE_SCHEMA_WIRE_SIZE_BYTES) {
-                "The estimated wire size of the supplied UserStyleSchemas for watch face " +
-                    "$packageName is too big at $estimatedBytes bytes. UserStyleSchemas get sent " +
-                    "to the companion over bluetooth and should be as small as possible for this " +
-                    "to be performant. The maximum size is " + MAX_REASONABLE_SCHEMA_WIRE_SIZE_BYTES
-            }
-        }
 
         internal fun watchFaceCreated() = deferredWatchFaceImpl.isCompleted
 
@@ -2539,11 +2542,10 @@
             )
         }
 
-        override fun setActiveComplicationSlots(complicationSlotIds: IntArray): Unit = TraceEvent(
-            "WatchFaceService.setActiveComplications"
-        ).use {
-            wslFlow.setActiveComplications(complicationSlotIds)
-        }
+        override fun setActiveComplicationSlots(complicationSlotIds: IntArray): Unit =
+            TraceEvent("WatchFaceService.setActiveComplications").use {
+                wslFlow.setActiveComplications(complicationSlotIds)
+            }
 
         internal fun startListeningForAccessibilityStateChanges() {
             val accessibilityManager =
@@ -2568,15 +2570,11 @@
             val labels = mutableListOf<Pair<Int, ContentDescriptionLabel>>()
 
             uiThreadCoroutineScope.launch {
-                TraceEvent(
-                    "WatchFaceService.updateContentDescriptionLabels A"
-                ).close()
+                TraceEvent("WatchFaceService.updateContentDescriptionLabels A").close()
                 val watchFace = deferredWatchFace.await()
                 val earlyInitDetails = deferredEarlyInitDetails.await()
 
-                TraceEvent(
-                    "WatchFaceService.updateContentDescriptionLabels"
-                ).use {
+                TraceEvent("WatchFaceService.updateContentDescriptionLabels").use {
                     // The side effects of this need to be applied before deferredWatchFaceImpl is
                     // completed.
                     val renderer = watchFace.renderer
@@ -2597,12 +2595,13 @@
                     // or no data.
                     val screenBounds = renderer.screenBounds
                     for ((_, complication) in complicationSlotsManager.complicationSlots) {
-                        if (complication.enabled &&
-                            when (complication.complicationData.value.type) {
-                                ComplicationType.EMPTY -> false
-                                ComplicationType.NO_DATA -> false
-                                else -> true
-                            }
+                        if (
+                            complication.enabled &&
+                                when (complication.complicationData.value.type) {
+                                    ComplicationType.EMPTY -> false
+                                    ComplicationType.NO_DATA -> false
+                                    else -> true
+                                }
                         ) {
                             if (complication.boundsType == ComplicationSlotBoundsType.BACKGROUND) {
                                 ComplicationSlotBoundsType.BACKGROUND
@@ -2628,11 +2627,10 @@
                             Pair(
                                 labelPair.first,
                                 ContentDescriptionLabel(
-                                    labelPair.second.bounds,
-                                    labelPair.second.text.toWireComplicationText()
-                                ).apply {
-                                    tapAction = labelPair.second.tapAction
-                                }
+                                        labelPair.second.bounds,
+                                        labelPair.second.text.toWireComplicationText()
+                                    )
+                                    .apply { tapAction = labelPair.second.tapAction }
                             )
                         )
                     }
@@ -2651,13 +2649,9 @@
          * enabled.
          */
         private fun maybeSendContentDescriptionLabelsBroadcast() {
-            if (
-                wearSdkVersion >= Build.VERSION_CODES.R && getAccessibilityManager().isEnabled
-            ) {
+            if (wearSdkVersion >= Build.VERSION_CODES.R && getAccessibilityManager().isEnabled) {
                 // TODO(alexclarke): This should require a permission. See http://b/184717802
-                _context.sendBroadcast(
-                    Intent(Constants.ACTION_WATCH_FACE_REFRESH_A11Y_LABELS)
-                )
+                _context.sendBroadcast(Intent(Constants.ACTION_WATCH_FACE_REFRESH_A11Y_LABELS))
                 systemViewOfContentDescriptionLabelsIsStale = false
             }
         }
@@ -2716,11 +2710,8 @@
                     writer.println("WSL style init flow")
                     writer.println("watchFaceInitStarted=${wslFlow.watchFaceInitStarted}")
                 }
-
                 this.watchFaceCreatedOrPending() -> writer.println("Androidx style init flow")
-                wearSdkVersion < Build.VERSION_CODES.R ->
-                    writer.println("Expecting WSL style init")
-
+                wearSdkVersion < Build.VERSION_CODES.R -> writer.println("Expecting WSL style init")
                 else -> writer.println("Expecting androidx style style init")
             }
 
@@ -2753,9 +2744,7 @@
             writer.println("pendingUpdateTime=${pendingUpdateTime.isPending()}")
 
             synchronized(lock) {
-                forEachListener("dump") {
-                    writer.println("listener = ${it.asBinder()}")
-                }
+                forEachListener("dump") { writer.println("listener = ${it.asBinder()}") }
             }
 
             if (!destroyed) {
@@ -2781,8 +2770,7 @@
     private object ChinHeightApi25 {
         @Suppress("DEPRECATION")
         @Px
-        fun extractFromWindowInsets(insets: WindowInsets?) =
-            insets?.systemWindowInsetBottom ?: 0
+        fun extractFromWindowInsets(insets: WindowInsets?) = insets?.systemWindowInsetBottom ?: 0
     }
 
     @RequiresApi(30)
@@ -2807,18 +2795,14 @@
  * @param traceEventName The name of the trace event to emit.
  * @param task The task to post on the handler.
  */
-internal fun Handler.runOnHandlerWithTracing(
-    traceEventName: String,
-    task: () -> Unit
-) = TraceEvent(traceEventName).use {
-    if (looper == Looper.myLooper()) {
-        task.invoke()
-    } else {
-        post {
-            TraceEvent("$traceEventName invokeTask").use { task.invoke() }
+internal fun Handler.runOnHandlerWithTracing(traceEventName: String, task: () -> Unit) =
+    TraceEvent(traceEventName).use {
+        if (looper == Looper.myLooper()) {
+            task.invoke()
+        } else {
+            post { TraceEvent("$traceEventName invokeTask").use { task.invoke() } }
         }
     }
-}
 
 /**
  * Runs a task in the [CoroutineScope] and blocks until it has completed.
@@ -2829,20 +2813,17 @@
 internal fun <R> CoroutineScope.runBlockingWithTracing(
     traceEventName: String,
     task: suspend () -> R
-): R = TraceEvent(traceEventName).use {
-    try {
-        // Inside runBlocking, coroutineContext has a different value.
-        val desiredContext = coroutineContext
-        return runBlocking {
-            withContext(desiredContext) {
-                task()
-            }
+): R =
+    TraceEvent(traceEventName).use {
+        try {
+            // Inside runBlocking, coroutineContext has a different value.
+            val desiredContext = coroutineContext
+            return runBlocking { withContext(desiredContext) { task() } }
+        } catch (e: Exception) {
+            Log.e("CoroutineScope", "Exception in traceEventName", e)
+            throw e
         }
-    } catch (e: Exception) {
-        Log.e("CoroutineScope", "Exception in traceEventName", e)
-        throw e
     }
-}
 
 /**
  * If the instance ID for [MutableWatchState.watchFaceInstanceId] begin with this prefix, then the
@@ -2856,21 +2837,20 @@
 /**
  * Instance ID to use when either there's no system id or it doesn't start with
  * [SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX].
+ *
  * @hide
  */
-@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-const val DEFAULT_INSTANCE_ID = "defaultInstance"
+@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) const val DEFAULT_INSTANCE_ID = "defaultInstance"
 
 /**
- * This is needed to make the instance id consistent between Interactive, Headless and
- * EditorSession for old versions of the system.
+ * This is needed to make the instance id consistent between Interactive, Headless and EditorSession
+ * for old versions of the system.
  *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 fun sanitizeWatchFaceId(instanceId: String?) =
-    if (instanceId == null || !instanceId.startsWith(SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX)
-    ) {
+    if (instanceId == null || !instanceId.startsWith(SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX)) {
         DEFAULT_INSTANCE_ID
     } else {
         instanceId
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchState.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchState.kt
index 4068678..ff82759 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchState.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchState.kt
@@ -27,52 +27,50 @@
  * Describes the current state of the wearable including some hardware details such as whether or
  * not it supports burn in prevention and low-bit ambient.
  *
- * @param interruptionFilter The current user interruption settings. See [NotificationManager].
- * This is initially `null` because the watch face is created before the system has sent the state.
- * Based on the value the watch face should adjust the amount of information it displays. For
- * example, if it displays the number of pending emails, it should hide it if
- * interruptionFilter is equal to [NotificationManager.INTERRUPTION_FILTER_NONE].
- * `interruptionFilter` can be [NotificationManager.INTERRUPTION_FILTER_NONE],
- * [NotificationManager.INTERRUPTION_FILTER_PRIORITY],
- * [NotificationManager.INTERRUPTION_FILTER_ALL],
- * [NotificationManager.INTERRUPTION_FILTER_ALARMS], or
- * [NotificationManager.INTERRUPTION_FILTER_UNKNOWN].
+ * @param interruptionFilter The current user interruption settings. See [NotificationManager]. This
+ *   is initially `null` because the watch face is created before the system has sent the state.
+ *   Based on the value the watch face should adjust the amount of information it displays. For
+ *   example, if it displays the number of pending emails, it should hide it if interruptionFilter
+ *   is equal to [NotificationManager.INTERRUPTION_FILTER_NONE]. `interruptionFilter` can be
+ *   [NotificationManager.INTERRUPTION_FILTER_NONE],
+ *   [NotificationManager.INTERRUPTION_FILTER_PRIORITY],
+ *   [NotificationManager.INTERRUPTION_FILTER_ALL],
+ *   [NotificationManager.INTERRUPTION_FILTER_ALARMS], or
+ *   [NotificationManager.INTERRUPTION_FILTER_UNKNOWN].
  * @param isAmbient Whether or not the watch is in ambient mode. This is initially `null` because
- * the watch face is created before the system has sent the state. The order in which ambient vs
- * style changes are reported is not guaranteed. Likewise the order of isAmbient flow callbacks and
- * [Renderer.CanvasRenderer.render] or [Renderer.GlesRenderer.render] calls is not defined. For
- * rendering please refer to [RenderParameters.drawMode] instead of isAmbient because you might
- * receive requests for rendering non-ambient frames while the watch is ambient (e.g. editing from
- * the companion phone).
+ *   the watch face is created before the system has sent the state. The order in which ambient vs
+ *   style changes are reported is not guaranteed. Likewise the order of isAmbient flow callbacks
+ *   and [Renderer.CanvasRenderer.render] or [Renderer.GlesRenderer.render] calls is not defined.
+ *   For rendering please refer to [RenderParameters.drawMode] instead of isAmbient because you
+ *   might receive requests for rendering non-ambient frames while the watch is ambient (e.g.
+ *   editing from the companion phone).
  * @param isBatteryLowAndNotCharging Whether or not we should conserve power due to a low battery
- * which isn't charging. This is initially `null` because the watch face is created before the
- * system has sent the state. Only valid if
- * [android.support.wearable.watchface.WatchFaceStyle.hideNotificationIndicator] is true.
+ *   which isn't charging. This is initially `null` because the watch face is created before the
+ *   system has sent the state. Only valid if
+ *   [android.support.wearable.watchface.WatchFaceStyle.hideNotificationIndicator] is true.
  * @param isVisible Whether or not the watch face is visible. This is initially `null` because the
- * watch face is created before the system has sent the state.
+ *   watch face is created before the system has sent the state.
  * @param hasLowBitAmbient Whether or not the watch hardware supports low bit ambient support.
  * @param hasBurnInProtection Whether or not the watch hardware supports burn in protection.
  * @param analogPreviewReferenceTimeMillis UTC reference time for previews of analog watch faces in
- * milliseconds since the epoch.
+ *   milliseconds since the epoch.
  * @param digitalPreviewReferenceTimeMillis UTC reference time for previews of digital watch faces
- * in milliseconds since the epoch.
- * @param chinHeight the size, in pixels, of the chin or zero if the device does not have a
- * chin. A chin is a section at the bottom of a circular display that is visible due to hardware
- * limitations.
+ *   in milliseconds since the epoch.
+ * @param chinHeight the size, in pixels, of the chin or zero if the device does not have a chin. A
+ *   chin is a section at the bottom of a circular display that is visible due to hardware
+ *   limitations.
  * @param isHeadless Whether or not this is a headless watchface.
- * @param watchFaceInstanceId The ID associated with the watch face instance. Note there may be
- * more than one instance associated with a [WatchFaceService]. See
- * [androidx.wear.watchface.client.WatchFaceId] for more details.
+ * @param watchFaceInstanceId The ID associated with the watch face instance. Note there may be more
+ *   than one instance associated with a [WatchFaceService]. See
+ *   [androidx.wear.watchface.client.WatchFaceId] for more details.
  */
 public class WatchState(
     public val interruptionFilter: StateFlow<Int?>,
     public val isAmbient: StateFlow<Boolean?>,
     public val isBatteryLowAndNotCharging: StateFlow<Boolean?>,
     public val isVisible: StateFlow<Boolean?>,
-    @get:JvmName("hasLowBitAmbient")
-    public val hasLowBitAmbient: Boolean,
-    @get:JvmName("hasBurnInProtection")
-    public val hasBurnInProtection: Boolean,
+    @get:JvmName("hasLowBitAmbient") public val hasLowBitAmbient: Boolean,
+    @get:JvmName("hasBurnInProtection") public val hasBurnInProtection: Boolean,
     public val analogPreviewReferenceTimeMillis: Long,
     public val digitalPreviewReferenceTimeMillis: Long,
     @Px @get:Px public val chinHeight: Int,
@@ -160,9 +158,8 @@
 /** @hide */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class MutableWatchState() {
-    public val interruptionFilter: MutableStateFlow<Int> = MutableStateFlow(
-        NotificationManager.INTERRUPTION_FILTER_UNKNOWN
-    )
+    public val interruptionFilter: MutableStateFlow<Int> =
+        MutableStateFlow(NotificationManager.INTERRUPTION_FILTER_UNKNOWN)
     public val isAmbient: MutableStateFlow<Boolean?> = MutableStateFlow(null)
     public val isBatteryLowAndNotCharging: MutableStateFlow<Boolean?> = MutableStateFlow(null)
     public val isVisible: MutableStateFlow<Boolean?> = MutableStateFlow(null)
@@ -181,18 +178,19 @@
         }
     public var isHeadless: Boolean = false
 
-    public fun asWatchState(): WatchState = WatchState(
-        interruptionFilter = interruptionFilter,
-        isAmbient = isAmbient,
-        isBatteryLowAndNotCharging = isBatteryLowAndNotCharging,
-        isVisible = isVisible,
-        hasLowBitAmbient = hasLowBitAmbient,
-        hasBurnInProtection = hasBurnInProtection,
-        analogPreviewReferenceTimeMillis = analogPreviewReferenceTimeMillis,
-        digitalPreviewReferenceTimeMillis = digitalPreviewReferenceTimeMillis,
-        chinHeight = chinHeight,
-        isHeadless = isHeadless,
-        watchFaceInstanceId = watchFaceInstanceId,
-        isLocked = isLocked
-    )
+    public fun asWatchState(): WatchState =
+        WatchState(
+            interruptionFilter = interruptionFilter,
+            isAmbient = isAmbient,
+            isBatteryLowAndNotCharging = isBatteryLowAndNotCharging,
+            isVisible = isVisible,
+            hasLowBitAmbient = hasLowBitAmbient,
+            hasBurnInProtection = hasBurnInProtection,
+            analogPreviewReferenceTimeMillis = analogPreviewReferenceTimeMillis,
+            digitalPreviewReferenceTimeMillis = digitalPreviewReferenceTimeMillis,
+            chinHeight = chinHeight,
+            isHeadless = isHeadless,
+            watchFaceInstanceId = watchFaceInstanceId,
+            isLocked = isLocked
+        )
 }
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/XmlSchemaAndComplicationSlotsDefinition.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/XmlSchemaAndComplicationSlotsDefinition.kt
index 7005988..556e9c5 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/XmlSchemaAndComplicationSlotsDefinition.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/XmlSchemaAndComplicationSlotsDefinition.kt
@@ -33,8 +33,8 @@
 import androidx.wear.watchface.style.CurrentUserStyleRepository
 import androidx.wear.watchface.style.UserStyleFlavors
 import androidx.wear.watchface.style.UserStyleSchema
-import org.xmlpull.v1.XmlPullParser
 import kotlin.jvm.Throws
+import org.xmlpull.v1.XmlPullParser
 
 /** @hide */
 @OptIn(ComplicationExperimental::class)
@@ -72,12 +72,13 @@
                 if (type == XmlPullParser.START_TAG) {
                     when (parser.name) {
                         "UserStyleSchema" -> {
-                            schema = UserStyleSchema.inflate(
-                                resources,
-                                parser,
-                                complicationScaleX,
-                                complicationScaleY
-                            )
+                            schema =
+                                UserStyleSchema.inflate(
+                                    resources,
+                                    parser,
+                                    complicationScaleX,
+                                    complicationScaleY
+                                )
                         }
                         "ComplicationSlot" -> {
                             complicationSlots.add(
@@ -95,9 +96,10 @@
                             }
                             flavors = UserStyleFlavors.inflate(resources, parser, schema)
                         }
-                        else -> throw IllegalArgumentException(
-                            "Unexpected node ${parser.name} at line ${parser.lineNumber}"
-                        )
+                        else ->
+                            throw IllegalArgumentException(
+                                "Unexpected node ${parser.name} at line ${parser.lineNumber}"
+                            )
                     }
                 }
                 type = parser.next()
@@ -124,18 +126,19 @@
     ) {
         companion object {
             @Suppress("NewApi")
-            private val typesMap by lazy(LazyThreadSafetyMode.NONE) {
-                mapOf(
-                    "SHORT_TEXT" to ComplicationType.SHORT_TEXT,
-                    "LONG_TEXT" to ComplicationType.LONG_TEXT,
-                    "RANGED_VALUE" to ComplicationType.RANGED_VALUE,
-                    "MONOCHROMATIC_IMAGE" to ComplicationType.MONOCHROMATIC_IMAGE,
-                    "SMALL_IMAGE" to ComplicationType.SMALL_IMAGE,
-                    "PHOTO_IMAGE" to ComplicationType.PHOTO_IMAGE,
-                    "GOAL_PROGRESS" to ComplicationType.GOAL_PROGRESS,
-                    "WEIGHTED_ELEMENTS" to ComplicationType.WEIGHTED_ELEMENTS
-                )
-            }
+            private val typesMap by
+                lazy(LazyThreadSafetyMode.NONE) {
+                    mapOf(
+                        "SHORT_TEXT" to ComplicationType.SHORT_TEXT,
+                        "LONG_TEXT" to ComplicationType.LONG_TEXT,
+                        "RANGED_VALUE" to ComplicationType.RANGED_VALUE,
+                        "MONOCHROMATIC_IMAGE" to ComplicationType.MONOCHROMATIC_IMAGE,
+                        "SMALL_IMAGE" to ComplicationType.SMALL_IMAGE,
+                        "PHOTO_IMAGE" to ComplicationType.PHOTO_IMAGE,
+                        "GOAL_PROGRESS" to ComplicationType.GOAL_PROGRESS,
+                        "WEIGHTED_ELEMENTS" to ComplicationType.WEIGHTED_ELEMENTS
+                    )
+                }
 
             fun inflate(
                 resources: Resources,
@@ -143,63 +146,57 @@
                 complicationScaleX: Float,
                 complicationScaleY: Float
             ): ComplicationSlotStaticData {
-                require(parser.name == "ComplicationSlot") {
-                    "Expected a UserStyleSchema node"
-                }
+                require(parser.name == "ComplicationSlot") { "Expected a UserStyleSchema node" }
                 val slotId = getIntRefAttribute(resources, parser, "slotId")
-                require(slotId != null) {
-                    "A ComplicationSlot must have a slotId attribute"
-                }
-                val accessibilityTraversalIndex = if (
-                    parser.hasValue("accessibilityTraversalIndex")
-                ) {
-                    parser.getAttributeIntValue(
-                        NAMESPACE_APP,
-                        "accessibilityTraversalIndex",
-                        0
-                    )
-                } else {
-                    null
-                }
+                require(slotId != null) { "A ComplicationSlot must have a slotId attribute" }
+                val accessibilityTraversalIndex =
+                    if (parser.hasValue("accessibilityTraversalIndex")) {
+                        parser.getAttributeIntValue(NAMESPACE_APP, "accessibilityTraversalIndex", 0)
+                    } else {
+                        null
+                    }
                 require(parser.hasValue("boundsType")) {
                     "A ComplicationSlot must have a boundsType attribute"
                 }
-                val boundsType = when (
-                    parser.getAttributeIntValue(NAMESPACE_APP, "boundsType", 0)
-                ) {
-                    0 -> ComplicationSlotBoundsType.ROUND_RECT
-                    1 -> ComplicationSlotBoundsType.BACKGROUND
-                    2 -> ComplicationSlotBoundsType.EDGE
-                    else -> throw IllegalArgumentException("Unknown boundsType")
-                }
+                val boundsType =
+                    when (parser.getAttributeIntValue(NAMESPACE_APP, "boundsType", 0)) {
+                        0 -> ComplicationSlotBoundsType.ROUND_RECT
+                        1 -> ComplicationSlotBoundsType.BACKGROUND
+                        2 -> ComplicationSlotBoundsType.EDGE
+                        else -> throw IllegalArgumentException("Unknown boundsType")
+                    }
 
                 require(parser.hasValue("supportedTypes")) {
                     "A ComplicationSlot must have a supportedTypes attribute"
                 }
                 val supportedTypes =
-                    getStringRefAttribute(resources, parser, "supportedTypes")
-                        ?.split('|') ?: throw IllegalArgumentException(
-                        "Unable to extract the supported type(s) for ComplicationSlot $slotId"
-                    )
-                val supportedTypesList = supportedTypes.map {
-                    typesMap[it] ?: throw IllegalArgumentException(
-                        "Unrecognised type $it for ComplicationSlot $slotId"
-                    )
-                }
+                    getStringRefAttribute(resources, parser, "supportedTypes")?.split('|')
+                        ?: throw IllegalArgumentException(
+                            "Unable to extract the supported type(s) for ComplicationSlot $slotId"
+                        )
+                val supportedTypesList =
+                    supportedTypes.map {
+                        typesMap[it]
+                            ?: throw IllegalArgumentException(
+                                "Unrecognised type $it for ComplicationSlot $slotId"
+                            )
+                    }
 
-                val defaultComplicationDataSourcePolicy = DefaultComplicationDataSourcePolicy
-                    .inflate(resources, parser, "ComplicationSlot")
+                val defaultComplicationDataSourcePolicy =
+                    DefaultComplicationDataSourcePolicy.inflate(
+                        resources,
+                        parser,
+                        "ComplicationSlot"
+                    )
 
-                val initiallyEnabled = parser.getAttributeBooleanValue(
-                    NAMESPACE_APP,
-                    "initiallyEnabled",
-                    true
-                )
-                val fixedComplicationDataSource = parser.getAttributeBooleanValue(
-                    NAMESPACE_APP,
-                    "fixedComplicationDataSource",
-                    false
-                )
+                val initiallyEnabled =
+                    parser.getAttributeBooleanValue(NAMESPACE_APP, "initiallyEnabled", true)
+                val fixedComplicationDataSource =
+                    parser.getAttributeBooleanValue(
+                        NAMESPACE_APP,
+                        "fixedComplicationDataSource",
+                        false
+                    )
                 val nameResourceId =
                     if (parser.hasValue("name")) {
                         parser.getAttributeResourceValue(NAMESPACE_APP, "name", 0)
@@ -212,21 +209,23 @@
                     } else {
                         null
                     }
-                val boundingArc = if (parser.hasValue("startArcAngle")) {
-                    BoundingArc(
-                        parser.getAttributeFloatValue(NAMESPACE_APP, "startArcAngle", 0f),
-                        parser.getAttributeFloatValue(NAMESPACE_APP, "totalArcAngle", 0f),
-                        parser.getAttributeFloatValue(NAMESPACE_APP, "arcThickness", 0f)
+                val boundingArc =
+                    if (parser.hasValue("startArcAngle")) {
+                        BoundingArc(
+                            parser.getAttributeFloatValue(NAMESPACE_APP, "startArcAngle", 0f),
+                            parser.getAttributeFloatValue(NAMESPACE_APP, "totalArcAngle", 0f),
+                            parser.getAttributeFloatValue(NAMESPACE_APP, "arcThickness", 0f)
+                        )
+                    } else {
+                        null
+                    }
+                val bounds =
+                    ComplicationSlotBounds.inflate(
+                        resources,
+                        parser,
+                        complicationScaleX,
+                        complicationScaleY
                     )
-                } else {
-                    null
-                }
-                val bounds = ComplicationSlotBounds.inflate(
-                    resources,
-                    parser,
-                    complicationScaleX,
-                    complicationScaleY
-                )
                 require(bounds != null) {
                     "ComplicationSlot must have either one ComplicationSlotBounds child node or " +
                         "one per ComplicationType."
@@ -271,9 +270,10 @@
                         ComplicationSlotBoundsType.BACKGROUND -> BackgroundComplicationTapFilter()
                         ComplicationSlotBoundsType.EDGE ->
                             complicationSlotInflationFactory.getEdgeComplicationTapFilter(it.slotId)
-                        else -> throw UnsupportedOperationException(
-                            "Unknown boundsType ${it.boundsType}"
-                        )
+                        else ->
+                            throw UnsupportedOperationException(
+                                "Unknown boundsType ${it.boundsType}"
+                            )
                     },
                     it.nameResourceId,
                     it.screenReaderNameResourceId,
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/HeadlessWatchFaceImpl.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/HeadlessWatchFaceImpl.kt
index 2c2540b..5c0e535 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/HeadlessWatchFaceImpl.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/HeadlessWatchFaceImpl.kt
@@ -18,11 +18,11 @@
 
 import androidx.annotation.RequiresApi
 import androidx.annotation.UiThread
-import androidx.wear.watchface.utility.TraceEvent
 import androidx.wear.watchface.IndentingPrintWriter
 import androidx.wear.watchface.WatchFaceService
 import androidx.wear.watchface.control.data.ComplicationRenderParams
 import androidx.wear.watchface.control.data.WatchFaceRenderParams
+import androidx.wear.watchface.utility.TraceEvent
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.withContext
 
@@ -61,12 +61,9 @@
     init {
         TraceEvent("HeadlessWatchFaceImpl.init").use {
             runBlocking {
-                val coroutineContext = synchronized(this) {
-                    engine!!.uiThreadCoroutineScope.coroutineContext
-                }
-                withContext(coroutineContext) {
-                    headlessInstances.add(this@HeadlessWatchFaceImpl)
-                }
+                val coroutineContext =
+                    synchronized(this) { engine!!.uiThreadCoroutineScope.coroutineContext }
+                withContext(coroutineContext) { headlessInstances.add(this@HeadlessWatchFaceImpl) }
             }
         }
     }
@@ -77,13 +74,18 @@
         WatchFaceService.awaitDeferredWatchFaceImplThenRunOnUiThreadBlocking(
             engine,
             "HeadlessWatchFaceImpl.renderWatchFaceToBitmap"
-        ) { it.renderWatchFaceToBitmap(params) }
+        ) {
+            it.renderWatchFaceToBitmap(params)
+        }
 
     override fun getPreviewReferenceTimeMillis() =
         WatchFaceService.awaitDeferredWatchFaceImplThenRunOnUiThreadBlocking(
             engine,
             "HeadlessWatchFaceImpl.getPreviewReferenceTimeMillis"
-        ) { it.previewReferenceInstant.toEpochMilli() } ?: 0
+        ) {
+            it.previewReferenceInstant.toEpochMilli()
+        }
+            ?: 0
 
     override fun getComplicationState() = run {
         val engineCopy = engine
@@ -91,52 +93,63 @@
             engineCopy,
             "HeadlessWatchFaceImpl.getComplicationState",
             WatchFaceService.Companion.ExecutionThread.UI
-        ) { it.complicationSlotsManager.getComplicationsState(engineCopy!!.screenBounds) }
+        ) {
+            it.complicationSlotsManager.getComplicationsState(engineCopy!!.screenBounds)
+        }
     }
 
     override fun renderComplicationToBitmap(params: ComplicationRenderParams) =
         WatchFaceService.awaitDeferredWatchFaceImplThenRunOnUiThreadBlocking(
             engine,
             "HeadlessWatchFaceImpl.renderComplicationToBitmap"
-        ) { it.renderComplicationToBitmap(params) }
+        ) {
+            it.renderComplicationToBitmap(params)
+        }
 
     override fun getUserStyleSchema() =
         WatchFaceService.awaitDeferredEarlyInitDetailsThenRunOnThread(
             engine,
             "HeadlessWatchFaceImpl.getUserStyleSchema",
             WatchFaceService.Companion.ExecutionThread.CURRENT
-        ) { it.userStyleRepository.schema.toWireFormat() }
+        ) {
+            it.userStyleRepository.schema.toWireFormat()
+        }
 
     override fun computeUserStyleSchemaDigestHash() =
         WatchFaceService.awaitDeferredEarlyInitDetailsThenRunOnThread(
             engine,
             "HeadlessWatchFaceImpl.computeUserStyleSchemaDigestHash",
             WatchFaceService.Companion.ExecutionThread.CURRENT
-        ) { it.userStyleRepository.schema.getDigestHash() }
+        ) {
+            it.userStyleRepository.schema.getDigestHash()
+        }
 
     override fun getUserStyleFlavors() =
         WatchFaceService.awaitDeferredEarlyInitDetailsThenRunOnThread(
             engine,
             "HeadlessWatchFaceImpl.getUserStyleFlavors",
             WatchFaceService.Companion.ExecutionThread.CURRENT
-        ) { it.userStyleFlavors.toWireFormat() }
+        ) {
+            it.userStyleFlavors.toWireFormat()
+        }
 
     override fun release() {
         TraceEvent("HeadlessWatchFaceImpl.release").use {
             runBlocking {
-                val engineCopy = synchronized(this) { engine!! }
-                withContext(engineCopy.uiThreadCoroutineScope.coroutineContext) {
-                    headlessInstances.remove(this@HeadlessWatchFaceImpl)
-                    synchronized(this@HeadlessWatchFaceImpl) {
-                        engine!!.onDestroy()
-                        engine = null
+                    val engineCopy = synchronized(this) { engine!! }
+                    withContext(engineCopy.uiThreadCoroutineScope.coroutineContext) {
+                        headlessInstances.remove(this@HeadlessWatchFaceImpl)
+                        synchronized(this@HeadlessWatchFaceImpl) {
+                            engine!!.onDestroy()
+                            engine = null
 
-                        watchFaceService!!.onDestroy()
-                        watchFaceService = null
+                            watchFaceService!!.onDestroy()
+                            watchFaceService = null
+                        }
                     }
+                    engineCopy
                 }
-                engineCopy
-            }.cancelCoroutineScopes()
+                .cancelCoroutineScopes()
         }
     }
 }
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveInstanceManager.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveInstanceManager.kt
index 2191dd3..bcbafd1 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveInstanceManager.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveInstanceManager.kt
@@ -19,9 +19,9 @@
 import android.annotation.SuppressLint
 import androidx.annotation.UiThread
 import androidx.annotation.VisibleForTesting
-import androidx.wear.watchface.utility.TraceEvent
 import androidx.wear.watchface.IndentingPrintWriter
 import androidx.wear.watchface.control.data.WallpaperInteractiveWatchFaceInstanceParams
+import androidx.wear.watchface.utility.TraceEvent
 
 /** Keeps track of [InteractiveWatchFaceImpl]s. */
 internal class InteractiveInstanceManager {
@@ -51,12 +51,14 @@
         private val instances = HashMap<String, RefCountedInteractiveWatchFaceInstance>()
         private val pendingWallpaperInteractiveWatchFaceInstanceLock = Any()
         private var pendingWallpaperInteractiveWatchFaceInstance:
-            PendingWallpaperInteractiveWatchFaceInstance? = null
+            PendingWallpaperInteractiveWatchFaceInstance? =
+            null
 
         @VisibleForTesting
-        fun getInstances() = synchronized(pendingWallpaperInteractiveWatchFaceInstanceLock) {
-            instances.map { it.key }
-        }
+        fun getInstances() =
+            synchronized(pendingWallpaperInteractiveWatchFaceInstanceLock) {
+                instances.map { it.key }
+            }
 
         @SuppressLint("SyntheticAccessor")
         fun addInstance(impl: InteractiveWatchFaceImpl) {
@@ -116,16 +118,17 @@
         fun getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
             value: PendingWallpaperInteractiveWatchFaceInstance
         ): IInteractiveWatchFace? {
-            val impl = synchronized(pendingWallpaperInteractiveWatchFaceInstanceLock) {
-                val instance = instances[value.params.instanceId]
-                if (instance == null) {
-                    TraceEvent("Set pendingWallpaperInteractiveWatchFaceInstance").use {
-                        pendingWallpaperInteractiveWatchFaceInstance = value
+            val impl =
+                synchronized(pendingWallpaperInteractiveWatchFaceInstanceLock) {
+                    val instance = instances[value.params.instanceId]
+                    if (instance == null) {
+                        TraceEvent("Set pendingWallpaperInteractiveWatchFaceInstance").use {
+                            pendingWallpaperInteractiveWatchFaceInstance = value
+                        }
+                        return null
                     }
-                    return null
+                    instance.impl
                 }
-                instance.impl
-            }
 
             // The system on reboot will use this to connect to an existing watch face, we need to
             // ensure there isn't a skew between the style the watch face actually has and what the
@@ -139,12 +142,12 @@
         @SuppressLint("SyntheticAccessor")
         fun takePendingWallpaperInteractiveWatchFaceInstance():
             PendingWallpaperInteractiveWatchFaceInstance? {
-                synchronized(pendingWallpaperInteractiveWatchFaceInstanceLock) {
-                    val returnValue = pendingWallpaperInteractiveWatchFaceInstance
-                    pendingWallpaperInteractiveWatchFaceInstance = null
-                    return returnValue
-                }
+            synchronized(pendingWallpaperInteractiveWatchFaceInstanceLock) {
+                val returnValue = pendingWallpaperInteractiveWatchFaceInstance
+                pendingWallpaperInteractiveWatchFaceInstance = null
+                return returnValue
             }
+        }
 
         @UiThread
         fun dump(writer: IndentingPrintWriter) {
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveWatchFaceImpl.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveWatchFaceImpl.kt
index a9cb267..92da54c 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveWatchFaceImpl.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveWatchFaceImpl.kt
@@ -21,7 +21,6 @@
 import android.support.wearable.watchface.accessibility.ContentDescriptionLabel
 import android.util.Log
 import androidx.annotation.RequiresApi
-import androidx.wear.watchface.utility.TraceEvent
 import androidx.wear.watchface.TapEvent
 import androidx.wear.watchface.WatchFaceService
 import androidx.wear.watchface.control.data.WatchFaceRenderParams
@@ -32,12 +31,13 @@
 import androidx.wear.watchface.runBlockingWithTracing
 import androidx.wear.watchface.style.data.UserStyleSchemaWireFormat
 import androidx.wear.watchface.style.data.UserStyleWireFormat
-import kotlinx.coroutines.launch
+import androidx.wear.watchface.utility.TraceEvent
 import java.time.Instant
+import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.withContext
 
-/** An interactive watch face instance with SysUI and WCS facing interfaces.*/
+/** An interactive watch face instance with SysUI and WCS facing interfaces. */
 internal class InteractiveWatchFaceImpl(
     internal var engine: WatchFaceService.EngineWrapper?,
     internal var instanceId: String
@@ -59,11 +59,7 @@
         ) { watchFaceImpl ->
             watchFaceImpl.onTapCommand(
                 tapType,
-                TapEvent(
-                    xPos,
-                    yPos,
-                    Instant.ofEpochMilli(systemTimeProvider.getSystemTimeMillis())
-                )
+                TapEvent(xPos, yPos, Instant.ofEpochMilli(systemTimeProvider.getSystemTimeMillis()))
             )
         }
     }
@@ -73,24 +69,21 @@
     override fun unused20() {}
 
     override fun addWatchFaceListener(listener: IWatchfaceListener) {
-        engine?.addWatchFaceListener(listener) ?: Log.w(
-            TAG,
-            "addWatchFaceListener ignored due to null engine"
-        )
+        engine?.addWatchFaceListener(listener)
+            ?: Log.w(TAG, "addWatchFaceListener ignored due to null engine")
     }
 
     override fun removeWatchFaceListener(listener: IWatchfaceListener) {
-        engine?.removeWatchFaceListener(listener) ?: Log.w(
-            TAG,
-            "removeWatchFaceListener ignored due to null engine"
-        )
+        engine?.removeWatchFaceListener(listener)
+            ?: Log.w(TAG, "removeWatchFaceListener ignored due to null engine")
     }
 
     override fun getWatchFaceOverlayStyle(): WatchFaceOverlayStyleWireFormat? =
         WatchFaceService.awaitDeferredWatchFaceThenRunOnUiThread(
             engine,
             "InteractiveWatchFaceImpl.getWatchFaceOverlayStyle"
-        ) { WatchFaceOverlayStyleWireFormat(
+        ) {
+            WatchFaceOverlayStyleWireFormat(
                 it.overlayStyle.backgroundColor,
                 it.overlayStyle.foregroundColor
             )
@@ -100,7 +93,9 @@
         return WatchFaceService.awaitDeferredWatchFaceImplThenRunOnUiThreadBlocking(
             engine,
             "InteractiveWatchFaceImpl.getContentDescriptionLabels"
-        ) { engine?.contentDescriptionLabels }
+        ) {
+            engine?.contentDescriptionLabels
+        }
     }
 
     @RequiresApi(Build.VERSION_CODES.O_MR1)
@@ -108,14 +103,19 @@
         return WatchFaceService.awaitDeferredWatchFaceImplThenRunOnUiThreadBlocking(
             engine,
             "InteractiveWatchFaceImpl.renderWatchFaceToBitmap"
-        ) { watchFaceImpl -> watchFaceImpl.renderWatchFaceToBitmap(params) }
+        ) { watchFaceImpl ->
+            watchFaceImpl.renderWatchFaceToBitmap(params)
+        }
     }
 
     override fun getPreviewReferenceTimeMillis(): Long {
         return WatchFaceService.awaitDeferredWatchFaceImplThenRunOnUiThreadBlocking(
             engine,
             "InteractiveWatchFaceImpl.getPreviewReferenceTimeMillis"
-        ) { watchFaceImpl -> watchFaceImpl.previewReferenceInstant.toEpochMilli() } ?: 0
+        ) { watchFaceImpl ->
+            watchFaceImpl.previewReferenceInstant.toEpochMilli()
+        }
+            ?: 0
     }
 
     override fun setWatchUiState(watchUiState: WatchUiState) {
@@ -123,9 +123,8 @@
             engine,
             "InteractiveWatchFaceImpl.setWatchUiState"
         ) {
-            engine?.let {
-                it.setWatchUiState(watchUiState, fromSysUi = true)
-            } ?: Log.d(TAG, "setWatchUiState ignored due to null engine id $instanceId")
+            engine?.let { it.setWatchUiState(watchUiState, fromSysUi = true) }
+                ?: Log.d(TAG, "setWatchUiState ignored due to null engine id $instanceId")
         }
     }
 
@@ -140,39 +139,36 @@
         }
     }
 
-    override fun release(): Unit = TraceEvent("InteractiveWatchFaceImpl.release").use {
-        // Note this is a one way method called on a binder thread, so it shouldn't matter if we
-        // block.
-        runBlocking {
-            try {
-                withContext(uiThreadCoroutineScope.coroutineContext) {
-                    engine?.let {
-                        it.deferredWatchFaceImpl.await()
+    override fun release(): Unit =
+        TraceEvent("InteractiveWatchFaceImpl.release").use {
+            // Note this is a one way method called on a binder thread, so it shouldn't matter if we
+            // block.
+            runBlocking {
+                try {
+                    withContext(uiThreadCoroutineScope.coroutineContext) {
+                        engine?.let { it.deferredWatchFaceImpl.await() }
+                        InteractiveInstanceManager.releaseInstance(instanceId)
                     }
-                    InteractiveInstanceManager.releaseInstance(instanceId)
+                } catch (e: Exception) {
+                    // deferredWatchFaceImpl may have completed with an exception. This will
+                    // have already been reported so we can ignore it.
                 }
-            } catch (e: Exception) {
-                // deferredWatchFaceImpl may have completed with an exception. This will
-                // have already been reported so we can ignore it.
             }
         }
-    }
 
     override fun updateComplicationData(
         complicationDatumWireFormats: MutableList<IdAndComplicationDataWireFormat>
-    ): Unit = TraceEvent("InteractiveWatchFaceImpl.updateComplicationData").use {
-        if ("user" != Build.TYPE) {
-            Log.d(TAG, "updateComplicationData " + complicationDatumWireFormats.joinToString())
+    ): Unit =
+        TraceEvent("InteractiveWatchFaceImpl.updateComplicationData").use {
+            if ("user" != Build.TYPE) {
+                Log.d(TAG, "updateComplicationData " + complicationDatumWireFormats.joinToString())
+            }
+
+            engine?.setComplicationDataList(complicationDatumWireFormats)
+                ?: Log.d(TAG, "updateComplicationData ignored due to null engine id $instanceId")
         }
 
-        engine?.setComplicationDataList(complicationDatumWireFormats)
-            ?: Log.d(TAG, "updateComplicationData ignored due to null engine id $instanceId")
-    }
-
-    override fun updateWatchfaceInstance(
-        newInstanceId: String,
-        userStyle: UserStyleWireFormat
-    ) {
+    override fun updateWatchfaceInstance(newInstanceId: String, userStyle: UserStyleWireFormat) {
         /**
          * This is blocking to ensure ordering with respect to any subsequent [getInstanceId] and
          * [getPreviewReferenceTimeMillis] calls.
@@ -194,7 +190,9 @@
             engineCopy,
             "InteractiveWatchFaceImpl.getComplicationDetails",
             WatchFaceService.Companion.ExecutionThread.UI
-        ) { it.complicationSlotsManager.getComplicationsState(engineCopy!!.screenBounds) }
+        ) {
+            it.complicationSlotsManager.getComplicationsState(engineCopy!!.screenBounds)
+        }
     }
 
     override fun getUserStyleSchema(): UserStyleSchemaWireFormat? {
@@ -202,7 +200,9 @@
             engine,
             "InteractiveWatchFaceImpl.getUserStyleSchema",
             WatchFaceService.Companion.ExecutionThread.CURRENT
-        ) { it.userStyleRepository.schema.toWireFormat() }
+        ) {
+            it.userStyleRepository.schema.toWireFormat()
+        }
     }
 
     override fun bringAttentionToComplication(id: Int) {
@@ -222,7 +222,8 @@
             "InteractiveWatchFaceImpl.getComplicationIdAt"
         ) {
             it.complicationSlotsManager.getComplicationSlotAt(xPos, yPos)?.id?.toLong()
-        } ?: Long.MIN_VALUE
+        }
+            ?: Long.MIN_VALUE
     }
 
     fun onDestroy() {
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/WatchFaceControlService.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/WatchFaceControlService.kt
index 7c4b22e..58dc948 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/WatchFaceControlService.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/WatchFaceControlService.kt
@@ -27,8 +27,6 @@
 import androidx.annotation.RestrictTo
 import androidx.annotation.UiThread
 import androidx.annotation.VisibleForTesting
-import androidx.wear.watchface.utility.AsyncTraceEvent
-import androidx.wear.watchface.utility.TraceEvent
 import androidx.wear.watchface.IndentingPrintWriter
 import androidx.wear.watchface.WatchFaceService
 import androidx.wear.watchface.control.data.CrashInfoParcel
@@ -44,6 +42,8 @@
 import androidx.wear.watchface.runBlockingWithTracing
 import androidx.wear.watchface.style.data.UserStyleFlavorsWireFormat
 import androidx.wear.watchface.style.data.UserStyleSchemaWireFormat
+import androidx.wear.watchface.utility.AsyncTraceEvent
+import androidx.wear.watchface.utility.TraceEvent
 import java.io.FileDescriptor
 import java.io.PrintWriter
 import kotlinx.coroutines.CoroutineScope
@@ -138,18 +138,17 @@
 
     override fun createHeadlessWatchFaceInstance(
         params: HeadlessWatchFaceInstanceParams
-    ): IHeadlessWatchFace? = TraceEvent(
-        "IWatchFaceInstanceServiceStub.createHeadlessWatchFaceInstance"
-    ).use {
-        createServiceAndHeadlessEngine(params.watchFaceName)?.let { serviceAndEngine ->
-            // This is serviced on a background thread so it should be fine to block.
-            uiThreadCoroutineScope.runBlockingWithTracing("createHeadlessInstance") {
-                // However the WatchFaceService.createWatchFace method needs to be run on the UI
-                // thread.
-                serviceAndEngine.engine.createHeadlessInstance(params)
+    ): IHeadlessWatchFace? =
+        TraceEvent("IWatchFaceInstanceServiceStub.createHeadlessWatchFaceInstance").use {
+            createServiceAndHeadlessEngine(params.watchFaceName)?.let { serviceAndEngine ->
+                // This is serviced on a background thread so it should be fine to block.
+                uiThreadCoroutineScope.runBlockingWithTracing("createHeadlessInstance") {
+                    // However the WatchFaceService.createWatchFace method needs to be run on the UI
+                    // thread.
+                    serviceAndEngine.engine.createHeadlessInstance(params)
+                }
             }
         }
-    }
 
     private class ServiceAndEngine(
         val service: WatchFaceService,
@@ -160,55 +159,50 @@
                 engine.onDestroy()
                 service.onDestroy()
             } catch (e: Exception) {
-                Log.e(
-                    TAG,
-                    "ServiceAndEngine.destroy failed due to exception",
-                    e
-                )
+                Log.e(TAG, "ServiceAndEngine.destroy failed due to exception", e)
                 throw e
             }
         }
     }
 
     @SuppressLint("BanUncheckedReflection")
-    private fun createServiceAndHeadlessEngine(
-        watchFaceName: ComponentName
-    ) = TraceEvent("IWatchFaceInstanceServiceStub.createEngine").use {
-        // Attempt to construct the class for the specified watchFaceName, failing if it either
-        // doesn't exist or isn't a [WatchFaceService].
-        val watchFaceService = service?.createWatchFaceService(watchFaceName)
+    private fun createServiceAndHeadlessEngine(watchFaceName: ComponentName) =
+        TraceEvent("IWatchFaceInstanceServiceStub.createEngine").use {
+            // Attempt to construct the class for the specified watchFaceName, failing if it either
+            // doesn't exist or isn't a [WatchFaceService].
+            val watchFaceService = service?.createWatchFaceService(watchFaceName)
 
-        if (watchFaceService != null) {
-            // Set the context and if possible the application for watchFaceService.
-            try {
-                val method = Service::class.java.declaredMethods.find { it.name == "attach" }
-                method!!.isAccessible = true
-                method.invoke(
-                    watchFaceService,
-                    service as Context,
-                    null,
-                    watchFaceService::class.qualifiedName,
-                    null,
-                    service!!.application,
-                    null
-                )
-            } catch (e: Exception) {
-                Log.w(
-                    TAG,
-                    "createServiceAndHeadlessEngine can't call attach by reflection, " +
-                        "falling back to setContext",
-                    e
-                )
-                watchFaceService.setContext(watchFaceService)
+            if (watchFaceService != null) {
+                // Set the context and if possible the application for watchFaceService.
+                try {
+                    val method = Service::class.java.declaredMethods.find { it.name == "attach" }
+                    method!!.isAccessible = true
+                    method.invoke(
+                        watchFaceService,
+                        service as Context,
+                        null,
+                        watchFaceService::class.qualifiedName,
+                        null,
+                        service!!.application,
+                        null
+                    )
+                } catch (e: Exception) {
+                    Log.w(
+                        TAG,
+                        "createServiceAndHeadlessEngine can't call attach by reflection, " +
+                            "falling back to setContext",
+                        e
+                    )
+                    watchFaceService.setContext(watchFaceService)
+                }
+                watchFaceService.onCreate()
+                val engine =
+                    watchFaceService.createHeadlessEngine() as WatchFaceService.EngineWrapper
+                ServiceAndEngine(watchFaceService, engine)
+            } else {
+                null
             }
-            watchFaceService.onCreate()
-            val engine =
-                watchFaceService.createHeadlessEngine() as WatchFaceService.EngineWrapper
-            ServiceAndEngine(watchFaceService, engine)
-        } else {
-            null
         }
-    }
 
     override fun getOrCreateInteractiveWatchFace(
         params: WallpaperInteractiveWatchFaceInstanceParams,
@@ -249,52 +243,63 @@
 
     override fun getDefaultProviderPolicies(
         params: DefaultProviderPoliciesParams
-    ): Array<IdTypeAndDefaultProviderPolicyWireFormat>? = createServiceAndHeadlessEngineAndEvaluate(
-        params.watchFaceName,
-        "IWatchFaceInstanceServiceStub.getDefaultProviderPolicies"
-    ) { it.engine.getDefaultProviderPolicies() }
+    ): Array<IdTypeAndDefaultProviderPolicyWireFormat>? =
+        createServiceAndHeadlessEngineAndEvaluate(
+            params.watchFaceName,
+            "IWatchFaceInstanceServiceStub.getDefaultProviderPolicies"
+        ) {
+            it.engine.getDefaultProviderPolicies()
+        }
 
-    override fun getUserStyleSchema(
-        params: GetUserStyleSchemaParams
-    ): UserStyleSchemaWireFormat? = createServiceAndHeadlessEngineAndEvaluate(
-        params.watchFaceName,
-        "IWatchFaceInstanceServiceStub.getUserStyleSchema"
-    ) { it.engine.getUserStyleSchemaWireFormat() }
+    override fun getUserStyleSchema(params: GetUserStyleSchemaParams): UserStyleSchemaWireFormat? =
+        createServiceAndHeadlessEngineAndEvaluate(
+            params.watchFaceName,
+            "IWatchFaceInstanceServiceStub.getUserStyleSchema"
+        ) {
+            it.engine.getUserStyleSchemaWireFormat()
+        }
 
     override fun getComplicationSlotMetadata(
         params: GetComplicationSlotMetadataParams
-    ): Array<ComplicationSlotMetadataWireFormat>? = createServiceAndHeadlessEngineAndEvaluate(
-        params.watchFaceName,
-        "IWatchFaceInstanceServiceStub.getComplicationSlotMetadata"
-    ) { it.engine.getComplicationSlotMetadataWireFormats() }
+    ): Array<ComplicationSlotMetadataWireFormat>? =
+        createServiceAndHeadlessEngineAndEvaluate(
+            params.watchFaceName,
+            "IWatchFaceInstanceServiceStub.getComplicationSlotMetadata"
+        ) {
+            it.engine.getComplicationSlotMetadataWireFormats()
+        }
 
     override fun hasComplicationCache() = true
 
     override fun getUserStyleFlavors(
         params: GetUserStyleFlavorsParams
-    ): UserStyleFlavorsWireFormat? = createServiceAndHeadlessEngineAndEvaluate(
-        params.watchFaceName,
-        "IWatchFaceInstanceServiceStub.getUserStyleFlavors"
-    ) { it.engine.getUserStyleFlavorsWireFormat() }
+    ): UserStyleFlavorsWireFormat? =
+        createServiceAndHeadlessEngineAndEvaluate(
+            params.watchFaceName,
+            "IWatchFaceInstanceServiceStub.getUserStyleFlavors"
+        ) {
+            it.engine.getUserStyleFlavorsWireFormat()
+        }
 
     private fun <T> createServiceAndHeadlessEngineAndEvaluate(
         watchFaceName: ComponentName,
         functionName: String,
         function: (serviceAndEngine: ServiceAndEngine) -> T
-    ): T? = TraceEvent(functionName).use {
-        return try {
-            createServiceAndHeadlessEngine(watchFaceName)?.let { serviceAndEngine ->
-                try {
-                    function(serviceAndEngine)
-                } finally {
-                    serviceAndEngine.destroy()
+    ): T? =
+        TraceEvent(functionName).use {
+            return try {
+                createServiceAndHeadlessEngine(watchFaceName)?.let { serviceAndEngine ->
+                    try {
+                        function(serviceAndEngine)
+                    } finally {
+                        serviceAndEngine.destroy()
+                    }
                 }
+            } catch (e: Exception) {
+                Log.e(TAG, "$functionName failed due to exception", e)
+                throw e
             }
-        } catch (e: Exception) {
-            Log.e(TAG, "$functionName failed due to exception", e)
-            throw e
         }
-    }
 
     fun onDestroy() {
         service = null
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/editor/EditorService.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/editor/EditorService.kt
index d613398..8221e95 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/editor/EditorService.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/editor/EditorService.kt
@@ -48,14 +48,17 @@
         synchronized(lock) {
             val id = nextId++
             observers[id] = observer
-            val deathObserver = IBinder.DeathRecipient {
-                Log.w(TAG, "observer died, closing editor")
-                // If SysUI dies we should close the editor too, otherwise the watchface could get
-                // left in an inconsistent state where it has local edits that were not persisted by
-                // the system.
-                closeEditor()
-                unregisterObserver(id)
-            }
+            val deathObserver =
+                IBinder.DeathRecipient {
+                    Log.w(TAG, "observer died, closing editor")
+                    // If SysUI dies we should close the editor too, otherwise the watchface could
+                    // get
+                    // left in an inconsistent state where it has local edits that were not
+                    // persisted by
+                    // the system.
+                    closeEditor()
+                    unregisterObserver(id)
+                }
             observer.asBinder().linkToDeath(deathObserver, 0)
             deathObservers[id] = deathObserver
             return id
@@ -83,9 +86,7 @@
     }
 
     override fun closeEditor() {
-        val callbackCopy = synchronized(lock) {
-            HashSet<CloseCallback>(closeEditorCallbacks)
-        }
+        val callbackCopy = synchronized(lock) { HashSet<CloseCallback>(closeEditorCallbacks) }
         // We iterate on a copy of closeEditorCallbacks to avoid calls to removeCloseCallback
         // mutating a set we're iterating.
         for (observer in callbackCopy) {
@@ -97,27 +98,19 @@
      * Adds [closeCallback] to the set of observers to be called if the client calls [closeEditor].
      */
     public fun addCloseCallback(closeCallback: CloseCallback) {
-        synchronized(lock) {
-            closeEditorCallbacks.add(closeCallback)
-        }
+        synchronized(lock) { closeEditorCallbacks.add(closeCallback) }
     }
 
     /**
      * Removes [closeCallback] from set of observers to be called if the client calls [closeEditor].
      */
     public fun removeCloseCallback(closeCallback: CloseCallback) {
-        synchronized(lock) {
-            closeEditorCallbacks.remove(closeCallback)
-        }
+        synchronized(lock) { closeEditorCallbacks.remove(closeCallback) }
     }
 
-    /**
-     * Removes all [closeEditorCallbacks].
-     */
+    /** Removes all [closeEditorCallbacks]. */
     public fun clearCloseCallbacks() {
-        synchronized(lock) {
-            closeEditorCallbacks.clear()
-        }
+        synchronized(lock) { closeEditorCallbacks.clear() }
     }
 
     /**
diff --git a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/AsyncWatchFaceInitTest.kt b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/AsyncWatchFaceInitTest.kt
index c09f23b..a48ba9c 100644
--- a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/AsyncWatchFaceInitTest.kt
+++ b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/AsyncWatchFaceInitTest.kt
@@ -31,14 +31,16 @@
 import androidx.wear.watchface.control.data.WallpaperInteractiveWatchFaceInstanceParams
 import androidx.wear.watchface.data.DeviceConfig
 import androidx.wear.watchface.data.WatchUiState
-import androidx.wear.watchface.style.UserStyle
 import androidx.wear.watchface.style.CurrentUserStyleRepository
+import androidx.wear.watchface.style.UserStyle
 import androidx.wear.watchface.style.UserStyleSchema
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
+import java.util.ArrayDeque
+import java.util.PriorityQueue
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.Deferred
 import kotlinx.coroutines.launch
+import org.junit.After
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertNull
 import org.junit.Assert.fail
@@ -47,10 +49,8 @@
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatchers
 import org.mockito.Mockito
+import org.mockito.kotlin.mock
 import org.robolectric.annotation.Config
-import java.util.ArrayDeque
-import java.util.PriorityQueue
-import org.junit.After
 
 internal class TestAsyncWatchFaceService(
     private val handler: Handler,
@@ -88,12 +88,15 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = factory.createWatchFaceAsync(
-        surfaceHolder,
-        watchState,
-        complicationSlotsManager,
-        currentUserStyleRepository
-    ).await()
+    ) =
+        factory
+            .createWatchFaceAsync(
+                surfaceHolder,
+                watchState,
+                complicationSlotsManager,
+                currentUserStyleRepository
+            )
+            .await()
 
     override fun getUiThreadHandlerImpl() = handler
 
@@ -101,17 +104,13 @@
 
     override fun getMutableWatchState() = watchState
 
-    override fun readDirectBootPrefs(
-        context: Context,
-        fileName: String
-    ) = directBootParams
+    override fun readDirectBootPrefs(context: Context, fileName: String) = directBootParams
 
     override fun writeDirectBootPrefs(
         context: Context,
         fileName: String,
         prefs: WallpaperInteractiveWatchFaceInstanceParams
-    ) {
-    }
+    ) {}
 }
 
 @Config(manifest = Config.NONE, sdk = [Build.VERSION_CODES.R])
@@ -122,20 +121,16 @@
     private val surfaceHolder = mock<SurfaceHolder>()
     private var looperTimeMillis = 0L
     private val pendingTasks = PriorityQueue<Task>()
-    private val initParams = WallpaperInteractiveWatchFaceInstanceParams(
-        "instanceId",
-        DeviceConfig(
-            false,
-            false,
-            0,
-            0
-        ),
-        WatchUiState(false, 0),
-        UserStyle(emptyMap()).toWireFormat(),
-        null,
-        null,
-        null
-    )
+    private val initParams =
+        WallpaperInteractiveWatchFaceInstanceParams(
+            "instanceId",
+            DeviceConfig(false, false, 0, 0),
+            WatchUiState(false, 0),
+            UserStyle(emptyMap()).toWireFormat(),
+            null,
+            null,
+            null
+        )
 
     private class Task(val runTimeMillis: Long, val runnable: Runnable) : Comparable<Task> {
         override fun compareTo(other: Task) = runTimeMillis.compareTo(other.runTimeMillis)
@@ -143,8 +138,8 @@
 
     private fun runPostedTasksFor(durationMillis: Long) {
         looperTimeMillis += durationMillis
-        while (pendingTasks.isNotEmpty() &&
-            pendingTasks.peek()!!.runTimeMillis <= looperTimeMillis
+        while (
+            pendingTasks.isNotEmpty() && pendingTasks.peek()!!.runTimeMillis <= looperTimeMillis
         ) {
             pendingTasks.remove().runnable.run()
         }
@@ -155,39 +150,35 @@
         Mockito.`when`(handler.getLooper()).thenReturn(Looper.myLooper())
 
         // Capture tasks posted to mHandler and insert in mPendingTasks which is under our control.
-        Mockito.doAnswer {
-            pendingTasks.add(
-                Task(
-                    looperTimeMillis,
-                    it.arguments[0] as Runnable
-                )
-            )
-        }.`when`(handler).post(ArgumentMatchers.any())
+        Mockito.doAnswer { pendingTasks.add(Task(looperTimeMillis, it.arguments[0] as Runnable)) }
+            .`when`(handler)
+            .post(ArgumentMatchers.any())
 
         Mockito.doAnswer {
-            pendingTasks.add(
-                Task(
-                    looperTimeMillis + it.arguments[1] as Long,
-                    it.arguments[0] as Runnable
+                pendingTasks.add(
+                    Task(looperTimeMillis + it.arguments[1] as Long, it.arguments[0] as Runnable)
                 )
-            )
-        }.`when`(handler).postDelayed(ArgumentMatchers.any(), ArgumentMatchers.anyLong())
+            }
+            .`when`(handler)
+            .postDelayed(ArgumentMatchers.any(), ArgumentMatchers.anyLong())
 
         Mockito.doAnswer {
-            // Remove task from the priority queue.  There's no good way of doing this quickly.
-            val queue = ArrayDeque<Task>()
-            while (pendingTasks.isNotEmpty()) {
-                val task = pendingTasks.remove()
-                if (task.runnable != it.arguments[0]) {
-                    queue.add(task)
+                // Remove task from the priority queue.  There's no good way of doing this quickly.
+                val queue = ArrayDeque<Task>()
+                while (pendingTasks.isNotEmpty()) {
+                    val task = pendingTasks.remove()
+                    if (task.runnable != it.arguments[0]) {
+                        queue.add(task)
+                    }
+                }
+
+                // Push filtered tasks back on the queue.
+                while (queue.isNotEmpty()) {
+                    pendingTasks.add(queue.remove())
                 }
             }
-
-            // Push filtered tasks back on the queue.
-            while (queue.isNotEmpty()) {
-                pendingTasks.add(queue.remove())
-            }
-        }.`when`(handler).removeCallbacks(ArgumentMatchers.any())
+            .`when`(handler)
+            .removeCallbacks(ArgumentMatchers.any())
     }
 
     @After
@@ -199,25 +190,26 @@
     @Test
     public fun createInteractiveInstanceFailsIfDirectBootWatchFaceCreationIsInProgress() {
         val completableWatchFace = CompletableDeferred<WatchFace>()
-        val service = TestAsyncWatchFaceService(
-            handler,
-            object : TestAsyncWatchFaceService.AsyncWatchFaceFactory() {
-                override fun createUserStyleSchema() = UserStyleSchema(emptyList())
+        val service =
+            TestAsyncWatchFaceService(
+                handler,
+                object : TestAsyncWatchFaceService.AsyncWatchFaceFactory() {
+                    override fun createUserStyleSchema() = UserStyleSchema(emptyList())
 
-                override fun createComplicationsManager(
-                    currentUserStyleRepository: CurrentUserStyleRepository
-                ) = ComplicationSlotsManager(emptyList(), currentUserStyleRepository)
+                    override fun createComplicationsManager(
+                        currentUserStyleRepository: CurrentUserStyleRepository
+                    ) = ComplicationSlotsManager(emptyList(), currentUserStyleRepository)
 
-                override fun createWatchFaceAsync(
-                    surfaceHolder: SurfaceHolder,
-                    watchState: WatchState,
-                    complicationSlotsManager: ComplicationSlotsManager,
-                    currentUserStyleRepository: CurrentUserStyleRepository
-                ) = completableWatchFace
-            },
-            MutableWatchState(),
-            initParams
-        )
+                    override fun createWatchFaceAsync(
+                        surfaceHolder: SurfaceHolder,
+                        watchState: WatchState,
+                        complicationSlotsManager: ComplicationSlotsManager,
+                        currentUserStyleRepository: CurrentUserStyleRepository
+                    ) = completableWatchFace
+                },
+                MutableWatchState(),
+                initParams
+            )
 
         val engineWrapper = service.onCreateEngine() as WatchFaceService.EngineWrapper
 
@@ -253,8 +245,7 @@
                     InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                         initParams,
                         object : IPendingInteractiveWatchFace.Stub() {
-                            override fun getApiVersion() =
-                                IPendingInteractiveWatchFace.API_VERSION
+                            override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                             override fun onInteractiveWatchFaceCreated(
                                 iInteractiveWatchFaceWcs: IInteractiveWatchFace?
@@ -272,30 +263,31 @@
                 )
         )
 
-        val service = TestAsyncWatchFaceService(
-            handler,
-            object : TestAsyncWatchFaceService.AsyncWatchFaceFactory() {
-                override fun createUserStyleSchema() = UserStyleSchema(emptyList())
+        val service =
+            TestAsyncWatchFaceService(
+                handler,
+                object : TestAsyncWatchFaceService.AsyncWatchFaceFactory() {
+                    override fun createUserStyleSchema() = UserStyleSchema(emptyList())
 
-                override fun createComplicationsManager(
-                    currentUserStyleRepository: CurrentUserStyleRepository
-                ) = ComplicationSlotsManager(emptyList(), currentUserStyleRepository)
+                    override fun createComplicationsManager(
+                        currentUserStyleRepository: CurrentUserStyleRepository
+                    ) = ComplicationSlotsManager(emptyList(), currentUserStyleRepository)
 
-                override fun createWatchFaceAsync(
-                    surfaceHolder: SurfaceHolder,
-                    watchState: WatchState,
-                    complicationSlotsManager: ComplicationSlotsManager,
-                    currentUserStyleRepository: CurrentUserStyleRepository
-                ): Deferred<WatchFace> {
-                    pendingSurfaceHolder = surfaceHolder
-                    pendingWatchState = watchState
-                    pendingCurrentUserStyleRepository = currentUserStyleRepository
-                    return completableDirectBootWatchFace
-                }
-            },
-            MutableWatchState(),
-            initParams
-        )
+                    override fun createWatchFaceAsync(
+                        surfaceHolder: SurfaceHolder,
+                        watchState: WatchState,
+                        complicationSlotsManager: ComplicationSlotsManager,
+                        currentUserStyleRepository: CurrentUserStyleRepository
+                    ): Deferred<WatchFace> {
+                        pendingSurfaceHolder = surfaceHolder
+                        pendingWatchState = watchState
+                        pendingCurrentUserStyleRepository = currentUserStyleRepository
+                        return completableDirectBootWatchFace
+                    }
+                },
+                MutableWatchState(),
+                initParams
+            )
 
         val engineWrapper = service.onCreateEngine() as WatchFaceService.EngineWrapper
         Mockito.`when`(surfaceHolder.surfaceFrame).thenReturn(Rect(0, 0, 100, 100))
diff --git a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/JavaCompatTest.java b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/JavaCompatTest.java
index 32c6b89..955a3f7 100644
--- a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/JavaCompatTest.java
+++ b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/JavaCompatTest.java
@@ -29,8 +29,11 @@
 public class JavaCompatTest {
     class ComplicationTapFilterImpl implements ComplicationTapFilter {
         @SuppressWarnings("deprecation")
-        public boolean hitTest(@NonNull ComplicationSlot complicationSlot,
-                @NonNull Rect screenBounds, @Px int x, @Px int y) {
+        public boolean hitTest(
+                @NonNull ComplicationSlot complicationSlot,
+                @NonNull Rect screenBounds,
+                @Px int x,
+                @Px int y) {
             return true;
         }
     }
@@ -42,15 +45,20 @@
         }
 
         @Override
-        public void render(@NonNull Canvas canvas, @NonNull Rect bounds,
-                @NonNull ZonedDateTime zonedDateTime, @NonNull RenderParameters renderParameters,
-                int slotId) {
-        }
+        public void render(
+                @NonNull Canvas canvas,
+                @NonNull Rect bounds,
+                @NonNull ZonedDateTime zonedDateTime,
+                @NonNull RenderParameters renderParameters,
+                int slotId) {}
 
         @Override
-        public void drawHighlight(@NonNull Canvas canvas, @NonNull Rect bounds, int boundsType,
-                @NonNull ZonedDateTime zonedDateTime, int color) {
-        }
+        public void drawHighlight(
+                @NonNull Canvas canvas,
+                @NonNull Rect bounds,
+                int boundsType,
+                @NonNull ZonedDateTime zonedDateTime,
+                int color) {}
 
         @NonNull
         @Override
@@ -59,9 +67,7 @@
         }
 
         @Override
-        public void loadData(@NonNull ComplicationData complicationData,
-                boolean loadDrawablesAsynchronous) {
-
-        }
+        public void loadData(
+                @NonNull ComplicationData complicationData, boolean loadDrawablesAsynchronous) {}
     }
 }
diff --git a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/RenderParametersTest.kt b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/RenderParametersTest.kt
index bc881a2..f49f16b 100644
--- a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/RenderParametersTest.kt
+++ b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/RenderParametersTest.kt
@@ -17,8 +17,8 @@
 package androidx.wear.watchface
 
 import android.graphics.Color
-import androidx.wear.watchface.style.WatchFaceLayer
 import androidx.wear.watchface.style.UserStyleSetting
+import androidx.wear.watchface.style.WatchFaceLayer
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -27,9 +27,10 @@
 public class RenderParametersTest {
     @Test
     public fun interactive_base_toWireFormatRoundTrip() {
-        val renderParameters = RenderParameters(
-            RenderParameters(DrawMode.INTERACTIVE, setOf(WatchFaceLayer.BASE)).toWireFormat()
-        )
+        val renderParameters =
+            RenderParameters(
+                RenderParameters(DrawMode.INTERACTIVE, setOf(WatchFaceLayer.BASE)).toWireFormat()
+            )
         assertThat(renderParameters.drawMode).isEqualTo(DrawMode.INTERACTIVE)
         assertThat(renderParameters.watchFaceLayers).containsExactly(WatchFaceLayer.BASE)
         assertThat(renderParameters.highlightLayer).isNull()
@@ -37,83 +38,124 @@
 
     @Test
     public fun ambient_twoLayers_toWireFormatRoundTrip() {
-        val renderParameters = RenderParameters(
+        val renderParameters =
             RenderParameters(
-                DrawMode.AMBIENT,
-                setOf(
-                    WatchFaceLayer.COMPLICATIONS,
-                    WatchFaceLayer.COMPLICATIONS_OVERLAY
-                )
-            ).toWireFormat()
-        )
+                RenderParameters(
+                        DrawMode.AMBIENT,
+                        setOf(WatchFaceLayer.COMPLICATIONS, WatchFaceLayer.COMPLICATIONS_OVERLAY)
+                    )
+                    .toWireFormat()
+            )
         assertThat(renderParameters.drawMode).isEqualTo(DrawMode.AMBIENT)
-        assertThat(renderParameters.watchFaceLayers).containsExactly(
-            WatchFaceLayer.COMPLICATIONS,
-            WatchFaceLayer.COMPLICATIONS_OVERLAY
-        )
+        assertThat(renderParameters.watchFaceLayers)
+            .containsExactly(WatchFaceLayer.COMPLICATIONS, WatchFaceLayer.COMPLICATIONS_OVERLAY)
         assertThat(renderParameters.highlightLayer).isNull()
     }
 
     @Test
     public fun highlightLayer_AllComplications_toWireFormatRoundTrip() {
-        val renderParameters = RenderParameters(
+        val renderParameters =
             RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                RenderParameters.HighlightLayer(
-                    RenderParameters.HighlightedElement.AllComplicationSlots,
-                    Color.RED,
-                    Color.BLACK
-                )
-            ).toWireFormat()
-        )
+                RenderParameters(
+                        DrawMode.INTERACTIVE,
+                        WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                        RenderParameters.HighlightLayer(
+                            RenderParameters.HighlightedElement.AllComplicationSlots,
+                            Color.RED,
+                            Color.BLACK
+                        )
+                    )
+                    .toWireFormat()
+            )
         assertThat(renderParameters.drawMode).isEqualTo(DrawMode.INTERACTIVE)
-        assertThat(renderParameters.watchFaceLayers).containsExactly(
-            WatchFaceLayer.BASE,
-            WatchFaceLayer.COMPLICATIONS,
-            WatchFaceLayer.COMPLICATIONS_OVERLAY
-        )
+        assertThat(renderParameters.watchFaceLayers)
+            .containsExactly(
+                WatchFaceLayer.BASE,
+                WatchFaceLayer.COMPLICATIONS,
+                WatchFaceLayer.COMPLICATIONS_OVERLAY
+            )
         val highlightLayer = renderParameters.highlightLayer
         assertThat(highlightLayer!!.highlightTint).isEqualTo(Color.RED)
         assertThat(highlightLayer.backgroundTint).isEqualTo(Color.BLACK)
-        assertThat(highlightLayer.highlightedElement).isInstanceOf(
-            RenderParameters.HighlightedElement.AllComplicationSlots::class.java
-        )
+        assertThat(highlightLayer.highlightedElement)
+            .isInstanceOf(RenderParameters.HighlightedElement.AllComplicationSlots::class.java)
     }
 
     @Test
     public fun highlightLayer_Complication_toWireFormatRoundTrip() {
-        val renderParameters = RenderParameters(
+        val renderParameters =
             RenderParameters(
-                DrawMode.INTERACTIVE,
-                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-                RenderParameters.HighlightLayer(
-                    RenderParameters.HighlightedElement.ComplicationSlot(123),
-                    Color.RED,
-                    Color.BLACK
-                )
-            ).toWireFormat()
-        )
+                RenderParameters(
+                        DrawMode.INTERACTIVE,
+                        WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                        RenderParameters.HighlightLayer(
+                            RenderParameters.HighlightedElement.ComplicationSlot(123),
+                            Color.RED,
+                            Color.BLACK
+                        )
+                    )
+                    .toWireFormat()
+            )
         assertThat(renderParameters.drawMode).isEqualTo(DrawMode.INTERACTIVE)
-        assertThat(renderParameters.watchFaceLayers).containsExactly(
-            WatchFaceLayer.BASE,
-            WatchFaceLayer.COMPLICATIONS,
-            WatchFaceLayer.COMPLICATIONS_OVERLAY
-        )
+        assertThat(renderParameters.watchFaceLayers)
+            .containsExactly(
+                WatchFaceLayer.BASE,
+                WatchFaceLayer.COMPLICATIONS,
+                WatchFaceLayer.COMPLICATIONS_OVERLAY
+            )
         val highlightLayer = renderParameters.highlightLayer
         assertThat(highlightLayer!!.highlightTint).isEqualTo(Color.RED)
         assertThat(highlightLayer.backgroundTint).isEqualTo(Color.BLACK)
-        assertThat(highlightLayer.highlightedElement).isInstanceOf(
-            RenderParameters.HighlightedElement.ComplicationSlot::class.java
-        )
-        val complication = highlightLayer.highlightedElement as
-            RenderParameters.HighlightedElement.ComplicationSlot
+        assertThat(highlightLayer.highlightedElement)
+            .isInstanceOf(RenderParameters.HighlightedElement.ComplicationSlot::class.java)
+        val complication =
+            highlightLayer.highlightedElement
+                as RenderParameters.HighlightedElement.ComplicationSlot
         assertThat(complication.id).isEqualTo(123)
     }
 
     @Test
     public fun highlightLayer_UserStyle_toWireFormatRoundTrip() {
-        val renderParameters = RenderParameters(
+        val renderParameters =
+            RenderParameters(
+                RenderParameters(
+                        DrawMode.INTERACTIVE,
+                        WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                        RenderParameters.HighlightLayer(
+                            RenderParameters.HighlightedElement.UserStyle(
+                                UserStyleSetting.Id("id-1")
+                            ),
+                            Color.RED,
+                            Color.BLACK
+                        )
+                    )
+                    .toWireFormat()
+            )
+        assertThat(renderParameters.drawMode).isEqualTo(DrawMode.INTERACTIVE)
+        assertThat(renderParameters.watchFaceLayers)
+            .containsExactly(
+                WatchFaceLayer.BASE,
+                WatchFaceLayer.COMPLICATIONS,
+                WatchFaceLayer.COMPLICATIONS_OVERLAY
+            )
+        val highlightLayer = renderParameters.highlightLayer
+        assertThat(highlightLayer!!.highlightTint).isEqualTo(Color.RED)
+        assertThat(highlightLayer.backgroundTint).isEqualTo(Color.BLACK)
+        assertThat(highlightLayer.highlightedElement)
+            .isInstanceOf(RenderParameters.HighlightedElement.UserStyle::class.java)
+        val userStyle =
+            highlightLayer.highlightedElement as RenderParameters.HighlightedElement.UserStyle
+        assertThat(userStyle.id.value).isEqualTo("id-1")
+    }
+
+    @Test
+    public fun equality() {
+        val renderParameters1a =
+            RenderParameters(DrawMode.INTERACTIVE, WatchFaceLayer.ALL_WATCH_FACE_LAYERS, null)
+        val renderParameters1b =
+            RenderParameters(DrawMode.INTERACTIVE, WatchFaceLayer.ALL_WATCH_FACE_LAYERS, null)
+
+        val renderParameters2a =
             RenderParameters(
                 DrawMode.INTERACTIVE,
                 WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
@@ -122,112 +164,79 @@
                     Color.RED,
                     Color.BLACK
                 )
-            ).toWireFormat()
-        )
-        assertThat(renderParameters.drawMode).isEqualTo(DrawMode.INTERACTIVE)
-        assertThat(renderParameters.watchFaceLayers).containsExactly(
-            WatchFaceLayer.BASE,
-            WatchFaceLayer.COMPLICATIONS,
-            WatchFaceLayer.COMPLICATIONS_OVERLAY
-        )
-        val highlightLayer = renderParameters.highlightLayer
-        assertThat(highlightLayer!!.highlightTint).isEqualTo(Color.RED)
-        assertThat(highlightLayer.backgroundTint).isEqualTo(Color.BLACK)
-        assertThat(highlightLayer.highlightedElement).isInstanceOf(
-            RenderParameters.HighlightedElement.UserStyle::class.java
-        )
-        val userStyle = highlightLayer.highlightedElement as
-            RenderParameters.HighlightedElement.UserStyle
-        assertThat(userStyle.id.value).isEqualTo("id-1")
-    }
+            )
+        val renderParameters2b =
+            RenderParameters(
+                DrawMode.INTERACTIVE,
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                RenderParameters.HighlightLayer(
+                    RenderParameters.HighlightedElement.UserStyle(UserStyleSetting.Id("id-1")),
+                    Color.RED,
+                    Color.BLACK
+                )
+            )
+        val renderParameters2c =
+            RenderParameters(
+                DrawMode.INTERACTIVE,
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                RenderParameters.HighlightLayer(
+                    RenderParameters.HighlightedElement.UserStyle(UserStyleSetting.Id("id-2")),
+                    Color.RED,
+                    Color.BLACK
+                )
+            )
 
-    @Test
-    public fun equality() {
-        val renderParameters1a = RenderParameters(
-            DrawMode.INTERACTIVE,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            null
-        )
-        val renderParameters1b = RenderParameters(
-            DrawMode.INTERACTIVE,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            null
-        )
+        val renderParameters3a =
+            RenderParameters(
+                DrawMode.INTERACTIVE,
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                RenderParameters.HighlightLayer(
+                    RenderParameters.HighlightedElement.ComplicationSlot(1),
+                    Color.RED,
+                    Color.BLUE
+                )
+            )
+        val renderParameters3b =
+            RenderParameters(
+                DrawMode.INTERACTIVE,
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                RenderParameters.HighlightLayer(
+                    RenderParameters.HighlightedElement.ComplicationSlot(1),
+                    Color.RED,
+                    Color.BLUE
+                )
+            )
+        val renderParameters3c =
+            RenderParameters(
+                DrawMode.INTERACTIVE,
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                RenderParameters.HighlightLayer(
+                    RenderParameters.HighlightedElement.ComplicationSlot(2),
+                    Color.RED,
+                    Color.BLUE
+                )
+            )
 
-        val renderParameters2a = RenderParameters(
-            DrawMode.INTERACTIVE,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            RenderParameters.HighlightLayer(
-                RenderParameters.HighlightedElement.UserStyle(UserStyleSetting.Id("id-1")),
-                Color.RED,
-                Color.BLACK
+        val renderParameters4a =
+            RenderParameters(
+                DrawMode.INTERACTIVE,
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                RenderParameters.HighlightLayer(
+                    RenderParameters.HighlightedElement.AllComplicationSlots,
+                    Color.RED,
+                    Color.BLUE
+                )
             )
-        )
-        val renderParameters2b = RenderParameters(
-            DrawMode.INTERACTIVE,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            RenderParameters.HighlightLayer(
-                RenderParameters.HighlightedElement.UserStyle(UserStyleSetting.Id("id-1")),
-                Color.RED,
-                Color.BLACK
+        val renderParameters4b =
+            RenderParameters(
+                DrawMode.INTERACTIVE,
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
+                RenderParameters.HighlightLayer(
+                    RenderParameters.HighlightedElement.AllComplicationSlots,
+                    Color.RED,
+                    Color.BLUE
+                )
             )
-        )
-        val renderParameters2c = RenderParameters(
-            DrawMode.INTERACTIVE,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            RenderParameters.HighlightLayer(
-                RenderParameters.HighlightedElement.UserStyle(UserStyleSetting.Id("id-2")),
-                Color.RED,
-                Color.BLACK
-            )
-        )
-
-        val renderParameters3a = RenderParameters(
-            DrawMode.INTERACTIVE,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            RenderParameters.HighlightLayer(
-                RenderParameters.HighlightedElement.ComplicationSlot(1),
-                Color.RED,
-                Color.BLUE
-            )
-        )
-        val renderParameters3b = RenderParameters(
-            DrawMode.INTERACTIVE,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            RenderParameters.HighlightLayer(
-                RenderParameters.HighlightedElement.ComplicationSlot(1),
-                Color.RED,
-                Color.BLUE
-            )
-        )
-        val renderParameters3c = RenderParameters(
-            DrawMode.INTERACTIVE,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            RenderParameters.HighlightLayer(
-                RenderParameters.HighlightedElement.ComplicationSlot(2),
-                Color.RED,
-                Color.BLUE
-            )
-        )
-
-        val renderParameters4a = RenderParameters(
-            DrawMode.INTERACTIVE,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            RenderParameters.HighlightLayer(
-                RenderParameters.HighlightedElement.AllComplicationSlots,
-                Color.RED,
-                Color.BLUE
-            )
-        )
-        val renderParameters4b = RenderParameters(
-            DrawMode.INTERACTIVE,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            RenderParameters.HighlightLayer(
-                RenderParameters.HighlightedElement.AllComplicationSlots,
-                Color.RED,
-                Color.BLUE
-            )
-        )
 
         assertThat(renderParameters1a).isEqualTo(renderParameters1a)
         assertThat(renderParameters1a).isEqualTo(renderParameters1b)
diff --git a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/TestCommon.kt b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/TestCommon.kt
index 5ab6d6e..fa8a2c8 100644
--- a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/TestCommon.kt
+++ b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/TestCommon.kt
@@ -37,20 +37,21 @@
 import androidx.wear.watchface.control.data.WallpaperInteractiveWatchFaceInstanceParams
 import androidx.wear.watchface.style.CurrentUserStyleRepository
 import androidx.wear.watchface.style.UserStyleSchema
+import java.time.ZoneId
+import java.time.ZonedDateTime
 import org.junit.runners.model.FrameworkMethod
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.internal.bytecode.InstrumentationConfiguration
-import java.time.ZoneId
-import java.time.ZonedDateTime
 
 internal class TestWatchFaceService(
     @WatchFaceType private val watchFaceType: Int,
     private val complicationSlots: List<ComplicationSlot>,
-    private val rendererFactory: suspend (
-        surfaceHolder: SurfaceHolder,
-        currentUserStyleRepository: CurrentUserStyleRepository,
-        watchState: WatchState,
-    ) -> Renderer,
+    private val rendererFactory:
+        suspend (
+            surfaceHolder: SurfaceHolder,
+            currentUserStyleRepository: CurrentUserStyleRepository,
+            watchState: WatchState,
+        ) -> Renderer,
     private val userStyleSchema: UserStyleSchema,
     private val watchState: MutableWatchState?,
     private val handler: Handler,
@@ -130,9 +131,7 @@
     ): WatchFace {
         renderer = rendererFactory(surfaceHolder, currentUserStyleRepository, watchState)
         val watchFace = WatchFace(watchFaceType, renderer!!)
-        tapListener?.let {
-            watchFace.setTapListener(it)
-        }
+        tapListener?.let { watchFace.setTapListener(it) }
         return watchFace
     }
 
@@ -146,10 +145,7 @@
 
     override fun getChoreographer() = choreographer
 
-    override fun readDirectBootPrefs(
-        context: Context,
-        fileName: String
-    ) = directBootParams
+    override fun readDirectBootPrefs(context: Context, fileName: String) = directBootParams
 
     override fun writeDirectBootPrefs(
         context: Context,
@@ -170,11 +166,12 @@
         complicationCache?.set(fileName, byteArray)
     }
 
-    override fun getSystemTimeProvider() = object : SystemTimeProvider {
-        override fun getSystemTimeMillis() = mockSystemTimeMillis
+    override fun getSystemTimeProvider() =
+        object : SystemTimeProvider {
+            override fun getSystemTimeMillis() = mockSystemTimeMillis
 
-        override fun getSystemTimeZoneId() = mockZoneId
-    }
+            override fun getSystemTimeZoneId() = mockZoneId
+        }
 }
 
 /**
@@ -198,9 +195,7 @@
         provider: ComponentName,
         type: Int
     ) {
-        iWatchFaceService.setDefaultComplicationProvider(
-            watchFaceComplicationId, provider, type
-        )
+        iWatchFaceService.setDefaultComplicationProvider(watchFaceComplicationId, provider, type)
     }
 
     override fun setDefaultSystemComplicationProvider(
@@ -209,7 +204,9 @@
         type: Int
     ) {
         iWatchFaceService.setDefaultSystemComplicationProvider(
-            watchFaceComplicationId, systemProvider, type
+            watchFaceComplicationId,
+            systemProvider,
+            type
         )
     }
 
@@ -228,7 +225,10 @@
         type: Int
     ) {
         iWatchFaceService.setDefaultComplicationProviderWithFallbacks(
-            watchFaceComplicationId, providers, fallbackSystemProvider, type
+            watchFaceComplicationId,
+            providers,
+            fallbackSystemProvider,
+            type
         )
     }
 
@@ -243,28 +243,24 @@
     currentUserStyleRepository: CurrentUserStyleRepository,
     watchState: WatchState,
     interactiveFrameRateMs: Long
-) : Renderer.CanvasRenderer(
-    surfaceHolder,
-    currentUserStyleRepository,
-    watchState,
-    CanvasType.HARDWARE,
-    interactiveFrameRateMs
-) {
+) :
+    Renderer.CanvasRenderer(
+        surfaceHolder,
+        currentUserStyleRepository,
+        watchState,
+        CanvasType.HARDWARE,
+        interactiveFrameRateMs
+    ) {
     public var lastOnDrawZonedDateTime: ZonedDateTime? = null
     public var lastRenderWasForScreenshot: Boolean? = null
     public val renderParametersScreenshotFlags = mutableListOf<Boolean>()
 
-    override fun render(
-        canvas: Canvas,
-        bounds: Rect,
-        zonedDateTime: ZonedDateTime
-    ) {
+    override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
         lastOnDrawZonedDateTime = zonedDateTime
         lastRenderWasForScreenshot = renderParameters.isForScreenshot
     }
 
-    override fun renderHighlightLayer(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
-    }
+    override fun renderHighlightLayer(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
 
     public override fun onRenderParametersChanged(renderParameters: RenderParameters) {
         renderParametersScreenshotFlags.add(renderParameters.isForScreenshot)
@@ -278,12 +274,7 @@
     watchState: WatchState,
     interactiveFrameRateMs: Long,
     public var animate: Boolean = true
-) : TestRenderer(
-    surfaceHolder,
-    currentUserStyleRepository,
-    watchState,
-    interactiveFrameRateMs
-) {
+) : TestRenderer(surfaceHolder, currentUserStyleRepository, watchState, interactiveFrameRateMs) {
     override fun shouldAnimate(): Boolean = animate
 }
 
@@ -297,11 +288,11 @@
                 Intent("Fake intent"),
                 PendingIntent.FLAG_IMMUTABLE
             )
-        ).build().toApiComplicationData()
+        )
+        .build()
+        .toApiComplicationData()
 
-/**
- * We need to prevent roboloetric from instrumenting our classes or things break...
- */
+/** We need to prevent roboloetric from instrumenting our classes or things break... */
 public class WatchFaceTestRunner(testClass: Class<*>) : RobolectricTestRunner(testClass) {
     override fun createClassLoaderConfig(method: FrameworkMethod): InstrumentationConfiguration =
         InstrumentationConfiguration.Builder(super.createClassLoaderConfig(method))
diff --git a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/WatchFaceServiceTest.kt b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/WatchFaceServiceTest.kt
index 2681c8c..60f2a91 100644
--- a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/WatchFaceServiceTest.kt
+++ b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/WatchFaceServiceTest.kt
@@ -16,8 +16,6 @@
 
 package androidx.wear.watchface
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
-import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.annotation.SuppressLint
 import android.app.KeyguardManager
 import android.app.NotificationManager
@@ -39,6 +37,8 @@
 import android.os.Looper
 import android.os.Parcel
 import android.provider.Settings
+import android.support.wearable.complications.ComplicationData as WireComplicationData
+import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.support.wearable.watchface.Constants
 import android.support.wearable.watchface.IWatchFaceService
 import android.support.wearable.watchface.WatchFaceStyle
@@ -167,17 +167,18 @@
     private val surfaceHolder = mock<SurfaceHolder>()
     private val surface = mock<Surface>()
     private val tapListener = mock<WatchFace.TapListener>()
-    private val mainThreadPriorityDelegate = object : WatchFaceService.MainThreadPriorityDelegate {
-        var priority = Priority.Unset
+    private val mainThreadPriorityDelegate =
+        object : WatchFaceService.MainThreadPriorityDelegate {
+            var priority = Priority.Unset
 
-        override fun setNormalPriority() {
-            priority = Priority.Normal
-        }
+            override fun setNormalPriority() {
+                priority = Priority.Normal
+            }
 
-        override fun setInteractivePriority() {
-            priority = Priority.Interactive
+            override fun setInteractivePriority() {
+                priority = Priority.Interactive
+            }
         }
-    }
 
     private val watchState = MutableWatchState()
 
@@ -209,47 +210,42 @@
 
     private val colorStyleList = listOf(redStyleOption, greenStyleOption, blueStyleOption)
 
-    private val colorStyleSetting = ListUserStyleSetting(
-        UserStyleSetting.Id("color_style_setting"),
-        "Colors",
-        "Watchface colorization", /* icon = */
-        null,
-        colorStyleList,
-        listOf(WatchFaceLayer.BASE)
-    )
+    private val colorStyleSetting =
+        ListUserStyleSetting(
+            UserStyleSetting.Id("color_style_setting"),
+            "Colors",
+            "Watchface colorization",
+            /* icon = */ null,
+            colorStyleList,
+            listOf(WatchFaceLayer.BASE)
+        )
 
-    private val classicStyleOption = ListUserStyleSetting.ListOption(
-        Option.Id("classic_style"),
-        "Classic",
-        "Classic",
-        icon = null
-    )
+    private val classicStyleOption =
+        ListUserStyleSetting.ListOption(
+            Option.Id("classic_style"),
+            "Classic",
+            "Classic",
+            icon = null
+        )
 
-    private val modernStyleOption = ListUserStyleSetting.ListOption(
-        Option.Id("modern_style"),
-        "Modern",
-        "Modern",
-        icon = null
-    )
+    private val modernStyleOption =
+        ListUserStyleSetting.ListOption(Option.Id("modern_style"), "Modern", "Modern", icon = null)
 
-    private val gothicStyleOption = ListUserStyleSetting.ListOption(
-        Option.Id("gothic_style"),
-        "Gothic",
-        "Gothic",
-        icon = null
-    )
+    private val gothicStyleOption =
+        ListUserStyleSetting.ListOption(Option.Id("gothic_style"), "Gothic", "Gothic", icon = null)
 
     private val watchHandStyleList =
         listOf(classicStyleOption, modernStyleOption, gothicStyleOption)
 
-    private val watchHandStyleSetting = ListUserStyleSetting(
-        UserStyleSetting.Id("hand_style_setting"),
-        "Hand Style",
-        "Hand visual look", /* icon = */
-        null,
-        watchHandStyleList,
-        listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
-    )
+    private val watchHandStyleSetting =
+        ListUserStyleSetting(
+            UserStyleSetting.Id("hand_style_setting"),
+            "Hand Style",
+            "Hand visual look",
+            /* icon = */ null,
+            watchHandStyleList,
+            listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY)
+        )
 
     private val badStyleOption =
         ListUserStyleSetting.ListOption(Option.Id("bad_option"), "Bad", "Bad", icon = null)
@@ -257,53 +253,47 @@
     @Suppress("DEPRECATION") // setDefaultDataSourceType
     private val leftComplication =
         ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            LEFT_COMPLICATION_ID,
-            { watchState, listener ->
-                CanvasComplicationDrawable(
-                    complicationDrawableLeft,
-                    watchState,
-                    listener
+                LEFT_COMPLICATION_ID,
+                { watchState, listener ->
+                    CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
+                },
+                listOf(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.LONG_TEXT,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    ComplicationType.SMALL_IMAGE
+                ),
+                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET),
+                ComplicationSlotBounds(
+                    bounds = RectF(0.2f, 0.4f, 0.4f, 0.6f),
+                    margins = RectF(0.1f, 0.1f, 0.1f, 0.1f)
                 )
-            },
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.LONG_TEXT,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET),
-            ComplicationSlotBounds(
-                bounds = RectF(0.2f, 0.4f, 0.4f, 0.6f),
-                margins = RectF(0.1f, 0.1f, 0.1f, 0.1f)
             )
-        ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
             .build()
 
     @Suppress("DEPRECATION") // setDefaultDataSourceType
     private val rightComplication =
         ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            RIGHT_COMPLICATION_ID,
-            { watchState, listener ->
-                CanvasComplicationDrawable(
-                    complicationDrawableRight,
-                    watchState,
-                    listener
+                RIGHT_COMPLICATION_ID,
+                { watchState, listener ->
+                    CanvasComplicationDrawable(complicationDrawableRight, watchState, listener)
+                },
+                listOf(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.LONG_TEXT,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    ComplicationType.SMALL_IMAGE
+                ),
+                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK),
+                ComplicationSlotBounds(
+                    bounds = RectF(0.6f, 0.4f, 0.8f, 0.6f),
+                    margins = RectF(0.1f, 0.1f, 0.1f, 0.1f)
                 )
-            },
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.LONG_TEXT,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK),
-            ComplicationSlotBounds(
-                bounds = RectF(0.6f, 0.4f, 0.8f, 0.6f),
-                margins = RectF(0.1f, 0.1f, 0.1f, 0.1f)
             )
-        ).setDefaultDataSourceType(ComplicationType.LONG_TEXT)
+            .setDefaultDataSourceType(ComplicationType.LONG_TEXT)
             .build()
 
     private val edgeComplicationHitTester = mock<ComplicationTapFilter>()
@@ -311,135 +301,123 @@
     @Suppress("DEPRECATION") // setDefaultDataSourceType
     private val edgeComplication =
         ComplicationSlot.createEdgeComplicationSlotBuilder(
-            EDGE_COMPLICATION_ID,
-            { watchState, listener ->
-                CanvasComplicationDrawable(
-                    complicationDrawableEdge,
-                    watchState,
-                    listener
-                )
-            },
-            listOf(
-                ComplicationType.RANGED_VALUE,
-                ComplicationType.LONG_TEXT,
-                ComplicationType.SHORT_TEXT,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                ComplicationType.SMALL_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK),
-            ComplicationSlotBounds(RectF(0.0f, 0.4f, 0.4f, 0.6f)),
-            edgeComplicationHitTester
-        ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                EDGE_COMPLICATION_ID,
+                { watchState, listener ->
+                    CanvasComplicationDrawable(complicationDrawableEdge, watchState, listener)
+                },
+                listOf(
+                    ComplicationType.RANGED_VALUE,
+                    ComplicationType.LONG_TEXT,
+                    ComplicationType.SHORT_TEXT,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    ComplicationType.SMALL_IMAGE
+                ),
+                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK),
+                ComplicationSlotBounds(RectF(0.0f, 0.4f, 0.4f, 0.6f)),
+                edgeComplicationHitTester
+            )
+            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
             .build()
 
     @OptIn(ComplicationExperimental::class)
     @Suppress("DEPRECATION") // setDefaultDataSourceType
     private val edgeComplicationWithBoundingArc =
         ComplicationSlot.createEdgeComplicationSlotBuilder(
-            EDGE_COMPLICATION_ID,
-            { watchState, listener ->
-                CanvasComplicationDrawable(
-                    complicationDrawableEdge,
-                    watchState,
-                    listener
-                )
-            },
-            listOf(ComplicationType.SHORT_TEXT),
-            DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK),
-            ComplicationSlotBounds(RectF(0.0f, 0.0f, 1f, 1f)),
-            BoundingArc(-45f, 90f, 0.1f)
-        ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                EDGE_COMPLICATION_ID,
+                { watchState, listener ->
+                    CanvasComplicationDrawable(complicationDrawableEdge, watchState, listener)
+                },
+                listOf(ComplicationType.SHORT_TEXT),
+                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK),
+                ComplicationSlotBounds(RectF(0.0f, 0.0f, 1f, 1f)),
+                BoundingArc(-45f, 90f, 0.1f)
+            )
+            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
             .build()
 
     @Suppress("DEPRECATION") // setDefaultDataSourceType
     private val backgroundComplication =
         ComplicationSlot.createBackgroundComplicationSlotBuilder(
-            BACKGROUND_COMPLICATION_ID,
-            { watchState, listener ->
-                CanvasComplicationDrawable(
-                    complicationDrawableBackground,
-                    watchState,
-                    listener
-                )
-            },
-            listOf(
-                ComplicationType.PHOTO_IMAGE
-            ),
-            DefaultComplicationDataSourcePolicy()
-        ).setDefaultDataSourceType(ComplicationType.PHOTO_IMAGE)
+                BACKGROUND_COMPLICATION_ID,
+                { watchState, listener ->
+                    CanvasComplicationDrawable(complicationDrawableBackground, watchState, listener)
+                },
+                listOf(ComplicationType.PHOTO_IMAGE),
+                DefaultComplicationDataSourcePolicy()
+            )
+            .setDefaultDataSourceType(ComplicationType.PHOTO_IMAGE)
             .build()
 
-    private val leftAndRightComplicationsOption = ComplicationSlotsOption(
-        Option.Id(LEFT_AND_RIGHT_COMPLICATIONS),
-        "Left and Right",
-        "Left and Right complications",
-        null,
-        // An empty list means use the initial config.
-        emptyList()
-    )
-    private val noComplicationsOption = ComplicationSlotsOption(
-        Option.Id(NO_COMPLICATIONS),
-        "None",
-        "No complications",
-        null,
-        listOf(
-            ComplicationSlotOverlay.Builder(LEFT_COMPLICATION_ID)
-                .setEnabled(false).build(),
-            ComplicationSlotOverlay.Builder(RIGHT_COMPLICATION_ID)
-                .setEnabled(false).build()
+    private val leftAndRightComplicationsOption =
+        ComplicationSlotsOption(
+            Option.Id(LEFT_AND_RIGHT_COMPLICATIONS),
+            "Left and Right",
+            "Left and Right complications",
+            null,
+            // An empty list means use the initial config.
+            emptyList()
         )
-    )
-    private val leftOnlyComplicationsOption = ComplicationSlotsOption(
-        Option.Id(LEFT_COMPLICATION),
-        "Left",
-        "Left complication",
-        null,
-        listOf(
-            ComplicationSlotOverlay.Builder(LEFT_COMPLICATION_ID)
-                .setEnabled(true).build(),
-            ComplicationSlotOverlay.Builder(RIGHT_COMPLICATION_ID)
-                .setEnabled(false).build()
+    private val noComplicationsOption =
+        ComplicationSlotsOption(
+            Option.Id(NO_COMPLICATIONS),
+            "None",
+            "No complications",
+            null,
+            listOf(
+                ComplicationSlotOverlay.Builder(LEFT_COMPLICATION_ID).setEnabled(false).build(),
+                ComplicationSlotOverlay.Builder(RIGHT_COMPLICATION_ID).setEnabled(false).build()
+            )
         )
-    )
-    private val rightOnlyComplicationsOption = ComplicationSlotsOption(
-        Option.Id(RIGHT_COMPLICATION),
-        "Right",
-        "Right complication",
-        null,
-        listOf(
-            ComplicationSlotOverlay.Builder(LEFT_COMPLICATION_ID)
-                .setEnabled(false).build(),
-            ComplicationSlotOverlay.Builder(RIGHT_COMPLICATION_ID)
-                .setEnabled(true)
-                .setNameResourceId(NAME_RESOURCE_ID)
-                .setScreenReaderNameResourceId(SCREEN_READER_NAME_RESOURCE_ID)
-                .build()
+    private val leftOnlyComplicationsOption =
+        ComplicationSlotsOption(
+            Option.Id(LEFT_COMPLICATION),
+            "Left",
+            "Left complication",
+            null,
+            listOf(
+                ComplicationSlotOverlay.Builder(LEFT_COMPLICATION_ID).setEnabled(true).build(),
+                ComplicationSlotOverlay.Builder(RIGHT_COMPLICATION_ID).setEnabled(false).build()
+            )
         )
-    )
-    private val complicationsStyleSetting = ComplicationSlotsUserStyleSetting(
-        UserStyleSetting.Id("complications_style_setting"),
-        "AllComplicationSlots",
-        "Number and position",
-        icon = null,
-        complicationConfig = listOf(
-            leftAndRightComplicationsOption,
-            noComplicationsOption,
-            leftOnlyComplicationsOption,
-            rightOnlyComplicationsOption
-        ),
-        affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
-    )
-    private val complicationsStyleSetting2 = ComplicationSlotsUserStyleSetting(
-        UserStyleSetting.Id("complications_style_setting2"),
-        "AllComplicationSlots",
-        "Number and position",
-        icon = null,
-        complicationConfig = listOf(
-            leftOnlyComplicationsOption,
-            rightOnlyComplicationsOption
-        ),
-        affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
-    )
+    private val rightOnlyComplicationsOption =
+        ComplicationSlotsOption(
+            Option.Id(RIGHT_COMPLICATION),
+            "Right",
+            "Right complication",
+            null,
+            listOf(
+                ComplicationSlotOverlay.Builder(LEFT_COMPLICATION_ID).setEnabled(false).build(),
+                ComplicationSlotOverlay.Builder(RIGHT_COMPLICATION_ID)
+                    .setEnabled(true)
+                    .setNameResourceId(NAME_RESOURCE_ID)
+                    .setScreenReaderNameResourceId(SCREEN_READER_NAME_RESOURCE_ID)
+                    .build()
+            )
+        )
+    private val complicationsStyleSetting =
+        ComplicationSlotsUserStyleSetting(
+            UserStyleSetting.Id("complications_style_setting"),
+            "AllComplicationSlots",
+            "Number and position",
+            icon = null,
+            complicationConfig =
+                listOf(
+                    leftAndRightComplicationsOption,
+                    noComplicationsOption,
+                    leftOnlyComplicationsOption,
+                    rightOnlyComplicationsOption
+                ),
+            affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
+        )
+    private val complicationsStyleSetting2 =
+        ComplicationSlotsUserStyleSetting(
+            UserStyleSetting.Id("complications_style_setting2"),
+            "AllComplicationSlots",
+            "Number and position",
+            icon = null,
+            complicationConfig = listOf(leftOnlyComplicationsOption, rightOnlyComplicationsOption),
+            affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
+        )
 
     private lateinit var renderer: TestRenderer
     private lateinit var complicationSlotsManager: ComplicationSlotsManager
@@ -455,36 +433,35 @@
 
     private var looperTimeMillis = 0L
     private val pendingTasks = PriorityQueue<Task>()
-    private val choreographer = object : WatchFaceService.ChoreographerWrapper {
-        override fun postFrameCallback(callback: Choreographer.FrameCallback) {
-            // Simulate waiting for the next frame.
-            val nextFrameTimeMillis = looperTimeMillis + (16 - looperTimeMillis % 16)
-            pendingTasks.add(Task(nextFrameTimeMillis) { callback.doFrame(0) })
-        }
+    private val choreographer =
+        object : WatchFaceService.ChoreographerWrapper {
+            override fun postFrameCallback(callback: Choreographer.FrameCallback) {
+                // Simulate waiting for the next frame.
+                val nextFrameTimeMillis = looperTimeMillis + (16 - looperTimeMillis % 16)
+                pendingTasks.add(Task(nextFrameTimeMillis) { callback.doFrame(0) })
+            }
 
-        override fun removeFrameCallback(callback: Choreographer.FrameCallback) {
-            // Remove task from the priority queue.  There's no good way of doing this quickly.
-            val queue = ArrayDeque<Task>()
-            while (pendingTasks.isNotEmpty()) {
-                val task = pendingTasks.remove()
-                if (task.runnable != callback) {
-                    queue.add(task)
+            override fun removeFrameCallback(callback: Choreographer.FrameCallback) {
+                // Remove task from the priority queue.  There's no good way of doing this quickly.
+                val queue = ArrayDeque<Task>()
+                while (pendingTasks.isNotEmpty()) {
+                    val task = pendingTasks.remove()
+                    if (task.runnable != callback) {
+                        queue.add(task)
+                    }
+                }
+
+                // Push filtered tasks back on the queue.
+                while (queue.isNotEmpty()) {
+                    pendingTasks.add(queue.remove())
                 }
             }
-
-            // Push filtered tasks back on the queue.
-            while (queue.isNotEmpty()) {
-                pendingTasks.add(queue.remove())
-            }
         }
-    }
 
     private fun runPostedTasksFor(durationMillis: Long) {
         val stopTime = looperTimeMillis + durationMillis
 
-        while (pendingTasks.isNotEmpty() &&
-            pendingTasks.peek()!!.runTimeMillis <= stopTime
-        ) {
+        while (pendingTasks.isNotEmpty() && pendingTasks.peek()!!.runTimeMillis <= stopTime) {
             val task = pendingTasks.remove()
             testWatchFaceService.mockSystemTimeMillis = task.runTimeMillis
             looperTimeMillis = task.runTimeMillis
@@ -535,25 +512,27 @@
         tapListener: WatchFace.TapListener? = null,
         setInitialComplicationData: Boolean = true
     ) {
-        testWatchFaceService = TestWatchFaceService(
-            watchFaceType,
-            complicationSlots,
-            { _, currentUserStyleRepository, watchState ->
-                renderer = TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-                renderer
-            },
-            userStyleSchema,
-            watchState,
-            handler,
-            tapListener,
-            null,
-            choreographer
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                watchFaceType,
+                complicationSlots,
+                { _, currentUserStyleRepository, watchState ->
+                    renderer =
+                        TestRenderer(
+                            surfaceHolder,
+                            currentUserStyleRepository,
+                            watchState,
+                            INTERACTIVE_UPDATE_RATE_MS
+                        )
+                    renderer
+                },
+                userStyleSchema,
+                watchState,
+                handler,
+                tapListener,
+                null,
+                choreographer
+            )
         engineWrapper = testWatchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
         engineWrapper.onCreate(surfaceHolder)
 
@@ -568,37 +547,41 @@
                                 .setShortText(WireComplicationText.plainText("Initial Short"))
                                 .setTapAction(
                                     PendingIntent.getActivity(
-                                        context, 0, Intent("ShortText"),
+                                        context,
+                                        0,
+                                        Intent("ShortText"),
                                         PendingIntent.FLAG_IMMUTABLE
                                     )
                                 )
                                 .build()
-
                         ComplicationType.LONG_TEXT ->
                             WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
                                 .setShortText(WireComplicationText.plainText("Initial Long"))
                                 .setTapAction(
                                     PendingIntent.getActivity(
-                                        context, 0, Intent("LongText"),
+                                        context,
+                                        0,
+                                        Intent("LongText"),
                                         PendingIntent.FLAG_IMMUTABLE
                                     )
                                 )
                                 .build()
-
                         ComplicationType.PHOTO_IMAGE ->
                             WireComplicationData.Builder(WireComplicationData.TYPE_LARGE_IMAGE)
                                 .setLargeImage(Icon.createWithContentUri("someuri"))
                                 .setTapAction(
                                     PendingIntent.getActivity(
-                                        context, 0, Intent("PhotoImage"),
+                                        context,
+                                        0,
+                                        Intent("PhotoImage"),
                                         PendingIntent.FLAG_IMMUTABLE
                                     )
                                 )
                                 .build()
-
-                        else -> throw UnsupportedOperationException(
-                            "Don't support type " + complication.defaultDataSourceType
-                        )
+                        else ->
+                            throw UnsupportedOperationException(
+                                "Don't support type " + complication.defaultDataSourceType
+                            )
                     }
                 )
             }
@@ -617,12 +600,7 @@
         wallpaperInteractiveWatchFaceInstanceParams: WallpaperInteractiveWatchFaceInstanceParams =
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -631,35 +609,36 @@
             ),
         complicationCache: MutableMap<String, ByteArray>? = null,
     ) {
-        testWatchFaceService = TestWatchFaceService(
-            watchFaceType,
-            complicationSlots,
-            { _, currentUserStyleRepository, watchState ->
-                renderer = TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-                renderer
-            },
-            userStyleSchema,
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer,
-            mockSystemTimeMillis = looperTimeMillis,
-            complicationCache = complicationCache
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                watchFaceType,
+                complicationSlots,
+                { _, currentUserStyleRepository, watchState ->
+                    renderer =
+                        TestRenderer(
+                            surfaceHolder,
+                            currentUserStyleRepository,
+                            watchState,
+                            INTERACTIVE_UPDATE_RATE_MS
+                        )
+                    renderer
+                },
+                userStyleSchema,
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer,
+                mockSystemTimeMillis = looperTimeMillis,
+                complicationCache = complicationCache
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     wallpaperInteractiveWatchFaceInstanceParams,
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -748,15 +727,17 @@
         `when`(handler.getLooper()).thenReturn(Looper.myLooper())
 
         // Capture tasks posted to mHandler and insert in mPendingTasks which is under our control.
-        doAnswer {
-            pendingTasks.add(Task(looperTimeMillis, it.arguments[0] as Runnable))
-        }.`when`(handler).post(any())
+        doAnswer { pendingTasks.add(Task(looperTimeMillis, it.arguments[0] as Runnable)) }
+            .`when`(handler)
+            .post(any())
 
         doAnswer {
-            pendingTasks.add(
-                Task(looperTimeMillis + it.arguments[1] as Long, it.arguments[0] as Runnable)
-            )
-        }.`when`(handler).postDelayed(any(), anyLong())
+                pendingTasks.add(
+                    Task(looperTimeMillis + it.arguments[1] as Long, it.arguments[0] as Runnable)
+                )
+            }
+            .`when`(handler)
+            .postDelayed(any(), anyLong())
     }
 
     @After
@@ -855,13 +836,15 @@
         watchState.isAmbient.value = false
         testWatchFaceService.mockSystemTimeMillis = 1000L
 
-        watchFaceImpl.broadcastsReceiver!!.receiver.onReceive(
-            context,
-            Intent(WatchFaceImpl.MOCK_TIME_INTENT).apply {
-                putExtra(WatchFaceImpl.EXTRA_MOCK_TIME_SPEED_MULTIPLIER, 2.0f)
-                putExtra(WatchFaceImpl.EXTRA_MOCK_TIME_WRAPPING_MIN_TIME, -1L)
-            }
-        )
+        watchFaceImpl.broadcastsReceiver!!
+            .receiver
+            .onReceive(
+                context,
+                Intent(WatchFaceImpl.MOCK_TIME_INTENT).apply {
+                    putExtra(WatchFaceImpl.EXTRA_MOCK_TIME_SPEED_MULTIPLIER, 2.0f)
+                    putExtra(WatchFaceImpl.EXTRA_MOCK_TIME_WRAPPING_MIN_TIME, -1L)
+                }
+            )
 
         // Time should not diverge initially.
         watchFaceImpl.onDraw()
@@ -884,14 +867,16 @@
         watchState.isAmbient.value = false
         testWatchFaceService.mockSystemTimeMillis = 1000L
 
-        watchFaceImpl.broadcastsReceiver!!.receiver.onReceive(
-            context,
-            Intent(WatchFaceImpl.MOCK_TIME_INTENT).apply {
-                putExtra(WatchFaceImpl.EXTRA_MOCK_TIME_SPEED_MULTIPLIER, 2.0f)
-                putExtra(WatchFaceImpl.EXTRA_MOCK_TIME_WRAPPING_MIN_TIME, 1000L)
-                putExtra(WatchFaceImpl.EXTRA_MOCK_TIME_WRAPPING_MAX_TIME, 2000L)
-            }
-        )
+        watchFaceImpl.broadcastsReceiver!!
+            .receiver
+            .onReceive(
+                context,
+                Intent(WatchFaceImpl.MOCK_TIME_INTENT).apply {
+                    putExtra(WatchFaceImpl.EXTRA_MOCK_TIME_SPEED_MULTIPLIER, 2.0f)
+                    putExtra(WatchFaceImpl.EXTRA_MOCK_TIME_WRAPPING_MIN_TIME, 1000L)
+                    putExtra(WatchFaceImpl.EXTRA_MOCK_TIME_WRAPPING_MAX_TIME, 2000L)
+                }
+            )
 
         // Time in millis observed by onDraw should wrap betwween 1000 and 2000.
         watchFaceImpl.onDraw()
@@ -996,29 +981,22 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun computeBounds_does_not_mutate_it() {
-        initEngine(
-            WatchFaceType.ANALOG,
-            listOf(leftComplication),
-            UserStyleSchema(emptyList())
-        )
+        initEngine(WatchFaceType.ANALOG, listOf(leftComplication), UserStyleSchema(emptyList()))
 
         val leftComplication = complicationSlotsManager[LEFT_COMPLICATION_ID]!!
-        val oldLeftBounds = RectF(
-            leftComplication.complicationSlotBounds.perComplicationTypeBounds[
-                leftComplication.complicationData.value.type
-            ]
-        )
+        val oldLeftBounds =
+            RectF(
+                leftComplication.complicationSlotBounds.perComplicationTypeBounds[
+                        leftComplication.complicationData.value.type]
+            )
 
-        leftComplication.computeBounds(
-            ONE_HUNDRED_BY_ONE_HUNDRED_RECT,
-            applyMargins = true
-        )
+        leftComplication.computeBounds(ONE_HUNDRED_BY_ONE_HUNDRED_RECT, applyMargins = true)
 
         assertThat(
-            leftComplication.complicationSlotBounds.perComplicationTypeBounds[
-                leftComplication.complicationData.value.type
-            ]
-        ).isEqualTo(oldLeftBounds)
+                leftComplication.complicationSlotBounds.perComplicationTypeBounds[
+                        leftComplication.complicationData.value.type]
+            )
+            .isEqualTo(oldLeftBounds)
     }
 
     @Test
@@ -1093,45 +1071,48 @@
     public fun lowestIdComplicationSelectedWhenMarginsOverlap() {
         val complication100 =
             ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                100,
-                { watchState, listener ->
-                    CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
-                },
-                emptyList(),
-                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET),
-                ComplicationSlotBounds(
-                    RectF(0.1f, 0.1f, 0.2f, 0.2f),
-                    RectF(1f, 1f, 1f, 1f)
+                    100,
+                    { watchState, listener ->
+                        CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
+                    },
+                    emptyList(),
+                    DefaultComplicationDataSourcePolicy(
+                        SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
+                    ),
+                    ComplicationSlotBounds(RectF(0.1f, 0.1f, 0.2f, 0.2f), RectF(1f, 1f, 1f, 1f))
                 )
-            ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT).build()
+                .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                .build()
 
         val complication90 =
             ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                90,
-                { watchState, listener ->
-                    CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
-                },
-                emptyList(),
-                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET),
-                ComplicationSlotBounds(
-                    RectF(0.3f, 0.1f, 0.4f, 0.2f),
-                    RectF(1f, 1f, 1f, 1f)
+                    90,
+                    { watchState, listener ->
+                        CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
+                    },
+                    emptyList(),
+                    DefaultComplicationDataSourcePolicy(
+                        SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
+                    ),
+                    ComplicationSlotBounds(RectF(0.3f, 0.1f, 0.4f, 0.2f), RectF(1f, 1f, 1f, 1f))
                 )
-            ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT).build()
+                .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                .build()
 
         val complication80 =
             ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                80,
-                { watchState, listener ->
-                    CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
-                },
-                emptyList(),
-                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET),
-                ComplicationSlotBounds(
-                    RectF(0.4f, 0.1f, 0.5f, 0.2f),
-                    RectF(1f, 1f, 1f, 1f)
+                    80,
+                    { watchState, listener ->
+                        CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
+                    },
+                    emptyList(),
+                    DefaultComplicationDataSourcePolicy(
+                        SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
+                    ),
+                    ComplicationSlotBounds(RectF(0.4f, 0.1f, 0.5f, 0.2f), RectF(1f, 1f, 1f, 1f))
                 )
-            ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT).build()
+                .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                .build()
 
         initEngine(
             WatchFaceType.ANALOG,
@@ -1139,8 +1120,7 @@
             UserStyleSchema(emptyList())
         )
 
-        assertThat(complicationSlotsManager.getComplicationSlotAt(90, 90))
-            .isEqualTo(complication80)
+        assertThat(complicationSlotsManager.getComplicationSlotAt(90, 90)).isEqualTo(complication80)
     }
 
     @Test
@@ -1199,14 +1179,15 @@
             .isNull()
 
         `when`(
-            edgeComplicationHitTester.hitTest(
-                edgeComplication,
-                ONE_HUNDRED_BY_ONE_HUNDRED_RECT,
-                0,
-                50,
-                false
+                edgeComplicationHitTester.hitTest(
+                    edgeComplication,
+                    ONE_HUNDRED_BY_ONE_HUNDRED_RECT,
+                    0,
+                    50,
+                    false
+                )
             )
-        ).thenReturn(true)
+            .thenReturn(true)
 
         // Tap the edge complication.
         tapAt(0, 50)
@@ -1265,16 +1246,10 @@
         // Tap on nothing.
         tapAt(1, 1)
 
-        verify(tapListener).onTapEvent(
-            TapType.DOWN,
-            TapEvent(1, 1, Instant.ofEpochMilli(looperTimeMillis)),
-            null
-        )
-        verify(tapListener).onTapEvent(
-            TapType.UP,
-            TapEvent(1, 1, Instant.ofEpochMilli(looperTimeMillis)),
-            null
-        )
+        verify(tapListener)
+            .onTapEvent(TapType.DOWN, TapEvent(1, 1, Instant.ofEpochMilli(looperTimeMillis)), null)
+        verify(tapListener)
+            .onTapEvent(TapType.UP, TapEvent(1, 1, Instant.ofEpochMilli(looperTimeMillis)), null)
     }
 
     @Test
@@ -1316,16 +1291,14 @@
             false
         )
 
-        verify(tapListener).onTapEvent(
-            TapType.DOWN,
-            TapEvent(10, 200, Instant.ofEpochMilli(looperTimeMillis)),
-            null
-        )
-        verify(tapListener).onTapEvent(
-            TapType.UP,
-            TapEvent(10, 200, Instant.ofEpochMilli(looperTimeMillis)),
-            null
-        )
+        verify(tapListener)
+            .onTapEvent(
+                TapType.DOWN,
+                TapEvent(10, 200, Instant.ofEpochMilli(looperTimeMillis)),
+                null
+            )
+        verify(tapListener)
+            .onTapEvent(TapType.UP, TapEvent(10, 200, Instant.ofEpochMilli(looperTimeMillis)), null)
     }
 
     @Test
@@ -1341,16 +1314,18 @@
         // Tap right complication.
         tapAt(70, 50)
 
-        verify(tapListener).onTapEvent(
-            TapType.DOWN,
-            TapEvent(70, 50, Instant.ofEpochMilli(looperTimeMillis)),
-            rightComplication
-        )
-        verify(tapListener).onTapEvent(
-            TapType.UP,
-            TapEvent(70, 50, Instant.ofEpochMilli(looperTimeMillis)),
-            rightComplication
-        )
+        verify(tapListener)
+            .onTapEvent(
+                TapType.DOWN,
+                TapEvent(70, 50, Instant.ofEpochMilli(looperTimeMillis)),
+                rightComplication
+            )
+        verify(tapListener)
+            .onTapEvent(
+                TapType.UP,
+                TapEvent(70, 50, Instant.ofEpochMilli(looperTimeMillis)),
+                rightComplication
+            )
     }
 
     @Test
@@ -1362,27 +1337,22 @@
             UserStyleSchema(emptyList())
         )
 
-        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH)).isEqualTo(
-            INTERACTIVE_UPDATE_RATE_MS
-        )
+        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH))
+            .isEqualTo(INTERACTIVE_UPDATE_RATE_MS)
 
         // The delay should change when battery is low.
-        watchFaceImpl.broadcastsReceiver!!.receiver.onReceive(
-            context,
-            Intent(Intent.ACTION_BATTERY_LOW)
-        )
-        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH)).isEqualTo(
-            WatchFaceImpl.MAX_LOW_POWER_INTERACTIVE_UPDATE_RATE_MS
-        )
+        watchFaceImpl.broadcastsReceiver!!
+            .receiver
+            .onReceive(context, Intent(Intent.ACTION_BATTERY_LOW))
+        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH))
+            .isEqualTo(WatchFaceImpl.MAX_LOW_POWER_INTERACTIVE_UPDATE_RATE_MS)
 
         // And go back to normal when battery is OK.
-        watchFaceImpl.broadcastsReceiver!!.receiver.onReceive(
-            context,
-            Intent(Intent.ACTION_BATTERY_OKAY)
-        )
-        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH)).isEqualTo(
-            INTERACTIVE_UPDATE_RATE_MS
-        )
+        watchFaceImpl.broadcastsReceiver!!
+            .receiver
+            .onReceive(context, Intent(Intent.ACTION_BATTERY_OKAY))
+        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH))
+            .isEqualTo(INTERACTIVE_UPDATE_RATE_MS)
     }
 
     @Test
@@ -1394,27 +1364,22 @@
             UserStyleSchema(emptyList())
         )
 
-        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH)).isEqualTo(
-            INTERACTIVE_UPDATE_RATE_MS
-        )
+        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH))
+            .isEqualTo(INTERACTIVE_UPDATE_RATE_MS)
 
         // The delay should change when battery is low.
-        watchFaceImpl.broadcastsReceiver!!.receiver.onReceive(
-            context,
-            Intent(Intent.ACTION_BATTERY_LOW)
-        )
-        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH)).isEqualTo(
-            WatchFaceImpl.MAX_LOW_POWER_INTERACTIVE_UPDATE_RATE_MS
-        )
+        watchFaceImpl.broadcastsReceiver!!
+            .receiver
+            .onReceive(context, Intent(Intent.ACTION_BATTERY_LOW))
+        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH))
+            .isEqualTo(WatchFaceImpl.MAX_LOW_POWER_INTERACTIVE_UPDATE_RATE_MS)
 
         // And go back to normal when power is connected.
-        watchFaceImpl.broadcastsReceiver!!.receiver.onReceive(
-            context,
-            Intent(Intent.ACTION_POWER_CONNECTED)
-        )
-        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH)).isEqualTo(
-            INTERACTIVE_UPDATE_RATE_MS
-        )
+        watchFaceImpl.broadcastsReceiver!!
+            .receiver
+            .onReceive(context, Intent(Intent.ACTION_POWER_CONNECTED))
+        assertThat(watchFaceImpl.computeDelayTillNextFrame(0, 0, Instant.EPOCH))
+            .isEqualTo(INTERACTIVE_UPDATE_RATE_MS)
     }
 
     @Test
@@ -1427,12 +1392,12 @@
         )
 
         assertThat(
-            watchFaceImpl.computeDelayTillNextFrame(
-                startTimeMillis = 0,
-                currentTimeMillis = 2,
-                Instant.EPOCH
+                watchFaceImpl.computeDelayTillNextFrame(
+                    startTimeMillis = 0,
+                    currentTimeMillis = 2,
+                    Instant.EPOCH
+                )
             )
-        )
             .isEqualTo(INTERACTIVE_UPDATE_RATE_MS - 2)
     }
 
@@ -1447,12 +1412,13 @@
 
         // If the frame is very slow we'll want to post a choreographer frame immediately.
         assertThat(
-            watchFaceImpl.computeDelayTillNextFrame(
-                startTimeMillis = 2,
-                currentTimeMillis = INTERACTIVE_UPDATE_RATE_MS + 3,
-                Instant.EPOCH
+                watchFaceImpl.computeDelayTillNextFrame(
+                    startTimeMillis = 2,
+                    currentTimeMillis = INTERACTIVE_UPDATE_RATE_MS + 3,
+                    Instant.EPOCH
+                )
             )
-        ).isEqualTo(-1)
+            .isEqualTo(-1)
     }
 
     @Test
@@ -1468,12 +1434,13 @@
 
         // Simulate time going backwards between renders.
         assertThat(
-            watchFaceImpl.computeDelayTillNextFrame(
-                startTimeMillis = 20,
-                currentTimeMillis = 24,
-                Instant.EPOCH
+                watchFaceImpl.computeDelayTillNextFrame(
+                    startTimeMillis = 20,
+                    currentTimeMillis = 24,
+                    Instant.EPOCH
+                )
             )
-        ).isEqualTo(INTERACTIVE_UPDATE_RATE_MS - 4)
+            .isEqualTo(INTERACTIVE_UPDATE_RATE_MS - 4)
     }
 
     @Test
@@ -1490,12 +1457,13 @@
         // Simulate rendering 0.74s into a second, after which we expect a short delay.
         watchFaceImpl.nextDrawTimeMillis = 100740
         assertThat(
-            watchFaceImpl.computeDelayTillNextFrame(
-                startTimeMillis = 100740,
-                currentTimeMillis = 100750,
-                Instant.EPOCH
+                watchFaceImpl.computeDelayTillNextFrame(
+                    startTimeMillis = 100740,
+                    currentTimeMillis = 100750,
+                    Instant.EPOCH
+                )
             )
-        ).isEqualTo(250)
+            .isEqualTo(250)
     }
 
     @Test
@@ -1512,12 +1480,13 @@
         // Simulate rendering 0.74s into a second, after which we expect a short delay.
         watchFaceImpl.nextDrawTimeMillis = 10000
         assertThat(
-            watchFaceImpl.computeDelayTillNextFrame(
-                startTimeMillis = 10000,
-                currentTimeMillis = 10001,
-                Instant.EPOCH
+                watchFaceImpl.computeDelayTillNextFrame(
+                    startTimeMillis = 10000,
+                    currentTimeMillis = 10001,
+                    Instant.EPOCH
+                )
             )
-        ).isEqualTo(999)
+            .isEqualTo(999)
     }
 
     @Test
@@ -1534,12 +1503,13 @@
         // Simulate rendering 2s into a minute, after which we should delay till the next minute.
         watchFaceImpl.nextDrawTimeMillis = 60000 + 2000
         assertThat(
-            watchFaceImpl.computeDelayTillNextFrame(
-                startTimeMillis = watchFaceImpl.nextDrawTimeMillis,
-                currentTimeMillis = watchFaceImpl.nextDrawTimeMillis,
-                Instant.EPOCH
+                watchFaceImpl.computeDelayTillNextFrame(
+                    startTimeMillis = watchFaceImpl.nextDrawTimeMillis,
+                    currentTimeMillis = watchFaceImpl.nextDrawTimeMillis,
+                    Instant.EPOCH
+                )
             )
-        ).isEqualTo(58000) // NB 58000 + 2000 == 60000
+            .isEqualTo(58000) // NB 58000 + 2000 == 60000
     }
 
     @Test
@@ -1556,12 +1526,16 @@
                 IdAndComplicationDataWireFormat(
                     LEFT_COMPLICATION_ID,
                     ShortTextComplicationData.Builder(
-                        TimeDifferenceComplicationText.Builder(
-                            TimeDifferenceStyle.STOPWATCH,
-                            CountUpTimeReference(Instant.parse("2022-10-30T10:15:30.001Z"))
-                        ).setMinimumTimeUnit(TimeUnit.MINUTES).build(),
-                        ComplicationText.EMPTY
-                    ).build().asWireComplicationData()
+                            TimeDifferenceComplicationText.Builder(
+                                    TimeDifferenceStyle.STOPWATCH,
+                                    CountUpTimeReference(Instant.parse("2022-10-30T10:15:30.001Z"))
+                                )
+                                .setMinimumTimeUnit(TimeUnit.MINUTES)
+                                .build(),
+                            ComplicationText.EMPTY
+                        )
+                        .build()
+                        .asWireComplicationData()
                 )
             )
         )
@@ -1572,12 +1546,13 @@
         // but the complication needs an update in 50s so our delay is shorter.
         watchFaceImpl.nextDrawTimeMillis = 60000 + 2000
         assertThat(
-            watchFaceImpl.computeDelayTillNextFrame(
-                startTimeMillis = watchFaceImpl.nextDrawTimeMillis,
-                currentTimeMillis = watchFaceImpl.nextDrawTimeMillis,
-                Instant.EPOCH.plusSeconds(10)
+                watchFaceImpl.computeDelayTillNextFrame(
+                    startTimeMillis = watchFaceImpl.nextDrawTimeMillis,
+                    currentTimeMillis = watchFaceImpl.nextDrawTimeMillis,
+                    Instant.EPOCH.plusSeconds(10)
+                )
             )
-        ).isEqualTo(50001)
+            .isEqualTo(50001)
     }
 
     @Test
@@ -1600,12 +1575,16 @@
                 IdAndComplicationDataWireFormat(
                     LEFT_COMPLICATION_ID,
                     ShortTextComplicationData.Builder(
-                        TimeDifferenceComplicationText.Builder(
-                            TimeDifferenceStyle.STOPWATCH,
-                            CountUpTimeReference(referenceInstant)
-                        ).setMinimumTimeUnit(TimeUnit.HOURS).build(),
-                        ComplicationText.EMPTY
-                    ).build().asWireComplicationData()
+                            TimeDifferenceComplicationText.Builder(
+                                    TimeDifferenceStyle.STOPWATCH,
+                                    CountUpTimeReference(referenceInstant)
+                                )
+                                .setMinimumTimeUnit(TimeUnit.HOURS)
+                                .build(),
+                            ComplicationText.EMPTY
+                        )
+                        .build()
+                        .asWireComplicationData()
                 )
             )
         )
@@ -1621,12 +1600,16 @@
                 IdAndComplicationDataWireFormat(
                     RIGHT_COMPLICATION_ID,
                     ShortTextComplicationData.Builder(
-                        TimeDifferenceComplicationText.Builder(
-                            TimeDifferenceStyle.STOPWATCH,
-                            CountUpTimeReference(referenceInstant)
-                        ).setMinimumTimeUnit(TimeUnit.SECONDS).build(),
-                        ComplicationText.EMPTY
-                    ).build().asWireComplicationData()
+                            TimeDifferenceComplicationText.Builder(
+                                    TimeDifferenceStyle.STOPWATCH,
+                                    CountUpTimeReference(referenceInstant)
+                                )
+                                .setMinimumTimeUnit(TimeUnit.SECONDS)
+                                .build(),
+                            ComplicationText.EMPTY
+                        )
+                        .build()
+                        .asWireComplicationData()
                 )
             )
         )
@@ -1676,9 +1659,8 @@
             listOf(leftComplication, backgroundComplication),
             UserStyleSchema(emptyList())
         )
-        assertThat(complicationSlotsManager.getBackgroundComplicationSlot()!!.id).isEqualTo(
-            BACKGROUND_COMPLICATION_ID
-        )
+        assertThat(complicationSlotsManager.getBackgroundComplicationSlot()!!.id)
+            .isEqualTo(BACKGROUND_COMPLICATION_ID)
     }
 
     @Test
@@ -1707,24 +1689,25 @@
         // Flush pending tasks posted as a result of initEngine.
         runPostedTasksFor(0)
 
-        val service2 = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(listOf(colorStyleSetting, watchHandStyleSetting)),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+        val service2 =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(listOf(colorStyleSetting, watchHandStyleSetting)),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
 
         // Trigger watch face creation.
         val engine2 = service2.onCreateEngine() as WatchFaceService.EngineWrapper
@@ -1735,13 +1718,9 @@
         val watchFaceImpl2 = engine2.getWatchFaceImplOrNull()!!
         val userStyleRepository2 = watchFaceImpl2.currentUserStyleRepository
         assertThat(userStyleRepository2.userStyle.value[colorStyleSetting]!!.id)
-            .isEqualTo(
-                blueStyleOption.id
-            )
+            .isEqualTo(blueStyleOption.id)
         assertThat(userStyleRepository2.userStyle.value[watchHandStyleSetting]!!.id)
-            .isEqualTo(
-                gothicStyleOption.id
-            )
+            .isEqualTo(gothicStyleOption.id)
     }
 
     @Test
@@ -1754,12 +1733,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -1784,19 +1758,15 @@
             UserStyleSchema(listOf(colorStyleSetting, watchHandStyleSetting)),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(
-                    hashMapOf(
-                        colorStyleSetting to blueStyleOption,
-                        watchHandStyleSetting to gothicStyleOption
+                        hashMapOf(
+                            colorStyleSetting to blueStyleOption,
+                            watchHandStyleSetting to gothicStyleOption
+                        )
                     )
-                ).toWireFormat(),
+                    .toWireFormat(),
                 null,
                 null,
                 null
@@ -1805,13 +1775,9 @@
 
         // The style option above should get applied during watch face creation.
         assertThat(currentUserStyleRepository.userStyle.value[colorStyleSetting]!!.id)
-            .isEqualTo(
-                blueStyleOption.id
-            )
+            .isEqualTo(blueStyleOption.id)
         assertThat(currentUserStyleRepository.userStyle.value[watchHandStyleSetting]!!.id)
-            .isEqualTo(
-                gothicStyleOption.id
-            )
+            .isEqualTo(gothicStyleOption.id)
     }
 
     @Test
@@ -1823,12 +1789,7 @@
             UserStyleSchema(listOf(colorStyleSetting, watchHandStyleSetting)),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(mapOf(watchHandStyleSetting to badStyleOption)).toWireFormat(),
                 null,
@@ -1844,14 +1805,7 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun wear2ImmutablePropertiesSetCorrectly() {
-        initEngine(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            UserStyleSchema(emptyList()),
-            2,
-            true,
-            false
-        )
+        initEngine(WatchFaceType.ANALOG, emptyList(), UserStyleSchema(emptyList()), 2, true, false)
 
         assertTrue(watchState.hasLowBitAmbient)
         assertFalse(watchState.hasBurnInProtection)
@@ -1860,14 +1814,7 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun wear2ImmutablePropertiesSetCorrectly2() {
-        initEngine(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            UserStyleSchema(emptyList()),
-            2,
-            false,
-            true
-        )
+        initEngine(WatchFaceType.ANALOG, emptyList(), UserStyleSchema(emptyList()), 2, false, true)
 
         assertFalse(watchState.hasLowBitAmbient)
         assertTrue(watchState.hasBurnInProtection)
@@ -1882,12 +1829,7 @@
             UserStyleSchema(listOf(colorStyleSetting, watchHandStyleSetting)),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    true,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(true, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(mapOf(watchHandStyleSetting to badStyleOption)).toWireFormat(),
                 null,
@@ -1931,10 +1873,11 @@
             UserStyleSchema(emptyList())
         )
 
-        verify(iWatchFaceService).setActiveComplications(
-            intArrayOf(LEFT_COMPLICATION_ID, RIGHT_COMPLICATION_ID, BACKGROUND_COMPLICATION_ID),
-            true
-        )
+        verify(iWatchFaceService)
+            .setActiveComplications(
+                intArrayOf(LEFT_COMPLICATION_ID, RIGHT_COMPLICATION_ID, BACKGROUND_COMPLICATION_ID),
+                true
+            )
     }
 
     @Test
@@ -1963,11 +1906,7 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun onCreate_calls_setContentDescriptionLabels_withCorrectArgs_noComplications() {
-        initEngine(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            UserStyleSchema(emptyList())
-        )
+        initEngine(WatchFaceType.ANALOG, emptyList(), UserStyleSchema(emptyList()))
 
         runPostedTasksFor(0)
 
@@ -2000,12 +1939,10 @@
         runPostedTasksFor(0)
 
         assertThat(engineWrapper.contentDescriptionLabels.size).isEqualTo(2)
-        assertThat(engineWrapper.contentDescriptionLabels[0].bounds).isEqualTo(
-            Rect(25, 25, 75, 75)
-        ) // Clock element.
-        assertThat(engineWrapper.contentDescriptionLabels[1].bounds).isEqualTo(
-            Rect(60, 40, 80, 60)
-        ) // Right complication.
+        assertThat(engineWrapper.contentDescriptionLabels[0].bounds)
+            .isEqualTo(Rect(25, 25, 75, 75)) // Clock element.
+        assertThat(engineWrapper.contentDescriptionLabels[1].bounds)
+            .isEqualTo(Rect(60, 40, 80, 60)) // Right complication.
     }
 
     @Test
@@ -2026,79 +1963,59 @@
         val complicationDetails =
             complicationSlotsManager.getComplicationsState(renderer.screenBounds)
         assertThat(complicationDetails[0].id).isEqualTo(LEFT_COMPLICATION_ID)
-        assertThat(complicationDetails[0].complicationState.boundsType).isEqualTo(
-            ComplicationSlotBoundsType.ROUND_RECT
-        )
-        assertThat(complicationDetails[0].complicationState.bounds).isEqualTo(
-            Rect(30, 30, 50, 50)
-        )
+        assertThat(complicationDetails[0].complicationState.boundsType)
+            .isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
+        assertThat(complicationDetails[0].complicationState.bounds).isEqualTo(Rect(30, 30, 50, 50))
 
         assertThat(complicationDetails[1].id).isEqualTo(RIGHT_COMPLICATION_ID)
-        assertThat(complicationDetails[1].complicationState.boundsType).isEqualTo(
-            ComplicationSlotBoundsType.ROUND_RECT
-        )
-        assertThat(complicationDetails[1].complicationState.bounds).isEqualTo(
-            Rect(70, 75, 90, 95)
-        )
+        assertThat(complicationDetails[1].complicationState.boundsType)
+            .isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
+        assertThat(complicationDetails[1].complicationState.bounds).isEqualTo(Rect(70, 75, 90, 95))
 
         // Despite disabling the background complication we should still get a
         // ContentDescriptionLabel for the main clock element.
         engineWrapper.updateContentDescriptionLabels()
         val contentDescriptionLabels = engineWrapper.contentDescriptionLabels
         assertThat(contentDescriptionLabels.size).isEqualTo(3)
-        assertThat(contentDescriptionLabels[0].bounds).isEqualTo(
-            Rect(
-                25,
-                25,
-                75,
-                75
-            )
-        ) // Clock element.
-        assertThat(contentDescriptionLabels[1].bounds).isEqualTo(
-            Rect(
-                30,
-                30,
-                50,
-                50
-            )
-        ) // Left complication.
-        assertThat(contentDescriptionLabels[2].bounds).isEqualTo(
-            Rect(
-                70,
-                75,
-                90,
-                95
-            )
-        ) // Right complication.
+        assertThat(contentDescriptionLabels[0].bounds)
+            .isEqualTo(Rect(25, 25, 75, 75)) // Clock element.
+        assertThat(contentDescriptionLabels[1].bounds)
+            .isEqualTo(Rect(30, 30, 50, 50)) // Left complication.
+        assertThat(contentDescriptionLabels[2].bounds)
+            .isEqualTo(Rect(70, 75, 90, 95)) // Right complication.
     }
 
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun styleChangesAccessibilityTraversalIndex() {
-        val rightAndSelectComplicationsOption = ComplicationSlotsOption(
-            Option.Id(RIGHT_AND_LEFT_COMPLICATIONS),
-            "Right and Left",
-            "Right and Left complications",
-            null,
-            listOf(
-                ComplicationSlotOverlay.Builder(LEFT_COMPLICATION_ID)
-                    .setEnabled(true).setAccessibilityTraversalIndex(RIGHT_COMPLICATION_ID).build(),
-                ComplicationSlotOverlay.Builder(RIGHT_COMPLICATION_ID)
-                    .setEnabled(true).setAccessibilityTraversalIndex(LEFT_COMPLICATION_ID).build()
+        val rightAndSelectComplicationsOption =
+            ComplicationSlotsOption(
+                Option.Id(RIGHT_AND_LEFT_COMPLICATIONS),
+                "Right and Left",
+                "Right and Left complications",
+                null,
+                listOf(
+                    ComplicationSlotOverlay.Builder(LEFT_COMPLICATION_ID)
+                        .setEnabled(true)
+                        .setAccessibilityTraversalIndex(RIGHT_COMPLICATION_ID)
+                        .build(),
+                    ComplicationSlotOverlay.Builder(RIGHT_COMPLICATION_ID)
+                        .setEnabled(true)
+                        .setAccessibilityTraversalIndex(LEFT_COMPLICATION_ID)
+                        .build()
+                )
             )
-        )
 
-        val complicationsStyleSetting = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting"),
-            "AllComplicationSlots",
-            "Number and position",
-            icon = null,
-            complicationConfig = listOf(
-                leftAndRightComplicationsOption,
-                rightAndSelectComplicationsOption
-            ),
-            affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
-        )
+        val complicationsStyleSetting =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting"),
+                "AllComplicationSlots",
+                "Number and position",
+                icon = null,
+                complicationConfig =
+                    listOf(leftAndRightComplicationsOption, rightAndSelectComplicationsOption),
+                affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
+            )
 
         initEngine(
             WatchFaceType.ANALOG,
@@ -2112,74 +2029,38 @@
         engineWrapper.updateContentDescriptionLabels()
         val contentDescriptionLabels = engineWrapper.contentDescriptionLabels
         assertThat(contentDescriptionLabels.size).isEqualTo(3)
-        assertThat(contentDescriptionLabels[0].bounds).isEqualTo(
-            Rect(
-                25,
-                25,
-                75,
-                75
-            )
-        ) // Clock element.
-        assertThat(contentDescriptionLabels[1].bounds).isEqualTo(
-            Rect(
-                20,
-                40,
-                40,
-                60
-            )
-        ) // Left complication.
-        assertThat(contentDescriptionLabels[2].bounds).isEqualTo(
-            Rect(
-                60,
-                40,
-                80,
-                60
-            )
-        ) // Right complication.
+        assertThat(contentDescriptionLabels[0].bounds)
+            .isEqualTo(Rect(25, 25, 75, 75)) // Clock element.
+        assertThat(contentDescriptionLabels[1].bounds)
+            .isEqualTo(Rect(20, 40, 40, 60)) // Left complication.
+        assertThat(contentDescriptionLabels[2].bounds)
+            .isEqualTo(Rect(60, 40, 80, 60)) // Right complication.
 
         // Change the style
         watchFaceImpl.currentUserStyleRepository.updateUserStyle(
-            watchFaceImpl.currentUserStyleRepository.userStyle.value.toMutableUserStyle().apply {
-                this[complicationsStyleSetting] = rightAndSelectComplicationsOption
-            }.toUserStyle()
+            watchFaceImpl.currentUserStyleRepository.userStyle.value
+                .toMutableUserStyle()
+                .apply { this[complicationsStyleSetting] = rightAndSelectComplicationsOption }
+                .toUserStyle()
         )
         runPostedTasksFor(0)
 
         val contentDescriptionLabels2 = engineWrapper.contentDescriptionLabels
         assertThat(contentDescriptionLabels2.size).isEqualTo(3)
-        assertThat(contentDescriptionLabels2[0].bounds).isEqualTo(
-            Rect(
-                25,
-                25,
-                75,
-                75
-            )
-        ) // Clock element.
-        assertThat(contentDescriptionLabels2[1].bounds).isEqualTo(
-            Rect(
-                60,
-                40,
-                80,
-                60
-            )
-        ) // Right complication.
-        assertThat(contentDescriptionLabels2[2].bounds).isEqualTo(
-            Rect(
-                20,
-                40,
-                40,
-                60
-            )
-        ) // Left complication.
+        assertThat(contentDescriptionLabels2[0].bounds)
+            .isEqualTo(Rect(25, 25, 75, 75)) // Clock element.
+        assertThat(contentDescriptionLabels2[1].bounds)
+            .isEqualTo(Rect(60, 40, 80, 60)) // Right complication.
+        assertThat(contentDescriptionLabels2[2].bounds)
+            .isEqualTo(Rect(20, 40, 40, 60)) // Left complication.
     }
 
     @Test
     public fun getOptionForIdentifier_ListViewStyleSetting() {
         // Check the correct Options are returned for known option names.
         assertThat(colorStyleSetting.getOptionForId(redStyleOption.id)).isEqualTo(redStyleOption)
-        assertThat(colorStyleSetting.getOptionForId(greenStyleOption.id)).isEqualTo(
-            greenStyleOption
-        )
+        assertThat(colorStyleSetting.getOptionForId(greenStyleOption.id))
+            .isEqualTo(greenStyleOption)
         assertThat(colorStyleSetting.getOptionForId(blueStyleOption.id)).isEqualTo(blueStyleOption)
 
         // For unknown option names the first element in the list should be returned.
@@ -2213,24 +2094,25 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun requestStyleBeforeSetBinder() {
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            listOf(leftComplication, rightComplication, backgroundComplication),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                listOf(leftComplication, rightComplication, backgroundComplication),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
         engineWrapper = testWatchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
         engineWrapper.onCreate(surfaceHolder)
         `when`(surfaceHolder.surfaceFrame).thenReturn(ONE_HUNDRED_BY_ONE_HUNDRED_RECT)
@@ -2254,30 +2136,33 @@
     public fun defaultComplicationDataSourcesWithFallbacks_newApi() {
         val dataSource1 = ComponentName("com.app1", "com.app1.App1")
         val dataSource2 = ComponentName("com.app2", "com.app2.App2")
-        val complication = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            LEFT_COMPLICATION_ID,
-            { watchState, listener ->
-                CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
-            },
-            emptyList(),
-            DefaultComplicationDataSourcePolicy(
-                dataSource1,
-                dataSource2,
-                SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
-            ),
-            ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
-        ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
-            .build()
+        val complication =
+            ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                    LEFT_COMPLICATION_ID,
+                    { watchState, listener ->
+                        CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
+                    },
+                    emptyList(),
+                    DefaultComplicationDataSourcePolicy(
+                        dataSource1,
+                        dataSource2,
+                        SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
+                    ),
+                    ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
+                )
+                .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                .build()
         initEngine(WatchFaceType.ANALOG, listOf(complication), UserStyleSchema(emptyList()))
 
         runPostedTasksFor(0)
 
-        verify(iWatchFaceService).setDefaultComplicationProviderWithFallbacks(
-            LEFT_COMPLICATION_ID,
-            listOf(dataSource1, dataSource2),
-            SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
-            WireComplicationData.TYPE_SHORT_TEXT
-        )
+        verify(iWatchFaceService)
+            .setDefaultComplicationProviderWithFallbacks(
+                LEFT_COMPLICATION_ID,
+                listOf(dataSource1, dataSource2),
+                SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
+                WireComplicationData.TYPE_SHORT_TEXT
+            )
     }
 
     @Suppress("DEPRECATION") // setDefaultDataSourceType
@@ -2286,20 +2171,22 @@
     public fun defaultComplicationDataSourcesWithFallbacks_oldApi() {
         val dataSource1 = ComponentName("com.app1", "com.app1.App1")
         val dataSource2 = ComponentName("com.app2", "com.app2.App2")
-        val complication = ComplicationSlot.createRoundRectComplicationSlotBuilder(
-            LEFT_COMPLICATION_ID,
-            { watchState, listener ->
-                CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
-            },
-            emptyList(),
-            DefaultComplicationDataSourcePolicy(
-                dataSource1,
-                dataSource2,
-                SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
-            ),
-            ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
-        ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
-            .build()
+        val complication =
+            ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                    LEFT_COMPLICATION_ID,
+                    { watchState, listener ->
+                        CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
+                    },
+                    emptyList(),
+                    DefaultComplicationDataSourcePolicy(
+                        dataSource1,
+                        dataSource2,
+                        SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
+                    ),
+                    ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
+                )
+                .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                .build()
         initEngine(
             WatchFaceType.ANALOG,
             listOf(complication),
@@ -2309,41 +2196,50 @@
 
         runPostedTasksFor(0)
 
-        verify(iWatchFaceService).setDefaultComplicationProvider(
-            LEFT_COMPLICATION_ID, dataSource2, WireComplicationData.TYPE_SHORT_TEXT
-        )
-        verify(iWatchFaceService).setDefaultComplicationProvider(
-            LEFT_COMPLICATION_ID, dataSource1, WireComplicationData.TYPE_SHORT_TEXT
-        )
-        verify(iWatchFaceService).setDefaultSystemComplicationProvider(
-            LEFT_COMPLICATION_ID,
-            SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
-            WireComplicationData.TYPE_SHORT_TEXT
-        )
+        verify(iWatchFaceService)
+            .setDefaultComplicationProvider(
+                LEFT_COMPLICATION_ID,
+                dataSource2,
+                WireComplicationData.TYPE_SHORT_TEXT
+            )
+        verify(iWatchFaceService)
+            .setDefaultComplicationProvider(
+                LEFT_COMPLICATION_ID,
+                dataSource1,
+                WireComplicationData.TYPE_SHORT_TEXT
+            )
+        verify(iWatchFaceService)
+            .setDefaultSystemComplicationProvider(
+                LEFT_COMPLICATION_ID,
+                SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET,
+                WireComplicationData.TYPE_SHORT_TEXT
+            )
     }
 
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun previewReferenceTimeMillisAnalog() {
-        val instanceParams = WallpaperInteractiveWatchFaceInstanceParams(
-            INTERACTIVE_INSTANCE_ID,
-            DeviceConfig(
-                false,
-                false,
-                1000,
-                2000,
-            ),
-            WatchUiState(false, 0),
-            UserStyle(
-                hashMapOf(
-                    colorStyleSetting to blueStyleOption,
-                    watchHandStyleSetting to gothicStyleOption
-                )
-            ).toWireFormat(),
-            null,
-            null,
-            null
-        )
+        val instanceParams =
+            WallpaperInteractiveWatchFaceInstanceParams(
+                INTERACTIVE_INSTANCE_ID,
+                DeviceConfig(
+                    false,
+                    false,
+                    1000,
+                    2000,
+                ),
+                WatchUiState(false, 0),
+                UserStyle(
+                        hashMapOf(
+                            colorStyleSetting to blueStyleOption,
+                            watchHandStyleSetting to gothicStyleOption
+                        )
+                    )
+                    .toWireFormat(),
+                null,
+                null,
+                null
+            )
 
         initWallpaperInteractiveWatchFaceInstance(
             WatchFaceType.ANALOG,
@@ -2358,25 +2254,27 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun previewReferenceTimeMillisDigital() {
-        val instanceParams = WallpaperInteractiveWatchFaceInstanceParams(
-            INTERACTIVE_INSTANCE_ID,
-            DeviceConfig(
-                false,
-                false,
-                1000,
-                2000,
-            ),
-            WatchUiState(false, 0),
-            UserStyle(
-                hashMapOf(
-                    colorStyleSetting to blueStyleOption,
-                    watchHandStyleSetting to gothicStyleOption
-                )
-            ).toWireFormat(),
-            null,
-            null,
-            null
-        )
+        val instanceParams =
+            WallpaperInteractiveWatchFaceInstanceParams(
+                INTERACTIVE_INSTANCE_ID,
+                DeviceConfig(
+                    false,
+                    false,
+                    1000,
+                    2000,
+                ),
+                WatchUiState(false, 0),
+                UserStyle(
+                        hashMapOf(
+                            colorStyleSetting to blueStyleOption,
+                            watchHandStyleSetting to gothicStyleOption
+                        )
+                    )
+                    .toWireFormat(),
+                null,
+                null,
+                null
+            )
 
         initWallpaperInteractiveWatchFaceInstance(
             WatchFaceType.DIGITAL,
@@ -2401,112 +2299,106 @@
         val complicationDetails =
             complicationSlotsManager.getComplicationsState(renderer.screenBounds)
         assertThat(complicationDetails[0].id).isEqualTo(LEFT_COMPLICATION_ID)
-        assertThat(complicationDetails[0].complicationState.boundsType).isEqualTo(
-            ComplicationSlotBoundsType.ROUND_RECT
-        )
-        assertThat(complicationDetails[0].complicationState.bounds).isEqualTo(
-            Rect(20, 40, 40, 60)
-        )
-        assertThat(complicationDetails[0].complicationState.supportedTypes).isEqualTo(
-            intArrayOf(
-                WireComplicationData.TYPE_RANGED_VALUE,
-                WireComplicationData.TYPE_LONG_TEXT,
-                WireComplicationData.TYPE_SHORT_TEXT,
-                WireComplicationData.TYPE_ICON,
-                WireComplicationData.TYPE_SMALL_IMAGE
+        assertThat(complicationDetails[0].complicationState.boundsType)
+            .isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
+        assertThat(complicationDetails[0].complicationState.bounds).isEqualTo(Rect(20, 40, 40, 60))
+        assertThat(complicationDetails[0].complicationState.supportedTypes)
+            .isEqualTo(
+                intArrayOf(
+                    WireComplicationData.TYPE_RANGED_VALUE,
+                    WireComplicationData.TYPE_LONG_TEXT,
+                    WireComplicationData.TYPE_SHORT_TEXT,
+                    WireComplicationData.TYPE_ICON,
+                    WireComplicationData.TYPE_SMALL_IMAGE
+                )
             )
-        )
 
         assertThat(complicationDetails[1].id).isEqualTo(RIGHT_COMPLICATION_ID)
-        assertThat(complicationDetails[1].complicationState.boundsType).isEqualTo(
-            ComplicationSlotBoundsType.ROUND_RECT
-        )
-        assertThat(complicationDetails[1].complicationState.bounds).isEqualTo(
-            Rect(60, 40, 80, 60)
-        )
-        assertThat(complicationDetails[1].complicationState.supportedTypes).isEqualTo(
-            intArrayOf(
-                WireComplicationData.TYPE_RANGED_VALUE,
-                WireComplicationData.TYPE_LONG_TEXT,
-                WireComplicationData.TYPE_SHORT_TEXT,
-                WireComplicationData.TYPE_ICON,
-                WireComplicationData.TYPE_SMALL_IMAGE
+        assertThat(complicationDetails[1].complicationState.boundsType)
+            .isEqualTo(ComplicationSlotBoundsType.ROUND_RECT)
+        assertThat(complicationDetails[1].complicationState.bounds).isEqualTo(Rect(60, 40, 80, 60))
+        assertThat(complicationDetails[1].complicationState.supportedTypes)
+            .isEqualTo(
+                intArrayOf(
+                    WireComplicationData.TYPE_RANGED_VALUE,
+                    WireComplicationData.TYPE_LONG_TEXT,
+                    WireComplicationData.TYPE_SHORT_TEXT,
+                    WireComplicationData.TYPE_ICON,
+                    WireComplicationData.TYPE_SMALL_IMAGE
+                )
             )
-        )
 
         assertThat(complicationDetails[2].id).isEqualTo(BACKGROUND_COMPLICATION_ID)
-        assertThat(complicationDetails[2].complicationState.boundsType).isEqualTo(
-            ComplicationSlotBoundsType.BACKGROUND
-        )
-        assertThat(complicationDetails[2].complicationState.bounds).isEqualTo(
-            Rect(0, 0, 100, 100)
-        )
-        assertThat(complicationDetails[2].complicationState.supportedTypes).isEqualTo(
-            intArrayOf(WireComplicationData.TYPE_LARGE_IMAGE)
-        )
+        assertThat(complicationDetails[2].complicationState.boundsType)
+            .isEqualTo(ComplicationSlotBoundsType.BACKGROUND)
+        assertThat(complicationDetails[2].complicationState.bounds).isEqualTo(Rect(0, 0, 100, 100))
+        assertThat(complicationDetails[2].complicationState.supportedTypes)
+            .isEqualTo(intArrayOf(WireComplicationData.TYPE_LARGE_IMAGE))
     }
 
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun getComplicationDetails_early_init_with_styleOverrides() {
-        val complicationsStyleSetting = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting"),
-            "AllComplicationSlots",
-            "Number and position",
-            icon = null,
-            complicationConfig = listOf(
-                leftAndRightComplicationsOption, // The default value which should be applied.
-                leftOnlyComplicationsOption
-            ),
-            affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
-        )
+        val complicationsStyleSetting =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting"),
+                "AllComplicationSlots",
+                "Number and position",
+                icon = null,
+                complicationConfig =
+                    listOf(
+                        leftAndRightComplicationsOption, // The default value which should be
+                        // applied.
+                        leftOnlyComplicationsOption
+                    ),
+                affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
+            )
 
         val schema = UserStyleSchema(listOf(complicationsStyleSetting))
         val initDeferred = CompletableDeferred<Unit>()
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            listOf(leftComplication, rightComplication),
-            { _, currentUserStyleRepository, watchState ->
-                // Prevent initialization until initDeferred completes.
-                initDeferred.awaitWithTimeout()
-                renderer = TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-                renderer
-            },
-            schema,
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                listOf(leftComplication, rightComplication),
+                { _, currentUserStyleRepository, watchState ->
+                    // Prevent initialization until initDeferred completes.
+                    initDeferred.awaitWithTimeout()
+                    renderer =
+                        TestRenderer(
+                            surfaceHolder,
+                            currentUserStyleRepository,
+                            watchState,
+                            INTERACTIVE_UPDATE_RATE_MS
+                        )
+                    renderer
+                },
+                schema,
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         "TestID",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
-                        schema.getDefaultUserStyle().toMutableUserStyle().apply {
-                            set(complicationsStyleSetting, leftOnlyComplicationsOption)
-                        }.toUserStyle().toWireFormat(),
+                        schema
+                            .getDefaultUserStyle()
+                            .toMutableUserStyle()
+                            .apply { set(complicationsStyleSetting, leftOnlyComplicationsOption) }
+                            .toUserStyle()
+                            .toWireFormat(),
                         emptyList(),
                         null,
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -2525,9 +2417,11 @@
             engineWrapper = testWatchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
             engineWrapper.onCreate(surfaceHolder)
             engineWrapper.onSurfaceChanged(surfaceHolder, 0, 100, 100)
-            val complicationDetails = interactiveWatchFaceInstance.complicationDetails.associateBy(
-                { it.id }, { it.complicationState }
-            )
+            val complicationDetails =
+                interactiveWatchFaceInstance.complicationDetails.associateBy(
+                    { it.id },
+                    { it.complicationState }
+                )
             assertThat(complicationDetails[LEFT_COMPLICATION_ID]!!.isEnabled).isEqualTo(true)
             assertThat(complicationDetails[RIGHT_COMPLICATION_ID]!!.isEnabled).isEqualTo(false)
         } finally {
@@ -2540,25 +2434,27 @@
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun shouldAnimateOverrideControlsEnteringAmbientMode() {
         lateinit var testRenderer: TestRendererWithShouldAnimate
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                testRenderer = TestRendererWithShouldAnimate(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-                testRenderer
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    testRenderer =
+                        TestRendererWithShouldAnimate(
+                            surfaceHolder,
+                            currentUserStyleRepository,
+                            watchState,
+                            INTERACTIVE_UPDATE_RATE_MS
+                        )
+                    testRenderer
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
 
         engineWrapper = testWatchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
         engineWrapper.onCreate(surfaceHolder)
@@ -2658,10 +2554,7 @@
         assertFalse(leftComplication.enabled)
         assertTrue(rightComplication.enabled)
         assertEquals(rightComplication.nameResourceId, NAME_RESOURCE_ID)
-        assertEquals(
-            rightComplication.screenReaderNameResourceId,
-            SCREEN_READER_NAME_RESOURCE_ID
-        )
+        assertEquals(rightComplication.screenReaderNameResourceId, SCREEN_READER_NAME_RESOURCE_ID)
 
         // Select both complicationSlots.
         val mutableUserStyleC = currentUserStyleRepository.userStyle.value.toMutableUserStyle()
@@ -2677,17 +2570,19 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun partialComplicationOverrideAppliedToInitialStyle() {
-        val complicationsStyleSetting = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting"),
-            "AllComplicationSlots",
-            "Number and position",
-            icon = null,
-            complicationConfig = listOf(
-                leftOnlyComplicationsOption, // The default value which should be applied.
-                leftAndRightComplicationsOption,
-            ),
-            affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
-        )
+        val complicationsStyleSetting =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting"),
+                "AllComplicationSlots",
+                "Number and position",
+                icon = null,
+                complicationConfig =
+                    listOf(
+                        leftOnlyComplicationsOption, // The default value which should be applied.
+                        leftAndRightComplicationsOption,
+                    ),
+                affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
+            )
 
         initEngine(
             WatchFaceType.DIGITAL,
@@ -2705,75 +2600,85 @@
         val complicationSlotId1 = 101
         val complicationSlotId2 = 102
 
-        val complicationsStyleSetting = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("ID"),
-            "",
-            "",
-            icon = null,
-            complicationConfig = listOf(
-                ComplicationSlotsOption(
-                    Option.Id("one"),
-                    "one",
-                    "one",
-                    null,
+        val complicationsStyleSetting =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("ID"),
+                "",
+                "",
+                icon = null,
+                complicationConfig =
                     listOf(
-                        ComplicationSlotOverlay(
-                            complicationSlotId1,
-                            enabled = true
+                        ComplicationSlotsOption(
+                            Option.Id("one"),
+                            "one",
+                            "one",
+                            null,
+                            listOf(
+                                ComplicationSlotOverlay(complicationSlotId1, enabled = true),
+                            )
                         ),
-                    )
-                ),
-                ComplicationSlotsOption(
-                    Option.Id("two"),
-                    "two",
-                    "two",
-                    null,
-                    listOf(
-                        ComplicationSlotOverlay(
-                            complicationSlotId2,
-                            enabled = true
-                        ),
-                    )
-                )
-            ),
-            listOf(WatchFaceLayer.COMPLICATIONS)
-        )
+                        ComplicationSlotsOption(
+                            Option.Id("two"),
+                            "two",
+                            "two",
+                            null,
+                            listOf(
+                                ComplicationSlotOverlay(complicationSlotId2, enabled = true),
+                            )
+                        )
+                    ),
+                listOf(WatchFaceLayer.COMPLICATIONS)
+            )
 
         val currentUserStyleRepository =
             CurrentUserStyleRepository(UserStyleSchema(listOf(complicationsStyleSetting)))
 
-        val manager = ComplicationSlotsManager(
-            listOf(
-                ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                    complicationSlotId1,
-                    { watchState, listener ->
-                        CanvasComplicationDrawable(complicationDrawableLeft, watchState, listener)
-                    },
-                    listOf(
-                        ComplicationType.RANGED_VALUE,
-                    ),
-                    DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK),
-                    ComplicationSlotBounds(RectF(0.2f, 0.7f, 0.4f, 0.9f))
-                ).setDefaultDataSourceType(ComplicationType.RANGED_VALUE)
-                    .setEnabled(false)
-                    .build(),
-
-                ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                    complicationSlotId2,
-                    { watchState, listener ->
-                        CanvasComplicationDrawable(complicationDrawableRight, watchState, listener)
-                    },
-                    listOf(
-                        ComplicationType.LONG_TEXT,
-                    ),
-                    DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DAY_OF_WEEK),
-                    ComplicationSlotBounds(RectF(0.2f, 0.7f, 0.4f, 0.9f))
-                ).setDefaultDataSourceType(ComplicationType.LONG_TEXT)
-                    .setEnabled(false)
-                    .build()
-            ),
-            currentUserStyleRepository
-        )
+        val manager =
+            ComplicationSlotsManager(
+                listOf(
+                    ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                            complicationSlotId1,
+                            { watchState, listener ->
+                                CanvasComplicationDrawable(
+                                    complicationDrawableLeft,
+                                    watchState,
+                                    listener
+                                )
+                            },
+                            listOf(
+                                ComplicationType.RANGED_VALUE,
+                            ),
+                            DefaultComplicationDataSourcePolicy(
+                                SystemDataSources.DATA_SOURCE_DAY_OF_WEEK
+                            ),
+                            ComplicationSlotBounds(RectF(0.2f, 0.7f, 0.4f, 0.9f))
+                        )
+                        .setDefaultDataSourceType(ComplicationType.RANGED_VALUE)
+                        .setEnabled(false)
+                        .build(),
+                    ComplicationSlot.createRoundRectComplicationSlotBuilder(
+                            complicationSlotId2,
+                            { watchState, listener ->
+                                CanvasComplicationDrawable(
+                                    complicationDrawableRight,
+                                    watchState,
+                                    listener
+                                )
+                            },
+                            listOf(
+                                ComplicationType.LONG_TEXT,
+                            ),
+                            DefaultComplicationDataSourcePolicy(
+                                SystemDataSources.DATA_SOURCE_DAY_OF_WEEK
+                            ),
+                            ComplicationSlotBounds(RectF(0.2f, 0.7f, 0.4f, 0.9f))
+                        )
+                        .setDefaultDataSourceType(ComplicationType.LONG_TEXT)
+                        .setEnabled(false)
+                        .build()
+                ),
+                currentUserStyleRepository
+            )
 
         // The init function of ComplicationSlotsManager should enable complicationSlotId1.
         assertThat(manager[complicationSlotId1]!!.enabled).isTrue()
@@ -2782,34 +2687,38 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.TIRAMISU])
     fun hierarchical_complicationsStyleSetting() {
-        val option1 = ListUserStyleSetting.ListOption(
-            Option.Id("1"),
-            displayName = "1",
-            screenReaderName = "1",
-            icon = null,
-            childSettings = listOf(complicationsStyleSetting)
-        )
-        val option2 = ListUserStyleSetting.ListOption(
-            Option.Id("2"),
-            displayName = "2",
-            screenReaderName = "2",
-            icon = null,
-            childSettings = listOf(complicationsStyleSetting2)
-        )
-        val option3 = ListUserStyleSetting.ListOption(
-            Option.Id("3"),
-            displayName = "3",
-            screenReaderName = "3",
-            icon = null
-        )
-        val choice = ListUserStyleSetting(
-            UserStyleSetting.Id("123"),
-            displayName = "123",
-            description = "123",
-            icon = null,
-            listOf(option1, option2, option3),
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS
-        )
+        val option1 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("1"),
+                displayName = "1",
+                screenReaderName = "1",
+                icon = null,
+                childSettings = listOf(complicationsStyleSetting)
+            )
+        val option2 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("2"),
+                displayName = "2",
+                screenReaderName = "2",
+                icon = null,
+                childSettings = listOf(complicationsStyleSetting2)
+            )
+        val option3 =
+            ListUserStyleSetting.ListOption(
+                Option.Id("3"),
+                displayName = "3",
+                screenReaderName = "3",
+                icon = null
+            )
+        val choice =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("123"),
+                displayName = "123",
+                description = "123",
+                icon = null,
+                listOf(option1, option2, option3),
+                WatchFaceLayer.ALL_WATCH_FACE_LAYERS
+            )
 
         initWallpaperInteractiveWatchFaceInstance(
             WatchFaceType.DIGITAL,
@@ -2817,12 +2726,7 @@
             UserStyleSchema(listOf(choice, complicationsStyleSetting, complicationsStyleSetting2)),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -2878,12 +2782,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -2914,12 +2813,14 @@
                 IdAndComplicationDataWireFormat(
                     LEFT_COMPLICATION_ID,
                     WireComplicationData.Builder(WireComplicationData.TYPE_LONG_TEXT)
-                        .setLongText(WireComplicationText.plainText("TYPE_LONG_TEXT")).build()
+                        .setLongText(WireComplicationText.plainText("TYPE_LONG_TEXT"))
+                        .build()
                 ),
                 IdAndComplicationDataWireFormat(
                     RIGHT_COMPLICATION_ID,
                     WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                        .setShortText(WireComplicationText.plainText("TYPE_SHORT_TEXT")).build()
+                        .setShortText(WireComplicationText.plainText("TYPE_SHORT_TEXT"))
+                        .build()
                 )
             )
         )
@@ -2936,15 +2837,16 @@
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun complicationCache() {
         val complicationCache = HashMap<String, ByteArray>()
-        val instanceParams = WallpaperInteractiveWatchFaceInstanceParams(
-            INTERACTIVE_INSTANCE_ID,
-            DeviceConfig(false, false, 0, 0),
-            WatchUiState(false, 0),
-            UserStyle(emptyMap()).toWireFormat(),
-            null,
-            null,
-            null
-        )
+        val instanceParams =
+            WallpaperInteractiveWatchFaceInstanceParams(
+                INTERACTIVE_INSTANCE_ID,
+                DeviceConfig(false, false, 0, 0),
+                WatchUiState(false, 0),
+                UserStyle(emptyMap()).toWireFormat(),
+                null,
+                null,
+                null
+            )
         initWallpaperInteractiveWatchFaceInstance(
             WatchFaceType.ANALOG,
             listOf(leftComplication, rightComplication),
@@ -2968,7 +2870,9 @@
                         .setLongText(WireComplicationText.plainText("TYPE_LONG_TEXT"))
                         .setTapAction(
                             PendingIntent.getActivity(
-                                context, 0, Intent("LongText"),
+                                context,
+                                0,
+                                Intent("LongText"),
                                 PendingIntent.FLAG_IMMUTABLE
                             )
                         )
@@ -2977,7 +2881,8 @@
                 IdAndComplicationDataWireFormat(
                     RIGHT_COMPLICATION_ID,
                     WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                        .setShortText(WireComplicationText.plainText("TYPE_SHORT_TEXT")).build()
+                        .setShortText(WireComplicationText.plainText("TYPE_SHORT_TEXT"))
+                        .build()
                 )
             )
         )
@@ -2990,25 +2895,26 @@
         engineWrapper.onDestroy()
         InteractiveInstanceManager.releaseInstance(INTERACTIVE_INSTANCE_ID)
 
-        val service2 = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            listOf(leftComplication, rightComplication),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer,
-            complicationCache = complicationCache
-        )
+        val service2 =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                listOf(leftComplication, rightComplication),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer,
+                complicationCache = complicationCache
+            )
 
         lateinit var instance2: IInteractiveWatchFace
         InteractiveInstanceManager
@@ -3016,8 +2922,7 @@
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     instanceParams,
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -3043,13 +2948,15 @@
 
             // Check the ComplicationData was cached.
             val leftComplicationData =
-                watchFaceImpl2.complicationSlotsManager[
-                    LEFT_COMPLICATION_ID
-                ]!!.complicationData.value.asWireComplicationData()
+                watchFaceImpl2.complicationSlotsManager[LEFT_COMPLICATION_ID]!!
+                    .complicationData
+                    .value
+                    .asWireComplicationData()
             val rightComplicationData =
-                watchFaceImpl2.complicationSlotsManager[
-                    RIGHT_COMPLICATION_ID
-                ]!!.complicationData.value.asWireComplicationData()
+                watchFaceImpl2.complicationSlotsManager[RIGHT_COMPLICATION_ID]!!
+                    .complicationData
+                    .value
+                    .asWireComplicationData()
 
             assertThat(leftComplicationData.type).isEqualTo(WireComplicationData.TYPE_LONG_TEXT)
             assertThat(leftComplicationData.longText?.getTextAt(context.resources, 0))
@@ -3068,15 +2975,16 @@
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun complicationCachePolicy() {
         val complicationCache = HashMap<String, ByteArray>()
-        val instanceParams = WallpaperInteractiveWatchFaceInstanceParams(
-            INTERACTIVE_INSTANCE_ID,
-            DeviceConfig(false, false, 0, 0),
-            WatchUiState(false, 0),
-            UserStyle(emptyMap()).toWireFormat(),
-            null,
-            null,
-            null
-        )
+        val instanceParams =
+            WallpaperInteractiveWatchFaceInstanceParams(
+                INTERACTIVE_INSTANCE_ID,
+                DeviceConfig(false, false, 0, 0),
+                WatchUiState(false, 0),
+                UserStyle(emptyMap()).toWireFormat(),
+                null,
+                null,
+                null
+            )
         initWallpaperInteractiveWatchFaceInstance(
             WatchFaceType.ANALOG,
             listOf(leftComplication, rightComplication),
@@ -3094,7 +3002,9 @@
                         .setLongText(WireComplicationText.plainText("TYPE_LONG_TEXT"))
                         .setTapAction(
                             PendingIntent.getActivity(
-                                context, 0, Intent("LongText"),
+                                context,
+                                0,
+                                Intent("LongText"),
                                 PendingIntent.FLAG_IMMUTABLE
                             )
                         )
@@ -3104,7 +3014,8 @@
                 IdAndComplicationDataWireFormat(
                     RIGHT_COMPLICATION_ID,
                     WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                        .setShortText(WireComplicationText.plainText("TYPE_SHORT_TEXT")).build()
+                        .setShortText(WireComplicationText.plainText("TYPE_SHORT_TEXT"))
+                        .build()
                 )
             )
         )
@@ -3117,25 +3028,26 @@
         engineWrapper.onDestroy()
         InteractiveInstanceManager.releaseInstance(INTERACTIVE_INSTANCE_ID)
 
-        val service2 = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            listOf(leftComplication, rightComplication),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer,
-            complicationCache = complicationCache
-        )
+        val service2 =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                listOf(leftComplication, rightComplication),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer,
+                complicationCache = complicationCache
+            )
 
         lateinit var instance2: IInteractiveWatchFace
         InteractiveInstanceManager
@@ -3143,8 +3055,7 @@
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     instanceParams,
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -3170,13 +3081,15 @@
 
             // Check only the right ComplicationData was cached.
             val leftComplicationData =
-                watchFaceImpl2.complicationSlotsManager[
-                    LEFT_COMPLICATION_ID
-                ]!!.complicationData.value.asWireComplicationData()
+                watchFaceImpl2.complicationSlotsManager[LEFT_COMPLICATION_ID]!!
+                    .complicationData
+                    .value
+                    .asWireComplicationData()
             val rightComplicationData =
-                watchFaceImpl2.complicationSlotsManager[
-                    RIGHT_COMPLICATION_ID
-                ]!!.complicationData.value.asWireComplicationData()
+                watchFaceImpl2.complicationSlotsManager[RIGHT_COMPLICATION_ID]!!
+                    .complicationData
+                    .value
+                    .asWireComplicationData()
 
             assertThat(leftComplicationData.type).isEqualTo(WireComplicationData.TYPE_NO_DATA)
             assertThat(rightComplicationData.type).isEqualTo(WireComplicationData.TYPE_SHORT_TEXT)
@@ -3192,15 +3105,16 @@
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun complicationCache_timeline() {
         val complicationCache = HashMap<String, ByteArray>()
-        val instanceParams = WallpaperInteractiveWatchFaceInstanceParams(
-            INTERACTIVE_INSTANCE_ID,
-            DeviceConfig(false, false, 0, 0),
-            WatchUiState(false, 0),
-            UserStyle(emptyMap()).toWireFormat(),
-            null,
-            null,
-            null
-        )
+        val instanceParams =
+            WallpaperInteractiveWatchFaceInstanceParams(
+                INTERACTIVE_INSTANCE_ID,
+                DeviceConfig(false, false, 0, 0),
+                WatchUiState(false, 0),
+                UserStyle(emptyMap()).toWireFormat(),
+                null,
+                null,
+                null
+            )
         initWallpaperInteractiveWatchFaceInstance(
             WatchFaceType.ANALOG,
             listOf(leftComplication),
@@ -3213,12 +3127,14 @@
         assertThat(complicationSlotsManager[LEFT_COMPLICATION_ID]!!.complicationData.value.type)
             .isEqualTo(ComplicationType.NO_DATA)
 
-        val a = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-            .setShortText(WireComplicationText.plainText("A"))
-            .build()
-        val b = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-            .setShortText(WireComplicationText.plainText("B"))
-            .build()
+        val a =
+            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                .setShortText(WireComplicationText.plainText("A"))
+                .build()
+        val b =
+            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                .setShortText(WireComplicationText.plainText("B"))
+                .build()
         b.timelineStartEpochSecond = 1000
         b.timelineEndEpochSecond = Long.MAX_VALUE
         a.setTimelineEntryCollection(listOf(b))
@@ -3235,25 +3151,26 @@
 
         interactiveWatchFaceInstance.release()
 
-        val service2 = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            listOf(leftComplication),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer,
-            complicationCache = complicationCache
-        )
+        val service2 =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                listOf(leftComplication),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer,
+                complicationCache = complicationCache
+            )
 
         lateinit var instance2: IInteractiveWatchFace
         InteractiveInstanceManager
@@ -3261,8 +3178,7 @@
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     instanceParams,
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -3292,9 +3208,10 @@
 
             // Check the ComplicationData was cached.
             var leftComplicationData =
-                watchFaceImpl2.complicationSlotsManager[
-                    LEFT_COMPLICATION_ID
-                ]!!.complicationData.value.asWireComplicationData()
+                watchFaceImpl2.complicationSlotsManager[LEFT_COMPLICATION_ID]!!
+                    .complicationData
+                    .value
+                    .asWireComplicationData()
 
             assertThat(leftComplicationData.type).isEqualTo(WireComplicationData.TYPE_SHORT_TEXT)
             assertThat(leftComplicationData.shortText?.getTextAt(context.resources, 0))
@@ -3305,9 +3222,10 @@
                 Instant.ofEpochSecond(1000)
             )
             leftComplicationData =
-                watchFaceImpl2.complicationSlotsManager[
-                    LEFT_COMPLICATION_ID
-                ]!!.complicationData.value.asWireComplicationData()
+                watchFaceImpl2.complicationSlotsManager[LEFT_COMPLICATION_ID]!!
+                    .complicationData
+                    .value
+                    .asWireComplicationData()
 
             assertThat(leftComplicationData.type).isEqualTo(WireComplicationData.TYPE_SHORT_TEXT)
             assertThat(leftComplicationData.shortText?.getTextAt(context.resources, 0))
@@ -3328,53 +3246,56 @@
         )
 
         assertThat(
-            watchFaceImpl.complicationSlotsManager[LEFT_COMPLICATION_ID]!!.complicationData.value
-        ).isInstanceOf(NoDataComplicationData::class.java)
+                watchFaceImpl.complicationSlotsManager[LEFT_COMPLICATION_ID]!!
+                    .complicationData
+                    .value
+            )
+            .isInstanceOf(NoDataComplicationData::class.java)
         assertThat(
-            watchFaceImpl.complicationSlotsManager[RIGHT_COMPLICATION_ID]!!.complicationData.value
-        ).isInstanceOf(NoDataComplicationData::class.java)
+                watchFaceImpl.complicationSlotsManager[RIGHT_COMPLICATION_ID]!!
+                    .complicationData
+                    .value
+            )
+            .isInstanceOf(NoDataComplicationData::class.java)
     }
 
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     @RequiresApi(Build.VERSION_CODES.O_MR1)
     public fun headless_complicationsInitialized_with_EmptyComplicationData() {
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            listOf(leftComplication, rightComplication),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            WallpaperInteractiveWatchFaceInstanceParams(
-                "Headless",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
-                WatchUiState(false, 0),
-                UserStyle(
-                    hashMapOf(
-                        colorStyleSetting to blueStyleOption,
-                        watchHandStyleSetting to gothicStyleOption
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                listOf(leftComplication, rightComplication),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
                     )
-                ).toWireFormat(),
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
                 null,
-                null,
-                null
-            ),
-            choreographer
-        )
+                WallpaperInteractiveWatchFaceInstanceParams(
+                    "Headless",
+                    DeviceConfig(false, false, 0, 0),
+                    WatchUiState(false, 0),
+                    UserStyle(
+                            hashMapOf(
+                                colorStyleSetting to blueStyleOption,
+                                watchHandStyleSetting to gothicStyleOption
+                            )
+                        )
+                        .toWireFormat(),
+                    null,
+                    null,
+                    null
+                ),
+                choreographer
+            )
 
         engineWrapper =
             testWatchFaceService.createHeadlessEngine() as WatchFaceService.EngineWrapper
@@ -3391,16 +3312,20 @@
 
         // [WatchFaceService.createWatchFace] Will have run by now because we're using an immediate
         // coroutine dispatcher.
-        runBlocking {
-            watchFaceImpl = engineWrapper.deferredWatchFaceImpl.awaitWithTimeout()
-        }
+        runBlocking { watchFaceImpl = engineWrapper.deferredWatchFaceImpl.awaitWithTimeout() }
 
         assertThat(
-            watchFaceImpl.complicationSlotsManager[LEFT_COMPLICATION_ID]!!.complicationData.value
-        ).isInstanceOf(EmptyComplicationData::class.java)
+                watchFaceImpl.complicationSlotsManager[LEFT_COMPLICATION_ID]!!
+                    .complicationData
+                    .value
+            )
+            .isInstanceOf(EmptyComplicationData::class.java)
         assertThat(
-            watchFaceImpl.complicationSlotsManager[RIGHT_COMPLICATION_ID]!!.complicationData.value
-        ).isInstanceOf(EmptyComplicationData::class.java)
+                watchFaceImpl.complicationSlotsManager[RIGHT_COMPLICATION_ID]!!
+                    .complicationData
+                    .value
+            )
+            .isInstanceOf(EmptyComplicationData::class.java)
     }
 
     @Test
@@ -3412,12 +3337,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -3481,12 +3401,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -3510,12 +3425,13 @@
 
     @Test
     public fun invalidateRendererBeforeFullInit() {
-        renderer = TestRenderer(
-            surfaceHolder,
-            CurrentUserStyleRepository(UserStyleSchema(emptyList())),
-            watchState.asWatchState(),
-            INTERACTIVE_UPDATE_RATE_MS
-        )
+        renderer =
+            TestRenderer(
+                surfaceHolder,
+                CurrentUserStyleRepository(UserStyleSchema(emptyList())),
+                watchState.asWatchState(),
+                INTERACTIVE_UPDATE_RATE_MS
+            )
 
         // This should not throw an exception.
         renderer.invalidate()
@@ -3530,12 +3446,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -3559,12 +3470,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -3596,12 +3502,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -3647,24 +3548,25 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun isAmbientInitalisedEvenWithoutPropertiesSent() {
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
 
         engineWrapper = testWatchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
         engineWrapper.onCreate(surfaceHolder)
@@ -3685,12 +3587,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(true, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -3732,12 +3629,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -3773,12 +3665,7 @@
             UserStyleSchema(listOf(colorStyleSetting, watchHandStyleSetting)),
             WallpaperInteractiveWatchFaceInstanceParams(
                 instanceId,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(hashMapOf(colorStyleSetting to blueStyleOption)).toWireFormat(),
                 null,
@@ -3808,14 +3695,15 @@
         )
 
         val complication =
-            watchFaceImpl.complicationSlotsManager[LEFT_COMPLICATION_ID]!!.complicationData.value as
-                ShortTextComplicationData
+            watchFaceImpl.complicationSlotsManager[LEFT_COMPLICATION_ID]!!.complicationData.value
+                as ShortTextComplicationData
         assertThat(
-            complication.text.getTextAt(
-                ApplicationProvider.getApplicationContext<Context>().resources,
-                Instant.EPOCH
+                complication.text.getTextAt(
+                    ApplicationProvider.getApplicationContext<Context>().resources,
+                    Instant.EPOCH
+                )
             )
-        ).isEqualTo("Override")
+            .isEqualTo("Override")
     }
 
     @Test
@@ -3828,12 +3716,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 instanceId,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 listOf(
@@ -3858,56 +3741,54 @@
         )
 
         val complication =
-            watchFaceImpl.complicationSlotsManager[LEFT_COMPLICATION_ID]!!.complicationData.value as
-                ShortTextComplicationData
+            watchFaceImpl.complicationSlotsManager[LEFT_COMPLICATION_ID]!!.complicationData.value
+                as ShortTextComplicationData
         assertThat(
-            complication.text.getTextAt(
-                ApplicationProvider.getApplicationContext<Context>().resources,
-                Instant.EPOCH
+                complication.text.getTextAt(
+                    ApplicationProvider.getApplicationContext<Context>().resources,
+                    Instant.EPOCH
+                )
             )
-        ).isEqualTo("INITIAL_VALUE")
+            .isEqualTo("INITIAL_VALUE")
     }
 
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun directBoot() {
         val instanceId = "DirectBootInstance"
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(listOf(colorStyleSetting, watchHandStyleSetting)),
-            watchState,
-            handler,
-            null,
-            WallpaperInteractiveWatchFaceInstanceParams(
-                instanceId,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
-                WatchUiState(false, 0),
-                UserStyle(
-                    hashMapOf(
-                        colorStyleSetting to blueStyleOption,
-                        watchHandStyleSetting to gothicStyleOption
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
                     )
-                ).toWireFormat(),
+                },
+                UserStyleSchema(listOf(colorStyleSetting, watchHandStyleSetting)),
+                watchState,
+                handler,
                 null,
-                null,
-                null
-            ),
-            choreographer
-        )
+                WallpaperInteractiveWatchFaceInstanceParams(
+                    instanceId,
+                    DeviceConfig(false, false, 0, 0),
+                    WatchUiState(false, 0),
+                    UserStyle(
+                            hashMapOf(
+                                colorStyleSetting to blueStyleOption,
+                                watchHandStyleSetting to gothicStyleOption
+                            )
+                        )
+                        .toWireFormat(),
+                    null,
+                    null,
+                    null
+                ),
+                choreographer
+            )
 
         engineWrapper = testWatchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
         engineWrapper.onSurfaceChanged(surfaceHolder, 0, 100, 100)
@@ -3928,42 +3809,39 @@
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun headlessFlagPreventsDirectBoot() {
         val instanceId = "DirectBootInstance"
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            WallpaperInteractiveWatchFaceInstanceParams(
-                instanceId,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
-                WatchUiState(false, 0),
-                UserStyle(
-                    hashMapOf(
-                        colorStyleSetting to blueStyleOption,
-                        watchHandStyleSetting to gothicStyleOption
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
                     )
-                ).toWireFormat(),
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
                 null,
-                null,
-                null
-            ),
-            choreographer
-        )
+                WallpaperInteractiveWatchFaceInstanceParams(
+                    instanceId,
+                    DeviceConfig(false, false, 0, 0),
+                    WatchUiState(false, 0),
+                    UserStyle(
+                            hashMapOf(
+                                colorStyleSetting to blueStyleOption,
+                                watchHandStyleSetting to gothicStyleOption
+                            )
+                        )
+                        .toWireFormat(),
+                    null,
+                    null,
+                    null
+                ),
+                choreographer
+            )
 
         testWatchFaceService.createHeadlessEngine()
 
@@ -3983,12 +3861,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 instanceId,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 listOf(
@@ -4007,9 +3880,7 @@
         var numOfCalls = 0
 
         CoroutineScope(handler.asCoroutineDispatcher().immediate).launch {
-            watchState.isVisible.collect {
-                numOfCalls++
-            }
+            watchState.isVisible.collect { numOfCalls++ }
         }
 
         // The collect call will be triggered immediately to report the current value, so make
@@ -4031,35 +3902,39 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun complicationsUserStyleSetting_with_setComplicationBounds() {
-        val rightComplicationBoundsOption = ComplicationSlotsOption(
-            Option.Id(RIGHT_COMPLICATION),
-            "Right",
-            "Right",
-            null,
-            listOf(
-                ComplicationSlotOverlay.Builder(RIGHT_COMPLICATION_ID)
-                    .setComplicationSlotBounds(
-                        ComplicationSlotBounds(RectF(0.1f, 0.1f, 0.2f, 0.2f))
-                    ).build()
+        val rightComplicationBoundsOption =
+            ComplicationSlotsOption(
+                Option.Id(RIGHT_COMPLICATION),
+                "Right",
+                "Right",
+                null,
+                listOf(
+                    ComplicationSlotOverlay.Builder(RIGHT_COMPLICATION_ID)
+                        .setComplicationSlotBounds(
+                            ComplicationSlotBounds(RectF(0.1f, 0.1f, 0.2f, 0.2f))
+                        )
+                        .build()
+                )
             )
-        )
-        val complicationsStyleSetting = ComplicationSlotsUserStyleSetting(
-            UserStyleSetting.Id("complications_style_setting"),
-            "AllComplicationSlots",
-            "Number and position",
-            icon = null,
-            complicationConfig = listOf(
-                ComplicationSlotsOption(
-                    Option.Id("Default"),
-                    "Default",
-                    "Default",
-                    null,
-                    emptyList()
-                ),
-                rightComplicationBoundsOption
-            ),
-            affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
-        )
+        val complicationsStyleSetting =
+            ComplicationSlotsUserStyleSetting(
+                UserStyleSetting.Id("complications_style_setting"),
+                "AllComplicationSlots",
+                "Number and position",
+                icon = null,
+                complicationConfig =
+                    listOf(
+                        ComplicationSlotsOption(
+                            Option.Id("Default"),
+                            "Default",
+                            "Default",
+                            null,
+                            emptyList()
+                        ),
+                        rightComplicationBoundsOption
+                    ),
+                affectsWatchFaceLayers = listOf(WatchFaceLayer.COMPLICATIONS)
+            )
 
         initWallpaperInteractiveWatchFaceInstance(
             WatchFaceType.ANALOG,
@@ -4067,12 +3942,7 @@
             UserStyleSchema(listOf(complicationsStyleSetting)),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 listOf(
@@ -4091,9 +3961,7 @@
         var complicationDetails =
             complicationSlotsManager.getComplicationsState(renderer.screenBounds)
         assertThat(complicationDetails[1].id).isEqualTo(RIGHT_COMPLICATION_ID)
-        assertThat(complicationDetails[1].complicationState.bounds).isEqualTo(
-            Rect(60, 40, 80, 60)
-        )
+        assertThat(complicationDetails[1].complicationState.bounds).isEqualTo(Rect(60, 40, 80, 60))
 
         // Select a style which changes the bounds of the right complication.
         val mutableUserStyle = currentUserStyleRepository.userStyle.value.toMutableUserStyle()
@@ -4102,9 +3970,7 @@
 
         complicationDetails = complicationSlotsManager.getComplicationsState(renderer.screenBounds)
         assertThat(complicationDetails[1].id).isEqualTo(RIGHT_COMPLICATION_ID)
-        assertThat(complicationDetails[1].complicationState.bounds).isEqualTo(
-            Rect(10, 10, 20, 20)
-        )
+        assertThat(complicationDetails[1].complicationState.bounds).isEqualTo(Rect(10, 10, 20, 20))
     }
 
     @Suppress("DEPRECATION") // DefaultComplicationDataSourcePolicyAndType
@@ -4114,27 +3980,31 @@
         val leftCanvasComplication = mock<CanvasComplication>()
         val leftComplication =
             ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                LEFT_COMPLICATION_ID,
-                { _, _ -> leftCanvasComplication },
-                listOf(
-                    ComplicationType.SHORT_TEXT,
-                ),
-                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET),
-                ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
-            ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                    LEFT_COMPLICATION_ID,
+                    { _, _ -> leftCanvasComplication },
+                    listOf(
+                        ComplicationType.SHORT_TEXT,
+                    ),
+                    DefaultComplicationDataSourcePolicy(
+                        SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
+                    ),
+                    ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
+                )
+                .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
                 .build()
 
         val rightCanvasComplication = mock<CanvasComplication>()
         val rightComplication =
             ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                RIGHT_COMPLICATION_ID,
-                { _, _ -> rightCanvasComplication },
-                listOf(
-                    ComplicationType.SHORT_TEXT,
-                ),
-                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DATE),
-                ComplicationSlotBounds(RectF(0.6f, 0.4f, 0.8f, 0.6f))
-            ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                    RIGHT_COMPLICATION_ID,
+                    { _, _ -> rightCanvasComplication },
+                    listOf(
+                        ComplicationType.SHORT_TEXT,
+                    ),
+                    DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DATE),
+                    ComplicationSlotBounds(RectF(0.6f, 0.4f, 0.8f, 0.6f))
+                )
+                .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
                 .build()
 
         initEngine(
@@ -4154,22 +4024,26 @@
         val sameCanvasComplication = mock<CanvasComplication>()
         val leftComplication =
             ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                LEFT_COMPLICATION_ID,
-                { _, _ -> sameCanvasComplication },
-                listOf(ComplicationType.SHORT_TEXT),
-                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET),
-                ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
-            ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                    LEFT_COMPLICATION_ID,
+                    { _, _ -> sameCanvasComplication },
+                    listOf(ComplicationType.SHORT_TEXT),
+                    DefaultComplicationDataSourcePolicy(
+                        SystemDataSources.DATA_SOURCE_SUNRISE_SUNSET
+                    ),
+                    ComplicationSlotBounds(RectF(0.2f, 0.4f, 0.4f, 0.6f))
+                )
+                .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
                 .build()
 
         val rightComplication =
             ComplicationSlot.createRoundRectComplicationSlotBuilder(
-                RIGHT_COMPLICATION_ID,
-                { _, _ -> sameCanvasComplication },
-                listOf(ComplicationType.SHORT_TEXT),
-                DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DATE),
-                ComplicationSlotBounds(RectF(0.6f, 0.4f, 0.8f, 0.6f))
-            ).setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
+                    RIGHT_COMPLICATION_ID,
+                    { _, _ -> sameCanvasComplication },
+                    listOf(ComplicationType.SHORT_TEXT),
+                    DefaultComplicationDataSourcePolicy(SystemDataSources.DATA_SOURCE_DATE),
+                    ComplicationSlotBounds(RectF(0.6f, 0.4f, 0.8f, 0.6f))
+                )
+                .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
                 .build()
 
         // We don't want full init as in other tests with initEngine(), since
@@ -4191,54 +4065,51 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun additionalContentDescriptionLabelsSetBeforeWatchFaceInitComplete() {
-        val pendingIntent = PendingIntent.getActivity(
-            context, 0, Intent("Example"),
-            PendingIntent.FLAG_IMMUTABLE
-        )
+        val pendingIntent =
+            PendingIntent.getActivity(context, 0, Intent("Example"), PendingIntent.FLAG_IMMUTABLE)
 
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                renderer = TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-                // Set additionalContentDescriptionLabels before renderer.watchFaceHostApi has been
-                // set.
-                renderer.additionalContentDescriptionLabels = listOf(
-                    Pair(
-                        0,
-                        ContentDescriptionLabel(
-                            PlainComplicationText.Builder("Example").build(),
-                            Rect(10, 10, 20, 20),
-                            pendingIntent
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    renderer =
+                        TestRenderer(
+                            surfaceHolder,
+                            currentUserStyleRepository,
+                            watchState,
+                            INTERACTIVE_UPDATE_RATE_MS
                         )
-                    )
-                )
-                renderer
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+                    // Set additionalContentDescriptionLabels before renderer.watchFaceHostApi has
+                    // been
+                    // set.
+                    renderer.additionalContentDescriptionLabels =
+                        listOf(
+                            Pair(
+                                0,
+                                ContentDescriptionLabel(
+                                    PlainComplicationText.Builder("Example").build(),
+                                    Rect(10, 10, 20, 20),
+                                    pendingIntent
+                                )
+                            )
+                        )
+                    renderer
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         "TestID",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -4246,8 +4117,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -4269,11 +4139,11 @@
         // Check the additional ContentDescriptionLabel was applied.
         assertThat(engineWrapper.contentDescriptionLabels.size).isEqualTo(2)
         assertThat(
-            engineWrapper.contentDescriptionLabels[1].text.getTextAt(
-                ApplicationProvider.getApplicationContext<Context>().resources,
-                0
+                engineWrapper.contentDescriptionLabels[1]
+                    .text
+                    .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
             )
-        ).isEqualTo("Example")
+            .isEqualTo("Example")
 
         assertThat(engineWrapper.contentDescriptionLabels[1].tapAction).isEqualTo(pendingIntent)
         engineWrapper.onDestroy()
@@ -4288,12 +4158,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 "TestID",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 emptyList(),
@@ -4320,12 +4185,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 "TestID",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 emptyList(),
@@ -4353,12 +4213,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 "TestID",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 emptyList(),
@@ -4368,14 +4223,10 @@
         )
 
         val interactiveInstance = InteractiveInstanceManager.getAndRetainInstance("TestID")
-        val leftPendingIntent = PendingIntent.getActivity(
-            context, 0, Intent("Left"),
-            PendingIntent.FLAG_IMMUTABLE
-        )
-        val rightPendingIntent = PendingIntent.getActivity(
-            context, 0, Intent("Left"),
-            PendingIntent.FLAG_IMMUTABLE
-        )
+        val leftPendingIntent =
+            PendingIntent.getActivity(context, 0, Intent("Left"), PendingIntent.FLAG_IMMUTABLE)
+        val rightPendingIntent =
+            PendingIntent.getActivity(context, 0, Intent("Left"), PendingIntent.FLAG_IMMUTABLE)
         interactiveInstance!!.updateComplicationData(
             mutableListOf(
                 IdAndComplicationDataWireFormat(
@@ -4397,18 +4248,18 @@
 
         assertThat(engineWrapper.contentDescriptionLabels.size).isEqualTo(3)
         assertThat(
-            engineWrapper.contentDescriptionLabels[1].text.getTextAt(
-                ApplicationProvider.getApplicationContext<Context>().resources,
-                0
+                engineWrapper.contentDescriptionLabels[1]
+                    .text
+                    .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
             )
-        ).isEqualTo("LEFT!")
+            .isEqualTo("LEFT!")
         assertThat(engineWrapper.contentDescriptionLabels[1].tapAction).isEqualTo(leftPendingIntent)
         assertThat(
-            engineWrapper.contentDescriptionLabels[2].text.getTextAt(
-                ApplicationProvider.getApplicationContext<Context>().resources,
-                0
+                engineWrapper.contentDescriptionLabels[2]
+                    .text
+                    .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
             )
-        ).isEqualTo("RIGHT!")
+            .isEqualTo("RIGHT!")
         assertThat(engineWrapper.contentDescriptionLabels[2].tapAction)
             .isEqualTo(rightPendingIntent)
         interactiveInstance.release()
@@ -4417,22 +4268,24 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun schemaWithTooLargeIcon() {
-        val tooLargeIcon = Icon.createWithBitmap(
-            Bitmap.createBitmap(
-                WatchFaceService.MAX_REASONABLE_SCHEMA_ICON_WIDTH + 1,
-                WatchFaceService.MAX_REASONABLE_SCHEMA_ICON_HEIGHT + 1,
-                Bitmap.Config.ARGB_8888
+        val tooLargeIcon =
+            Icon.createWithBitmap(
+                Bitmap.createBitmap(
+                    WatchFaceService.MAX_REASONABLE_SCHEMA_ICON_WIDTH + 1,
+                    WatchFaceService.MAX_REASONABLE_SCHEMA_ICON_HEIGHT + 1,
+                    Bitmap.Config.ARGB_8888
+                )
             )
-        )
 
-        val settingWithTooLargeIcon = ListUserStyleSetting(
-            UserStyleSetting.Id("color_style_setting"),
-            "Colors",
-            "Watchface colorization", /* icon = */
-            tooLargeIcon,
-            colorStyleList,
-            listOf(WatchFaceLayer.BASE)
-        )
+        val settingWithTooLargeIcon =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("color_style_setting"),
+                "Colors",
+                "Watchface colorization",
+                /* icon = */ tooLargeIcon,
+                colorStyleList,
+                listOf(WatchFaceLayer.BASE)
+            )
 
         try {
             initWallpaperInteractiveWatchFaceInstance(
@@ -4441,19 +4294,15 @@
                 UserStyleSchema(listOf(settingWithTooLargeIcon, watchHandStyleSetting)),
                 WallpaperInteractiveWatchFaceInstanceParams(
                     INTERACTIVE_INSTANCE_ID,
-                    DeviceConfig(
-                        false,
-                        false,
-                        0,
-                        0
-                    ),
+                    DeviceConfig(false, false, 0, 0),
                     WatchUiState(false, 0),
                     UserStyle(
-                        hashMapOf(
-                            colorStyleSetting to blueStyleOption,
-                            watchHandStyleSetting to gothicStyleOption
+                            hashMapOf(
+                                colorStyleSetting to blueStyleOption,
+                                watchHandStyleSetting to gothicStyleOption
+                            )
                         )
-                    ).toWireFormat(),
+                        .toWireFormat(),
                     null,
                     null,
                     null
@@ -4462,10 +4311,11 @@
 
             fail("Should have thrown an exception due to an Icon that's too large")
         } catch (e: Exception) {
-            assertThat(e.message).contains(
-                "UserStyleSetting id color_style_setting has a 401 x 401 icon. This is too big, " +
-                    "the maximum size is 400 x 400."
-            )
+            assertThat(e.message)
+                .contains(
+                    "UserStyleSetting id color_style_setting has a 401 x 401 icon. " +
+                        "This is too big, the maximum size is 400 x 400."
+                )
         }
     }
 
@@ -4478,14 +4328,15 @@
                 ListUserStyleSetting.ListOption(Option.Id("id$i"), "Name", "Name", icon = null)
             )
         }
-        val tooLargeList = ListUserStyleSetting(
-            UserStyleSetting.Id("too_large"),
-            "Too large!",
-            "Description", /* icon = */
-            null,
-            longOptionsList,
-            listOf(WatchFaceLayer.BASE)
-        )
+        val tooLargeList =
+            ListUserStyleSetting(
+                UserStyleSetting.Id("too_large"),
+                "Too large!",
+                "Description",
+                /* icon = */ null,
+                longOptionsList,
+                listOf(WatchFaceLayer.BASE)
+            )
 
         try {
             initWallpaperInteractiveWatchFaceInstance(
@@ -4494,12 +4345,7 @@
                 UserStyleSchema(listOf(tooLargeList, watchHandStyleSetting)),
                 WallpaperInteractiveWatchFaceInstanceParams(
                     INTERACTIVE_INSTANCE_ID,
-                    DeviceConfig(
-                        false,
-                        false,
-                        0,
-                        0
-                    ),
+                    DeviceConfig(false, false, 0, 0),
                     WatchUiState(false, 0),
                     UserStyle(hashMapOf(watchHandStyleSetting to gothicStyleOption)).toWireFormat(),
                     null,
@@ -4510,10 +4356,11 @@
 
             fail("Should have thrown an exception due to an Icon that's too large")
         } catch (e: Exception) {
-            assertThat(e.message).contains(
-                "The estimated wire size of the supplied UserStyleSchemas for watch face " +
-                    "androidx.wear.watchface.test is too big"
-            )
+            assertThat(e.message)
+                .contains(
+                    "The estimated wire size of the supplied UserStyleSchemas for watch face " +
+                        "androidx.wear.watchface.test is too big"
+                )
         }
     }
 
@@ -4526,12 +4373,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 "TestID",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 emptyList(),
@@ -4572,69 +4414,73 @@
         val eventLog = ArrayList<String>()
         var renderer: Renderer
 
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                @Suppress("DEPRECATION")
-                renderer = object : Renderer.GlesRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                ) {
-                    init {
-                        eventLog.add(watchState.watchFaceInstanceId.value + " TestRenderer created")
-                    }
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    @Suppress("DEPRECATION")
+                    renderer =
+                        object :
+                            Renderer.GlesRenderer(
+                                surfaceHolder,
+                                currentUserStyleRepository,
+                                watchState,
+                                INTERACTIVE_UPDATE_RATE_MS
+                            ) {
+                            init {
+                                eventLog.add(
+                                    watchState.watchFaceInstanceId.value + " TestRenderer created"
+                                )
+                            }
 
-                    override suspend fun onBackgroundThreadGlContextCreated() {
-                        eventLog.add(
-                            watchState.watchFaceInstanceId.value +
-                                " onBackgroundThreadGlContextCreated"
-                        )
-                    }
+                            override suspend fun onBackgroundThreadGlContextCreated() {
+                                eventLog.add(
+                                    watchState.watchFaceInstanceId.value +
+                                        " onBackgroundThreadGlContextCreated"
+                                )
+                            }
 
-                    override suspend fun onUiThreadGlSurfaceCreated(width: Int, height: Int) {
-                        eventLog.add(
-                            watchState.watchFaceInstanceId.value + " onUiThreadGlSurfaceCreated"
-                        )
-                    }
+                            override suspend fun onUiThreadGlSurfaceCreated(
+                                width: Int,
+                                height: Int
+                            ) {
+                                eventLog.add(
+                                    watchState.watchFaceInstanceId.value +
+                                        " onUiThreadGlSurfaceCreated"
+                                )
+                            }
 
-                    override fun onDestroy() {
-                        super.onDestroy()
-                        eventLog.add(
-                            watchState.watchFaceInstanceId.value + " TestRenderer onDestroy"
-                        )
-                    }
+                            override fun onDestroy() {
+                                super.onDestroy()
+                                eventLog.add(
+                                    watchState.watchFaceInstanceId.value + " TestRenderer onDestroy"
+                                )
+                            }
 
-                    override fun render(zonedDateTime: ZonedDateTime) {
-                        eventLog.add(watchState.watchFaceInstanceId.value + " render")
-                    }
+                            override fun render(zonedDateTime: ZonedDateTime) {
+                                eventLog.add(watchState.watchFaceInstanceId.value + " render")
+                            }
 
-                    override fun renderHighlightLayer(zonedDateTime: ZonedDateTime) {}
-                }
-                renderer
-            },
-            UserStyleSchema(emptyList()),
-            null,
-            handler,
-            null,
-            null,
-            choreographer,
-            forceIsVisible = true
-        )
+                            override fun renderHighlightLayer(zonedDateTime: ZonedDateTime) {}
+                        }
+                    renderer
+                },
+                UserStyleSchema(emptyList()),
+                null,
+                handler,
+                null,
+                null,
+                choreographer,
+                forceIsVisible = true
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -4642,8 +4488,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -4678,20 +4523,22 @@
         headlessEngineWrapper.onDestroy()
         engineWrapper.onDestroy()
 
-        assertThat(eventLog).containsExactly(
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer created",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX +
-                "Interactive onBackgroundThreadGlContextCreated",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive onUiThreadGlSurfaceCreated",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer created",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless onBackgroundThreadGlContextCreated",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless onUiThreadGlSurfaceCreated",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless render",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer onDestroy",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer onDestroy"
-        )
+        assertThat(eventLog)
+            .containsExactly(
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer created",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX +
+                    "Interactive onBackgroundThreadGlContextCreated",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive onUiThreadGlSurfaceCreated",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer created",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX +
+                    "Headless onBackgroundThreadGlContextCreated",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless onUiThreadGlSurfaceCreated",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless render",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer onDestroy",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer onDestroy"
+            )
     }
 
     @Test
@@ -4707,74 +4554,74 @@
             }
         }
 
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                renderer = object : Renderer.CanvasRenderer2<TestSharedAssets>(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    CanvasType.HARDWARE,
-                    INTERACTIVE_UPDATE_RATE_MS,
-                    clearWithBackgroundTintBeforeRenderingHighlightLayer = false
-                ) {
-                    init {
-                        eventLog.add(watchState.watchFaceInstanceId.value + " TestRenderer created")
-                    }
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    renderer =
+                        object :
+                            Renderer.CanvasRenderer2<TestSharedAssets>(
+                                surfaceHolder,
+                                currentUserStyleRepository,
+                                watchState,
+                                CanvasType.HARDWARE,
+                                INTERACTIVE_UPDATE_RATE_MS,
+                                clearWithBackgroundTintBeforeRenderingHighlightLayer = false
+                            ) {
+                            init {
+                                eventLog.add(
+                                    watchState.watchFaceInstanceId.value + " TestRenderer created"
+                                )
+                            }
 
-                    override suspend fun createSharedAssets(): TestSharedAssets {
-                        eventLog.add("createAssets")
-                        return TestSharedAssets()
-                    }
+                            override suspend fun createSharedAssets(): TestSharedAssets {
+                                eventLog.add("createAssets")
+                                return TestSharedAssets()
+                            }
 
-                    override fun render(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime,
-                        sharedAssets: TestSharedAssets
-                    ) {
-                        eventLog.add(watchState.watchFaceInstanceId.value + " render")
-                    }
+                            override fun render(
+                                canvas: Canvas,
+                                bounds: Rect,
+                                zonedDateTime: ZonedDateTime,
+                                sharedAssets: TestSharedAssets
+                            ) {
+                                eventLog.add(watchState.watchFaceInstanceId.value + " render")
+                            }
 
-                    override fun renderHighlightLayer(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime,
-                        sharedAssets: TestSharedAssets
-                    ) {
-                        // NOP
-                    }
+                            override fun renderHighlightLayer(
+                                canvas: Canvas,
+                                bounds: Rect,
+                                zonedDateTime: ZonedDateTime,
+                                sharedAssets: TestSharedAssets
+                            ) {
+                                // NOP
+                            }
 
-                    override fun onDestroy() {
-                        super.onDestroy()
-                        eventLog.add(
-                            watchState.watchFaceInstanceId.value + " TestRenderer onDestroy"
-                        )
-                    }
-                }
-                renderer
-            },
-            UserStyleSchema(emptyList()),
-            null,
-            handler,
-            null,
-            null,
-            choreographer,
-            forceIsVisible = true
-        )
+                            override fun onDestroy() {
+                                super.onDestroy()
+                                eventLog.add(
+                                    watchState.watchFaceInstanceId.value + " TestRenderer onDestroy"
+                                )
+                            }
+                        }
+                    renderer
+                },
+                UserStyleSchema(emptyList()),
+                null,
+                handler,
+                null,
+                null,
+                choreographer,
+                forceIsVisible = true
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -4782,8 +4629,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -4819,17 +4665,18 @@
         interactiveWatchFaceInstance.release()
         engineWrapper.onDestroy()
 
-        assertThat(eventLog).containsExactly(
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer created",
-            "createAssets",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer created",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless render",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer onDestroy",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer onDestroy",
-            "SharedAssets onDestroy"
-        )
+        assertThat(eventLog)
+            .containsExactly(
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer created",
+                "createAssets",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer created",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless render",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer onDestroy",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer onDestroy",
+                "SharedAssets onDestroy"
+            )
     }
 
     @Test
@@ -4845,68 +4692,68 @@
             }
         }
 
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                renderer = object : Renderer.GlesRenderer2<TestSharedAssets>(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                ) {
-                    init {
-                        eventLog.add(watchState.watchFaceInstanceId.value + " TestRenderer created")
-                    }
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    renderer =
+                        object :
+                            Renderer.GlesRenderer2<TestSharedAssets>(
+                                surfaceHolder,
+                                currentUserStyleRepository,
+                                watchState,
+                                INTERACTIVE_UPDATE_RATE_MS
+                            ) {
+                            init {
+                                eventLog.add(
+                                    watchState.watchFaceInstanceId.value + " TestRenderer created"
+                                )
+                            }
 
-                    override suspend fun createSharedAssets(): TestSharedAssets {
-                        eventLog.add("createAssets")
-                        return TestSharedAssets()
-                    }
+                            override suspend fun createSharedAssets(): TestSharedAssets {
+                                eventLog.add("createAssets")
+                                return TestSharedAssets()
+                            }
 
-                    override fun onDestroy() {
-                        super.onDestroy()
-                        eventLog.add(
-                            watchState.watchFaceInstanceId.value + " TestRenderer onDestroy"
-                        )
-                    }
+                            override fun onDestroy() {
+                                super.onDestroy()
+                                eventLog.add(
+                                    watchState.watchFaceInstanceId.value + " TestRenderer onDestroy"
+                                )
+                            }
 
-                    override fun render(
-                        zonedDateTime: ZonedDateTime,
-                        sharedAssets: TestSharedAssets
-                    ) {
-                        eventLog.add(watchState.watchFaceInstanceId.value + " render")
-                    }
+                            override fun render(
+                                zonedDateTime: ZonedDateTime,
+                                sharedAssets: TestSharedAssets
+                            ) {
+                                eventLog.add(watchState.watchFaceInstanceId.value + " render")
+                            }
 
-                    override fun renderHighlightLayer(
-                        zonedDateTime: ZonedDateTime,
-                        sharedAssets: TestSharedAssets
-                    ) {
-                        // NOP
-                    }
-                }
-                renderer
-            },
-            UserStyleSchema(emptyList()),
-            null,
-            handler,
-            null,
-            null,
-            choreographer,
-            forceIsVisible = true
-        )
+                            override fun renderHighlightLayer(
+                                zonedDateTime: ZonedDateTime,
+                                sharedAssets: TestSharedAssets
+                            ) {
+                                // NOP
+                            }
+                        }
+                    renderer
+                },
+                UserStyleSchema(emptyList()),
+                null,
+                handler,
+                null,
+                null,
+                choreographer,
+                forceIsVisible = true
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -4914,8 +4761,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -4951,17 +4797,18 @@
         interactiveWatchFaceInstance.release()
         engineWrapper.onDestroy()
 
-        assertThat(eventLog).containsExactly(
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer created",
-            "createAssets",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer created",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless render",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer onDestroy",
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer onDestroy",
-            "SharedAssets onDestroy"
-        )
+        assertThat(eventLog)
+            .containsExactly(
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer created",
+                "createAssets",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive render",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer created",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless render",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Headless TestRenderer onDestroy",
+                SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive TestRenderer onDestroy",
+                "SharedAssets onDestroy"
+            )
     }
 
     @Test
@@ -4969,48 +4816,46 @@
     public fun renderer_onDestroy_called_even_if_init_not_complete() {
         val initDeferred = CompletableDeferred<Unit>()
         var onDestroyCalled = false
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                renderer = object : TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                ) {
-                    // Prevent initialization until initDeferred completes.
-                    override suspend fun init() {
-                        super.init()
-                        initDeferred.awaitWithTimeout()
-                    }
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    renderer =
+                        object :
+                            TestRenderer(
+                                surfaceHolder,
+                                currentUserStyleRepository,
+                                watchState,
+                                INTERACTIVE_UPDATE_RATE_MS
+                            ) {
+                            // Prevent initialization until initDeferred completes.
+                            override suspend fun init() {
+                                super.init()
+                                initDeferred.awaitWithTimeout()
+                            }
 
-                    override fun onDestroy() {
-                        super.onDestroy()
-                        onDestroyCalled = true
-                    }
-                }
-                renderer
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+                            override fun onDestroy() {
+                                super.onDestroy()
+                                onDestroyCalled = true
+                            }
+                        }
+                    renderer
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         "TestID",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -5018,8 +4863,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -5057,12 +4901,7 @@
             UserStyleSchema(listOf(colorStyleSetting, watchHandStyleSetting)),
             WallpaperInteractiveWatchFaceInstanceParams(
                 "TestID",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 emptyList(),
@@ -5084,14 +4923,17 @@
         assertThat(dump).contains("lastDrawTimeMillis=1000")
         assertThat(dump).contains("nextDrawTimeMillis=1016")
         assertThat(dump).contains("isHeadless=false")
-        assertThat(dump).contains(
-            "currentUserStyleRepository.userStyle=UserStyle[color_style_setting -> red_style, " +
-                "hand_style_setting -> classic_style]"
-        )
-        assertThat(dump).contains(
-            "currentUserStyleRepository.schema=[{color_style_setting : red_style, green_style, " +
-                "blue_style}, {hand_style_setting : classic_style, modern_style, gothic_style}]"
-        )
+        assertThat(dump)
+            .contains(
+                "currentUserStyleRepository.userStyle=UserStyle[" +
+                    "color_style_setting -> red_style, hand_style_setting -> classic_style]"
+            )
+        assertThat(dump)
+            .contains(
+                "currentUserStyleRepository.schema=[" +
+                    "{color_style_setting : red_style, green_style, blue_style}, " +
+                    "{hand_style_setting : classic_style, modern_style, gothic_style}]"
+            )
         assertThat(dump).contains("ComplicationSlot 1000:")
         assertThat(dump).contains("ComplicationSlot 1001:")
         assertThat(dump).contains("screenBounds=Rect(0, 0 - 100, 100)")
@@ -5124,37 +4966,33 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun uiThreadPriority_interactive() {
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer,
-            mainThreadPriorityDelegate = mainThreadPriorityDelegate
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer,
+                mainThreadPriorityDelegate = mainThreadPriorityDelegate
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         "TestID",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -5162,8 +5000,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -5205,42 +5042,39 @@
     @Config(sdk = [Build.VERSION_CODES.R])
     @RequiresApi(Build.VERSION_CODES.O_MR1)
     public fun uiThreadPriority_headless() {
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            WallpaperInteractiveWatchFaceInstanceParams(
-                "Headless",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
-                WatchUiState(false, 0),
-                UserStyle(
-                    hashMapOf(
-                        colorStyleSetting to blueStyleOption,
-                        watchHandStyleSetting to gothicStyleOption
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
                     )
-                ).toWireFormat(),
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
                 null,
-                null,
-                null
-            ),
-            choreographer
-        )
+                WallpaperInteractiveWatchFaceInstanceParams(
+                    "Headless",
+                    DeviceConfig(false, false, 0, 0),
+                    WatchUiState(false, 0),
+                    UserStyle(
+                            hashMapOf(
+                                colorStyleSetting to blueStyleOption,
+                                watchHandStyleSetting to gothicStyleOption
+                            )
+                        )
+                        .toWireFormat(),
+                    null,
+                    null,
+                    null
+                ),
+                choreographer
+            )
 
         engineWrapper =
             testWatchFaceService.createHeadlessEngine() as WatchFaceService.EngineWrapper
@@ -5282,37 +5116,33 @@
     @Config(sdk = [Build.VERSION_CODES.R])
     @RequiresApi(Build.VERSION_CODES.O_MR1)
     public fun headlessId() {
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.ANALOG,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            WallpaperInteractiveWatchFaceInstanceParams(
-                "wfId-Headless",
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.ANALOG,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                WallpaperInteractiveWatchFaceInstanceParams(
+                    "wfId-Headless",
+                    DeviceConfig(false, false, 0, 0),
+                    WatchUiState(false, 0),
+                    UserStyle(emptyMap()).toWireFormat(),
+                    null,
+                    null,
+                    null
                 ),
-                WatchUiState(false, 0),
-                UserStyle(emptyMap()).toWireFormat(),
-                null,
-                null,
-                null
-            ),
-            choreographer
-        )
+                choreographer
+            )
 
         engineWrapper =
             testWatchFaceService.createHeadlessEngine() as WatchFaceService.EngineWrapper
@@ -5332,28 +5162,27 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun selectComplicationDataForInstant_overlapping() {
-        val a = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-            .setShortText(WireComplicationText.plainText("A"))
-            .build()
-        val b = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-            .setShortText(WireComplicationText.plainText("B"))
-            .build()
+        val a =
+            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                .setShortText(WireComplicationText.plainText("A"))
+                .build()
+        val b =
+            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                .setShortText(WireComplicationText.plainText("B"))
+                .build()
         b.timelineStartEpochSecond = 1000
         b.timelineEndEpochSecond = 4000
 
-        val c = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-            .setShortText(WireComplicationText.plainText("C"))
-            .build()
+        val c =
+            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                .setShortText(WireComplicationText.plainText("C"))
+                .build()
         c.timelineStartEpochSecond = 2000
         c.timelineEndEpochSecond = 3000
 
         a.setTimelineEntryCollection(listOf(b, c))
 
-        initEngine(
-            WatchFaceType.ANALOG,
-            listOf(leftComplication),
-            UserStyleSchema(emptyList())
-        )
+        initEngine(WatchFaceType.ANALOG, listOf(leftComplication), UserStyleSchema(emptyList()))
 
         engineWrapper.setComplicationDataList(
             listOf(IdAndComplicationDataWireFormat(LEFT_COMPLICATION_ID, a))
@@ -5387,28 +5216,27 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun selectComplicationDataForInstant_disjoint() {
-        val a = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-            .setShortText(WireComplicationText.plainText("A"))
-            .build()
-        val b = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-            .setShortText(WireComplicationText.plainText("B"))
-            .build()
+        val a =
+            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                .setShortText(WireComplicationText.plainText("A"))
+                .build()
+        val b =
+            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                .setShortText(WireComplicationText.plainText("B"))
+                .build()
         b.timelineStartEpochSecond = 1000
         b.timelineEndEpochSecond = 2000
 
-        val c = WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-            .setShortText(WireComplicationText.plainText("C"))
-            .build()
+        val c =
+            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                .setShortText(WireComplicationText.plainText("C"))
+                .build()
         c.timelineStartEpochSecond = 3000
         c.timelineEndEpochSecond = 4000
 
         a.setTimelineEntryCollection(listOf(b, c))
 
-        initEngine(
-            WatchFaceType.ANALOG,
-            listOf(leftComplication),
-            UserStyleSchema(emptyList())
-        )
+        initEngine(WatchFaceType.ANALOG, listOf(leftComplication), UserStyleSchema(emptyList()))
 
         engineWrapper.setComplicationDataList(
             listOf(IdAndComplicationDataWireFormat(LEFT_COMPLICATION_ID, a))
@@ -5453,36 +5281,29 @@
         timelineEntry.timelineStartEpochSecond = 100
         timelineEntry.timelineEndEpochSecond = 1000
 
-        val wireLongTextComplication = WireComplicationData.Builder(
-            ComplicationType.LONG_TEXT.toWireComplicationType()
-        )
-            .setEndDateTimeMillis(1650988800000)
-            .setDataSource(ComponentName("a", "b"))
-            .setLongText(WireComplicationText.plainText("longText"))
-            .setSmallImageStyle(WireComplicationData.IMAGE_STYLE_ICON)
-            .setContentDescription(WireComplicationText.plainText("test"))
-            .build()
+        val wireLongTextComplication =
+            WireComplicationData.Builder(ComplicationType.LONG_TEXT.toWireComplicationType())
+                .setEndDateTimeMillis(1650988800000)
+                .setDataSource(ComponentName("a", "b"))
+                .setLongText(WireComplicationText.plainText("longText"))
+                .setSmallImageStyle(WireComplicationData.IMAGE_STYLE_ICON)
+                .setContentDescription(WireComplicationText.plainText("test"))
+                .build()
         wireLongTextComplication.setTimelineEntryCollection(listOf(timelineEntry))
 
-        initEngine(
-            WatchFaceType.ANALOG,
-            listOf(leftComplication),
-            UserStyleSchema(emptyList())
-        )
+        initEngine(WatchFaceType.ANALOG, listOf(leftComplication), UserStyleSchema(emptyList()))
 
         engineWrapper.setComplicationDataList(
-            listOf(
-                IdAndComplicationDataWireFormat(LEFT_COMPLICATION_ID, wireLongTextComplication)
-            )
+            listOf(IdAndComplicationDataWireFormat(LEFT_COMPLICATION_ID, wireLongTextComplication))
         )
 
         complicationSlotsManager.selectComplicationDataForInstant(Instant.ofEpochSecond(0))
         assertThat(getLeftLongTextComplicationDataText()).isEqualTo("longText")
 
         complicationSlotsManager.selectComplicationDataForInstant(Instant.ofEpochSecond(100))
-        val leftComplication = complicationSlotsManager[
-            LEFT_COMPLICATION_ID
-        ]!!.complicationData.value as NoDataComplicationData
+        val leftComplication =
+            complicationSlotsManager[LEFT_COMPLICATION_ID]!!.complicationData.value
+                as NoDataComplicationData
 
         val placeholder = leftComplication.placeholder as LongTextComplicationData
         assertThat(placeholder.text.isPlaceholder()).isTrue()
@@ -5492,32 +5313,36 @@
     public fun updateComplicationTimelineOnly_updatesComplication() {
         // Arrange
         initWallpaperInteractiveWatchFaceInstance(complicationSlots = listOf(leftComplication))
-        val defaultBase = WireComplicationData.Builder(WireComplicationData.TYPE_LONG_TEXT)
-            .setLongText(WireComplicationText("default"))
-            .build()
-        val timelineEntryBase = WireComplicationData.Builder(WireComplicationData.TYPE_LONG_TEXT)
-            .setLongText(WireComplicationText("timeline"))
-            .build()
-        val oldTimelineEntry = WireComplicationData.Builder(defaultBase).build().apply {
-            setTimelineEntryCollection(
-                listOf(
-                    WireComplicationData.Builder(timelineEntryBase).build().apply {
-                        timelineStartEpochSecond = 100
-                        timelineEndEpochSecond = 200
-                    }
+        val defaultBase =
+            WireComplicationData.Builder(WireComplicationData.TYPE_LONG_TEXT)
+                .setLongText(WireComplicationText("default"))
+                .build()
+        val timelineEntryBase =
+            WireComplicationData.Builder(WireComplicationData.TYPE_LONG_TEXT)
+                .setLongText(WireComplicationText("timeline"))
+                .build()
+        val oldTimelineEntry =
+            WireComplicationData.Builder(defaultBase).build().apply {
+                setTimelineEntryCollection(
+                    listOf(
+                        WireComplicationData.Builder(timelineEntryBase).build().apply {
+                            timelineStartEpochSecond = 100
+                            timelineEndEpochSecond = 200
+                        }
+                    )
                 )
-            )
-        }
-        val newTimelineEntry = WireComplicationData.Builder(defaultBase).build().apply {
-            setTimelineEntryCollection(
-                listOf(
-                    WireComplicationData.Builder(timelineEntryBase).build().apply {
-                        timelineStartEpochSecond = 200
-                        timelineEndEpochSecond = 300
-                    }
+            }
+        val newTimelineEntry =
+            WireComplicationData.Builder(defaultBase).build().apply {
+                setTimelineEntryCollection(
+                    listOf(
+                        WireComplicationData.Builder(timelineEntryBase).build().apply {
+                            timelineStartEpochSecond = 200
+                            timelineEndEpochSecond = 300
+                        }
+                    )
                 )
-            )
-        }
+            }
         engineWrapper.setComplicationDataList(
             listOf(IdAndComplicationDataWireFormat(LEFT_COMPLICATION_ID, oldTimelineEntry))
         )
@@ -5540,12 +5365,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -5554,11 +5374,8 @@
             )
         )
 
-        val screenshotParams = RenderParameters(
-            DrawMode.AMBIENT,
-            WatchFaceLayer.ALL_WATCH_FACE_LAYERS,
-            null
-        )
+        val screenshotParams =
+            RenderParameters(DrawMode.AMBIENT, WatchFaceLayer.ALL_WATCH_FACE_LAYERS, null)
 
         renderer.takeScreenshot(
             ZonedDateTime.ofInstant(Instant.EPOCH, ZoneId.of("GMT")),
@@ -5583,12 +5400,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -5606,46 +5418,46 @@
                 "testOption",
                 "testOption",
                 icon = null,
-                complicationSlotOverlays = listOf(
-                    ComplicationSlotOverlay(
-                        LEFT_COMPLICATION_ID,
-                        enabled = false,
-                        complicationSlotBounds =
-                        ComplicationSlotBounds(RectF(0.1f, 0.2f, 0.3f, 0.4f)),
-                        accessibilityTraversalIndex = 100
+                complicationSlotOverlays =
+                    listOf(
+                        ComplicationSlotOverlay(
+                            LEFT_COMPLICATION_ID,
+                            enabled = false,
+                            complicationSlotBounds =
+                                ComplicationSlotBounds(RectF(0.1f, 0.2f, 0.3f, 0.4f)),
+                            accessibilityTraversalIndex = 100
+                        ),
+                        ComplicationSlotOverlay(
+                            RIGHT_COMPLICATION_ID,
+                            enabled = true,
+                            complicationSlotBounds =
+                                ComplicationSlotBounds(RectF(0.5f, 0.6f, 0.7f, 0.8f)),
+                            accessibilityTraversalIndex = 1
+                        )
                     ),
-                    ComplicationSlotOverlay(
-                        RIGHT_COMPLICATION_ID,
-                        enabled = true,
-                        complicationSlotBounds =
-                        ComplicationSlotBounds(RectF(0.5f, 0.6f, 0.7f, 0.8f)),
-                        accessibilityTraversalIndex = 1
-                    )
-                ),
                 watchFaceEditorData = null
             )
         )
 
         // Dirty flags should lead to several WatchFaceHostApi calls.
-        verify(mockWatchFaceHostApi).setActiveComplicationSlots(
-            eq(intArrayOf(RIGHT_COMPLICATION_ID))
-        )
+        verify(mockWatchFaceHostApi)
+            .setActiveComplicationSlots(eq(intArrayOf(RIGHT_COMPLICATION_ID)))
         verify(mockWatchFaceHostApi).updateContentDescriptionLabels()
 
         assertThat(leftComplication.enabled).isFalse()
         assertThat(
-            leftComplication.complicationSlotBounds.perComplicationTypeBounds[
-                ComplicationType.SHORT_TEXT
-            ]
-        ).isEqualTo(RectF(0.1f, 0.2f, 0.3f, 0.4f))
+                leftComplication.complicationSlotBounds.perComplicationTypeBounds[
+                        ComplicationType.SHORT_TEXT]
+            )
+            .isEqualTo(RectF(0.1f, 0.2f, 0.3f, 0.4f))
         assertThat(leftComplication.accessibilityTraversalIndex).isEqualTo(100)
 
         assertThat(rightComplication.enabled).isTrue()
         assertThat(
-            rightComplication.complicationSlotBounds.perComplicationTypeBounds[
-                ComplicationType.SHORT_TEXT
-            ]
-        ).isEqualTo(RectF(0.5f, 0.6f, 0.7f, 0.8f))
+                rightComplication.complicationSlotBounds.perComplicationTypeBounds[
+                        ComplicationType.SHORT_TEXT]
+            )
+            .isEqualTo(RectF(0.5f, 0.6f, 0.7f, 0.8f))
         assertThat(rightComplication.accessibilityTraversalIndex).isEqualTo(1)
 
         reset(mockWatchFaceHostApi)
@@ -5691,42 +5503,34 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.O_MR1])
     public fun onActionScreenOff_preR() {
-        Settings.Global.putInt(
-            context.contentResolver,
-            BroadcastsObserver.AMBIENT_ENABLED_PATH,
-            1
-        )
+        Settings.Global.putInt(context.contentResolver, BroadcastsObserver.AMBIENT_ENABLED_PATH, 1)
 
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         "TestID",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -5734,8 +5538,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -5763,42 +5566,34 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun onActionScreenOff_ambientNotEnabled() {
-        Settings.Global.putInt(
-            context.contentResolver,
-            BroadcastsObserver.AMBIENT_ENABLED_PATH,
-            0
-        )
+        Settings.Global.putInt(context.contentResolver, BroadcastsObserver.AMBIENT_ENABLED_PATH, 0)
 
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         "TestID",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -5806,8 +5601,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -5835,42 +5629,34 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun onActionScreenOff_onActionScreenOn_ambientEnabled() {
-        Settings.Global.putInt(
-            context.contentResolver,
-            BroadcastsObserver.AMBIENT_ENABLED_PATH,
-            1
-        )
+        Settings.Global.putInt(context.contentResolver, BroadcastsObserver.AMBIENT_ENABLED_PATH, 1)
 
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         "TestID",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -5878,8 +5664,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -5920,36 +5705,32 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun onActionTimeTick() {
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                TestRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    INTERACTIVE_UPDATE_RATE_MS
-                )
-            },
-            UserStyleSchema(emptyList()),
-            watchState,
-            handler,
-            null,
-            null,
-            choreographer
-        )
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    TestRenderer(
+                        surfaceHolder,
+                        currentUserStyleRepository,
+                        watchState,
+                        INTERACTIVE_UPDATE_RATE_MS
+                    )
+                },
+                UserStyleSchema(emptyList()),
+                watchState,
+                handler,
+                null,
+                null,
+                choreographer
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         "TestID",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -5957,8 +5738,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -6005,26 +5785,29 @@
             UserStyleSchema(emptyList())
         )
 
-        val left1 = IdAndComplicationDataWireFormat(
-            LEFT_COMPLICATION_ID,
-            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                .setShortText(WireComplicationText.plainText("Left1"))
-                .build()
-        )
+        val left1 =
+            IdAndComplicationDataWireFormat(
+                LEFT_COMPLICATION_ID,
+                WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                    .setShortText(WireComplicationText.plainText("Left1"))
+                    .build()
+            )
 
-        val left2 = IdAndComplicationDataWireFormat(
-            LEFT_COMPLICATION_ID,
-            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                .setShortText(WireComplicationText.plainText("Left2"))
-                .build()
-        )
+        val left2 =
+            IdAndComplicationDataWireFormat(
+                LEFT_COMPLICATION_ID,
+                WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                    .setShortText(WireComplicationText.plainText("Left2"))
+                    .build()
+            )
 
-        val right = IdAndComplicationDataWireFormat(
-            RIGHT_COMPLICATION_ID,
-            WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                .setShortText(WireComplicationText.plainText("Right"))
-                .build()
-        )
+        val right =
+            IdAndComplicationDataWireFormat(
+                RIGHT_COMPLICATION_ID,
+                WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                    .setShortText(WireComplicationText.plainText("Right"))
+                    .build()
+            )
 
         engineWrapper.setComplicationDataList(listOf(left1))
         // In initEngine we fill initial complication data using
@@ -6048,12 +5831,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -6088,18 +5866,21 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun updateComplications_after_updateInstance() {
-        val complicationList = listOf(
-            IdAndComplicationDataWireFormat(
-                LEFT_COMPLICATION_ID,
-                WireComplicationData.Builder(WireComplicationData.TYPE_LONG_TEXT)
-                    .setLongText(WireComplicationText.plainText("TYPE_LONG_TEXT")).build()
-            ),
-            IdAndComplicationDataWireFormat(
-                RIGHT_COMPLICATION_ID,
-                WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
-                    .setShortText(WireComplicationText.plainText("TYPE_SHORT_TEXT")).build()
+        val complicationList =
+            listOf(
+                IdAndComplicationDataWireFormat(
+                    LEFT_COMPLICATION_ID,
+                    WireComplicationData.Builder(WireComplicationData.TYPE_LONG_TEXT)
+                        .setLongText(WireComplicationText.plainText("TYPE_LONG_TEXT"))
+                        .build()
+                ),
+                IdAndComplicationDataWireFormat(
+                    RIGHT_COMPLICATION_ID,
+                    WireComplicationData.Builder(WireComplicationData.TYPE_SHORT_TEXT)
+                        .setShortText(WireComplicationText.plainText("TYPE_SHORT_TEXT"))
+                        .build()
+                )
             )
-        )
 
         initWallpaperInteractiveWatchFaceInstance(
             WatchFaceType.ANALOG,
@@ -6107,12 +5888,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -6131,82 +5907,77 @@
             )
         }
 
-        assertThat(leftComplication.complicationData.value).isInstanceOf(
-            NoDataComplicationData::class.java
-        )
-        assertThat(rightComplication.complicationData.value).isInstanceOf(
-            NoDataComplicationData::class.java
-        )
+        assertThat(leftComplication.complicationData.value)
+            .isInstanceOf(NoDataComplicationData::class.java)
+        assertThat(rightComplication.complicationData.value)
+            .isInstanceOf(NoDataComplicationData::class.java)
 
         interactiveWatchFaceInstance.updateComplicationData(complicationList)
 
-        assertThat(leftComplication.complicationData.value).isInstanceOf(
-            LongTextComplicationData::class.java
-        )
-        assertThat(rightComplication.complicationData.value).isInstanceOf(
-            ShortTextComplicationData::class.java
-        )
+        assertThat(leftComplication.complicationData.value)
+            .isInstanceOf(LongTextComplicationData::class.java)
+        assertThat(rightComplication.complicationData.value)
+            .isInstanceOf(ShortTextComplicationData::class.java)
     }
 
     @OptIn(WatchFaceExperimental::class)
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun onComputeColors() {
-        @Suppress("DEPRECATION")
-        lateinit var renderer: Renderer.CanvasRenderer
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                @Suppress("DEPRECATION")
-                renderer = object : Renderer.CanvasRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    CanvasType.HARDWARE,
-                    INTERACTIVE_UPDATE_RATE_MS
-                ) {
-                    init {
-                        watchfaceColors =
-                            WatchFaceColors(Color.valueOf(1), Color.valueOf(2), Color.valueOf(3))
-                    }
+        @Suppress("DEPRECATION") lateinit var renderer: Renderer.CanvasRenderer
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    @Suppress("DEPRECATION")
+                    renderer =
+                        object :
+                            Renderer.CanvasRenderer(
+                                surfaceHolder,
+                                currentUserStyleRepository,
+                                watchState,
+                                CanvasType.HARDWARE,
+                                INTERACTIVE_UPDATE_RATE_MS
+                            ) {
+                            init {
+                                watchfaceColors =
+                                    WatchFaceColors(
+                                        Color.valueOf(1),
+                                        Color.valueOf(2),
+                                        Color.valueOf(3)
+                                    )
+                            }
 
-                    override fun render(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime
-                    ) {
-                    }
+                            override fun render(
+                                canvas: Canvas,
+                                bounds: Rect,
+                                zonedDateTime: ZonedDateTime
+                            ) {}
 
-                    override fun renderHighlightLayer(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime
-                    ) {
-                    }
-                }
-                renderer
-            },
-            UserStyleSchema(emptyList()),
-            null,
-            handler,
-            null,
-            null,
-            choreographer,
-            forceIsVisible = true
-        )
+                            override fun renderHighlightLayer(
+                                canvas: Canvas,
+                                bounds: Rect,
+                                zonedDateTime: ZonedDateTime
+                            ) {}
+                        }
+                    renderer
+                },
+                UserStyleSchema(emptyList()),
+                null,
+                handler,
+                null,
+                null,
+                choreographer,
+                forceIsVisible = true
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -6214,8 +5985,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -6231,45 +6001,45 @@
             )
 
         var lastWatchFaceColors: WatchFaceColors? = null
-        val listener = object : IWatchfaceListener.Stub() {
-            override fun getApiVersion() = 1
+        val listener =
+            object : IWatchfaceListener.Stub() {
+                override fun getApiVersion() = 1
 
-            override fun onWatchfaceReady() {}
+                override fun onWatchfaceReady() {}
 
-            override fun onWatchfaceColorsChanged(watchFaceColors: WatchFaceColorsWireFormat?) {
-                lastWatchFaceColors = watchFaceColors?.toApiFormat()
+                override fun onWatchfaceColorsChanged(watchFaceColors: WatchFaceColorsWireFormat?) {
+                    lastWatchFaceColors = watchFaceColors?.toApiFormat()
+                }
+
+                override fun onPreviewImageUpdateRequested(watchFaceId: String) {}
+
+                override fun onEngineDetached() {}
             }
 
-            override fun onPreviewImageUpdateRequested(watchFaceId: String) {}
-
-            override fun onEngineDetached() {}
-        }
-
         engineWrapper = testWatchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
         engineWrapper.onCreate(surfaceHolder)
         engineWrapper.onSurfaceChanged(surfaceHolder, 0, 100, 100)
 
         interactiveWatchFaceInstance.addWatchFaceListener(listener)
 
-        assertThat(lastWatchFaceColors).isEqualTo(
-            WatchFaceColors(Color.valueOf(1), Color.valueOf(2), Color.valueOf(3))
-        )
+        assertThat(lastWatchFaceColors)
+            .isEqualTo(WatchFaceColors(Color.valueOf(1), Color.valueOf(2), Color.valueOf(3)))
 
         renderer.watchfaceColors =
             WatchFaceColors(Color.valueOf(10), Color.valueOf(20), Color.valueOf(30))
 
-        assertThat(lastWatchFaceColors).isEqualTo(
-            WatchFaceColors(Color.valueOf(10), Color.valueOf(20), Color.valueOf(30))
-        )
+        assertThat(lastWatchFaceColors)
+            .isEqualTo(WatchFaceColors(Color.valueOf(10), Color.valueOf(20), Color.valueOf(30)))
 
         interactiveWatchFaceInstance.removeWatchFaceListener(listener)
 
         // This should be ignored.
         renderer.watchfaceColors =
             WatchFaceColors(Color.valueOf(100), Color.valueOf(200), Color.valueOf(300))
-        assertThat(lastWatchFaceColors).isNotEqualTo(
-            WatchFaceColors(Color.valueOf(100), Color.valueOf(200), Color.valueOf(300))
-        )
+        assertThat(lastWatchFaceColors)
+            .isNotEqualTo(
+                WatchFaceColors(Color.valueOf(100), Color.valueOf(200), Color.valueOf(300))
+            )
 
         engineWrapper.onDestroy()
     }
@@ -6277,56 +6047,51 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun onPreviewImageUpdateRequested() {
-        @Suppress("DEPRECATION")
-        lateinit var renderer: Renderer.CanvasRenderer
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                @Suppress("DEPRECATION")
-                renderer = object : Renderer.CanvasRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    CanvasType.HARDWARE,
-                    INTERACTIVE_UPDATE_RATE_MS
-                ) {
-                    override fun render(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime
-                    ) {
-                    }
+        @Suppress("DEPRECATION") lateinit var renderer: Renderer.CanvasRenderer
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    @Suppress("DEPRECATION")
+                    renderer =
+                        object :
+                            Renderer.CanvasRenderer(
+                                surfaceHolder,
+                                currentUserStyleRepository,
+                                watchState,
+                                CanvasType.HARDWARE,
+                                INTERACTIVE_UPDATE_RATE_MS
+                            ) {
+                            override fun render(
+                                canvas: Canvas,
+                                bounds: Rect,
+                                zonedDateTime: ZonedDateTime
+                            ) {}
 
-                    override fun renderHighlightLayer(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime
-                    ) {
-                    }
-                }
-                renderer
-            },
-            UserStyleSchema(emptyList()),
-            null,
-            handler,
-            null,
-            null,
-            choreographer,
-            forceIsVisible = true
-        )
+                            override fun renderHighlightLayer(
+                                canvas: Canvas,
+                                bounds: Rect,
+                                zonedDateTime: ZonedDateTime
+                            ) {}
+                        }
+                    renderer
+                },
+                UserStyleSchema(emptyList()),
+                null,
+                handler,
+                null,
+                null,
+                choreographer,
+                forceIsVisible = true
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -6334,8 +6099,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -6351,20 +6115,23 @@
             )
 
         var lastPreviewImageUpdateRequestedWatchFaceId: String? = null
-        val listener = object : IWatchfaceListener.Stub() {
-            override fun getApiVersion() = 1
+        val listener =
+            object : IWatchfaceListener.Stub() {
+                override fun getApiVersion() = 1
 
-            override fun onWatchfaceReady() {}
+                override fun onWatchfaceReady() {}
 
-            override fun onWatchfaceColorsChanged(watchFaceColors: WatchFaceColorsWireFormat?) {}
+                override fun onWatchfaceColorsChanged(
+                    watchFaceColors: WatchFaceColorsWireFormat?
+                ) {}
 
-            override fun onPreviewImageUpdateRequested(watchFaceId: String) {
-                lastPreviewImageUpdateRequestedWatchFaceId = watchFaceId
+                override fun onPreviewImageUpdateRequested(watchFaceId: String) {
+                    lastPreviewImageUpdateRequestedWatchFaceId = watchFaceId
+                }
+
+                override fun onEngineDetached() {}
             }
 
-            override fun onEngineDetached() {}
-        }
-
         engineWrapper = testWatchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
         engineWrapper.onCreate(surfaceHolder)
         engineWrapper.onSurfaceChanged(surfaceHolder, 0, 100, 100)
@@ -6375,9 +6142,8 @@
 
         renderer.sendPreviewImageNeedsUpdateRequest()
 
-        assertThat(lastPreviewImageUpdateRequestedWatchFaceId).isEqualTo(
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive"
-        )
+        assertThat(lastPreviewImageUpdateRequestedWatchFaceId)
+            .isEqualTo(SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive")
 
         interactiveWatchFaceInstance.removeWatchFaceListener(listener)
 
@@ -6387,9 +6153,8 @@
             UserStyleWireFormat(emptyMap())
         )
         renderer.sendPreviewImageNeedsUpdateRequest()
-        assertThat(lastPreviewImageUpdateRequestedWatchFaceId).isNotEqualTo(
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive2"
-        )
+        assertThat(lastPreviewImageUpdateRequestedWatchFaceId)
+            .isNotEqualTo(SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive2")
 
         interactiveWatchFaceInstance.release()
         engineWrapper.onDestroy()
@@ -6398,60 +6163,55 @@
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun onPreviewImageUpdateRequested_earlyCall() {
-        @Suppress("DEPRECATION")
-        lateinit var renderer: Renderer.CanvasRenderer
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                @Suppress("DEPRECATION")
-                renderer = object : Renderer.CanvasRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    CanvasType.HARDWARE,
-                    INTERACTIVE_UPDATE_RATE_MS
-                ) {
-                    init {
-                        sendPreviewImageNeedsUpdateRequest()
-                    }
+        @Suppress("DEPRECATION") lateinit var renderer: Renderer.CanvasRenderer
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    @Suppress("DEPRECATION")
+                    renderer =
+                        object :
+                            Renderer.CanvasRenderer(
+                                surfaceHolder,
+                                currentUserStyleRepository,
+                                watchState,
+                                CanvasType.HARDWARE,
+                                INTERACTIVE_UPDATE_RATE_MS
+                            ) {
+                            init {
+                                sendPreviewImageNeedsUpdateRequest()
+                            }
 
-                    override fun render(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime
-                    ) {
-                    }
+                            override fun render(
+                                canvas: Canvas,
+                                bounds: Rect,
+                                zonedDateTime: ZonedDateTime
+                            ) {}
 
-                    override fun renderHighlightLayer(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime
-                    ) {
-                    }
-                }
-                renderer
-            },
-            UserStyleSchema(emptyList()),
-            null,
-            handler,
-            null,
-            null,
-            choreographer,
-            forceIsVisible = true
-        )
+                            override fun renderHighlightLayer(
+                                canvas: Canvas,
+                                bounds: Rect,
+                                zonedDateTime: ZonedDateTime
+                            ) {}
+                        }
+                    renderer
+                },
+                UserStyleSchema(emptyList()),
+                null,
+                handler,
+                null,
+                null,
+                choreographer,
+                forceIsVisible = true
+            )
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
                 InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance(
                     WallpaperInteractiveWatchFaceInstanceParams(
                         SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive",
-                        DeviceConfig(
-                            false,
-                            false,
-                            0,
-                            0
-                        ),
+                        DeviceConfig(false, false, 0, 0),
                         WatchUiState(false, 0),
                         UserStyle(emptyMap()).toWireFormat(),
                         emptyList(),
@@ -6459,8 +6219,7 @@
                         null
                     ),
                     object : IPendingInteractiveWatchFace.Stub() {
-                        override fun getApiVersion() =
-                            IPendingInteractiveWatchFace.API_VERSION
+                        override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
                         override fun onInteractiveWatchFaceCreated(
                             iInteractiveWatchFace: IInteractiveWatchFace
@@ -6476,77 +6235,79 @@
             )
 
         var lastPreviewImageUpdateRequestedWatchFaceId: String? = null
-        val listener = object : IWatchfaceListener.Stub() {
-            override fun getApiVersion() = 1
+        val listener =
+            object : IWatchfaceListener.Stub() {
+                override fun getApiVersion() = 1
 
-            override fun onWatchfaceReady() {}
+                override fun onWatchfaceReady() {}
 
-            override fun onWatchfaceColorsChanged(watchFaceColors: WatchFaceColorsWireFormat?) {}
+                override fun onWatchfaceColorsChanged(
+                    watchFaceColors: WatchFaceColorsWireFormat?
+                ) {}
 
-            override fun onPreviewImageUpdateRequested(watchFaceId: String) {
-                lastPreviewImageUpdateRequestedWatchFaceId = watchFaceId
+                override fun onPreviewImageUpdateRequested(watchFaceId: String) {
+                    lastPreviewImageUpdateRequestedWatchFaceId = watchFaceId
+                }
+
+                override fun onEngineDetached() {}
             }
 
-            override fun onEngineDetached() {}
-        }
-
         engineWrapper = testWatchFaceService.onCreateEngine() as WatchFaceService.EngineWrapper
         engineWrapper.onCreate(surfaceHolder)
         engineWrapper.onSurfaceChanged(surfaceHolder, 0, 100, 100)
 
         interactiveWatchFaceInstance.addWatchFaceListener(listener)
 
-        assertThat(lastPreviewImageUpdateRequestedWatchFaceId).isEqualTo(
-            SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive"
-        )
+        assertThat(lastPreviewImageUpdateRequestedWatchFaceId)
+            .isEqualTo(SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX + "Interactive")
     }
 
     @Test
     @Config(sdk = [Build.VERSION_CODES.R])
     @RequiresApi(Build.VERSION_CODES.O_MR1)
     public fun sendPreviewImageNeedsUpdateRequest_headlessInstance() {
-        @Suppress("DEPRECATION")
-        lateinit var renderer: Renderer.CanvasRenderer
-        testWatchFaceService = TestWatchFaceService(
-            WatchFaceType.DIGITAL,
-            emptyList(),
-            { _, currentUserStyleRepository, watchState ->
-                @Suppress("DEPRECATION")
-                renderer = object : Renderer.CanvasRenderer(
-                    surfaceHolder,
-                    currentUserStyleRepository,
-                    watchState,
-                    CanvasType.HARDWARE,
-                    INTERACTIVE_UPDATE_RATE_MS
-                ) {
-                    init {
-                        sendPreviewImageNeedsUpdateRequest()
-                    }
+        @Suppress("DEPRECATION") lateinit var renderer: Renderer.CanvasRenderer
+        testWatchFaceService =
+            TestWatchFaceService(
+                WatchFaceType.DIGITAL,
+                emptyList(),
+                { _, currentUserStyleRepository, watchState ->
+                    @Suppress("DEPRECATION")
+                    renderer =
+                        object :
+                            Renderer.CanvasRenderer(
+                                surfaceHolder,
+                                currentUserStyleRepository,
+                                watchState,
+                                CanvasType.HARDWARE,
+                                INTERACTIVE_UPDATE_RATE_MS
+                            ) {
+                            init {
+                                sendPreviewImageNeedsUpdateRequest()
+                            }
 
-                    override fun render(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime
-                    ) {
-                    }
+                            override fun render(
+                                canvas: Canvas,
+                                bounds: Rect,
+                                zonedDateTime: ZonedDateTime
+                            ) {}
 
-                    override fun renderHighlightLayer(
-                        canvas: Canvas,
-                        bounds: Rect,
-                        zonedDateTime: ZonedDateTime
-                    ) {
-                    }
-                }
-                renderer
-            },
-            UserStyleSchema(emptyList()),
-            null,
-            handler,
-            null,
-            null,
-            choreographer,
-            forceIsVisible = true
-        )
+                            override fun renderHighlightLayer(
+                                canvas: Canvas,
+                                bounds: Rect,
+                                zonedDateTime: ZonedDateTime
+                            ) {}
+                        }
+                    renderer
+                },
+                UserStyleSchema(emptyList()),
+                null,
+                handler,
+                null,
+                null,
+                choreographer,
+                forceIsVisible = true
+            )
 
         engineWrapper =
             testWatchFaceService.createHeadlessEngine() as WatchFaceService.EngineWrapper
@@ -6562,9 +6323,7 @@
         )
 
         // This shouldn't crash.
-        runBlocking {
-            watchFaceImpl = engineWrapper.deferredWatchFaceImpl.awaitWithTimeout()
-        }
+        runBlocking { watchFaceImpl = engineWrapper.deferredWatchFaceImpl.awaitWithTimeout() }
 
         engineWrapper.onDestroy()
     }
@@ -6579,12 +6338,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -6598,12 +6352,14 @@
                 IdAndComplicationDataWireFormat(
                     LEFT_COMPLICATION_ID,
                     ShortTextComplicationData.Builder(
-                        TimeDifferenceComplicationText.Builder(
-                            TimeDifferenceStyle.STOPWATCH,
-                            CountUpTimeReference(Instant.parse("2022-10-30T10:15:30.001Z"))
-                        ).setMinimumTimeUnit(TimeUnit.MINUTES).build(),
-                        ComplicationText.EMPTY
-                    )
+                            TimeDifferenceComplicationText.Builder(
+                                    TimeDifferenceStyle.STOPWATCH,
+                                    CountUpTimeReference(Instant.parse("2022-10-30T10:15:30.001Z"))
+                                )
+                                .setMinimumTimeUnit(TimeUnit.MINUTES)
+                                .build(),
+                            ComplicationText.EMPTY
+                        )
                         .setDisplayPolicy(
                             ComplicationDisplayPolicies.DO_NOT_SHOW_WHEN_DEVICE_LOCKED
                         )
@@ -6633,12 +6389,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -6663,12 +6414,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -6693,12 +6439,7 @@
             UserStyleSchema(emptyList()),
             WallpaperInteractiveWatchFaceInstanceParams(
                 INTERACTIVE_INSTANCE_ID,
-                DeviceConfig(
-                    false,
-                    false,
-                    0,
-                    0
-                ),
+                DeviceConfig(false, false, 0, 0),
                 WatchUiState(false, 0),
                 UserStyle(emptyMap()).toWireFormat(),
                 null,
@@ -6727,17 +6468,18 @@
         TestNopCanvasWatchFaceService.handler = this.handler
 
         CoroutineScope(handler.asCoroutineDispatcher().immediate).launch {
-            delegate = WatchFace.createHeadlessSessionDelegate(
-                componentName,
-                HeadlessWatchFaceInstanceParams(
+            delegate =
+                WatchFace.createHeadlessSessionDelegate(
                     componentName,
-                    DeviceConfig(false, false, 100, 200),
-                    100,
-                    100,
-                    null
-                ),
-                context
-            )
+                    HeadlessWatchFaceInstanceParams(
+                        componentName,
+                        DeviceConfig(false, false, 100, 200),
+                        100,
+                        100,
+                        null
+                    ),
+                    context
+                )
         }
 
         // Run all pending tasks.
@@ -6753,9 +6495,9 @@
     }
 
     private fun getLeftShortTextComplicationDataText(): CharSequence {
-        val complication = complicationSlotsManager[
-            LEFT_COMPLICATION_ID
-        ]!!.complicationData.value as ShortTextComplicationData
+        val complication =
+            complicationSlotsManager[LEFT_COMPLICATION_ID]!!.complicationData.value
+                as ShortTextComplicationData
 
         return complication.text.getTextAt(
             ApplicationProvider.getApplicationContext<Context>().resources,
@@ -6764,9 +6506,9 @@
     }
 
     private fun getLeftLongTextComplicationDataText(): CharSequence {
-        val complication = complicationSlotsManager[
-            LEFT_COMPLICATION_ID
-        ]!!.complicationData.value as LongTextComplicationData
+        val complication =
+            complicationSlotsManager[LEFT_COMPLICATION_ID]!!.complicationData.value
+                as LongTextComplicationData
 
         return complication.text.getTextAt(
             ApplicationProvider.getApplicationContext<Context>().resources,
@@ -6776,10 +6518,12 @@
 
     @RequiresApi(Build.VERSION_CODES.R)
     private fun getChinWindowInsets(@Px chinHeight: Int): WindowInsets =
-        WindowInsets.Builder().setInsets(
-            WindowInsets.Type.systemBars(),
-            Insets.of(Rect().apply { bottom = chinHeight })
-        ).build()
+        WindowInsets.Builder()
+            .setInsets(
+                WindowInsets.Type.systemBars(),
+                Insets.of(Rect().apply { bottom = chinHeight })
+            )
+            .build()
 
     private suspend fun <T> Deferred<T>.awaitWithTimeout(): T = withTimeout(1000) { await() }
 }
@@ -6800,33 +6544,36 @@
         watchState: WatchState,
         complicationSlotsManager: ComplicationSlotsManager,
         currentUserStyleRepository: CurrentUserStyleRepository
-    ) = WatchFace(
-        WatchFaceType.DIGITAL,
-        @Suppress("deprecation")
-        object : Renderer.CanvasRenderer(
-            surfaceHolder,
-            currentUserStyleRepository,
-            watchState,
-            CanvasType.HARDWARE,
-            16
-        ) {
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
-                // Intentionally empty.
-            }
+    ) =
+        WatchFace(
+            WatchFaceType.DIGITAL,
+            @Suppress("deprecation")
+            object :
+                Renderer.CanvasRenderer(
+                    surfaceHolder,
+                    currentUserStyleRepository,
+                    watchState,
+                    CanvasType.HARDWARE,
+                    16
+                ) {
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
+                    // Intentionally empty.
+                }
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
-                // Intentionally empty.
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {
+                    // Intentionally empty.
+                }
             }
+        )
+
+    override fun getSystemTimeProvider() =
+        object : SystemTimeProvider {
+            override fun getSystemTimeMillis() = 123456789L
+
+            override fun getSystemTimeZoneId() = ZoneId.of("UTC")
         }
-    )
-
-    override fun getSystemTimeProvider() = object : SystemTimeProvider {
-        override fun getSystemTimeMillis() = 123456789L
-
-        override fun getSystemTimeZoneId() = ZoneId.of("UTC")
-    }
 }
diff --git a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/control/data/WallpaperInteractiveWatchFaceInstanceParamsTest.kt b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/control/data/WallpaperInteractiveWatchFaceInstanceParamsTest.kt
index 783b044..b995a5b 100644
--- a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/control/data/WallpaperInteractiveWatchFaceInstanceParamsTest.kt
+++ b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/control/data/WallpaperInteractiveWatchFaceInstanceParamsTest.kt
@@ -25,27 +25,23 @@
 class WallpaperInteractiveWatchFaceInstanceParamsTest {
     @Test
     fun canBeWrittenToOutputStream() {
-        val params = WallpaperInteractiveWatchFaceInstanceParams(
-            "instanceId",
-            DeviceConfig(
-                false,
-                false,
-                10,
-                10
-            ),
-            WatchUiState(
-                false,
-                0,
-            ),
-            UserStyle(emptyMap()).toWireFormat(),
-            null,
-            null,
-            null
-        )
+        val params =
+            WallpaperInteractiveWatchFaceInstanceParams(
+                "instanceId",
+                DeviceConfig(false, false, 10, 10),
+                WatchUiState(
+                    false,
+                    0,
+                ),
+                UserStyle(emptyMap()).toWireFormat(),
+                null,
+                null,
+                null
+            )
 
         val dummyOutputStream = ByteArrayOutputStream()
 
         // Should not throw an exception
         ParcelUtils.toOutputStream(params, dummyOutputStream)
     }
-}
\ No newline at end of file
+}
diff --git a/work/work-lint/src/main/java/androidx/work/lint/WorkManagerIssueRegistry.kt b/work/work-lint/src/main/java/androidx/work/lint/WorkManagerIssueRegistry.kt
index 28e0e2f..ac9972b 100644
--- a/work/work-lint/src/main/java/androidx/work/lint/WorkManagerIssueRegistry.kt
+++ b/work/work-lint/src/main/java/androidx/work/lint/WorkManagerIssueRegistry.kt
@@ -25,7 +25,7 @@
 
 class WorkManagerIssueRegistry : IssueRegistry() {
     override val minApi = CURRENT_API
-    override val api = 13
+    override val api = 14
     override val issues: List<Issue> = listOf(
         BadConfigurationProviderIssueDetector.ISSUE,
         IdleBatteryChargingConstraintsDetector.ISSUE,
diff --git a/work/work-runtime-ktx/api/current.ignore b/work/work-runtime-ktx/api/current.ignore
new file mode 100644
index 0000000..8aff62a
--- /dev/null
+++ b/work/work-runtime-ktx/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.work.ListenableFutureKt:
+    Removed class androidx.work.ListenableFutureKt
diff --git a/work/work-runtime-ktx/api/current.txt b/work/work-runtime-ktx/api/current.txt
index efdea4c..c3c6e5c 100644
--- a/work/work-runtime-ktx/api/current.txt
+++ b/work/work-runtime-ktx/api/current.txt
@@ -19,9 +19,6 @@
     method public static inline androidx.work.Data workDataOf(kotlin.Pair<java.lang.String,?>... pairs);
   }
 
-  public final class ListenableFutureKt {
-  }
-
   public final class OperationKt {
     method public static suspend inline Object? await(androidx.work.Operation, kotlin.coroutines.Continuation<? super androidx.work.Operation.State.SUCCESS>);
   }
diff --git a/work/work-runtime-ktx/api/public_plus_experimental_current.txt b/work/work-runtime-ktx/api/public_plus_experimental_current.txt
index efdea4c..c3c6e5c 100644
--- a/work/work-runtime-ktx/api/public_plus_experimental_current.txt
+++ b/work/work-runtime-ktx/api/public_plus_experimental_current.txt
@@ -19,9 +19,6 @@
     method public static inline androidx.work.Data workDataOf(kotlin.Pair<java.lang.String,?>... pairs);
   }
 
-  public final class ListenableFutureKt {
-  }
-
   public final class OperationKt {
     method public static suspend inline Object? await(androidx.work.Operation, kotlin.coroutines.Continuation<? super androidx.work.Operation.State.SUCCESS>);
   }
diff --git a/work/work-runtime-ktx/api/restricted_current.ignore b/work/work-runtime-ktx/api/restricted_current.ignore
new file mode 100644
index 0000000..8aff62a
--- /dev/null
+++ b/work/work-runtime-ktx/api/restricted_current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.work.ListenableFutureKt:
+    Removed class androidx.work.ListenableFutureKt
diff --git a/work/work-runtime-ktx/api/restricted_current.txt b/work/work-runtime-ktx/api/restricted_current.txt
index efdea4c..c3c6e5c 100644
--- a/work/work-runtime-ktx/api/restricted_current.txt
+++ b/work/work-runtime-ktx/api/restricted_current.txt
@@ -19,9 +19,6 @@
     method public static inline androidx.work.Data workDataOf(kotlin.Pair<java.lang.String,?>... pairs);
   }
 
-  public final class ListenableFutureKt {
-  }
-
   public final class OperationKt {
     method public static suspend inline Object? await(androidx.work.Operation, kotlin.coroutines.Continuation<? super androidx.work.Operation.State.SUCCESS>);
   }