[go: nahoru, domu]

Start running Metalava with --api-lint

- Move to naming *.ignore files as baseline to match metalava naming
- Add new api_lint.ignore API baselines to suppress existing API lint issues.
- Add a new task ./gradlew updateApiLintBaseline

Bug: 135478003
Test: ./gradlew checkApi --> passes
Change-Id: Ic5ba99f426973c7d756d04a23598636c7252ab1d
diff --git a/activity/activity-ktx/api/api_lint.ignore b/activity/activity-ktx/api/api_lint.ignore
new file mode 100644
index 0000000..285b745
--- /dev/null
+++ b/activity/activity-ktx/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RegistrationName: androidx.activity.OnBackPressedDispatcherKt#addCallback(androidx.activity.OnBackPressedDispatcher, androidx.lifecycle.LifecycleOwner, boolean, kotlin.jvm.functions.Function1<? super androidx.activity.OnBackPressedCallback,kotlin.Unit>):
+    Callback methods should be named register/unregister; was addCallback
diff --git a/activity/activity/api/api_lint.ignore b/activity/activity/api/api_lint.ignore
new file mode 100644
index 0000000..da1d0a9
--- /dev/null
+++ b/activity/activity/api/api_lint.ignore
@@ -0,0 +1,13 @@
+// Baseline format: 1.0
+CallbackMethodName: androidx.activity.OnBackPressedCallback:
+    Callback method names must follow the on<Something> style: setEnabled
+
+
+ForbiddenSuperClass: androidx.activity.ComponentActivity:
+    ComponentActivity should not extend `Activity`. Activity subclasses are impossible to compose. Expose a composable API instead.
+
+
+RegistrationName: androidx.activity.OnBackPressedDispatcher#addCallback(androidx.activity.OnBackPressedCallback):
+    Callback methods should be named register/unregister; was addCallback
+RegistrationName: androidx.activity.OnBackPressedDispatcher#addCallback(androidx.lifecycle.LifecycleOwner, androidx.activity.OnBackPressedCallback):
+    Callback methods should be named register/unregister; was addCallback
diff --git a/appcompat/api/api_lint.ignore b/appcompat/api/api_lint.ignore
new file mode 100644
index 0000000..7c227b9
--- /dev/null
+++ b/appcompat/api/api_lint.ignore
@@ -0,0 +1,31 @@
+// Baseline format: 1.0
+AcronymName: androidx.appcompat.widget.AppCompatImageButton#setImageURI(android.net.Uri):
+    Acronyms should not be capitalized in method names: was `setImageURI`, should this be `setImageUri`?
+AcronymName: androidx.appcompat.widget.AppCompatImageView#setImageURI(android.net.Uri):
+    Acronyms should not be capitalized in method names: was `setImageURI`, should this be `setImageUri`?
+
+
+ContextFirst: androidx.appcompat.app.AppCompatDelegate#createView(android.view.View, String, android.content.Context, android.util.AttributeSet) parameter #2:
+    Context is distinct, so it must be the first argument (method `createView`)
+
+
+ForbiddenSuperClass: androidx.appcompat.app.AppCompatActivity:
+    AppCompatActivity should not extend `Activity`. Activity subclasses are impossible to compose. Expose a composable API instead.
+
+
+ParcelConstructor: androidx.appcompat.widget.Toolbar.SavedState#SavedState(android.os.Parcel):
+    Parcelable inflation is exposed through CREATOR, not raw constructors, in androidx.appcompat.widget.Toolbar.SavedState
+
+
+ParcelCreator: androidx.appcompat.widget.Toolbar.SavedState:
+    Parcelable requires `public int describeContents()`; missing in androidx.appcompat.widget.Toolbar.SavedState
+
+
+ParcelNotFinal: androidx.appcompat.widget.Toolbar.SavedState:
+    Parcelable classes must be final: androidx.appcompat.widget.Toolbar.SavedState is not final
+
+
+VisiblySynchronized: androidx.appcompat.widget.AppCompatRatingBar#onMeasure(int, int):
+    Internal locks must not be exposed: method androidx.appcompat.widget.AppCompatRatingBar.onMeasure(int,int)
+VisiblySynchronized: androidx.appcompat.widget.AppCompatSeekBar#onDraw(android.graphics.Canvas):
+    Internal locks must not be exposed: method androidx.appcompat.widget.AppCompatSeekBar.onDraw(android.graphics.Canvas)
diff --git a/benchmark/api/api_lint.ignore b/benchmark/api/api_lint.ignore
new file mode 100644
index 0000000..0a0591c
--- /dev/null
+++ b/benchmark/api/api_lint.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+DocumentExceptions: androidx.benchmark.BenchmarkRule#getState():
+    Method BenchmarkRule.getState appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.benchmark.BenchmarkState#pauseTiming():
+    Method BenchmarkState.pauseTiming appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.benchmark.BenchmarkState#resumeTiming():
+    Method BenchmarkState.resumeTiming appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
diff --git a/browser/api/api_lint.ignore b/browser/api/api_lint.ignore
new file mode 100644
index 0000000..880cc30
--- /dev/null
+++ b/browser/api/api_lint.ignore
@@ -0,0 +1,73 @@
+// Baseline format: 1.0
+AcronymName: androidx.browser.customtabs.CustomTabsIntent#setAlwaysUseBrowserUI(android.content.Intent):
+    Acronyms should not be capitalized in method names: was `setAlwaysUseBrowserUI`, should this be `setAlwaysUseBrowserUi`?
+AcronymName: androidx.browser.customtabs.CustomTabsIntent#shouldAlwaysUseBrowserUI(android.content.Intent):
+    Acronyms should not be capitalized in method names: was `shouldAlwaysUseBrowserUI`, should this be `shouldAlwaysUseBrowserUi`?
+
+
+ActionValue: androidx.browser.browseractions.BrowserActionsIntent#ACTION_BROWSER_ACTIONS_OPEN:
+    Inconsistent action value; expected `androidx.browser.browseractions.action.BROWSER_ACTIONS_OPEN`, was `androidx.browser.browseractions.browser_action_open`
+ActionValue: androidx.browser.browseractions.BrowserActionsIntent#EXTRA_APP_ID:
+    Inconsistent extra value; expected `androidx.browser.browseractions.extra.APP_ID`, was `androidx.browser.browseractions.APP_ID`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_ACTION_BUTTON_BUNDLE:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.ACTION_BUTTON_BUNDLE`, was `android.support.customtabs.extra.ACTION_BUTTON_BUNDLE`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_CLOSE_BUTTON_ICON:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.CLOSE_BUTTON_ICON`, was `android.support.customtabs.extra.CLOSE_BUTTON_ICON`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_DEFAULT_SHARE_MENU_ITEM:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.DEFAULT_SHARE_MENU_ITEM`, was `android.support.customtabs.extra.SHARE_MENU_ITEM`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_ENABLE_INSTANT_APPS:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.ENABLE_INSTANT_APPS`, was `android.support.customtabs.extra.EXTRA_ENABLE_INSTANT_APPS`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_ENABLE_URLBAR_HIDING:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.ENABLE_URLBAR_HIDING`, was `android.support.customtabs.extra.ENABLE_URLBAR_HIDING`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_EXIT_ANIMATION_BUNDLE:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.EXIT_ANIMATION_BUNDLE`, was `android.support.customtabs.extra.EXIT_ANIMATION_BUNDLE`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_MENU_ITEMS:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.MENU_ITEMS`, was `android.support.customtabs.extra.MENU_ITEMS`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_REMOTEVIEWS:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.REMOTEVIEWS`, was `android.support.customtabs.extra.EXTRA_REMOTEVIEWS`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_REMOTEVIEWS_CLICKED_ID:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.REMOTEVIEWS_CLICKED_ID`, was `android.support.customtabs.extra.EXTRA_REMOTEVIEWS_CLICKED_ID`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_REMOTEVIEWS_PENDINGINTENT:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.REMOTEVIEWS_PENDINGINTENT`, was `android.support.customtabs.extra.EXTRA_REMOTEVIEWS_PENDINGINTENT`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_REMOTEVIEWS_VIEW_IDS:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.REMOTEVIEWS_VIEW_IDS`, was `android.support.customtabs.extra.EXTRA_REMOTEVIEWS_VIEW_IDS`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_SECONDARY_TOOLBAR_COLOR:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.SECONDARY_TOOLBAR_COLOR`, was `android.support.customtabs.extra.SECONDARY_TOOLBAR_COLOR`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_SESSION:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.SESSION`, was `android.support.customtabs.extra.SESSION`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_TINT_ACTION_BUTTON:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.TINT_ACTION_BUTTON`, was `android.support.customtabs.extra.TINT_ACTION_BUTTON`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_TITLE_VISIBILITY_STATE:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.TITLE_VISIBILITY_STATE`, was `android.support.customtabs.extra.TITLE_VISIBILITY`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_TOOLBAR_COLOR:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.TOOLBAR_COLOR`, was `android.support.customtabs.extra.TOOLBAR_COLOR`
+ActionValue: androidx.browser.customtabs.CustomTabsIntent#EXTRA_TOOLBAR_ITEMS:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.TOOLBAR_ITEMS`, was `android.support.customtabs.extra.TOOLBAR_ITEMS`
+ActionValue: androidx.browser.customtabs.CustomTabsService#ACTION_CUSTOM_TABS_CONNECTION:
+    Inconsistent action value; expected `androidx.browser.customtabs.action.CUSTOM_TABS_CONNECTION`, was `android.support.customtabs.action.CustomTabsService`
+ActionValue: androidx.browser.customtabs.TrustedWebUtils#EXTRA_LAUNCH_AS_TRUSTED_WEB_ACTIVITY:
+    Inconsistent extra value; expected `androidx.browser.customtabs.extra.LAUNCH_AS_TRUSTED_WEB_ACTIVITY`, was `android.support.customtabs.extra.LAUNCH_AS_TRUSTED_WEB_ACTIVITY`
+
+
+AutoBoxing: androidx.browser.customtabs.CustomTabColorSchemeParams#navigationBarColor:
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.browser.customtabs.CustomTabColorSchemeParams#secondaryToolbarColor:
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.browser.customtabs.CustomTabColorSchemeParams#toolbarColor:
+    Must avoid boxed primitives (`java.lang.Integer`)
+
+
+CallbackMethodName: androidx.browser.customtabs.CustomTabsCallback:
+    Callback method names must follow the on<Something> style: extraCallback
+
+
+ConcreteCollection: androidx.browser.browseractions.BrowserActionsIntent#openBrowserAction(android.content.Context, android.net.Uri, int, java.util.ArrayList<androidx.browser.browseractions.BrowserActionItem>, android.app.PendingIntent) parameter #3:
+    Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface
+ConcreteCollection: androidx.browser.browseractions.BrowserActionsIntent#parseBrowserActionItems(java.util.ArrayList<android.os.Bundle>) parameter #0:
+    Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface
+ConcreteCollection: androidx.browser.browseractions.BrowserActionsIntent.Builder#setCustomItems(java.util.ArrayList<androidx.browser.browseractions.BrowserActionItem>) parameter #0:
+    Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface
+
+
+IntentName: androidx.browser.browseractions.BrowserActionsIntent#KEY_ACTION:
+    Intent action constant name must be ACTION_FOO: KEY_ACTION
diff --git a/buildSrc/src/main/kotlin/androidx/build/checkapi/ApiLocation.kt b/buildSrc/src/main/kotlin/androidx/build/checkapi/ApiLocation.kt
index 31ccc32..4002616 100644
--- a/buildSrc/src/main/kotlin/androidx/build/checkapi/ApiLocation.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/checkapi/ApiLocation.kt
@@ -23,6 +23,8 @@
 
 // An ApiLocation contains the filepath of a public API and restricted API of a library
 data class ApiLocation(
+    // file specifying the directory of API files for the library
+    val apiFileDirectory: File,
     // file specifying the public API of the library
     val publicApiFile: File,
     // file specifying the restricted API (marked by the RestrictTo annotation) of the library
@@ -44,6 +46,7 @@
     companion object {
         fun fromPublicApiFile(f: File): ApiLocation {
             return ApiLocation(
+                f.parentFile,
                 f,
                 File(f.parentFile, "restricted_" + f.name),
                 File(f.parentFile, "res-" + f.name)
@@ -52,21 +55,28 @@
     }
 }
 
-// An ApiViolationExclusions contains the paths of the API exclusions files for an API
-data class ApiViolationExclusions(
+// An ApiViolationBaselines contains the paths of the API baselines files for an API
+data class ApiViolationBaselines(
     val publicApiFile: File,
-    val restrictedApiFile: File
+    val restrictedApiFile: File,
+    val apiLintFile: File
 ) : Serializable {
 
     fun files() = listOf(publicApiFile, restrictedApiFile)
 
     companion object {
-        fun fromApiLocation(apiLocation: ApiLocation): ApiViolationExclusions {
-            val publicExclusionsFile =
+        fun fromApiLocation(apiLocation: ApiLocation): ApiViolationBaselines {
+            val publicBaselineFile =
                 File(apiLocation.publicApiFile.toString().removeSuffix(".txt") + ".ignore")
-            val restrictedExclusionsFile =
+            val restrictedBaselineFile =
                 File(apiLocation.restrictedApiFile.toString().removeSuffix(".txt") + ".ignore")
-            return ApiViolationExclusions(publicExclusionsFile, restrictedExclusionsFile)
+            val apiLintBaselineFile =
+                File(apiLocation.apiFileDirectory, "api_lint.ignore")
+            return ApiViolationBaselines(
+                publicBaselineFile,
+                restrictedBaselineFile,
+                apiLintBaselineFile
+            )
         }
     }
 }
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
index 3cbc3c2..0481504 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
@@ -17,7 +17,7 @@
 package androidx.build.metalava
 
 import androidx.build.checkapi.ApiLocation
-import androidx.build.checkapi.ApiViolationExclusions
+import androidx.build.checkapi.ApiViolationBaselines
 import org.gradle.api.provider.Property
 import org.gradle.api.tasks.Input
 import org.gradle.api.tasks.InputFiles
@@ -32,7 +32,7 @@
     abstract val referenceApi: Property<ApiLocation>
     // Text file listing violations that should be ignored
     @get:Input
-    abstract val exclusions: Property<ApiViolationExclusions>
+    abstract val baselines: Property<ApiViolationBaselines>
 
     // Whether to confirm that no restricted APIs were removed since the previous release
     @get:Input
@@ -41,9 +41,9 @@
     @InputFiles
     fun getTaskInputs(): List<File> {
         if (checkRestrictedAPIs) {
-            return referenceApi.get().files() + exclusions.get().files()
+            return referenceApi.get().files() + baselines.get().files()
         }
-        return listOf(referenceApi.get().publicApiFile, exclusions.get().publicApiFile)
+        return listOf(referenceApi.get().publicApiFile, baselines.get().publicApiFile)
     }
 
     // Declaring outputs prevents Gradle from rerunning this task if the inputs haven't changed
@@ -56,17 +56,17 @@
     fun exec() {
         check(bootClasspath.isNotEmpty()) { "Android boot classpath not set." }
 
-        checkApiFile(referenceApi.get().publicApiFile, exclusions.get().publicApiFile, false)
+        checkApiFile(referenceApi.get().publicApiFile, baselines.get().publicApiFile, false)
         if (checkRestrictedAPIs) {
             checkApiFile(referenceApi.get().restrictedApiFile,
-                exclusions.get().restrictedApiFile,
+                baselines.get().restrictedApiFile,
                 true)
         }
     }
 
     // Confirms that the public API of this library (or the restricted API, if <checkRestrictedAPIs> is set
-    // is compatible with <apiFile> except for any exclusions listed in <exclusionsFile>
-    fun checkApiFile(apiFile: File, exclusionsFile: File, checkRestrictedAPIs: Boolean) {
+    // is compatible with <apiFile> except for any baselines listed in <baselineFile>
+    fun checkApiFile(apiFile: File, baselineFile: File, checkRestrictedAPIs: Boolean) {
         var args = listOf("--classpath",
                 (bootClasspath + dependencyClasspath!!.files).joinToString(File.pathSeparator),
 
@@ -79,8 +79,8 @@
                 "--warnings-as-errors",
                 "--format=v3"
         )
-        if (exclusionsFile.exists()) {
-            args = args + listOf("--baseline", exclusionsFile.toString())
+        if (baselineFile.exists()) {
+            args = args + listOf("--baseline", baselineFile.toString())
         }
         if (checkRestrictedAPIs) {
             args = args + listOf("--show-annotation", "androidx.annotation.RestrictTo")
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt
index 65877a1..39598e3 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt
@@ -17,8 +17,11 @@
 package androidx.build.metalava
 
 import androidx.build.checkapi.ApiLocation
+import androidx.build.checkapi.ApiViolationBaselines
 import org.gradle.api.provider.Property
 import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.InputFile
+import org.gradle.api.tasks.Optional
 import org.gradle.api.tasks.OutputFiles
 import org.gradle.api.tasks.TaskAction
 import java.io.File
@@ -30,8 +33,18 @@
     abstract val apiLocation: Property<ApiLocation>
 
     @get:Input
+    abstract val baselines: Property<ApiViolationBaselines>
+
+    @get:Input
     var generateRestrictedAPIs = false
 
+    @Optional
+    @InputFile
+    fun getApiLintBaseline(): File? {
+        val baseline = baselines.get().apiLintFile
+        return if (baseline.exists()) baseline else null
+    }
+
     @OutputFiles
     fun getTaskOutputs(): List<File>? {
         if (generateRestrictedAPIs) {
@@ -52,7 +65,7 @@
             dependencyClasspath,
             sourcePaths,
             apiLocation.get().publicApiFile,
-            false
+            GenerateApiMode.PublicApi(baselines.get().apiLintFile)
         )
 
         if (generateRestrictedAPIs) {
@@ -61,7 +74,7 @@
                 dependencyClasspath,
                 sourcePaths,
                 apiLocation.get().restrictedApiFile,
-                true
+                GenerateApiMode.RestrictedApi
             )
         }
     }
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/IgnoreApiChangesTask.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/IgnoreApiChangesTask.kt
deleted file mode 100644
index 2550f78..0000000
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/IgnoreApiChangesTask.kt
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.build.metalava
-
-import androidx.build.checkapi.ApiLocation
-import androidx.build.checkapi.ApiViolationExclusions
-import com.google.common.io.Files
-import org.gradle.api.provider.Property
-import org.gradle.api.tasks.Input
-import org.gradle.api.tasks.InputFiles
-import org.gradle.api.tasks.OutputFiles
-import org.gradle.api.tasks.TaskAction
-import java.io.File
-
-// Updates an API tracking exceptions file (api/*.*.*.ignore) to match the current set of violations
-abstract class IgnoreApiChangesTask : MetalavaTask() {
-    // The API that the library is supposed to be compatible with
-    @get:Input
-    abstract val referenceApi: Property<ApiLocation>
-
-    // The exclusions files (api/*.*.*.ignore) to update
-    @get:Input
-    abstract val exclusions: Property<ApiViolationExclusions>
-
-    // Whether to update the file having restricted APIs too
-    @get:Input
-    var processRestrictedAPIs = false
-
-    // Path of temporary api-changes exemptions file
-    abstract val intermediateExclusionsFile: Property<File>
-
-    @InputFiles
-    fun getTaskInputs(): List<File> {
-        if (processRestrictedAPIs) {
-            return referenceApi.get().files()
-        }
-        return listOf(referenceApi.get().publicApiFile)
-    }
-
-    // Declaring outputs prevents Gradle from rerunning this task if the inputs haven't changed
-    @OutputFiles
-    fun getTaskOutputs(): List<File>? {
-        if (processRestrictedAPIs) {
-            return exclusions.get().files()
-        }
-        return listOf(exclusions.get().publicApiFile)
-    }
-
-    @TaskAction
-    fun exec() {
-        check(bootClasspath.isNotEmpty()) { "Android boot classpath not set." }
-
-        updateExclusions(referenceApi.get().publicApiFile, exclusions.get().publicApiFile, false)
-        if (processRestrictedAPIs && referenceApi.get().restrictedApiFile.exists()) {
-            updateExclusions(referenceApi.get().restrictedApiFile,
-                exclusions.get().restrictedApiFile,
-                true)
-        }
-    }
-
-    // Updates the contents of exclusionsFile to specify an exception for every API present in apiFile but not
-    // present in the current source path
-    fun updateExclusions(apiFile: File, exclusionsFile: File, processRestrictedAPIs: Boolean) {
-        val intermediateExclusions = intermediateExclusionsFile.get()
-        intermediateExclusions.parentFile.mkdirs()
-        intermediateExclusions.createNewFile()
-
-        var args = listOf("--classpath",
-            (bootClasspath + dependencyClasspath!!.files).joinToString(File.pathSeparator),
-
-            "--source-path",
-            sourcePaths.filter { it.exists() }.joinToString(File.pathSeparator),
-
-            "--check-compatibility:api:released",
-            apiFile.toString(),
-
-            "--update-baseline",
-            intermediateExclusions.toString(),
-            "--baseline", intermediateExclusions.toString(),
-            "--pass-baseline-updates",
-
-            "--format=v3",
-            "--omit-common-packages=yes"
-        )
-        if (processRestrictedAPIs) {
-            args = args + listOf("--show-annotation", "androidx.annotation.RestrictTo")
-        }
-        runWithArgs(args)
-
-        var moreThanHeader = false
-        intermediateExclusions.forEachLine {
-            if (!it.startsWith("// Baseline format: ")) {
-                moreThanHeader = true
-                return@forEachLine
-            }
-        }
-        if (moreThanHeader) {
-            Files.copy(intermediateExclusions, exclusionsFile)
-        } else {
-            if (exclusionsFile.exists()) {
-                exclusionsFile.delete()
-            }
-        }
-    }
-}
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
index f2874d3..ab1575b 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
@@ -38,29 +38,78 @@
         it.args = listOf(
             "--no-banner",
             "--error",
-            "DeprecationMismatch", // Enforce deprecation mismatch
-            "--hide",
-            "HiddenSuperclass" // We allow having a hidden parent class
+            "DeprecationMismatch" // Enforce deprecation mismatch
         ) + args
     }
 }
 
+val API_LINT_ARGS: List<String> = listOf(
+    "--api-lint",
+    "--hide",
+    listOf(
+        // The list of checks that are hidden as they are not useful in androidx
+        "Enum", // Enums are allowed to be use in androidx
+        "CallbackInterface", // With target Java 8, we have default methods
+        "HiddenSuperclass", // We allow having a hidden parent class
+        "ProtectedMember", // We allow using protected members in androidx
+        "ManagerLookup", // Managers in androidx are not the same as platfrom services
+        "ManagerConstructor",
+
+        // List of checks that have bugs, but should be enabled once fixed.
+        "GetterSetterNames", // b/135498039
+        "StaticUtils", // b/135489083
+        "AllUpper", // b/135708486
+        "StartWithLower", // b/135710527
+
+        // The list of checks that are API lint warnings and are yet to be enabled
+        "MinMaxConstant",
+        "IntentBuilderName",
+        "OnNameExpected",
+        "TopLevelBuilder",
+        "MissingBuild",
+        "BuilderSetStyle",
+        "SetterReturnsThis",
+        "PackageLayering",
+        "OverlappingConstants",
+        "IllegalStateException",
+        "ListenerLast",
+        "ExecutorRegistration",
+        "StreamFiles",
+        "ParcelableList",
+        "AbstractInner",
+        "NotCloseable",
+        "ArrayReturn",
+        "UserHandle",
+        "UserHandleName",
+        "MethodNameTense",
+        "UseIcu",
+        "NoByteOrShort",
+        "CommonArgsFirst",
+        "SamShouldBeLast",
+        "MissingJvmStatic"
+    ).joinToString()
+)
+
+sealed class GenerateApiMode {
+    class PublicApi(val apiLintBaseline: File) : GenerateApiMode()
+    object RestrictedApi : GenerateApiMode()
+}
+
 fun Project.generateApi(
     bootClasspath: Collection<File>,
     dependencyClasspath: FileCollection,
     sourcePaths: Collection<File>,
     outputFile: File,
-    includeRestrictedApis: Boolean
+    generateApiMode: GenerateApiMode
 ) {
-
-    val tempOutputFile = if (includeRestrictedApis) {
+    val tempOutputFile = if (generateApiMode is GenerateApiMode.RestrictedApi) {
         File(outputFile.path + ".tmp")
     } else {
         outputFile
     }
 
     // generate public API txt
-    var args = listOf("--classpath",
+    val args = mutableListOf("--classpath",
         (bootClasspath + dependencyClasspath.files).joinToString(File.pathSeparator),
 
         "--source-path",
@@ -73,15 +122,23 @@
         "--output-kotlin-nulls=yes"
     )
 
-    if (includeRestrictedApis) {
-        args = args + listOf("--show-annotation", "androidx.annotation.RestrictTo")
+    when (generateApiMode) {
+        is GenerateApiMode.PublicApi -> {
+            args += API_LINT_ARGS
+            if (generateApiMode.apiLintBaseline.exists()) {
+                args += listOf("--baseline", generateApiMode.apiLintBaseline.toString())
+            }
+        }
+        is GenerateApiMode.RestrictedApi -> {
+            args += listOf("--show-annotation", "androidx.annotation.RestrictTo")
+        }
     }
 
     val metalavaConfiguration = getMetalavaConfiguration()
 
     runMetalavaWithArgs(metalavaConfiguration, args)
 
-    if (includeRestrictedApis) {
+    if (generateApiMode is GenerateApiMode.RestrictedApi) {
         removeRestrictToLibraryLines(tempOutputFile, outputFile)
     }
 }
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
index 94adfba..534bc88 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
@@ -19,7 +19,7 @@
 import androidx.build.AndroidXPlugin.Companion.BUILD_ON_SERVER_TASK
 import androidx.build.AndroidXExtension
 import androidx.build.checkapi.ApiLocation
-import androidx.build.checkapi.ApiViolationExclusions
+import androidx.build.checkapi.ApiViolationBaselines
 import androidx.build.checkapi.getCurrentApiLocation
 import androidx.build.checkapi.getRequiredCompatibilityApiLocation
 import androidx.build.checkapi.hasApiFolder
@@ -112,6 +112,8 @@
         val builtApiLocation = ApiLocation.fromPublicApiFile(
             File(project.docsDir(), "release/${project.name}/current.txt"))
 
+        val baselines = ApiViolationBaselines.fromApiLocation(libraryVersionApi)
+
         val generateApi = project.tasks.register("generateApi", GenerateApiTask::class.java) {
                 task ->
             task.group = "API"
@@ -119,12 +121,12 @@
             task.apiLocation.set(builtApiLocation)
             task.configuration = metalavaConfiguration
             task.generateRestrictedAPIs = extension.trackRestrictedAPIs
+            task.baselines.set(baselines)
             task.dependsOn(metalavaConfiguration)
             applyInputs(javaCompileInputs, task)
         }
 
         var checkApiRelease: TaskProvider<CheckApiCompatibilityTask>? = null
-        val exclusions = ApiViolationExclusions.fromApiLocation(libraryVersionApi)
 
         project.getRequiredCompatibilityApiLocation()?.let { lastReleasedApiFile ->
             checkApiRelease = project.tasks.register(
@@ -133,7 +135,7 @@
             ) { task ->
                 task.configuration = metalavaConfiguration
                 task.referenceApi.set(lastReleasedApiFile)
-                task.exclusions.set(exclusions)
+                task.baselines.set(baselines)
                 task.dependsOn(metalavaConfiguration)
                 task.checkRestrictedAPIs = extension.trackRestrictedAPIs
                 applyInputs(javaCompileInputs, task)
@@ -142,14 +144,21 @@
             project.tasks.register("ignoreApiChanges", IgnoreApiChangesTask::class.java) { task ->
                 task.configuration = metalavaConfiguration
                 task.referenceApi.set(checkApiRelease!!.flatMap { it.referenceApi })
-                task.exclusions.set(checkApiRelease!!.flatMap { it.exclusions })
-                task.processRestrictedAPIs = extension.trackRestrictedAPIs
-                task.intermediateExclusionsFile.set(
-                    File(project.docsDir(), "release/${project.name}/api-changes.ignore"))
+                task.baselines.set(checkApiRelease!!.flatMap { it.baselines })
+                task.processRestrictedApis = extension.trackRestrictedAPIs
                 applyInputs(javaCompileInputs, task)
             }
         }
 
+        project.tasks.register(
+            "updateApiLintBaseline",
+            UpdateApiLintBaselineTask::class.java
+        ) { task ->
+            task.configuration = metalavaConfiguration
+            task.baselines.set(baselines)
+            applyInputs(javaCompileInputs, task)
+        }
+
         val checkApi =
             project.tasks.register("checkApi", CheckApiEquivalenceTask::class.java) { task ->
                 task.group = "API"
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
new file mode 100644
index 0000000..aff462b
--- /dev/null
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
@@ -0,0 +1,160 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.build.metalava
+
+import androidx.build.checkapi.ApiLocation
+import androidx.build.checkapi.ApiViolationBaselines
+import org.gradle.api.file.FileCollection
+import org.gradle.api.provider.Property
+import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.InputFiles
+import org.gradle.api.tasks.OutputFile
+import org.gradle.api.tasks.OutputFiles
+import org.gradle.api.tasks.TaskAction
+import java.io.File
+
+abstract class UpdateApiLintBaselineTask : MetalavaTask() {
+    init {
+        description = "Updates an API lint baseline file (api/api_lint.ignore) to match the " +
+                "current set of violations"
+    }
+
+    @get:Input
+    abstract val baselines: Property<ApiViolationBaselines>
+
+    @OutputFile
+    fun getApiLintBaseline(): File = baselines.get().apiLintFile
+
+    @TaskAction
+    fun updateBaseline() {
+        check(bootClasspath.isNotEmpty()) { "Android boot classpath not set." }
+        val args = getCommonBaselineUpdateArgs(
+            bootClasspath,
+            dependencyClasspath!!,
+            sourcePaths,
+            baselines.get().apiLintFile
+        )
+        args += API_LINT_ARGS
+        runWithArgs(args)
+    }
+}
+
+abstract class IgnoreApiChangesTask : MetalavaTask() {
+    init {
+        description = "Updates an API tracking baseline file (api/X.Y.Z.ignore) to match the " +
+                "current set of violations"
+    }
+
+    // The API that the library is supposed to be compatible with
+    @get:Input
+    abstract val referenceApi: Property<ApiLocation>
+
+    // The baseline files (api/*.*.*.ignore) to update
+    @get:Input
+    abstract val baselines: Property<ApiViolationBaselines>
+
+    // Whether to update the file having restricted APIs too
+    @get:Input
+    var processRestrictedApis = false
+
+    @InputFiles
+    fun getTaskInputs(): List<File> {
+        if (processRestrictedApis) {
+            return referenceApi.get().files()
+        }
+        return listOf(referenceApi.get().publicApiFile)
+    }
+
+    // Declaring outputs prevents Gradle from rerunning this task if the inputs haven't changed
+    @OutputFiles
+    fun getTaskOutputs(): List<File>? {
+        if (processRestrictedApis) {
+            return listOf(baselines.get().publicApiFile, baselines.get().restrictedApiFile)
+        }
+        return listOf(baselines.get().publicApiFile)
+    }
+
+    @TaskAction
+    fun exec() {
+        check(bootClasspath.isNotEmpty()) { "Android boot classpath not set." }
+
+        updateBaseline(
+            referenceApi.get().publicApiFile,
+            baselines.get().publicApiFile,
+            false
+        )
+        if (processRestrictedApis && referenceApi.get().restrictedApiFile.exists()) {
+            updateBaseline(
+                referenceApi.get().restrictedApiFile,
+                baselines.get().restrictedApiFile,
+                true
+            )
+        }
+    }
+
+    // Updates the contents of baselineFile to specify an exception for every API present in apiFile but not
+    // present in the current source path
+    private fun updateBaseline(
+        apiFile: File,
+        baselineFile: File,
+        processRestrictedApis: Boolean
+    ) {
+        val args = getCommonBaselineUpdateArgs(
+            bootClasspath,
+            dependencyClasspath!!,
+            sourcePaths,
+            baselineFile
+        )
+        args += listOf(
+            "--check-compatibility:api:released",
+            apiFile.toString()
+        )
+        if (processRestrictedApis) {
+            args += listOf(
+                "--show-annotation",
+                "androidx.annotation.RestrictTo"
+            )
+        }
+        runWithArgs(args)
+    }
+}
+
+private fun getCommonBaselineUpdateArgs(
+    bootClasspath: Collection<File>,
+    dependencyClasspath: FileCollection,
+    sourcePaths: Collection<File>,
+    baselineFile: File
+): MutableList<String> {
+    // Create the baseline file if it does exist, as Metalava cannot handle non-existent files.
+    baselineFile.createNewFile()
+    return mutableListOf(
+        "--classpath",
+        (bootClasspath + dependencyClasspath.files).joinToString(File.pathSeparator),
+
+        "--source-path",
+        sourcePaths.filter { it.exists() }.joinToString(File.pathSeparator),
+
+        "--update-baseline",
+        baselineFile.toString(),
+        "--baseline", baselineFile.toString(),
+        "--pass-baseline-updates",
+        "--delete-empty-baselines",
+
+        "--format=v3",
+        "--omit-common-packages=yes"
+    )
+}
diff --git a/car/core/api/api_lint.ignore b/car/core/api/api_lint.ignore
new file mode 100644
index 0000000..ce9444c
--- /dev/null
+++ b/car/core/api/api_lint.ignore
@@ -0,0 +1,5 @@
+// Baseline format: 1.0
+KotlinOperator: androidx.car.widget.ListItemProvider#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.car.widget.ListItemProvider.ListProvider#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
diff --git a/collection/collection/api/api_lint.ignore b/collection/collection/api/api_lint.ignore
new file mode 100644
index 0000000..589b899
--- /dev/null
+++ b/collection/collection/api/api_lint.ignore
@@ -0,0 +1,55 @@
+// Baseline format: 1.0
+KotlinOperator: androidx.collection.ArraySet#contains(Object):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.collection.CircularArray#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.collection.CircularIntArray#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.collection.LongSparseArray#get(long):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.collection.LongSparseArray#get(long, E):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.collection.LruCache#get(K):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.collection.SimpleArrayMap#get(Object):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.collection.SparseArrayCompat#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.collection.SparseArrayCompat#get(int, E):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+
+
+NoClone: androidx.collection.LongSparseArray#clone():
+    Provide an explicit copy constructor instead of implementing `clone()`
+NoClone: androidx.collection.SparseArrayCompat#clone():
+    Provide an explicit copy constructor instead of implementing `clone()`
+
+
+VisiblySynchronized: androidx.collection.LruCache#createCount():
+    Internal locks must not be exposed: method androidx.collection.LruCache.createCount()
+VisiblySynchronized: androidx.collection.LruCache#evictionCount():
+    Internal locks must not be exposed: method androidx.collection.LruCache.evictionCount()
+VisiblySynchronized: androidx.collection.LruCache#get(K):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.collection.LruCache.get(K)
+VisiblySynchronized: androidx.collection.LruCache#hitCount():
+    Internal locks must not be exposed: method androidx.collection.LruCache.hitCount()
+VisiblySynchronized: androidx.collection.LruCache#maxSize():
+    Internal locks must not be exposed: method androidx.collection.LruCache.maxSize()
+VisiblySynchronized: androidx.collection.LruCache#missCount():
+    Internal locks must not be exposed: method androidx.collection.LruCache.missCount()
+VisiblySynchronized: androidx.collection.LruCache#put(K, V):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.collection.LruCache.put(K,V)
+VisiblySynchronized: androidx.collection.LruCache#putCount():
+    Internal locks must not be exposed: method androidx.collection.LruCache.putCount()
+VisiblySynchronized: androidx.collection.LruCache#remove(K):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.collection.LruCache.remove(K)
+VisiblySynchronized: androidx.collection.LruCache#resize(int):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.collection.LruCache.resize(int)
+VisiblySynchronized: androidx.collection.LruCache#size():
+    Internal locks must not be exposed: method androidx.collection.LruCache.size()
+VisiblySynchronized: androidx.collection.LruCache#snapshot():
+    Internal locks must not be exposed: method androidx.collection.LruCache.snapshot()
+VisiblySynchronized: androidx.collection.LruCache#toString():
+    Internal locks must not be exposed: method androidx.collection.LruCache.toString()
+VisiblySynchronized: androidx.collection.LruCache#trimToSize(int):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.collection.LruCache.trimToSize(int)
diff --git a/concurrent/futures/api/api_lint.ignore b/concurrent/futures/api/api_lint.ignore
new file mode 100644
index 0000000..2539658
--- /dev/null
+++ b/concurrent/futures/api/api_lint.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+GenericException: androidx.concurrent.futures.CallbackToFutureAdapter.Resolver#attachCompleter(androidx.concurrent.futures.CallbackToFutureAdapter.Completer<T>):
+    Methods must not throw generic exceptions (`java.lang.Exception`)
+
+
+PairedRegistration: androidx.concurrent.futures.CallbackToFutureAdapter.Completer#addCancellationListener(Runnable, java.util.concurrent.Executor):
+    Found addCancellationListener but not removeCancellationListener in androidx.concurrent.futures.CallbackToFutureAdapter.Completer
diff --git a/content/api/api_lint.ignore b/content/api/api_lint.ignore
new file mode 100644
index 0000000..4bd59a5b
--- /dev/null
+++ b/content/api/api_lint.ignore
@@ -0,0 +1,9 @@
+// Baseline format: 1.0
+ActionValue: androidx.contentpager.content.ContentPager#EXTRA_HONORED_ARGS:
+    Inconsistent extra value; expected `androidx.contentpager.content.extra.HONORED_ARGS`, was `android.content.extra.HONORED_ARGS`
+ActionValue: androidx.contentpager.content.ContentPager#EXTRA_REQUESTED_LIMIT:
+    Inconsistent extra value; expected `androidx.contentpager.content.extra.REQUESTED_LIMIT`, was `android-support:extra-ignored-limit`
+ActionValue: androidx.contentpager.content.ContentPager#EXTRA_SUGGESTED_LIMIT:
+    Inconsistent extra value; expected `androidx.contentpager.content.extra.SUGGESTED_LIMIT`, was `android-support:extra-suggested-limit`
+ActionValue: androidx.contentpager.content.ContentPager#EXTRA_TOTAL_COUNT:
+    Inconsistent extra value; expected `androidx.contentpager.content.extra.TOTAL_COUNT`, was `android.content.extra.TOTAL_COUNT`
diff --git a/coordinatorlayout/api/api_lint.ignore b/coordinatorlayout/api/api_lint.ignore
new file mode 100644
index 0000000..129ea6f
--- /dev/null
+++ b/coordinatorlayout/api/api_lint.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+ParcelCreator: androidx.coordinatorlayout.widget.CoordinatorLayout.SavedState:
+    Parcelable requires `public int describeContents()`; missing in androidx.coordinatorlayout.widget.CoordinatorLayout.SavedState
+
+
+ParcelNotFinal: androidx.coordinatorlayout.widget.CoordinatorLayout.SavedState:
+    Parcelable classes must be final: androidx.coordinatorlayout.widget.CoordinatorLayout.SavedState is not final
diff --git a/core/core-ktx/api/api_lint.ignore b/core/core-ktx/api/api_lint.ignore
new file mode 100644
index 0000000..642bfa7
--- /dev/null
+++ b/core/core-ktx/api/api_lint.ignore
@@ -0,0 +1,33 @@
+// Baseline format: 1.0
+AcronymName: androidx.core.database.sqlite.SQLiteDatabaseKt:
+    Acronyms should not be capitalized in class names: was `SQLiteDatabaseKt`, should this be `SqLiteDatabaseKt`?
+
+
+AutoBoxing: androidx.core.database.CursorKt#getDoubleOrNull(android.database.Cursor, int):
+    Must avoid boxed primitives (`java.lang.Double`)
+AutoBoxing: androidx.core.database.CursorKt#getFloatOrNull(android.database.Cursor, int):
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.core.database.CursorKt#getIntOrNull(android.database.Cursor, int):
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.core.database.CursorKt#getLongOrNull(android.database.Cursor, int):
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.core.database.CursorKt#getShortOrNull(android.database.Cursor, int):
+    Must avoid boxed primitives (`java.lang.Short`)
+
+
+DocumentExceptions: androidx.core.graphics.RegionKt#iterator(android.graphics.Region):
+    Method RegionKt.iterator appears to be throwing java.lang.IndexOutOfBoundsException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.core.view.MenuKt#iterator(android.view.Menu):
+    Method MenuKt.iterator appears to be throwing java.lang.IndexOutOfBoundsException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.core.view.ViewGroupKt#iterator(android.view.ViewGroup):
+    Method ViewGroupKt.iterator appears to be throwing java.lang.IndexOutOfBoundsException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+
+
+PairedRegistration: androidx.core.animation.AnimatorKt#addListener(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit>, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit>, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit>, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit>):
+    Found addListener but not removeListener in androidx.core.animation.AnimatorKt
+PairedRegistration: androidx.core.animation.AnimatorKt#addPauseListener(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit>, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit>):
+    Found addPauseListener but not removePauseListener in androidx.core.animation.AnimatorKt
+PairedRegistration: androidx.core.transition.TransitionKt#addListener(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit>, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit>, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit>, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit>, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit>):
+    Found addListener but not removeListener in androidx.core.transition.TransitionKt
+PairedRegistration: androidx.core.widget.TextViewKt#addTextChangedListener(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit>, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit>, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit>):
+    Found addTextChangedListener but not removeTextChangedListener in androidx.core.widget.TextViewKt
diff --git a/core/core/api/api_lint.ignore b/core/core/api/api_lint.ignore
new file mode 100644
index 0000000..e607711
--- /dev/null
+++ b/core/core/api/api_lint.ignore
@@ -0,0 +1,191 @@
+// Baseline format: 1.0
+AcronymName: androidx.core.database.sqlite.SQLiteCursorCompat:
+    Acronyms should not be capitalized in class names: was `SQLiteCursorCompat`, should this be `SqLiteCursorCompat`?
+AcronymName: androidx.core.graphics.ColorUtils#blendARGB(int, int, float):
+    Acronyms should not be capitalized in method names: was `blendARGB`, should this be `blendArgb`?
+AcronymName: androidx.core.graphics.ColorUtils#blendHSL(float[], float[], float, float[]):
+    Acronyms should not be capitalized in method names: was `blendHSL`, should this be `blendHsl`?
+AcronymName: androidx.core.graphics.ColorUtils#blendLAB(double[], double[], double, double[]):
+    Acronyms should not be capitalized in method names: was `blendLAB`, should this be `blendLab`?
+AcronymName: androidx.core.graphics.ColorUtils#colorToHSL(int, float[]):
+    Acronyms should not be capitalized in method names: was `colorToHSL`, should this be `colorToHsl`?
+AcronymName: androidx.core.graphics.ColorUtils#colorToLAB(int, double[]):
+    Acronyms should not be capitalized in method names: was `colorToLAB`, should this be `colorToLab`?
+AcronymName: androidx.core.graphics.ColorUtils#colorToXYZ(int, double[]):
+    Acronyms should not be capitalized in method names: was `colorToXYZ`, should this be `colorToXyz`?
+AcronymName: androidx.core.text.ICUCompat:
+    Acronyms should not be capitalized in class names: was `ICUCompat`, should this be `IcuCompat`?
+AcronymName: androidx.core.view.accessibility.AccessibilityViewCommand.MoveHtmlArguments#getHTMLElement():
+    Acronyms should not be capitalized in method names: was `getHTMLElement`, should this be `getHtmlElement`?
+
+
+ActionValue: androidx.core.app.ActivityOptionsCompat#EXTRA_USAGE_TIME_REPORT:
+    Inconsistent extra value; expected `androidx.core.app.extra.USAGE_TIME_REPORT`, was `android.activity.usage_time`
+ActionValue: androidx.core.app.ActivityOptionsCompat#EXTRA_USAGE_TIME_REPORT_PACKAGES:
+    Inconsistent extra value; expected `androidx.core.app.extra.USAGE_TIME_REPORT_PACKAGES`, was `android.usage_time_packages`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_AUDIO_CONTENTS_URI:
+    Inconsistent extra value; expected `androidx.core.app.extra.AUDIO_CONTENTS_URI`, was `android.audioContents`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_BACKGROUND_IMAGE_URI:
+    Inconsistent extra value; expected `androidx.core.app.extra.BACKGROUND_IMAGE_URI`, was `android.backgroundImageUri`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_BIG_TEXT:
+    Inconsistent extra value; expected `androidx.core.app.extra.BIG_TEXT`, was `android.bigText`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_COMPACT_ACTIONS:
+    Inconsistent extra value; expected `androidx.core.app.extra.COMPACT_ACTIONS`, was `android.compactActions`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_CONVERSATION_TITLE:
+    Inconsistent extra value; expected `androidx.core.app.extra.CONVERSATION_TITLE`, was `android.conversationTitle`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_HIDDEN_CONVERSATION_TITLE:
+    Inconsistent extra value; expected `androidx.core.app.extra.HIDDEN_CONVERSATION_TITLE`, was `android.hiddenConversationTitle`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_INFO_TEXT:
+    Inconsistent extra value; expected `androidx.core.app.extra.INFO_TEXT`, was `android.infoText`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_IS_GROUP_CONVERSATION:
+    Inconsistent extra value; expected `androidx.core.app.extra.IS_GROUP_CONVERSATION`, was `android.isGroupConversation`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_LARGE_ICON:
+    Inconsistent extra value; expected `androidx.core.app.extra.LARGE_ICON`, was `android.largeIcon`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_LARGE_ICON_BIG:
+    Inconsistent extra value; expected `androidx.core.app.extra.LARGE_ICON_BIG`, was `android.largeIcon.big`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_MEDIA_SESSION:
+    Inconsistent extra value; expected `androidx.core.app.extra.MEDIA_SESSION`, was `android.mediaSession`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_MESSAGES:
+    Inconsistent extra value; expected `androidx.core.app.extra.MESSAGES`, was `android.messages`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_MESSAGING_STYLE_USER:
+    Inconsistent extra value; expected `androidx.core.app.extra.MESSAGING_STYLE_USER`, was `android.messagingStyleUser`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_PEOPLE:
+    Inconsistent extra value; expected `androidx.core.app.extra.PEOPLE`, was `android.people`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_PICTURE:
+    Inconsistent extra value; expected `androidx.core.app.extra.PICTURE`, was `android.picture`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_PROGRESS:
+    Inconsistent extra value; expected `androidx.core.app.extra.PROGRESS`, was `android.progress`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_PROGRESS_INDETERMINATE:
+    Inconsistent extra value; expected `androidx.core.app.extra.PROGRESS_INDETERMINATE`, was `android.progressIndeterminate`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_PROGRESS_MAX:
+    Inconsistent extra value; expected `androidx.core.app.extra.PROGRESS_MAX`, was `android.progressMax`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_REMOTE_INPUT_HISTORY:
+    Inconsistent extra value; expected `androidx.core.app.extra.REMOTE_INPUT_HISTORY`, was `android.remoteInputHistory`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_SELF_DISPLAY_NAME:
+    Inconsistent extra value; expected `androidx.core.app.extra.SELF_DISPLAY_NAME`, was `android.selfDisplayName`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_SHOW_CHRONOMETER:
+    Inconsistent extra value; expected `androidx.core.app.extra.SHOW_CHRONOMETER`, was `android.showChronometer`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_SHOW_WHEN:
+    Inconsistent extra value; expected `androidx.core.app.extra.SHOW_WHEN`, was `android.showWhen`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_SMALL_ICON:
+    Inconsistent extra value; expected `androidx.core.app.extra.SMALL_ICON`, was `android.icon`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_SUB_TEXT:
+    Inconsistent extra value; expected `androidx.core.app.extra.SUB_TEXT`, was `android.subText`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_SUMMARY_TEXT:
+    Inconsistent extra value; expected `androidx.core.app.extra.SUMMARY_TEXT`, was `android.summaryText`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_TEMPLATE:
+    Inconsistent extra value; expected `androidx.core.app.extra.TEMPLATE`, was `android.template`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_TEXT:
+    Inconsistent extra value; expected `androidx.core.app.extra.TEXT`, was `android.text`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_TEXT_LINES:
+    Inconsistent extra value; expected `androidx.core.app.extra.TEXT_LINES`, was `android.textLines`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_TITLE:
+    Inconsistent extra value; expected `androidx.core.app.extra.TITLE`, was `android.title`
+ActionValue: androidx.core.app.NotificationCompat#EXTRA_TITLE_BIG:
+    Inconsistent extra value; expected `androidx.core.app.extra.TITLE_BIG`, was `android.title.big`
+ActionValue: androidx.core.app.NotificationCompatExtras#EXTRA_ACTION_EXTRAS:
+    Inconsistent extra value; expected `androidx.core.app.extra.ACTION_EXTRAS`, was `android.support.actionExtras`
+ActionValue: androidx.core.app.NotificationCompatExtras#EXTRA_GROUP_KEY:
+    Inconsistent extra value; expected `androidx.core.app.extra.GROUP_KEY`, was `android.support.groupKey`
+ActionValue: androidx.core.app.NotificationCompatExtras#EXTRA_GROUP_SUMMARY:
+    Inconsistent extra value; expected `androidx.core.app.extra.GROUP_SUMMARY`, was `android.support.isGroupSummary`
+ActionValue: androidx.core.app.NotificationCompatExtras#EXTRA_LOCAL_ONLY:
+    Inconsistent extra value; expected `androidx.core.app.extra.LOCAL_ONLY`, was `android.support.localOnly`
+ActionValue: androidx.core.app.NotificationCompatExtras#EXTRA_REMOTE_INPUTS:
+    Inconsistent extra value; expected `androidx.core.app.extra.REMOTE_INPUTS`, was `android.support.remoteInputs`
+ActionValue: androidx.core.app.NotificationCompatExtras#EXTRA_SORT_KEY:
+    Inconsistent extra value; expected `androidx.core.app.extra.SORT_KEY`, was `android.support.sortKey`
+ActionValue: androidx.core.app.NotificationManagerCompat#ACTION_BIND_SIDE_CHANNEL:
+    Inconsistent action value; expected `androidx.core.app.action.BIND_SIDE_CHANNEL`, was `android.support.BIND_NOTIFICATION_SIDE_CHANNEL`
+ActionValue: androidx.core.app.NotificationManagerCompat#EXTRA_USE_SIDE_CHANNEL:
+    Inconsistent extra value; expected `androidx.core.app.extra.USE_SIDE_CHANNEL`, was `android.support.useSideChannel`
+ActionValue: androidx.core.app.RemoteInput#EXTRA_RESULTS_DATA:
+    Inconsistent extra value; expected `androidx.core.app.extra.RESULTS_DATA`, was `android.remoteinput.resultsData`
+ActionValue: androidx.core.app.ShareCompat#EXTRA_CALLING_ACTIVITY:
+    Inconsistent extra value; expected `androidx.core.app.extra.CALLING_ACTIVITY`, was `androidx.core.app.EXTRA_CALLING_ACTIVITY`
+ActionValue: androidx.core.app.ShareCompat#EXTRA_CALLING_ACTIVITY_INTEROP:
+    Inconsistent extra value; expected `androidx.core.app.extra.CALLING_ACTIVITY_INTEROP`, was `android.support.v4.app.EXTRA_CALLING_ACTIVITY`
+ActionValue: androidx.core.app.ShareCompat#EXTRA_CALLING_PACKAGE:
+    Inconsistent extra value; expected `androidx.core.app.extra.CALLING_PACKAGE`, was `androidx.core.app.EXTRA_CALLING_PACKAGE`
+ActionValue: androidx.core.app.ShareCompat#EXTRA_CALLING_PACKAGE_INTEROP:
+    Inconsistent extra value; expected `androidx.core.app.extra.CALLING_PACKAGE_INTEROP`, was `android.support.v4.app.EXTRA_CALLING_PACKAGE`
+ActionValue: androidx.core.content.IntentCompat#EXTRA_HTML_TEXT:
+    Inconsistent extra value; expected `androidx.core.content.extra.HTML_TEXT`, was `android.intent.extra.HTML_TEXT`
+ActionValue: androidx.core.content.IntentCompat#EXTRA_START_PLAYBACK:
+    Inconsistent extra value; expected `androidx.core.content.extra.START_PLAYBACK`, was `android.intent.extra.START_PLAYBACK`
+ActionValue: androidx.core.content.pm.ShortcutManagerCompat#EXTRA_SHORTCUT_ID:
+    Inconsistent extra value; expected `androidx.core.content.pm.extra.SHORTCUT_ID`, was `android.intent.extra.shortcut.ID`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_COLUMN_INT:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_COLUMN_INT`, was `android.view.accessibility.action.ARGUMENT_COLUMN_INT`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_EXTEND_SELECTION_BOOLEAN`, was `ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_HTML_ELEMENT_STRING:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_HTML_ELEMENT_STRING`, was `ACTION_ARGUMENT_HTML_ELEMENT_STRING`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_MOVEMENT_GRANULARITY_INT`, was `ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_MOVE_WINDOW_X:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_MOVE_WINDOW_X`, was `ACTION_ARGUMENT_MOVE_WINDOW_X`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_MOVE_WINDOW_Y:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_MOVE_WINDOW_Y`, was `ACTION_ARGUMENT_MOVE_WINDOW_Y`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_PROGRESS_VALUE:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_PROGRESS_VALUE`, was `android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_ROW_INT:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_ROW_INT`, was `android.view.accessibility.action.ARGUMENT_ROW_INT`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_SELECTION_END_INT:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_SELECTION_END_INT`, was `ACTION_ARGUMENT_SELECTION_END_INT`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_SELECTION_START_INT:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_SELECTION_START_INT`, was `ACTION_ARGUMENT_SELECTION_START_INT`
+ActionValue: androidx.core.view.accessibility.AccessibilityNodeInfoCompat#ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE:
+    Inconsistent action value; expected `androidx.core.view.accessibility.action.ARGUMENT_SET_TEXT_CHARSEQUENCE`, was `ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE`
+
+
+BannedThrow: androidx.core.widget.TextViewCompat#setAutoSizeTextTypeUniformWithConfiguration(android.widget.TextView, int, int, int, int):
+    Methods must not mention RuntimeException subclasses in throws clauses (was `java.lang.IllegalArgumentException`)
+BannedThrow: androidx.core.widget.TextViewCompat#setAutoSizeTextTypeUniformWithPresetSizes(android.widget.TextView, int[], int):
+    Methods must not mention RuntimeException subclasses in throws clauses (was `java.lang.IllegalArgumentException`)
+
+
+ContextFirst: androidx.core.view.LayoutInflaterFactory#onCreateView(android.view.View, String, android.content.Context, android.util.AttributeSet) parameter #2:
+    Context is distinct, so it must be the first argument (method `onCreateView`)
+ContextFirst: androidx.core.view.ViewConfigurationCompat#getScaledHorizontalScrollFactor(android.view.ViewConfiguration, android.content.Context) parameter #1:
+    Context is distinct, so it must be the first argument (method `getScaledHorizontalScrollFactor`)
+ContextFirst: androidx.core.view.ViewConfigurationCompat#getScaledVerticalScrollFactor(android.view.ViewConfiguration, android.content.Context) parameter #1:
+    Context is distinct, so it must be the first argument (method `getScaledVerticalScrollFactor`)
+ContextFirst: androidx.core.view.ViewConfigurationCompat#shouldShowMenuShortcutsWhenKeyboardPresent(android.view.ViewConfiguration, android.content.Context) parameter #1:
+    Context is distinct, so it must be the first argument (method `shouldShowMenuShortcutsWhenKeyboardPresent`)
+
+
+KotlinOperator: androidx.core.os.LocaleListCompat#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+
+
+ListenerInterface: androidx.core.view.OneShotPreDrawListener:
+    Listeners should be an interface, or otherwise renamed Callback: OneShotPreDrawListener
+
+
+NoClone: androidx.core.app.NotificationCompat.Action.WearableExtender#clone():
+    Provide an explicit copy constructor instead of implementing `clone()`
+NoClone: androidx.core.app.NotificationCompat.WearableExtender#clone():
+    Provide an explicit copy constructor instead of implementing `clone()`
+
+
+PairedRegistration: androidx.core.view.OneShotPreDrawListener#removeListener():
+    Found removeListener but not addListener in androidx.core.view.OneShotPreDrawListener
+
+
+ServiceName: androidx.core.app.NotificationCompat#CATEGORY_SERVICE:
+    Inconsistent service value; expected `CATEGORY`, was `service`
+
+
+VisiblySynchronized: androidx.core.os.CancellationSignal#cancel():
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.core.os.CancellationSignal.cancel()
+VisiblySynchronized: androidx.core.os.CancellationSignal#getCancellationSignalObject():
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.core.os.CancellationSignal.getCancellationSignalObject()
+VisiblySynchronized: androidx.core.os.CancellationSignal#isCanceled():
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.core.os.CancellationSignal.isCanceled()
+VisiblySynchronized: androidx.core.os.CancellationSignal#setOnCancelListener(androidx.core.os.CancellationSignal.OnCancelListener):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.core.os.CancellationSignal.setOnCancelListener(androidx.core.os.CancellationSignal.OnCancelListener)
+VisiblySynchronized: androidx.core.widget.ContentLoadingProgressBar#hide():
+    Internal locks must not be exposed: method androidx.core.widget.ContentLoadingProgressBar.hide()
+VisiblySynchronized: androidx.core.widget.ContentLoadingProgressBar#show():
+    Internal locks must not be exposed: method androidx.core.widget.ContentLoadingProgressBar.show()
diff --git a/cursoradapter/api/api_lint.ignore b/cursoradapter/api/api_lint.ignore
new file mode 100644
index 0000000..7b5962b
--- /dev/null
+++ b/cursoradapter/api/api_lint.ignore
@@ -0,0 +1,5 @@
+// Baseline format: 1.0
+ContextFirst: androidx.cursoradapter.widget.CursorAdapter#bindView(android.view.View, android.content.Context, android.database.Cursor) parameter #1:
+    Context is distinct, so it must be the first argument (method `bindView`)
+ContextFirst: androidx.cursoradapter.widget.SimpleCursorAdapter#bindView(android.view.View, android.content.Context, android.database.Cursor) parameter #1:
+    Context is distinct, so it must be the first argument (method `bindView`)
diff --git a/customview/api/api_lint.ignore b/customview/api/api_lint.ignore
new file mode 100644
index 0000000..b809558
--- /dev/null
+++ b/customview/api/api_lint.ignore
@@ -0,0 +1,11 @@
+// Baseline format: 1.0
+CallbackMethodName: androidx.customview.widget.ViewDragHelper.Callback:
+    Callback method names must follow the on<Something> style: getOrderedChildIndex
+
+
+ParcelConstructor: androidx.customview.view.AbsSavedState#AbsSavedState(android.os.Parcel):
+    Parcelable inflation is exposed through CREATOR, not raw constructors, in androidx.customview.view.AbsSavedState
+
+
+ParcelNotFinal: androidx.customview.view.AbsSavedState:
+    Parcelable classes must be final: androidx.customview.view.AbsSavedState is not final
diff --git a/drawerlayout/api/api_lint.ignore b/drawerlayout/api/api_lint.ignore
new file mode 100644
index 0000000..e4e6148
--- /dev/null
+++ b/drawerlayout/api/api_lint.ignore
@@ -0,0 +1,15 @@
+// Baseline format: 1.0
+ConcreteCollection: androidx.drawerlayout.widget.DrawerLayout#addFocusables(java.util.ArrayList<android.view.View>, int, int) parameter #0:
+    Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface
+
+
+ListenerInterface: androidx.drawerlayout.widget.DrawerLayout.SimpleDrawerListener:
+    Listeners should be an interface, or otherwise renamed Callback: SimpleDrawerListener
+
+
+ParcelCreator: androidx.drawerlayout.widget.DrawerLayout.SavedState:
+    Parcelable requires `public int describeContents()`; missing in androidx.drawerlayout.widget.DrawerLayout.SavedState
+
+
+ParcelNotFinal: androidx.drawerlayout.widget.DrawerLayout.SavedState:
+    Parcelable classes must be final: androidx.drawerlayout.widget.DrawerLayout.SavedState is not final
diff --git a/enterprise/feedback/api/api_lint.ignore b/enterprise/feedback/api/api_lint.ignore
new file mode 100644
index 0000000..4350e62
--- /dev/null
+++ b/enterprise/feedback/api/api_lint.ignore
@@ -0,0 +1,5 @@
+// Baseline format: 1.0
+VisiblySynchronized: androidx.enterprise.feedback.SingletonKeyedAppStatesReporter#getInstance(android.content.Context):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.enterprise.feedback.SingletonKeyedAppStatesReporter.getInstance(android.content.Context)
+VisiblySynchronized: androidx.enterprise.feedback.SingletonKeyedAppStatesReporter#initialize(android.content.Context, java.util.concurrent.Executor):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.enterprise.feedback.SingletonKeyedAppStatesReporter.initialize(android.content.Context,java.util.concurrent.Executor)
diff --git a/exifinterface/api/api_lint.ignore b/exifinterface/api/api_lint.ignore
new file mode 100644
index 0000000..e0f65e9
--- /dev/null
+++ b/exifinterface/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+NoClone: androidx.exifinterface.media.ExifInterface#ExifInterface(java.io.FileDescriptor) parameter #0:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fileDescriptor in androidx.exifinterface.media.ExifInterface(java.io.FileDescriptor fileDescriptor)
diff --git a/fragment/fragment/api/api_lint.ignore b/fragment/fragment/api/api_lint.ignore
new file mode 100644
index 0000000..ad3841c
--- /dev/null
+++ b/fragment/fragment/api/api_lint.ignore
@@ -0,0 +1,35 @@
+// Baseline format: 1.0
+ContextFirst: androidx.fragment.app.FragmentActivity#onCreateView(String, android.content.Context, android.util.AttributeSet) parameter #1:
+    Context is distinct, so it must be the first argument (method `onCreateView`)
+ContextFirst: androidx.fragment.app.FragmentActivity#onCreateView(android.view.View, String, android.content.Context, android.util.AttributeSet) parameter #2:
+    Context is distinct, so it must be the first argument (method `onCreateView`)
+ContextFirst: androidx.fragment.app.FragmentController#onCreateView(android.view.View, String, android.content.Context, android.util.AttributeSet) parameter #2:
+    Context is distinct, so it must be the first argument (method `onCreateView`)
+ContextFirst: androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks#onFragmentAttached(androidx.fragment.app.FragmentManager, androidx.fragment.app.Fragment, android.content.Context) parameter #2:
+    Context is distinct, so it must be the first argument (method `onFragmentAttached`)
+ContextFirst: androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks#onFragmentPreAttached(androidx.fragment.app.FragmentManager, androidx.fragment.app.Fragment, android.content.Context) parameter #2:
+    Context is distinct, so it must be the first argument (method `onFragmentPreAttached`)
+
+
+ForbiddenSuperClass: androidx.fragment.app.FragmentActivity:
+    FragmentActivity should not extend `Activity`. Activity subclasses are impossible to compose. Expose a composable API instead.
+
+
+NoClone: androidx.fragment.app.Fragment#dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.fragment.app.Fragment.dump(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+NoClone: androidx.fragment.app.FragmentActivity#dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.fragment.app.FragmentActivity.dump(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+NoClone: androidx.fragment.app.FragmentController#dumpLoaders(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.fragment.app.FragmentController.dumpLoaders(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+NoClone: androidx.fragment.app.FragmentHostCallback#onDump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.fragment.app.FragmentHostCallback.onDump(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+NoClone: androidx.fragment.app.FragmentManager#dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.fragment.app.FragmentManager.dump(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+
+
+ParcelNotFinal: androidx.fragment.app.Fragment.SavedState:
+    Parcelable classes must be final: androidx.fragment.app.Fragment.SavedState is not final
+
+
+SingularCallback: androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks:
+    Callback class names should be singular: FragmentLifecycleCallbacks
diff --git a/heifwriter/api/api_lint.ignore b/heifwriter/api/api_lint.ignore
new file mode 100644
index 0000000..3dd94ae
--- /dev/null
+++ b/heifwriter/api/api_lint.ignore
@@ -0,0 +1,17 @@
+// Baseline format: 1.0
+GenericException: androidx.heifwriter.HeifWriter#stop(long):
+    Methods must not throw generic exceptions (`java.lang.Exception`)
+
+
+NoClone: androidx.heifwriter.HeifWriter.Builder#Builder(java.io.FileDescriptor, int, int, int) parameter #0:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.heifwriter.HeifWriter.Builder(java.io.FileDescriptor fd, int width, int height, int inputMode)
+
+
+VisiblySynchronized: androidx.heifwriter.HeifWriter#addBitmap(android.graphics.Bitmap):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.heifwriter.HeifWriter.addBitmap(android.graphics.Bitmap)
+VisiblySynchronized: androidx.heifwriter.HeifWriter#addYuvBuffer(int, byte[]):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.heifwriter.HeifWriter.addYuvBuffer(int,byte[])
+VisiblySynchronized: androidx.heifwriter.HeifWriter#setInputEndOfStreamTimestamp(long):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.heifwriter.HeifWriter.setInputEndOfStreamTimestamp(long)
+VisiblySynchronized: androidx.heifwriter.HeifWriter#stop(long):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.heifwriter.HeifWriter.stop(long)
diff --git a/leanback-preference/api/api_lint.ignore b/leanback-preference/api/api_lint.ignore
new file mode 100644
index 0000000..1ec1d8d
--- /dev/null
+++ b/leanback-preference/api/api_lint.ignore
@@ -0,0 +1,5 @@
+// Baseline format: 1.0
+ActionValue: androidx.leanback.preference.LeanbackEditTextPreferenceDialogFragmentCompat#EXTRA_IME_OPTIONS:
+    Inconsistent extra value; expected `androidx.leanback.preference.extra.IME_OPTIONS`, was `ime_option`
+ActionValue: androidx.leanback.preference.LeanbackEditTextPreferenceDialogFragmentCompat#EXTRA_INPUT_TYPE:
+    Inconsistent extra value; expected `androidx.leanback.preference.extra.INPUT_TYPE`, was `input_type`
diff --git a/leanback/api/api_lint.ignore b/leanback/api/api_lint.ignore
new file mode 100644
index 0000000..b8d6059
--- /dev/null
+++ b/leanback/api/api_lint.ignore
@@ -0,0 +1,93 @@
+// Baseline format: 1.0
+ActionValue: androidx.leanback.app.GuidedStepFragment#EXTRA_UI_STYLE:
+    Inconsistent extra value; expected `androidx.leanback.app.extra.UI_STYLE`, was `uiStyle`
+ActionValue: androidx.leanback.app.GuidedStepSupportFragment#EXTRA_UI_STYLE:
+    Inconsistent extra value; expected `androidx.leanback.app.extra.UI_STYLE`, was `uiStyle`
+
+
+AutoBoxing: androidx.leanback.widget.Parallax.FloatProperty#get(androidx.leanback.widget.Parallax):
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.leanback.widget.Parallax.FloatProperty#set(androidx.leanback.widget.Parallax, Float) parameter #1:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.leanback.widget.Parallax.IntProperty#get(androidx.leanback.widget.Parallax):
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.leanback.widget.Parallax.IntProperty#set(androidx.leanback.widget.Parallax, Integer) parameter #1:
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.leanback.widget.ParallaxTarget#directUpdate(Number) parameter #0:
+    Must avoid boxed primitives (`java.lang.Number`)
+AutoBoxing: androidx.leanback.widget.ParallaxTarget.DirectPropertyTarget#directUpdate(Number) parameter #0:
+    Must avoid boxed primitives (`java.lang.Number`)
+
+
+CallbackMethodName: androidx.leanback.widget.DiffCallback:
+    Callback method names must follow the on<Something> style: areItemsTheSame
+CallbackMethodName: androidx.leanback.widget.GuidedActionDiffCallback:
+    Callback method names must follow the on<Something> style: getInstance
+CallbackMethodName: androidx.leanback.widget.SearchBar.SearchBarPermissionListener:
+    Listener method names must follow the on<Something> style: requestAudioPermission
+
+
+CallbackName: androidx.leanback.widget.ObjectAdapter.DataObserver:
+    Class should be named DataCallback
+
+
+ConcreteCollection: androidx.leanback.widget.ItemBridgeAdapter#getPresenterMapper():
+    Return type is concrete collection (`java.util.ArrayList`); must be higher-level interface
+ConcreteCollection: androidx.leanback.widget.ItemBridgeAdapter#setPresenterMapper(java.util.ArrayList<androidx.leanback.widget.Presenter>) parameter #0:
+    Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface
+
+
+ContextFirst: androidx.leanback.widget.GuidedAction.BuilderBase#iconResourceId(int, android.content.Context) parameter #1:
+    Context is distinct, so it must be the first argument (method `iconResourceId`)
+ContextFirst: androidx.leanback.widget.PlaybackControlsRow.ThumbsAction#ThumbsAction(int, android.content.Context, int, int) parameter #1:
+    Context is distinct, so it must be the first argument (method `ThumbsAction`)
+
+
+FractionFloat: androidx.leanback.widget.Parallax.FloatProperty#atFraction(float):
+    Fractions must use floats, was `androidx.leanback.widget.Parallax.PropertyMarkerValue` in `atFraction`
+FractionFloat: androidx.leanback.widget.Parallax.IntProperty#atFraction(float):
+    Fractions must use floats, was `androidx.leanback.widget.Parallax.PropertyMarkerValue` in `atFraction`
+
+
+KotlinOperator: androidx.leanback.widget.ArrayObjectAdapter#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.leanback.widget.CursorObjectAdapter#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.leanback.widget.ObjectAdapter#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.leanback.widget.Parallax.FloatProperty#get(androidx.leanback.widget.Parallax):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.leanback.widget.Parallax.FloatProperty#set(androidx.leanback.widget.Parallax, Float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.leanback.widget.Parallax.IntProperty#get(androidx.leanback.widget.Parallax):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.leanback.widget.Parallax.IntProperty#set(androidx.leanback.widget.Parallax, Integer):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.leanback.widget.SparseArrayObjectAdapter#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.leanback.widget.SparseArrayObjectAdapter#set(int, Object):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+
+
+ListenerInterface: androidx.leanback.app.BrowseSupportFragment.BrowseTransitionListener:
+    Listeners should be an interface, or otherwise renamed Callback: BrowseTransitionListener
+ListenerInterface: androidx.leanback.widget.DetailsOverviewRow.Listener:
+    Listeners should be an interface, or otherwise renamed Callback: Listener
+ListenerInterface: androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.Listener:
+    Listeners should be an interface, or otherwise renamed Callback: Listener
+ListenerInterface: androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder.DetailsOverviewRowListener:
+    Listeners should be an interface, or otherwise renamed Callback: DetailsOverviewRowListener
+ListenerInterface: androidx.leanback.widget.ItemBridgeAdapter.AdapterListener:
+    Listeners should be an interface, or otherwise renamed Callback: AdapterListener
+ListenerInterface: androidx.leanback.widget.OnChildViewHolderSelectedListener:
+    Listeners should be an interface, or otherwise renamed Callback: OnChildViewHolderSelectedListener
+
+
+RegistrationName: androidx.leanback.media.PlaybackGlue#addPlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback):
+    Callback methods should be named register/unregister; was addPlayerCallback
+RegistrationName: androidx.leanback.media.PlaybackGlue#removePlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback):
+    Callback methods should be named register/unregister; was removePlayerCallback
+
+
+SingletonConstructor: androidx.leanback.widget.GuidedActionDiffCallback#GuidedActionDiffCallback():
+    Singleton classes should use `getInstance()` methods: `GuidedActionDiffCallback`
diff --git a/lifecycle/lifecycle-common/api/api_lint.ignore b/lifecycle/lifecycle-common/api/api_lint.ignore
new file mode 100644
index 0000000..b22f657
--- /dev/null
+++ b/lifecycle/lifecycle-common/api/api_lint.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+CallbackName: androidx.lifecycle.DefaultLifecycleObserver:
+    Class should be named DefaultLifecycleCallback
+CallbackName: androidx.lifecycle.LifecycleEventObserver:
+    Class should be named LifecycleEventCallback
+CallbackName: androidx.lifecycle.LifecycleObserver:
+    Class should be named LifecycleCallback
diff --git a/lifecycle/lifecycle-livedata-core/api/api_lint.ignore b/lifecycle/lifecycle-livedata-core/api/api_lint.ignore
new file mode 100644
index 0000000..f68178d
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-core/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+CallbackName: androidx.lifecycle.Observer:
+    Class should be named Callback
diff --git a/lifecycle/lifecycle-viewmodel-savedstate/api/api_lint.ignore b/lifecycle/lifecycle-viewmodel-savedstate/api/api_lint.ignore
new file mode 100644
index 0000000..420fd20
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-savedstate/api/api_lint.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+KotlinOperator: androidx.lifecycle.SavedStateHandle#contains(String):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.lifecycle.SavedStateHandle#get(String):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.lifecycle.SavedStateHandle#set(String, T):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
diff --git a/lifecycle/lifecycle-viewmodel/api/api_lint.ignore b/lifecycle/lifecycle-viewmodel/api/api_lint.ignore
new file mode 100644
index 0000000..8582fa1
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel/api/api_lint.ignore
@@ -0,0 +1,9 @@
+// Baseline format: 1.0
+KotlinOperator: androidx.lifecycle.ViewModelProvider#get(Class<T>):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.lifecycle.ViewModelProvider#get(String, Class<T>):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+
+
+SingletonConstructor: androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory#AndroidViewModelFactory(android.app.Application):
+    Singleton classes should use `getInstance()` methods: `AndroidViewModelFactory`
diff --git a/loader/loader/api/api_lint.ignore b/loader/loader/api/api_lint.ignore
new file mode 100644
index 0000000..cb37084
--- /dev/null
+++ b/loader/loader/api/api_lint.ignore
@@ -0,0 +1,37 @@
+// Baseline format: 1.0
+CallbackName: androidx.loader.content.Loader.ForceLoadContentObserver:
+    Class should be named ForceLoadContentCallback
+
+
+NoClone: androidx.loader.app.LoaderManager#dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.loader.app.LoaderManager.dump(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+NoClone: androidx.loader.content.AsyncTaskLoader#dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.loader.content.AsyncTaskLoader.dump(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+NoClone: androidx.loader.content.CursorLoader#dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.loader.content.CursorLoader.dump(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+NoClone: androidx.loader.content.Loader#dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.loader.content.Loader.dump(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+
+
+RegistrationName: androidx.loader.content.Loader#registerListener(int, androidx.loader.content.Loader.OnLoadCompleteListener<D>):
+    Listener methods should be named add/remove; was registerListener
+RegistrationName: androidx.loader.content.Loader#registerOnLoadCanceledListener(androidx.loader.content.Loader.OnLoadCanceledListener<D>):
+    Listener methods should be named add/remove; was registerOnLoadCanceledListener
+RegistrationName: androidx.loader.content.Loader#unregisterListener(androidx.loader.content.Loader.OnLoadCompleteListener<D>):
+    Listener methods should be named add/remove; was unregisterListener
+RegistrationName: androidx.loader.content.Loader#unregisterOnLoadCanceledListener(androidx.loader.content.Loader.OnLoadCanceledListener<D>):
+    Listener methods should be named add/remove; was unregisterOnLoadCanceledListener
+
+
+SingletonConstructor: androidx.loader.app.LoaderManager#LoaderManager():
+    Singleton classes should use `getInstance()` methods: `LoaderManager`
+
+
+SingularCallback: androidx.loader.app.LoaderManager.LoaderCallbacks:
+    Callback class names should be singular: LoaderCallbacks
+
+
+VisiblySynchronized: androidx.loader.content.CursorLoader#cancelLoadInBackground():
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.loader.content.CursorLoader.cancelLoadInBackground()
+VisiblySynchronized: androidx.loader.content.CursorLoader#loadInBackground():
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.loader.content.CursorLoader.loadInBackground()
diff --git a/media/api/api_lint.ignore b/media/api/api_lint.ignore
new file mode 100644
index 0000000..aa6beea
--- /dev/null
+++ b/media/api/api_lint.ignore
@@ -0,0 +1,57 @@
+// Baseline format: 1.0
+ActionValue: android.support.v4.media.MediaBrowserCompat#EXTRA_DOWNLOAD_PROGRESS:
+    Inconsistent extra value; expected `android.support.v4.media.extra.DOWNLOAD_PROGRESS`, was `android.media.browse.extra.DOWNLOAD_PROGRESS`
+ActionValue: android.support.v4.media.MediaBrowserCompat#EXTRA_MEDIA_ID:
+    Inconsistent extra value; expected `android.support.v4.media.extra.MEDIA_ID`, was `android.media.browse.extra.MEDIA_ID`
+ActionValue: android.support.v4.media.MediaBrowserCompat#EXTRA_PAGE:
+    Inconsistent extra value; expected `android.support.v4.media.extra.PAGE`, was `android.media.browse.extra.PAGE`
+ActionValue: android.support.v4.media.MediaBrowserCompat#EXTRA_PAGE_SIZE:
+    Inconsistent extra value; expected `android.support.v4.media.extra.PAGE_SIZE`, was `android.media.browse.extra.PAGE_SIZE`
+ActionValue: android.support.v4.media.MediaDescriptionCompat#EXTRA_BT_FOLDER_TYPE:
+    Inconsistent extra value; expected `android.support.v4.media.extra.BT_FOLDER_TYPE`, was `android.media.extra.BT_FOLDER_TYPE`
+ActionValue: android.support.v4.media.MediaDescriptionCompat#EXTRA_DOWNLOAD_STATUS:
+    Inconsistent extra value; expected `android.support.v4.media.extra.DOWNLOAD_STATUS`, was `android.media.extra.DOWNLOAD_STATUS`
+ActionValue: android.support.v4.media.session.MediaControllerCompat.TransportControls#EXTRA_LEGACY_STREAM_TYPE:
+    Inconsistent extra value; expected `android.support.v4.media.session.extra.LEGACY_STREAM_TYPE`, was `android.media.session.extra.LEGACY_STREAM_TYPE`
+ActionValue: androidx.media.MediaBrowserServiceCompat.BrowserRoot#EXTRA_OFFLINE:
+    Inconsistent extra value; expected `androidx.media.extra.OFFLINE`, was `android.service.media.extra.OFFLINE`
+ActionValue: androidx.media.MediaBrowserServiceCompat.BrowserRoot#EXTRA_RECENT:
+    Inconsistent extra value; expected `androidx.media.extra.RECENT`, was `android.service.media.extra.RECENT`
+ActionValue: androidx.media.MediaBrowserServiceCompat.BrowserRoot#EXTRA_SUGGESTED:
+    Inconsistent extra value; expected `androidx.media.extra.SUGGESTED`, was `android.service.media.extra.SUGGESTED`
+
+
+CallbackMethodName: android.support.v4.media.session.MediaControllerCompat.Callback:
+    Callback method names must follow the on<Something> style: binderDied
+
+
+ContextNameSuffix: androidx.media.MediaBrowserServiceCompat:
+    Inconsistent class name; should be `<Foo>Service`, was `MediaBrowserServiceCompat`
+
+
+IntentName: android.support.v4.media.MediaBrowserCompat#CUSTOM_ACTION_DOWNLOAD:
+    Intent action constant name must be ACTION_FOO: CUSTOM_ACTION_DOWNLOAD
+IntentName: android.support.v4.media.MediaBrowserCompat#CUSTOM_ACTION_REMOVE_DOWNLOADED_FILE:
+    Intent action constant name must be ACTION_FOO: CUSTOM_ACTION_REMOVE_DOWNLOADED_FILE
+
+
+InterfaceConstant: androidx.media.MediaBrowserServiceCompat#SERVICE_INTERFACE:
+    Inconsistent interface constant; expected 'MediaBrowserServiceCompat'`
+
+
+NoClone: androidx.media.MediaBrowserServiceCompat#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.media.MediaBrowserServiceCompat.dump(java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+
+
+ParcelConstructor: android.support.v4.media.session.ParcelableVolumeInfo#ParcelableVolumeInfo(android.os.Parcel):
+    Parcelable inflation is exposed through CREATOR, not raw constructors, in android.support.v4.media.session.ParcelableVolumeInfo
+
+
+ParcelNotFinal: android.support.v4.media.MediaBrowserCompat.MediaItem:
+    Parcelable classes must be final: android.support.v4.media.MediaBrowserCompat.MediaItem is not final
+ParcelNotFinal: android.support.v4.media.session.ParcelableVolumeInfo:
+    Parcelable classes must be final: android.support.v4.media.session.ParcelableVolumeInfo is not final
+
+
+RethrowRemoteException: android.support.v4.media.session.MediaControllerCompat#MediaControllerCompat(android.content.Context, android.support.v4.media.session.MediaSessionCompat.Token):
+    Methods calling into system server should rethrow `RemoteException` as `RuntimeException` (but do not list it in the throws clause)
diff --git a/media2/common/api/api_lint.ignore b/media2/common/api/api_lint.ignore
new file mode 100644
index 0000000..42cac4b
--- /dev/null
+++ b/media2/common/api/api_lint.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+CallbackMethodName: androidx.media2.common.DataSourceCallback:
+    Callback method names must follow the on<Something> style: readAt
+
+
+IntentName: androidx.media2.common.MediaMetadata#METADATA_KEY_EXTRAS:
+    Intent extra constant name must be EXTRA_FOO: METADATA_KEY_EXTRAS
diff --git a/media2/player/api/api_lint.ignore b/media2/player/api/api_lint.ignore
new file mode 100644
index 0000000..821e3a3
--- /dev/null
+++ b/media2/player/api/api_lint.ignore
@@ -0,0 +1,11 @@
+// Baseline format: 1.0
+AutoBoxing: androidx.media2.player.PlaybackParams#getAudioFallbackMode():
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.media2.player.PlaybackParams#getPitch():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.media2.player.PlaybackParams#getSpeed():
+    Must avoid boxed primitives (`java.lang.Float`)
+
+
+GenericException: androidx.media2.player.MediaPlayer#close():
+    Methods must not throw generic exceptions (`java.lang.Exception`)
diff --git a/media2/session/api/api_lint.ignore b/media2/session/api/api_lint.ignore
new file mode 100644
index 0000000..3cd34b0
--- /dev/null
+++ b/media2/session/api/api_lint.ignore
@@ -0,0 +1,5 @@
+// Baseline format: 1.0
+InterfaceConstant: androidx.media2.session.MediaLibraryService#SERVICE_INTERFACE:
+    Inconsistent interface constant; expected 'MediaLibraryService'`
+InterfaceConstant: androidx.media2.session.MediaSessionService#SERVICE_INTERFACE:
+    Inconsistent interface constant; expected 'MediaSessionService'`
diff --git a/mediarouter/api/api_lint.ignore b/mediarouter/api/api_lint.ignore
new file mode 100644
index 0000000..1090c0a
--- /dev/null
+++ b/mediarouter/api/api_lint.ignore
@@ -0,0 +1,69 @@
+// Baseline format: 1.0
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_END_SESSION:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.END_SESSION`, was `android.media.intent.action.END_SESSION`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_ENQUEUE:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.ENQUEUE`, was `android.media.intent.action.ENQUEUE`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_GET_SESSION_STATUS:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.GET_SESSION_STATUS`, was `android.media.intent.action.GET_SESSION_STATUS`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_GET_STATUS:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.GET_STATUS`, was `android.media.intent.action.GET_STATUS`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_PAUSE:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.PAUSE`, was `android.media.intent.action.PAUSE`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_PLAY:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.PLAY`, was `android.media.intent.action.PLAY`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_REMOVE:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.REMOVE`, was `android.media.intent.action.REMOVE`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_RESUME:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.RESUME`, was `android.media.intent.action.RESUME`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_SEEK:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.SEEK`, was `android.media.intent.action.SEEK`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_SEND_MESSAGE:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.SEND_MESSAGE`, was `android.media.intent.action.SEND_MESSAGE`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_START_SESSION:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.START_SESSION`, was `android.media.intent.action.START_SESSION`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#ACTION_STOP:
+    Inconsistent action value; expected `androidx.mediarouter.media.action.STOP`, was `android.media.intent.action.STOP`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_ERROR_CODE:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.ERROR_CODE`, was `android.media.intent.extra.ERROR_CODE`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_ITEM_CONTENT_POSITION:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.ITEM_CONTENT_POSITION`, was `android.media.intent.extra.ITEM_POSITION`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_ITEM_HTTP_HEADERS:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.ITEM_HTTP_HEADERS`, was `android.media.intent.extra.HTTP_HEADERS`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_ITEM_ID:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.ITEM_ID`, was `android.media.intent.extra.ITEM_ID`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_ITEM_METADATA:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.ITEM_METADATA`, was `android.media.intent.extra.ITEM_METADATA`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_ITEM_STATUS:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.ITEM_STATUS`, was `android.media.intent.extra.ITEM_STATUS`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_ITEM_STATUS_UPDATE_RECEIVER:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.ITEM_STATUS_UPDATE_RECEIVER`, was `android.media.intent.extra.ITEM_STATUS_UPDATE_RECEIVER`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_MESSAGE:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.MESSAGE`, was `android.media.intent.extra.MESSAGE`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_MESSAGE_RECEIVER:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.MESSAGE_RECEIVER`, was `android.media.intent.extra.MESSAGE_RECEIVER`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_SESSION_ID:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.SESSION_ID`, was `android.media.intent.extra.SESSION_ID`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_SESSION_STATUS:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.SESSION_STATUS`, was `android.media.intent.extra.SESSION_STATUS`
+ActionValue: androidx.mediarouter.media.MediaControlIntent#EXTRA_SESSION_STATUS_UPDATE_RECEIVER:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.SESSION_STATUS_UPDATE_RECEIVER`, was `android.media.intent.extra.SESSION_STATUS_UPDATE_RECEIVER`
+ActionValue: androidx.mediarouter.media.MediaItemStatus#EXTRA_HTTP_RESPONSE_HEADERS:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.HTTP_RESPONSE_HEADERS`, was `android.media.status.extra.HTTP_RESPONSE_HEADERS`
+ActionValue: androidx.mediarouter.media.MediaItemStatus#EXTRA_HTTP_STATUS_CODE:
+    Inconsistent extra value; expected `androidx.mediarouter.media.extra.HTTP_STATUS_CODE`, was `android.media.status.extra.HTTP_STATUS_CODE`
+
+
+InterfaceConstant: androidx.mediarouter.media.MediaRouteProviderService#SERVICE_INTERFACE:
+    Inconsistent interface constant; expected 'MediaRouteProviderService'`
+
+
+KotlinOperator: androidx.mediarouter.media.MediaRouteSelector#contains(androidx.mediarouter.media.MediaRouteSelector):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+
+
+RegistrationName: androidx.mediarouter.media.MediaRouter#addCallback(androidx.mediarouter.media.MediaRouteSelector, androidx.mediarouter.media.MediaRouter.Callback):
+    Callback methods should be named register/unregister; was addCallback
+RegistrationName: androidx.mediarouter.media.MediaRouter#addCallback(androidx.mediarouter.media.MediaRouteSelector, androidx.mediarouter.media.MediaRouter.Callback, int):
+    Callback methods should be named register/unregister; was addCallback
+RegistrationName: androidx.mediarouter.media.MediaRouter#removeCallback(androidx.mediarouter.media.MediaRouter.Callback):
+    Callback methods should be named register/unregister; was removeCallback
diff --git a/navigation/navigation-common-ktx/api/api_lint.ignore b/navigation/navigation-common-ktx/api/api_lint.ignore
new file mode 100644
index 0000000..6984790
--- /dev/null
+++ b/navigation/navigation-common-ktx/api/api_lint.ignore
@@ -0,0 +1,5 @@
+// Baseline format: 1.0
+DocumentExceptions: androidx.navigation.NavArgumentBuilder#getType():
+    Method NavArgumentBuilder.getType appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.navigation.NavGraphBuilder#build():
+    Method NavGraphBuilder.build appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
diff --git a/navigation/navigation-common/api/api_lint.ignore b/navigation/navigation-common/api/api_lint.ignore
new file mode 100644
index 0000000..59abda6
--- /dev/null
+++ b/navigation/navigation-common/api/api_lint.ignore
@@ -0,0 +1,11 @@
+// Baseline format: 1.0
+KotlinOperator: androidx.navigation.NavType#get(android.os.Bundle, String):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.navigation.NavType.ParcelableArrayType#get(android.os.Bundle, String):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.navigation.NavType.ParcelableType#get(android.os.Bundle, String):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.navigation.NavType.SerializableArrayType#get(android.os.Bundle, String):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.navigation.NavType.SerializableType#get(android.os.Bundle, String):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
diff --git a/navigation/navigation-fragment-ktx/api/api_lint.ignore b/navigation/navigation-fragment-ktx/api/api_lint.ignore
new file mode 100644
index 0000000..05fb76a
--- /dev/null
+++ b/navigation/navigation-fragment-ktx/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+DocumentExceptions: androidx.navigation.fragment.FragmentNavArgsLazyKt#navArgs(androidx.fragment.app.Fragment):
+    Method FragmentNavArgsLazyKt.navArgs appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
diff --git a/navigation/navigation-testing/api/api_lint.ignore b/navigation/navigation-testing/api/api_lint.ignore
new file mode 100644
index 0000000..f0130af
--- /dev/null
+++ b/navigation/navigation-testing/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+DocumentExceptions: androidx.navigation.testing.TestNavigator#getCurrent():
+    Method TestNavigator.getCurrent appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
diff --git a/navigation/navigation-ui/api/api_lint.ignore b/navigation/navigation-ui/api/api_lint.ignore
new file mode 100644
index 0000000..f05bc95
--- /dev/null
+++ b/navigation/navigation-ui/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+AcronymName: androidx.navigation.ui.NavigationUI:
+    Acronyms should not be capitalized in class names: was `NavigationUI`, should this be `NavigationUi`?
diff --git a/paging/common/api/api_lint.ignore b/paging/common/api/api_lint.ignore
new file mode 100644
index 0000000..b75b690
--- /dev/null
+++ b/paging/common/api/api_lint.ignore
@@ -0,0 +1,45 @@
+// Baseline format: 1.0
+DocumentExceptions: androidx.paging.DataSource#getExecutor():
+    Method DataSource.getExecutor appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.ItemKeyedDataSource.LoadCallback#onError(Throwable):
+    Method LoadCallback.onError appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.PageKeyedDataSource.LoadCallback#onError(Throwable):
+    Method LoadCallback.onError appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.PageKeyedDataSource.LoadInitialCallback#onError(Throwable):
+    Method LoadInitialCallback.onError appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.PagedList#loadAround(int):
+    Method PagedList.loadAround appears to be throwing java.lang.IndexOutOfBoundsException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.PagedList.Builder#build():
+    Method Builder.build appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.PagedList.Builder#buildAsync():
+    Method Builder.buildAsync appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.PagedList.Config.Builder#build():
+    Method Builder.build appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.PagedList.Config.Builder#setPageSize(int):
+    Method Builder.setPageSize appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.PositionalDataSource.LoadInitialCallback#onError(Throwable):
+    Method LoadInitialCallback.onError appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.PositionalDataSource.LoadRangeCallback#onError(Throwable):
+    Method LoadRangeCallback.onError appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+
+
+EqualsAndHashCode: androidx.paging.DataSource.BaseResult#equals(Object):
+    Must override both equals and hashCode; missing one in androidx.paging.DataSource.BaseResult
+
+
+KotlinOperator: androidx.paging.PagedList#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+
+
+RegistrationName: androidx.paging.DataSource#addInvalidatedCallback(androidx.paging.DataSource.InvalidatedCallback):
+    Callback methods should be named register/unregister; was addInvalidatedCallback
+RegistrationName: androidx.paging.DataSource#addInvalidatedCallback(kotlin.jvm.functions.Function0<kotlin.Unit>):
+    Callback methods should be named register/unregister; was addInvalidatedCallback
+RegistrationName: androidx.paging.DataSource#removeInvalidatedCallback(androidx.paging.DataSource.InvalidatedCallback):
+    Callback methods should be named register/unregister; was removeInvalidatedCallback
+RegistrationName: androidx.paging.DataSource#removeInvalidatedCallback(kotlin.jvm.functions.Function0<kotlin.Unit>):
+    Callback methods should be named register/unregister; was removeInvalidatedCallback
+RegistrationName: androidx.paging.PagedList#addWeakCallback(java.util.List<? extends T>, androidx.paging.PagedList.Callback):
+    Callback methods should be named register/unregister; was addWeakCallback
+RegistrationName: androidx.paging.PagedList#removeWeakCallback(androidx.paging.PagedList.Callback):
+    Callback methods should be named register/unregister; was removeWeakCallback
diff --git a/paging/runtime/api/api_lint.ignore b/paging/runtime/api/api_lint.ignore
new file mode 100644
index 0000000..68bf03a
--- /dev/null
+++ b/paging/runtime/api/api_lint.ignore
@@ -0,0 +1,5 @@
+// Baseline format: 1.0
+DocumentExceptions: androidx.paging.AsyncPagedListDiffer#getItem(int):
+    Method AsyncPagedListDiffer.getItem appears to be throwing java.lang.IndexOutOfBoundsException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.paging.AsyncPagedListDiffer#submitList(androidx.paging.PagedList<T>, Runnable):
+    Method AsyncPagedListDiffer.submitList appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
diff --git a/preference/api/api_lint.ignore b/preference/api/api_lint.ignore
new file mode 100644
index 0000000..5b1c512
--- /dev/null
+++ b/preference/api/api_lint.ignore
@@ -0,0 +1,23 @@
+// Baseline format: 1.0
+CallbackMethodName: androidx.preference.PreferenceManager.PreferenceComparisonCallback:
+    Callback method names must follow the on<Something> style: arePreferenceItemsTheSame
+CallbackMethodName: androidx.preference.PreferenceManager.SimplePreferenceComparisonCallback:
+    Callback method names must follow the on<Something> style: arePreferenceItemsTheSame
+
+
+ParcelConstructor: androidx.preference.Preference.BaseSavedState#BaseSavedState(android.os.Parcel):
+    Parcelable inflation is exposed through CREATOR, not raw constructors, in androidx.preference.Preference.BaseSavedState
+
+
+ParcelCreator: androidx.preference.Preference.BaseSavedState:
+    Parcelable requires `void writeToParcel(Parcel, int)`; missing in androidx.preference.Preference.BaseSavedState
+
+
+ParcelNotFinal: androidx.preference.Preference.BaseSavedState:
+    Parcelable classes must be final: androidx.preference.Preference.BaseSavedState is not final
+
+
+VisiblySynchronized: androidx.preference.PreferenceGroup#addPreference(androidx.preference.Preference):
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.preference.PreferenceGroup.addPreference(androidx.preference.Preference)
+VisiblySynchronized: androidx.preference.PreferenceGroup#removeAll():
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.preference.PreferenceGroup.removeAll()
diff --git a/preference/ktx/api/api_lint.ignore b/preference/ktx/api/api_lint.ignore
new file mode 100644
index 0000000..e006881
--- /dev/null
+++ b/preference/ktx/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+DocumentExceptions: androidx.preference.PreferenceGroupKt#iterator(androidx.preference.PreferenceGroup):
+    Method PreferenceGroupKt.iterator appears to be throwing java.lang.IndexOutOfBoundsException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
diff --git a/recyclerview/recyclerview/api/api_lint.ignore b/recyclerview/recyclerview/api/api_lint.ignore
new file mode 100644
index 0000000..7aa0720a
--- /dev/null
+++ b/recyclerview/recyclerview/api/api_lint.ignore
@@ -0,0 +1,61 @@
+// Baseline format: 1.0
+AcronymName: androidx.recyclerview.widget.ItemTouchHelper.Callback#getDefaultUIUtil():
+    Acronyms should not be capitalized in method names: was `getDefaultUIUtil`, should this be `getDefaultUiUtil`?
+AcronymName: androidx.recyclerview.widget.ItemTouchUIUtil:
+    Acronyms should not be capitalized in class names: was `ItemTouchUIUtil`, should this be `ItemTouchUiUtil`?
+AcronymName: androidx.recyclerview.widget.LinearLayoutManager#isLayoutRTL():
+    Acronyms should not be capitalized in method names: was `isLayoutRTL`, should this be `isLayoutRtl`?
+
+
+BannedThrow: androidx.recyclerview.widget.SnapHelper#attachToRecyclerView(androidx.recyclerview.widget.RecyclerView):
+    Methods must not mention RuntimeException subclasses in throws clauses (was `java.lang.IllegalStateException`)
+BannedThrow: androidx.recyclerview.widget.SortedList#get(int):
+    Methods must not mention RuntimeException subclasses in throws clauses (was `java.lang.IndexOutOfBoundsException`)
+
+
+CallbackMethodName: androidx.recyclerview.widget.AsyncListUtil.DataCallback:
+    Callback method names must follow the on<Something> style: refreshData
+CallbackMethodName: androidx.recyclerview.widget.AsyncListUtil.ViewCallback:
+    Callback method names must follow the on<Something> style: getItemRangeInto
+CallbackMethodName: androidx.recyclerview.widget.BatchingListUpdateCallback:
+    Callback method names must follow the on<Something> style: dispatchLastEvent
+CallbackMethodName: androidx.recyclerview.widget.DiffUtil.Callback:
+    Callback method names must follow the on<Something> style: getOldListSize
+CallbackMethodName: androidx.recyclerview.widget.DiffUtil.ItemCallback:
+    Callback method names must follow the on<Something> style: areItemsTheSame
+CallbackMethodName: androidx.recyclerview.widget.ItemTouchHelper.Callback:
+    Callback method names must follow the on<Something> style: getDefaultUIUtil
+CallbackMethodName: androidx.recyclerview.widget.ItemTouchHelper.SimpleCallback:
+    Callback method names must follow the on<Something> style: setDefaultSwipeDirs
+CallbackMethodName: androidx.recyclerview.widget.SortedList.BatchedCallback:
+    Callback method names must follow the on<Something> style: compare
+CallbackMethodName: androidx.recyclerview.widget.SortedList.Callback:
+    Callback method names must follow the on<Something> style: compare
+
+
+CallbackName: androidx.recyclerview.widget.RecyclerView.AdapterDataObserver:
+    Class should be named AdapterDataCallback
+
+
+ConcreteCollection: androidx.recyclerview.widget.RecyclerView#addFocusables(java.util.ArrayList<android.view.View>, int, int) parameter #0:
+    Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface
+ConcreteCollection: androidx.recyclerview.widget.RecyclerView.LayoutManager#onAddFocusables(androidx.recyclerview.widget.RecyclerView, java.util.ArrayList<android.view.View>, int, int) parameter #1:
+    Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface
+
+
+KotlinOperator: androidx.recyclerview.widget.RecyclerView.State#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.recyclerview.widget.SortedList#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+
+
+ListenerInterface: androidx.recyclerview.widget.RecyclerView.OnFlingListener:
+    Listeners should be an interface, or otherwise renamed Callback: OnFlingListener
+ListenerInterface: androidx.recyclerview.widget.RecyclerView.OnScrollListener:
+    Listeners should be an interface, or otherwise renamed Callback: OnScrollListener
+ListenerInterface: androidx.recyclerview.widget.RecyclerView.SimpleOnItemTouchListener:
+    Listeners should be an interface, or otherwise renamed Callback: SimpleOnItemTouchListener
+
+
+MethodNameUnits: androidx.recyclerview.widget.OrientationHelper#getTotalSpace():
+    Expected method name units to be `Bytes`, was `Space` in `getTotalSpace`
diff --git a/recyclerview/selection/api/api_lint.ignore b/recyclerview/selection/api/api_lint.ignore
new file mode 100644
index 0000000..1940c27
--- /dev/null
+++ b/recyclerview/selection/api/api_lint.ignore
@@ -0,0 +1,17 @@
+// Baseline format: 1.0
+AutoBoxing: androidx.recyclerview.selection.StableIdKeyProvider#getKey(int):
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.recyclerview.selection.StableIdKeyProvider#getPosition(Long) parameter #0:
+    Must avoid boxed primitives (`java.lang.Long`)
+
+
+CallbackName: androidx.recyclerview.selection.SelectionTracker.SelectionObserver:
+    Class should be named SelectionCallback
+
+
+KotlinOperator: androidx.recyclerview.selection.Selection#contains(K):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+
+
+VisiblySynchronized: androidx.recyclerview.selection.OperationMonitor#isStarted():
+    Internal locks must not be exposed: method androidx.recyclerview.selection.OperationMonitor.isStarted()
diff --git a/remotecallback/api/api_lint.ignore b/remotecallback/api/api_lint.ignore
new file mode 100644
index 0000000..9d77312
--- /dev/null
+++ b/remotecallback/api/api_lint.ignore
@@ -0,0 +1,23 @@
+// Baseline format: 1.0
+CallbackMethodName: androidx.remotecallback.RemoteCallback:
+    Callback method names must follow the on<Something> style: getType
+
+
+ContextFirst: androidx.remotecallback.RemoteCallback#create(Class<T>, android.content.Context) parameter #1:
+    Context is distinct, so it must be the first argument (method `create`)
+
+
+ContextNameSuffix: androidx.remotecallback.AppWidgetProviderWithCallbacks:
+    Inconsistent class name; should be `<Foo>Receiver`, was `AppWidgetProviderWithCallbacks`
+ContextNameSuffix: androidx.remotecallback.BroadcastReceiverWithCallbacks:
+    Inconsistent class name; should be `<Foo>Receiver`, was `BroadcastReceiverWithCallbacks`
+ContextNameSuffix: androidx.remotecallback.ContentProviderWithCallbacks:
+    Inconsistent class name; should be `<Foo>Provider`, was `ContentProviderWithCallbacks`
+
+
+SingularCallback: androidx.remotecallback.AppWidgetProviderWithCallbacks:
+    Callback class names should be singular: AppWidgetProviderWithCallbacks
+SingularCallback: androidx.remotecallback.BroadcastReceiverWithCallbacks:
+    Callback class names should be singular: BroadcastReceiverWithCallbacks
+SingularCallback: androidx.remotecallback.ContentProviderWithCallbacks:
+    Callback class names should be singular: ContentProviderWithCallbacks
diff --git a/room/common/api/api_lint.ignore b/room/common/api/api_lint.ignore
new file mode 100644
index 0000000..d34c89c2
--- /dev/null
+++ b/room/common/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+AcronymName: androidx.room.ColumnInfo.SQLiteTypeAffinity:
+    Acronyms should not be capitalized in class names: was `SQLiteTypeAffinity`, should this be `SqLiteTypeAffinity`?
diff --git a/room/runtime/api/api_lint.ignore b/room/runtime/api/api_lint.ignore
new file mode 100644
index 0000000..d491809
--- /dev/null
+++ b/room/runtime/api/api_lint.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+CallbackName: androidx.room.InvalidationTracker.Observer:
+    Class should be named Callback
+
+
+RegistrationName: androidx.room.RoomDatabase.Builder#addCallback(androidx.room.RoomDatabase.Callback):
+    Callback methods should be named register/unregister; was addCallback
diff --git a/security/crypto/api/api_lint.ignore b/security/crypto/api/api_lint.ignore
new file mode 100644
index 0000000..2635915
--- /dev/null
+++ b/security/crypto/api/api_lint.ignore
@@ -0,0 +1,15 @@
+// Baseline format: 1.0
+ContextFirst: androidx.security.crypto.EncryptedFile.Builder#Builder(java.io.File, android.content.Context, String, androidx.security.crypto.EncryptedFile.FileEncryptionScheme) parameter #1:
+    Context is distinct, so it must be the first argument (method `Builder`)
+ContextFirst: androidx.security.crypto.EncryptedSharedPreferences#create(String, String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme) parameter #2:
+    Context is distinct, so it must be the first argument (method `create`)
+
+
+KotlinOperator: androidx.security.crypto.EncryptedSharedPreferences#contains(String):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+
+
+RegistrationName: androidx.security.crypto.EncryptedSharedPreferences#registerOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener):
+    Listener methods should be named add/remove; was registerOnSharedPreferenceChangeListener
+RegistrationName: androidx.security.crypto.EncryptedSharedPreferences#unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener):
+    Listener methods should be named add/remove; was unregisterOnSharedPreferenceChangeListener
diff --git a/slices/core/api/api_lint.ignore b/slices/core/api/api_lint.ignore
new file mode 100644
index 0000000..cfd172f
--- /dev/null
+++ b/slices/core/api/api_lint.ignore
@@ -0,0 +1,15 @@
+// Baseline format: 1.0
+ActionValue: androidx.slice.Slice#EXTRA_SELECTION:
+    Inconsistent extra value; expected `androidx.slice.extra.SELECTION`, was `android.app.slice.extra.SELECTION`
+
+
+ContextFirst: androidx.slice.SliceConvert#wrap(android.app.slice.Slice, android.content.Context) parameter #1:
+    Context is distinct, so it must be the first argument (method `wrap`)
+
+
+ContextNameSuffix: androidx.slice.SliceProviderWithCallbacks:
+    Inconsistent class name; should be `<Foo>Provider`, was `SliceProviderWithCallbacks`
+
+
+SingularCallback: androidx.slice.SliceProviderWithCallbacks:
+    Callback class names should be singular: SliceProviderWithCallbacks
diff --git a/slices/view/api/api_lint.ignore b/slices/view/api/api_lint.ignore
new file mode 100644
index 0000000..7e7ad54
--- /dev/null
+++ b/slices/view/api/api_lint.ignore
@@ -0,0 +1,9 @@
+// Baseline format: 1.0
+BannedThrow: androidx.slice.SliceUtils#serializeSlice(androidx.slice.Slice, android.content.Context, java.io.OutputStream, androidx.slice.SliceUtils.SerializeOptions):
+    Methods must not mention RuntimeException subclasses in throws clauses (was `java.lang.IllegalArgumentException`)
+
+
+ContextFirst: androidx.slice.SliceUtils#serializeSlice(androidx.slice.Slice, android.content.Context, java.io.OutputStream, androidx.slice.SliceUtils.SerializeOptions) parameter #1:
+    Context is distinct, so it must be the first argument (method `serializeSlice`)
+ContextFirst: androidx.slice.SliceUtils.SliceActionListener#onSliceAction(android.net.Uri, android.content.Context, android.content.Intent) parameter #1:
+    Context is distinct, so it must be the first argument (method `onSliceAction`)
diff --git a/slidingpanelayout/api/api_lint.ignore b/slidingpanelayout/api/api_lint.ignore
new file mode 100644
index 0000000..0c6e84a
--- /dev/null
+++ b/slidingpanelayout/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+ListenerInterface: androidx.slidingpanelayout.widget.SlidingPaneLayout.SimplePanelSlideListener:
+    Listeners should be an interface, or otherwise renamed Callback: SimplePanelSlideListener
diff --git a/sqlite/sqlite-framework/api/api_lint.ignore b/sqlite/sqlite-framework/api/api_lint.ignore
new file mode 100644
index 0000000..e498b61
--- /dev/null
+++ b/sqlite/sqlite-framework/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+AcronymName: androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory:
+    Acronyms should not be capitalized in class names: was `FrameworkSQLiteOpenHelperFactory`, should this be `FrameworkSqLiteOpenHelperFactory`?
diff --git a/sqlite/sqlite-ktx/api/api_lint.ignore b/sqlite/sqlite-ktx/api/api_lint.ignore
new file mode 100644
index 0000000..3948bf5
--- /dev/null
+++ b/sqlite/sqlite-ktx/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+AcronymName: androidx.sqlite.db.SupportSQLiteDatabaseKt:
+    Acronyms should not be capitalized in class names: was `SupportSQLiteDatabaseKt`, should this be `SupportSqLiteDatabaseKt`?
diff --git a/sqlite/sqlite/api/api_lint.ignore b/sqlite/sqlite/api/api_lint.ignore
new file mode 100644
index 0000000..81bb000
--- /dev/null
+++ b/sqlite/sqlite/api/api_lint.ignore
@@ -0,0 +1,19 @@
+// Baseline format: 1.0
+AcronymName: androidx.sqlite.db.SimpleSQLiteQuery:
+    Acronyms should not be capitalized in class names: was `SimpleSQLiteQuery`, should this be `SimpleSqLiteQuery`?
+AcronymName: androidx.sqlite.db.SupportSQLiteDatabase:
+    Acronyms should not be capitalized in class names: was `SupportSQLiteDatabase`, should this be `SupportSqLiteDatabase`?
+AcronymName: androidx.sqlite.db.SupportSQLiteDatabase#execSQL(String):
+    Acronyms should not be capitalized in method names: was `execSQL`, should this be `execSql`?
+AcronymName: androidx.sqlite.db.SupportSQLiteDatabase#execSQL(String, Object[]):
+    Acronyms should not be capitalized in method names: was `execSQL`, should this be `execSql`?
+AcronymName: androidx.sqlite.db.SupportSQLiteOpenHelper:
+    Acronyms should not be capitalized in class names: was `SupportSQLiteOpenHelper`, should this be `SupportSqLiteOpenHelper`?
+AcronymName: androidx.sqlite.db.SupportSQLiteProgram:
+    Acronyms should not be capitalized in class names: was `SupportSQLiteProgram`, should this be `SupportSqLiteProgram`?
+AcronymName: androidx.sqlite.db.SupportSQLiteQuery:
+    Acronyms should not be capitalized in class names: was `SupportSQLiteQuery`, should this be `SupportSqLiteQuery`?
+AcronymName: androidx.sqlite.db.SupportSQLiteQueryBuilder:
+    Acronyms should not be capitalized in class names: was `SupportSQLiteQueryBuilder`, should this be `SupportSqLiteQueryBuilder`?
+AcronymName: androidx.sqlite.db.SupportSQLiteStatement:
+    Acronyms should not be capitalized in class names: was `SupportSQLiteStatement`, should this be `SupportSqLiteStatement`?
diff --git a/textclassifier/api/api_lint.ignore b/textclassifier/api/api_lint.ignore
new file mode 100644
index 0000000..235b2b8
--- /dev/null
+++ b/textclassifier/api/api_lint.ignore
@@ -0,0 +1,15 @@
+// Baseline format: 1.0
+AutoBoxing: androidx.textclassifier.ConversationActions.Message#getReferenceTime():
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.textclassifier.ConversationActions.Message.Builder#setReferenceTime(Long) parameter #0:
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.textclassifier.TextClassification.Request#getReferenceTime():
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.textclassifier.TextClassification.Request.Builder#setReferenceTime(Long) parameter #0:
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.textclassifier.TextLinks.Request#getReferenceTime():
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.textclassifier.TextLinks.Request.Builder#setReferenceTime(Long) parameter #0:
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.textclassifier.TextLinksParams.Builder#setReferenceTime(Long) parameter #0:
+    Must avoid boxed primitives (`java.lang.Long`)
diff --git a/transition/api/api_lint.ignore b/transition/api/api_lint.ignore
new file mode 100644
index 0000000..0a7434f
--- /dev/null
+++ b/transition/api/api_lint.ignore
@@ -0,0 +1,9 @@
+// Baseline format: 1.0
+ContextFirst: androidx.transition.Scene#getSceneForLayout(android.view.ViewGroup, int, android.content.Context) parameter #2:
+    Context is distinct, so it must be the first argument (method `getSceneForLayout`)
+
+
+NoClone: androidx.transition.Transition#clone():
+    Provide an explicit copy constructor instead of implementing `clone()`
+NoClone: androidx.transition.TransitionSet#clone():
+    Provide an explicit copy constructor instead of implementing `clone()`
diff --git a/tv-provider/api/api_lint.ignore b/tv-provider/api/api_lint.ignore
new file mode 100644
index 0000000..dcf4d5f
--- /dev/null
+++ b/tv-provider/api/api_lint.ignore
@@ -0,0 +1,51 @@
+// Baseline format: 1.0
+ActionValue: androidx.tvprovider.media.tv.TvContractCompat#ACTION_INITIALIZE_PROGRAMS:
+    Inconsistent action value; expected `androidx.tvprovider.media.tv.action.INITIALIZE_PROGRAMS`, was `android.media.tv.action.INITIALIZE_PROGRAMS`
+ActionValue: androidx.tvprovider.media.tv.TvContractCompat#ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT:
+    Inconsistent action value; expected `androidx.tvprovider.media.tv.action.PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT`, was `android.media.tv.action.PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT`
+ActionValue: androidx.tvprovider.media.tv.TvContractCompat#ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED:
+    Inconsistent action value; expected `androidx.tvprovider.media.tv.action.PREVIEW_PROGRAM_BROWSABLE_DISABLED`, was `android.media.tv.action.PREVIEW_PROGRAM_BROWSABLE_DISABLED`
+ActionValue: androidx.tvprovider.media.tv.TvContractCompat#ACTION_REQUEST_CHANNEL_BROWSABLE:
+    Inconsistent action value; expected `androidx.tvprovider.media.tv.action.REQUEST_CHANNEL_BROWSABLE`, was `android.media.tv.action.REQUEST_CHANNEL_BROWSABLE`
+ActionValue: androidx.tvprovider.media.tv.TvContractCompat#ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED:
+    Inconsistent action value; expected `androidx.tvprovider.media.tv.action.WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED`, was `android.media.tv.action.WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED`
+ActionValue: androidx.tvprovider.media.tv.TvContractCompat#EXTRA_CHANNEL_ID:
+    Inconsistent extra value; expected `androidx.tvprovider.media.tv.extra.CHANNEL_ID`, was `android.media.tv.extra.CHANNEL_ID`
+ActionValue: androidx.tvprovider.media.tv.TvContractCompat#EXTRA_PREVIEW_PROGRAM_ID:
+    Inconsistent extra value; expected `androidx.tvprovider.media.tv.extra.PREVIEW_PROGRAM_ID`, was `android.media.tv.extra.PREVIEW_PROGRAM_ID`
+ActionValue: androidx.tvprovider.media.tv.TvContractCompat#EXTRA_WATCH_NEXT_PROGRAM_ID:
+    Inconsistent extra value; expected `androidx.tvprovider.media.tv.extra.WATCH_NEXT_PROGRAM_ID`, was `android.media.tv.extra.WATCH_NEXT_PROGRAM_ID`
+
+
+AutoBoxing: androidx.tvprovider.media.tv.Channel#getInternalProviderFlag1():
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.tvprovider.media.tv.Channel#getInternalProviderFlag2():
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.tvprovider.media.tv.Channel#getInternalProviderFlag3():
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.tvprovider.media.tv.Channel#getInternalProviderFlag4():
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.tvprovider.media.tv.PreviewChannel#getInternalProviderFlag1():
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.tvprovider.media.tv.PreviewChannel#getInternalProviderFlag2():
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.tvprovider.media.tv.PreviewChannel#getInternalProviderFlag3():
+    Must avoid boxed primitives (`java.lang.Long`)
+AutoBoxing: androidx.tvprovider.media.tv.PreviewChannel#getInternalProviderFlag4():
+    Must avoid boxed primitives (`java.lang.Long`)
+
+
+EqualsAndHashCode: androidx.tvprovider.media.tv.PreviewProgram#equals(Object):
+    Must override both equals and hashCode; missing one in androidx.tvprovider.media.tv.PreviewProgram
+EqualsAndHashCode: androidx.tvprovider.media.tv.WatchNextProgram#equals(Object):
+    Must override both equals and hashCode; missing one in androidx.tvprovider.media.tv.WatchNextProgram
+
+
+IntentName: androidx.tvprovider.media.tv.TvContractCompat.PreviewPrograms#COLUMN_INTERACTION_COUNT:
+    Intent action constant name must be ACTION_FOO: COLUMN_INTERACTION_COUNT
+IntentName: androidx.tvprovider.media.tv.TvContractCompat.PreviewPrograms#COLUMN_INTERACTION_TYPE:
+    Intent action constant name must be ACTION_FOO: COLUMN_INTERACTION_TYPE
+IntentName: androidx.tvprovider.media.tv.TvContractCompat.WatchNextPrograms#COLUMN_INTERACTION_COUNT:
+    Intent action constant name must be ACTION_FOO: COLUMN_INTERACTION_COUNT
+IntentName: androidx.tvprovider.media.tv.TvContractCompat.WatchNextPrograms#COLUMN_INTERACTION_TYPE:
+    Intent action constant name must be ACTION_FOO: COLUMN_INTERACTION_TYPE
diff --git a/ui/core/api/api_lint.ignore b/ui/core/api/api_lint.ignore
new file mode 100644
index 0000000..bfdb136
--- /dev/null
+++ b/ui/core/api/api_lint.ignore
@@ -0,0 +1,537 @@
+// Baseline format: 1.0
+AcronymName: androidx.ui.core.Dp#div-KkBJKWw(float):
+    Acronyms should not be capitalized in method names: was `div-KkBJKWw`, should this be `div-KkBjkWw`?
+AcronymName: androidx.ui.core.Dp#times-KkBJKWw(float):
+    Acronyms should not be capitalized in method names: was `times-KkBJKWw`, should this be `times-KkBjkWw`?
+AcronymName: androidx.ui.core.DpCubed#div-KkBJKWw(float, float):
+    Acronyms should not be capitalized in method names: was `div-KkBJKWw`, should this be `div-KkBjkWw`?
+AcronymName: androidx.ui.core.DpInverse#compareTo-ASDJgtI(float, float):
+    Acronyms should not be capitalized in method names: was `compareTo-ASDJgtI`, should this be `compareTo-AsdJgtI`?
+AcronymName: androidx.ui.core.DpInverse#minus-ASDJgtI(float, float):
+    Acronyms should not be capitalized in method names: was `minus-ASDJgtI`, should this be `minus-AsdJgtI`?
+AcronymName: androidx.ui.core.DpInverse#plus-ASDJgtI(float, float):
+    Acronyms should not be capitalized in method names: was `plus-ASDJgtI`, should this be `plus-AsdJgtI`?
+AcronymName: androidx.ui.core.DpInverse#times-KkBJKWw(float, float):
+    Acronyms should not be capitalized in method names: was `times-KkBJKWw`, should this be `times-KkBjkWw`?
+AcronymName: androidx.ui.core.DpSquared#compareTo-KkBJKWw(float, float):
+    Acronyms should not be capitalized in method names: was `compareTo-KkBJKWw`, should this be `compareTo-KkBjkWw`?
+AcronymName: androidx.ui.core.DpSquared#div-KkBJKWw(float, float):
+    Acronyms should not be capitalized in method names: was `div-KkBJKWw`, should this be `div-KkBjkWw`?
+AcronymName: androidx.ui.core.DpSquared#minus-KkBJKWw(float, float):
+    Acronyms should not be capitalized in method names: was `minus-KkBJKWw`, should this be `minus-KkBjkWw`?
+AcronymName: androidx.ui.core.DpSquared#plus-KkBJKWw(float, float):
+    Acronyms should not be capitalized in method names: was `plus-KkBJKWw`, should this be `plus-KkBjkWw`?
+AcronymName: androidx.ui.core.Px#div-kVJEwbQ(float):
+    Acronyms should not be capitalized in method names: was `div-kVJEwbQ`, should this be `div-kVjEwbQ`?
+AcronymName: androidx.ui.core.Px#times-kVJEwbQ(float):
+    Acronyms should not be capitalized in method names: was `times-kVJEwbQ`, should this be `times-kVjEwbQ`?
+AcronymName: androidx.ui.core.PxCubed#div-kVJEwbQ(float, float):
+    Acronyms should not be capitalized in method names: was `div-kVJEwbQ`, should this be `div-kVjEwbQ`?
+AcronymName: androidx.ui.core.PxInverse#compareTo-MXEAIGs(float, float):
+    Acronyms should not be capitalized in method names: was `compareTo-MXEAIGs`, should this be `compareTo-MxeaiGs`?
+AcronymName: androidx.ui.core.PxInverse#minus-MXEAIGs(float, float):
+    Acronyms should not be capitalized in method names: was `minus-MXEAIGs`, should this be `minus-MxeaiGs`?
+AcronymName: androidx.ui.core.PxInverse#plus-MXEAIGs(float, float):
+    Acronyms should not be capitalized in method names: was `plus-MXEAIGs`, should this be `plus-MxeaiGs`?
+AcronymName: androidx.ui.core.PxInverse#times-kVJEwbQ(float, float):
+    Acronyms should not be capitalized in method names: was `times-kVJEwbQ`, should this be `times-kVjEwbQ`?
+AcronymName: androidx.ui.core.PxSquared#compareTo-kVJEwbQ(float, float):
+    Acronyms should not be capitalized in method names: was `compareTo-kVJEwbQ`, should this be `compareTo-kVjEwbQ`?
+AcronymName: androidx.ui.core.PxSquared#div-kVJEwbQ(float, float):
+    Acronyms should not be capitalized in method names: was `div-kVJEwbQ`, should this be `div-kVjEwbQ`?
+AcronymName: androidx.ui.core.PxSquared#minus-kVJEwbQ(float, float):
+    Acronyms should not be capitalized in method names: was `minus-kVJEwbQ`, should this be `minus-kVjEwbQ`?
+AcronymName: androidx.ui.core.PxSquared#plus-kVJEwbQ(float, float):
+    Acronyms should not be capitalized in method names: was `plus-kVJEwbQ`, should this be `plus-kVjEwbQ`?
+AcronymName: androidx.ui.engine.geometry.Rect.Companion#fromLTRB(float, float, float, float):
+    Acronyms should not be capitalized in method names: was `fromLTRB`, should this be `fromLtrb`?
+AcronymName: androidx.ui.engine.geometry.Rect.Companion#fromLTWH(float, float, float, float):
+    Acronyms should not be capitalized in method names: was `fromLTWH`, should this be `fromLtwh`?
+AcronymName: androidx.ui.painting.Canvas#drawDRRect(androidx.ui.engine.geometry.RRect, androidx.ui.engine.geometry.RRect, androidx.ui.painting.Paint):
+    Acronyms should not be capitalized in method names: was `drawDRRect`, should this be `drawDrRect`?
+
+
+AutoBoxing: androidx.ui.vectormath64.Matrix4#scale(Object, Float, Float) parameter #1:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.vectormath64.Matrix4#scale(Object, Float, Float) parameter #2:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.vectormath64.Matrix4Kt#getAsScale(androidx.ui.vectormath64.Matrix4):
+    Must avoid boxed primitives (`java.lang.Float`)
+
+
+DocumentExceptions: androidx.ui.graphics.ColorKt#Color(float, float, float, float, androidx.ui.graphics.ColorSpace):
+    Method ColorKt.Color appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.painting.Path#arcToPoint(androidx.ui.engine.geometry.Offset, androidx.ui.engine.geometry.Radius, float, boolean, boolean):
+    Method Path.arcToPoint appears to be throwing java.lang.UnsupportedOperationException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.painting.Path#conicTo(float, float, float, float, float):
+    Method Path.conicTo appears to be throwing java.lang.UnsupportedOperationException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.painting.Path#relativeConicTo(float, float, float, float, float):
+    Method Path.relativeConicTo appears to be throwing java.lang.UnsupportedOperationException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.painting.Path.Companion#combine(androidx.ui.painting.PathOperation, androidx.ui.painting.Path, androidx.ui.painting.Path):
+    Method Companion.combine appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Matrix2#get(androidx.ui.vectormath64.MatrixColumn):
+    Method Matrix2.get appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Matrix2#get(int):
+    Method Matrix2.get appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Matrix3#get(androidx.ui.vectormath64.MatrixColumn):
+    Method Matrix3.get appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Matrix3#get(int):
+    Method Matrix3.get appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Matrix4#get(int):
+    Method Matrix4.get appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Vector2#get(androidx.ui.vectormath64.VectorComponent):
+    Method Vector2.get appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Vector2#get(int):
+    Method Vector2.get appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Vector2#set(androidx.ui.vectormath64.VectorComponent, float):
+    Method Vector2.set appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Vector2#set(int, float):
+    Method Vector2.set appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Vector3#get(androidx.ui.vectormath64.VectorComponent):
+    Method Vector3.get appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Vector3#get(int):
+    Method Vector3.get appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Vector3#set(androidx.ui.vectormath64.VectorComponent, float):
+    Method Vector3.set appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Vector3#set(int, float):
+    Method Vector3.set appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Vector4#get(int):
+    Method Vector4.get appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.vectormath64.Vector4#set(int, float):
+    Method Vector4.set appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+
+
+EndsWithImpl: androidx.ui.core.DensityReceiverImpl:
+    Don't expose your implementation details: `DensityReceiverImpl` ends with `Impl`
+
+
+KotlinOperator: androidx.ui.core.Dp#div(androidx.ui.core.Dp):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Dp#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Dp#div(int):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Dp#minus(androidx.ui.core.Dp):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Dp#plus(androidx.ui.core.Dp):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Dp#times(androidx.ui.core.Dp):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Dp#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Dp#times(int):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Dp#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Duration#div(double):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Duration#div(int):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Duration#minus(androidx.ui.core.Duration):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Duration#plus(androidx.ui.core.Duration):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Duration#plus(androidx.ui.core.Timestamp):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Duration#times(double):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Duration#times(int):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPx#div(double):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPx#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPx#div(int):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPx#minus(androidx.ui.core.IntPx):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPx#plus(androidx.ui.core.IntPx):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPx#times(double):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPx#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPx#times(int):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPx#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPxPosition#minus(androidx.ui.core.IntPxPosition):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.IntPxPosition#plus(androidx.ui.core.IntPxPosition):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Position#minus(androidx.ui.core.Position):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Position#plus(androidx.ui.core.Position):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#div(androidx.ui.core.Px):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#div(int):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#minus(androidx.ui.core.IntPx):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#minus(androidx.ui.core.Px):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#plus(androidx.ui.core.IntPx):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#plus(androidx.ui.core.Px):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#times(androidx.ui.core.Px):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#times(int):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Px#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.PxPosition#minus(androidx.ui.core.IntPxPosition):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.PxPosition#minus(androidx.ui.core.PxPosition):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.PxPosition#plus(androidx.ui.core.IntPxPosition):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.PxPosition#plus(androidx.ui.core.PxPosition):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.PxPosition#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Sp#div(androidx.ui.core.Sp):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Sp#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Sp#div(int):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Sp#minus(androidx.ui.core.Sp):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Sp#plus(androidx.ui.core.Sp):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Sp#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Sp#times(int):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Sp#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.TextRange#contains(androidx.ui.core.TextRange):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.TextRange#contains(int):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Timestamp#minus(androidx.ui.core.Duration):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Timestamp#minus(androidx.ui.core.Timestamp):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Timestamp#plus(androidx.ui.core.Duration):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.core.Velocity#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Offset#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Offset#minus(androidx.ui.engine.geometry.Offset):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Offset#plus(androidx.ui.engine.geometry.Offset):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Offset#rem(float):
+    Method can be invoked as a binary operator from Kotlin: `rem` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Offset#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Offset#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.RRect#contains(androidx.ui.engine.geometry.Offset):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Radius#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Radius#minus(androidx.ui.engine.geometry.Radius):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Radius#plus(androidx.ui.engine.geometry.Radius):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Radius#rem(float):
+    Method can be invoked as a binary operator from Kotlin: `rem` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Radius#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Radius#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Rect#contains(androidx.ui.engine.geometry.Offset):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Size#contains(androidx.ui.engine.geometry.Offset):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Size#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Size#minus(androidx.ui.engine.geometry.Offset):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Size#minus(androidx.ui.engine.geometry.Size):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Size#plus(androidx.ui.engine.geometry.Offset):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Size#rem(float):
+    Method can be invoked as a binary operator from Kotlin: `rem` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.geometry.Size#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.graphics.ColorSpace.Companion#get(androidx.ui.graphics.ColorSpace.Named):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.painting.Path#contains(androidx.ui.engine.geometry.Offset):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#dec():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `dec` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#get(androidx.ui.vectormath64.MatrixColumn):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#get(androidx.ui.vectormath64.MatrixColumn, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#get(int, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#inc():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `inc` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#minus(float):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#plus(float):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#set(int, androidx.ui.vectormath64.Vector2):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#set(int, int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#times(androidx.ui.vectormath64.Matrix2):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#times(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix2#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#dec():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `dec` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#get(androidx.ui.vectormath64.MatrixColumn):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#get(androidx.ui.vectormath64.MatrixColumn, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#get(int, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#inc():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `inc` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#minus(float):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#plus(float):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#set(int, androidx.ui.vectormath64.Vector3):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#set(int, int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#times(androidx.ui.vectormath64.Matrix3):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#times(androidx.ui.vectormath64.Vector3):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix3#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#dec():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `dec` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#get(androidx.ui.vectormath64.MatrixColumn):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#get(androidx.ui.vectormath64.MatrixColumn, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#get(int, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#inc():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `inc` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#minus(float):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#plus(float):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#set(int, androidx.ui.vectormath64.Vector4):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#set(int, int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#times(androidx.ui.vectormath64.Matrix4):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#times(androidx.ui.vectormath64.Vector4):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#timesAssign(androidx.ui.vectormath64.Matrix4):
+    Method can be invoked as a compound assignment operator from Kotlin: `timesAssign` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Matrix4#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#dec():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `dec` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#div(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#get(androidx.ui.vectormath64.VectorComponent):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#get(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#get(int, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#inc():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `inc` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#minus(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#minus(float):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#plus(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#plus(float):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#set(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#set(androidx.ui.vectormath64.VectorComponent, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#set(int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#set(int, int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#times(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector2#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#dec():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `dec` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#div(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#div(androidx.ui.vectormath64.Vector3):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#get(androidx.ui.vectormath64.VectorComponent):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#get(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#get(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#get(int, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#get(int, int, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#inc():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `inc` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#minus(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#minus(androidx.ui.vectormath64.Vector3):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#minus(float):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#plus(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#plus(androidx.ui.vectormath64.Vector3):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#plus(float):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#set(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#set(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#set(androidx.ui.vectormath64.VectorComponent, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#set(int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#set(int, int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#set(int, int, int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#times(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#times(androidx.ui.vectormath64.Vector3):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector3#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#dec():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `dec` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#div(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#div(androidx.ui.vectormath64.Vector3):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#div(androidx.ui.vectormath64.Vector4):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#get(androidx.ui.vectormath64.VectorComponent):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#get(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#get(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#get(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#get(int, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#get(int, int, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#get(int, int, int, int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#inc():
+    Method can be invoked as a pre/postfix inc/decrement operator from Kotlin: `inc` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#minus(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#minus(androidx.ui.vectormath64.Vector3):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#minus(androidx.ui.vectormath64.Vector4):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#minus(float):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#plus(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#plus(androidx.ui.vectormath64.Vector3):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#plus(androidx.ui.vectormath64.Vector4):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#plus(float):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#set(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#set(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#set(androidx.ui.vectormath64.VectorComponent, androidx.ui.vectormath64.VectorComponent, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#set(androidx.ui.vectormath64.VectorComponent, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#set(int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#set(int, int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#set(int, int, int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#set(int, int, int, int, float):
+    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#times(androidx.ui.vectormath64.Vector2):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#times(androidx.ui.vectormath64.Vector3):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#times(androidx.ui.vectormath64.Vector4):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.vectormath64.Vector4#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+
+
+MethodNameUnits: androidx.ui.core.Durations#inSeconds(androidx.ui.core.Duration):
+    Returned time values must be in milliseconds, was `inSeconds`
+
+
+UniqueKotlinOperator: androidx.ui.vectormath64.Matrix4#times(androidx.ui.vectormath64.Matrix4):
+    Only one of `times` and `timesAssign` methods should be present for Kotlin
+UniqueKotlinOperator: androidx.ui.vectormath64.Matrix4#times(androidx.ui.vectormath64.Vector4):
+    Only one of `times` and `timesAssign` methods should be present for Kotlin
+UniqueKotlinOperator: androidx.ui.vectormath64.Matrix4#times(float):
+    Only one of `times` and `timesAssign` methods should be present for Kotlin
diff --git a/ui/framework/api/api_lint.ignore b/ui/framework/api/api_lint.ignore
new file mode 100644
index 0000000..5d1586d
--- /dev/null
+++ b/ui/framework/api/api_lint.ignore
@@ -0,0 +1,25 @@
+// Baseline format: 1.0
+AutoBoxing: androidx.ui.core.TextKt#Text(String, androidx.ui.painting.TextStyle, androidx.ui.painting.ParagraphStyle, boolean, androidx.ui.rendering.paragraph.TextOverflow, Integer) parameter #5:
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.ui.core.TextKt#Text(androidx.ui.painting.AnnotatedString, androidx.ui.painting.TextStyle, androidx.ui.painting.ParagraphStyle, boolean, androidx.ui.rendering.paragraph.TextOverflow, float, Integer, androidx.ui.graphics.Color) parameter #6:
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.ui.core.TextKt#Text(androidx.ui.painting.ParagraphStyle, boolean, androidx.ui.rendering.paragraph.TextOverflow, float, Integer, androidx.ui.graphics.Color, kotlin.jvm.functions.Function1<? super androidx.ui.core.TextSpanScope,kotlin.Unit>) parameter #4:
+    Must avoid boxed primitives (`java.lang.Integer`)
+
+
+BannedThrow: androidx.ui.core.vectorgraphics.PathCommandKt#toPathCommand(char):
+    Methods must not mention RuntimeException subclasses in throws clauses (was `java.lang.IllegalArgumentException`)
+BannedThrow: androidx.ui.core.vectorgraphics.PathParser#parsePathString(String):
+    Methods must not mention RuntimeException subclasses in throws clauses (was `java.lang.IllegalArgumentException`)
+
+
+CallbackName: androidx.ui.core.gesture.DragObserver:
+    Class should be named DragCallback
+
+
+DocumentExceptions: androidx.ui.core.vectorgraphics.BrushKt#obtainBrush(Object):
+    Method BrushKt.obtainBrush appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+
+
+KotlinOperator: androidx.ui.core.LayoutReceiver#get(java.util.List<? extends androidx.ui.core.Measurable>, kotlin.jvm.functions.Function0<kotlin.Unit>):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
diff --git a/ui/layout/api/api_lint.ignore b/ui/layout/api/api_lint.ignore
new file mode 100644
index 0000000..e1bb2f7
--- /dev/null
+++ b/ui/layout/api/api_lint.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+DocumentExceptions: androidx.ui.layout.FlexChildren#expanded(float, kotlin.jvm.functions.Function0<kotlin.Unit>):
+    Method FlexChildren.expanded appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.layout.FlexChildren#flexible(float, kotlin.jvm.functions.Function0<kotlin.Unit>):
+    Method FlexChildren.flexible appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.layout.ScrollerKt#VerticalScroller(androidx.ui.layout.ScrollerPosition, kotlin.jvm.functions.Function2<? super androidx.ui.core.Px,? super androidx.ui.core.Px,kotlin.Unit>, kotlin.jvm.functions.Function0<kotlin.Unit>):
+    Method ScrollerKt.VerticalScroller appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
diff --git a/ui/material/api/api_lint.ignore b/ui/material/api/api_lint.ignore
new file mode 100644
index 0000000..e5bfe7a
--- /dev/null
+++ b/ui/material/api/api_lint.ignore
@@ -0,0 +1,29 @@
+// Baseline format: 1.0
+DocumentExceptions: androidx.ui.baseui.DeterminateProgressIndicatorKt#DeterminateProgressIndicator(float, kotlin.jvm.functions.Function0<kotlin.Unit>):
+    Method DeterminateProgressIndicatorKt.DeterminateProgressIndicator appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.baseui.shape.corner.CornerSizeKt#CornerSize(float):
+    Method CornerSizeKt.CornerSize appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+
+
+KotlinOperator: androidx.ui.material.borders.BorderRadius#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.material.borders.BorderRadius#minus(androidx.ui.material.borders.BorderRadiusGeometry):
+    Method can be invoked as a binary operator from Kotlin: `minus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.material.borders.BorderRadius#plus(androidx.ui.material.borders.BorderRadius):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.material.borders.BorderRadius#rem(float):
+    Method can be invoked as a binary operator from Kotlin: `rem` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.material.borders.BorderRadius#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.material.borders.BorderRadius#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.material.borders.BorderRadiusGeometry#div(float):
+    Method can be invoked as a binary operator from Kotlin: `div` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.material.borders.BorderRadiusGeometry#rem(float):
+    Method can be invoked as a binary operator from Kotlin: `rem` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.material.borders.BorderRadiusGeometry#times(float):
+    Method can be invoked as a binary operator from Kotlin: `times` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.material.borders.BorderRadiusGeometry#unaryMinus():
+    Method can be invoked as a unary operator from Kotlin: `unaryMinus` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.material.borders.ShapeBorder#plus(androidx.ui.material.borders.ShapeBorder):
+    Method can be invoked as a binary operator from Kotlin: `plus` (this is usually desirable; just make sure it makes sense for this type of object)
diff --git a/ui/platform/api/api_lint.ignore b/ui/platform/api/api_lint.ignore
new file mode 100644
index 0000000..9bcd6f7
--- /dev/null
+++ b/ui/platform/api/api_lint.ignore
@@ -0,0 +1,27 @@
+// Baseline format: 1.0
+AutoBoxing: androidx.ui.core.semantics.SemanticsConfiguration#getScrollExtentMax():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.core.semantics.SemanticsConfiguration#getScrollExtentMin():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.core.semantics.SemanticsConfiguration#getScrollPosition():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.core.semantics.SemanticsConfiguration#setScrollExtentMax(Float) parameter #0:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.core.semantics.SemanticsConfiguration#setScrollExtentMin(Float) parameter #0:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.core.semantics.SemanticsConfiguration#setScrollPosition(Float) parameter #0:
+    Must avoid boxed primitives (`java.lang.Float`)
+
+
+DocumentExceptions: androidx.ui.core.AndroidCraneView#onAttach(androidx.ui.core.ComponentNode):
+    Method AndroidCraneView.onAttach appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.core.ComponentNodesKt#childToLocal(androidx.ui.core.LayoutNode, androidx.ui.core.LayoutNode, androidx.ui.core.PxPosition):
+    Method ComponentNodesKt.childToLocal appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+
+
+EndsWithImpl: androidx.ui.core.SemanticsTreeNodeImpl:
+    Don't expose your implementation details: `SemanticsTreeNodeImpl` ends with `Impl`
+
+
+KotlinOperator: androidx.ui.core.ComponentNode#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
diff --git a/ui/test/api/api_lint.ignore b/ui/test/api/api_lint.ignore
new file mode 100644
index 0000000..8fd9fca
--- /dev/null
+++ b/ui/test/api/api_lint.ignore
@@ -0,0 +1,15 @@
+// Baseline format: 1.0
+DocumentExceptions: androidx.ui.test.ActionsKt#doClick(androidx.ui.test.SemanticsNodeInteraction):
+    Method ActionsKt.doClick appears to be throwing java.lang.AssertionError; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.test.AssertionsKt#assertCountEquals(java.util.List<androidx.ui.test.SemanticsNodeInteraction>, int):
+    Method AssertionsKt.assertCountEquals appears to be throwing java.lang.AssertionError; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.test.AssertionsKt#assertNoLongerExists(androidx.ui.test.SemanticsNodeInteraction):
+    Method AssertionsKt.assertNoLongerExists appears to be throwing java.lang.AssertionError; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.test.AssertionsKt#assertStillExists(androidx.ui.test.SemanticsNodeInteraction):
+    Method AssertionsKt.assertStillExists appears to be throwing java.lang.AssertionError; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.ui.test.GoldenSemanticsKt#assertEquals(androidx.ui.core.semantics.SemanticsConfiguration, androidx.ui.core.semantics.SemanticsConfiguration):
+    Method GoldenSemanticsKt.assertEquals appears to be throwing java.lang.AssertionError; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+
+
+ForbiddenSuperClass: androidx.ui.test.android.DefaultTestActivity:
+    DefaultTestActivity should not extend `Activity`. Activity subclasses are impossible to compose. Expose a composable API instead.
diff --git a/ui/text/api/api_lint.ignore b/ui/text/api/api_lint.ignore
new file mode 100644
index 0000000..227f2fb
--- /dev/null
+++ b/ui/text/api/api_lint.ignore
@@ -0,0 +1,137 @@
+// Baseline format: 1.0
+AcronymName: androidx.ui.engine.text.TextBox.Companion#fromLTRBD(float, float, float, float, androidx.ui.engine.text.TextDirection):
+    Acronyms should not be capitalized in method names: was `fromLTRBD`, should this be `fromLtrbd`?
+AcronymName: androidx.ui.engine.text.TextIndent.Companion#getNONE():
+    Acronyms should not be capitalized in method names: was `getNONE`, should this be `getNone`?
+
+
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#ParagraphStyle(androidx.ui.engine.text.TextAlign, androidx.ui.engine.text.TextDirection, androidx.ui.engine.text.TextIndent, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, Integer, androidx.ui.engine.text.font.FontFamily, Float, androidx.ui.engine.text.FontSynthesis, Boolean, androidx.ui.engine.window.Locale) parameter #3:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#ParagraphStyle(androidx.ui.engine.text.TextAlign, androidx.ui.engine.text.TextDirection, androidx.ui.engine.text.TextIndent, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, Integer, androidx.ui.engine.text.font.FontFamily, Float, androidx.ui.engine.text.FontSynthesis, Boolean, androidx.ui.engine.window.Locale) parameter #6:
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#ParagraphStyle(androidx.ui.engine.text.TextAlign, androidx.ui.engine.text.TextDirection, androidx.ui.engine.text.TextIndent, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, Integer, androidx.ui.engine.text.font.FontFamily, Float, androidx.ui.engine.text.FontSynthesis, Boolean, androidx.ui.engine.window.Locale) parameter #8:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#component4():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#component7():
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#component9():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#copy(androidx.ui.engine.text.TextAlign, androidx.ui.engine.text.TextDirection, androidx.ui.engine.text.TextIndent, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, Integer, androidx.ui.engine.text.font.FontFamily, Float, androidx.ui.engine.text.FontSynthesis, Boolean, androidx.ui.engine.window.Locale) parameter #3:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#copy(androidx.ui.engine.text.TextAlign, androidx.ui.engine.text.TextDirection, androidx.ui.engine.text.TextIndent, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, Integer, androidx.ui.engine.text.font.FontFamily, Float, androidx.ui.engine.text.FontSynthesis, Boolean, androidx.ui.engine.window.Locale) parameter #6:
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#copy(androidx.ui.engine.text.TextAlign, androidx.ui.engine.text.TextDirection, androidx.ui.engine.text.TextIndent, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, Integer, androidx.ui.engine.text.font.FontFamily, Float, androidx.ui.engine.text.FontSynthesis, Boolean, androidx.ui.engine.window.Locale) parameter #8:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#getFontSize():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#getLineHeight():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.ParagraphStyle#getMaxLines():
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.ui.engine.text.TextGeometricTransform#TextGeometricTransform(Float, Float) parameter #0:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextGeometricTransform#TextGeometricTransform(Float, Float) parameter #1:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextGeometricTransform#component1():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextGeometricTransform#component2():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextGeometricTransform#copy(Float, Float) parameter #0:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextGeometricTransform#copy(Float, Float) parameter #1:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextGeometricTransform#getScaleX():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextGeometricTransform#getSkewX():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#TextStyle(androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.font.FontFamily, Float, Float, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.FontSynthesis, androidx.ui.painting.Shadow) parameter #5:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#TextStyle(androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.font.FontFamily, Float, Float, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.FontSynthesis, androidx.ui.painting.Shadow) parameter #6:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#TextStyle(androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.font.FontFamily, Float, Float, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.FontSynthesis, androidx.ui.painting.Shadow) parameter #8:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#TextStyle(androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.font.FontFamily, Float, Float, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.FontSynthesis, androidx.ui.painting.Shadow) parameter #9:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#component10():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#component6():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#component7():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#component9():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#copy(androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.font.FontFamily, Float, Float, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.FontSynthesis, androidx.ui.painting.Shadow) parameter #5:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#copy(androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.font.FontFamily, Float, Float, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.FontSynthesis, androidx.ui.painting.Shadow) parameter #6:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#copy(androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.font.FontFamily, Float, Float, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.FontSynthesis, androidx.ui.painting.Shadow) parameter #8:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#copy(androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.font.FontFamily, Float, Float, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.FontSynthesis, androidx.ui.painting.Shadow) parameter #9:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#getFontSize():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#getFontSizeScale():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#getLetterSpacing():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.engine.text.TextStyle#getWordSpacing():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.ParagraphStyle#ParagraphStyle(androidx.ui.engine.text.TextAlign, androidx.ui.engine.text.TextDirection, Float, androidx.ui.engine.text.TextIndent) parameter #2:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.ParagraphStyle#component3():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.ParagraphStyle#copy(androidx.ui.engine.text.TextAlign, androidx.ui.engine.text.TextDirection, Float, androidx.ui.engine.text.TextIndent) parameter #2:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.ParagraphStyle#getLineHeight():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextPainter#TextPainter(androidx.ui.painting.AnnotatedString, androidx.ui.painting.TextStyle, androidx.ui.painting.ParagraphStyle, float, Integer, boolean, androidx.ui.rendering.paragraph.TextOverflow, androidx.ui.engine.window.Locale) parameter #4:
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.ui.painting.TextStyle#TextStyle(androidx.ui.graphics.Color, Float, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.FontSynthesis, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.font.FontFamily, androidx.ui.painting.Shadow, String) parameter #1:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#TextStyle(androidx.ui.graphics.Color, Float, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.FontSynthesis, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.font.FontFamily, androidx.ui.painting.Shadow, String) parameter #2:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#TextStyle(androidx.ui.graphics.Color, Float, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.FontSynthesis, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.font.FontFamily, androidx.ui.painting.Shadow, String) parameter #7:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#TextStyle(androidx.ui.graphics.Color, Float, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.FontSynthesis, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.font.FontFamily, androidx.ui.painting.Shadow, String) parameter #8:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#component2():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#component3():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#component8():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#component9():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#copy(androidx.ui.graphics.Color, Float, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.FontSynthesis, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.font.FontFamily, androidx.ui.painting.Shadow, String) parameter #1:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#copy(androidx.ui.graphics.Color, Float, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.FontSynthesis, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.font.FontFamily, androidx.ui.painting.Shadow, String) parameter #2:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#copy(androidx.ui.graphics.Color, Float, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.FontSynthesis, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.font.FontFamily, androidx.ui.painting.Shadow, String) parameter #7:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#copy(androidx.ui.graphics.Color, Float, Float, androidx.ui.engine.text.FontWeight, androidx.ui.engine.text.FontStyle, androidx.ui.engine.text.FontSynthesis, String, Float, Float, androidx.ui.engine.text.BaselineShift, androidx.ui.engine.text.TextGeometricTransform, androidx.ui.engine.window.Locale, androidx.ui.graphics.Color, androidx.ui.engine.text.TextDecoration, androidx.ui.engine.text.font.FontFamily, androidx.ui.painting.Shadow, String) parameter #8:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#getFontSize():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#getFontSizeScale():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#getLetterSpacing():
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#getParagraphStyle(androidx.ui.engine.text.TextAlign, androidx.ui.engine.text.TextDirection, androidx.ui.engine.text.TextIndent, Float, float, Boolean, Integer, androidx.ui.engine.window.Locale) parameter #3:
+    Must avoid boxed primitives (`java.lang.Float`)
+AutoBoxing: androidx.ui.painting.TextStyle#getParagraphStyle(androidx.ui.engine.text.TextAlign, androidx.ui.engine.text.TextDirection, androidx.ui.engine.text.TextIndent, Float, float, Boolean, Integer, androidx.ui.engine.window.Locale) parameter #6:
+    Must avoid boxed primitives (`java.lang.Integer`)
+AutoBoxing: androidx.ui.painting.TextStyle#getWordSpacing():
+    Must avoid boxed primitives (`java.lang.Float`)
+
+
+KotlinOperator: androidx.ui.engine.text.TextDecoration#contains(androidx.ui.engine.text.TextDecoration):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.text.font.FontFamily#contains(androidx.ui.engine.text.font.Font):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.text.font.FontFamily#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.text.font.FontFamilyList#contains(androidx.ui.engine.text.font.FontFamily):
+    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
+KotlinOperator: androidx.ui.engine.text.font.FontFamilyList#get(int):
+    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
diff --git a/viewpager/api/api_lint.ignore b/viewpager/api/api_lint.ignore
new file mode 100644
index 0000000..9a70682
--- /dev/null
+++ b/viewpager/api/api_lint.ignore
@@ -0,0 +1,21 @@
+// Baseline format: 1.0
+ConcreteCollection: androidx.viewpager.widget.ViewPager#addFocusables(java.util.ArrayList<android.view.View>, int, int) parameter #0:
+    Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface
+ConcreteCollection: androidx.viewpager.widget.ViewPager#addTouchables(java.util.ArrayList<android.view.View>) parameter #0:
+    Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface
+
+
+ListenerInterface: androidx.viewpager.widget.ViewPager.SimpleOnPageChangeListener:
+    Listeners should be an interface, or otherwise renamed Callback: SimpleOnPageChangeListener
+
+
+ParcelCreator: androidx.viewpager.widget.ViewPager.SavedState:
+    Parcelable requires `public int describeContents()`; missing in androidx.viewpager.widget.ViewPager.SavedState
+
+
+ParcelNotFinal: androidx.viewpager.widget.ViewPager.SavedState:
+    Parcelable classes must be final: androidx.viewpager.widget.ViewPager.SavedState is not final
+
+
+VisiblySynchronized: androidx.viewpager.widget.PagerAdapter#notifyDataSetChanged():
+    Internal locks must not be exposed (synchronizing on this or class is still externally observable): method androidx.viewpager.widget.PagerAdapter.notifyDataSetChanged()
diff --git a/wear/api/api_lint.ignore b/wear/api/api_lint.ignore
new file mode 100644
index 0000000..6af38c4
--- /dev/null
+++ b/wear/api/api_lint.ignore
@@ -0,0 +1,33 @@
+// Baseline format: 1.0
+AcronymName: androidx.wear.widget.CurvingLayoutCallback#adjustAnchorOffsetXY(android.view.View, float[]):
+    Acronyms should not be capitalized in method names: was `adjustAnchorOffsetXY`, should this be `adjustAnchorOffsetXy`?
+
+
+ActionValue: androidx.wear.ambient.AmbientMode#EXTRA_BURN_IN_PROTECTION:
+    Inconsistent extra value; expected `androidx.wear.ambient.extra.BURN_IN_PROTECTION`, was `com.google.android.wearable.compat.extra.BURN_IN_PROTECTION`
+ActionValue: androidx.wear.ambient.AmbientMode#EXTRA_LOWBIT_AMBIENT:
+    Inconsistent extra value; expected `androidx.wear.ambient.extra.LOWBIT_AMBIENT`, was `com.google.android.wearable.compat.extra.LOWBIT_AMBIENT`
+ActionValue: androidx.wear.ambient.AmbientModeSupport#EXTRA_BURN_IN_PROTECTION:
+    Inconsistent extra value; expected `androidx.wear.ambient.extra.BURN_IN_PROTECTION`, was `com.google.android.wearable.compat.extra.BURN_IN_PROTECTION`
+ActionValue: androidx.wear.ambient.AmbientModeSupport#EXTRA_LOWBIT_AMBIENT:
+    Inconsistent extra value; expected `androidx.wear.ambient.extra.LOWBIT_AMBIENT`, was `com.google.android.wearable.compat.extra.LOWBIT_AMBIENT`
+
+
+CallbackMethodName: androidx.wear.widget.CurvingLayoutCallback:
+    Callback method names must follow the on<Something> style: adjustAnchorOffsetXY
+
+
+ForbiddenSuperClass: androidx.wear.activity.ConfirmationActivity:
+    ConfirmationActivity should not extend `Activity`. Activity subclasses are impossible to compose. Expose a composable API instead.
+
+
+NoClone: androidx.wear.ambient.AmbientMode#dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.wear.ambient.AmbientMode.dump(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+NoClone: androidx.wear.ambient.AmbientModeSupport#dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    Must use ParcelFileDescriptor instead of FileDescriptor in parameter fd in androidx.wear.ambient.AmbientModeSupport.dump(String prefix, java.io.FileDescriptor fd, java.io.PrintWriter writer, String[] args)
+
+
+RegistrationName: androidx.wear.widget.SwipeDismissFrameLayout#addCallback(androidx.wear.widget.SwipeDismissFrameLayout.Callback):
+    Callback methods should be named register/unregister; was addCallback
+RegistrationName: androidx.wear.widget.SwipeDismissFrameLayout#removeCallback(androidx.wear.widget.SwipeDismissFrameLayout.Callback):
+    Callback methods should be named register/unregister; was removeCallback
diff --git a/webkit/api/api_lint.ignore b/webkit/api/api_lint.ignore
new file mode 100644
index 0000000..992ae35
--- /dev/null
+++ b/webkit/api/api_lint.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+IntentName: androidx.webkit.WebViewFeature#DISABLED_ACTION_MODE_MENU_ITEMS:
+    Intent action constant name must be ACTION_FOO: DISABLED_ACTION_MODE_MENU_ITEMS
diff --git a/work/workmanager/api/api_lint.ignore b/work/workmanager/api/api_lint.ignore
new file mode 100644
index 0000000..cc73c5c
--- /dev/null
+++ b/work/workmanager/api/api_lint.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+AcronymName: androidx.work.Operation.State.FAILURE:
+    Acronyms should not be capitalized in class names: was `FAILURE`, should this be `Failure`?
+AcronymName: androidx.work.Operation.State.IN_PROGRESS:
+    Acronyms should not be capitalized in class names: was `IN_PROGRESS`, should this be `InProgress`?
+AcronymName: androidx.work.Operation.State.SUCCESS:
+    Acronyms should not be capitalized in class names: was `SUCCESS`, should this be `Success`?