[go: nahoru, domu]

Merge "Added support for showing the header divider for slice view" into androidx-master-dev
diff --git a/.gitignore b/.gitignore
index a19466e..b05f45d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,7 +22,7 @@
 buildSrc/build
 lifecycle/common/build
 jacoco.exec
-studio/
+/studio
 
 # When Gradle configuration fails with the --profile option enabled it creates this folder.
 /reports
diff --git a/appcompat/build.gradle b/appcompat/build.gradle
index 01605e42..a672c0c 100644
--- a/appcompat/build.gradle
+++ b/appcompat/build.gradle
@@ -26,7 +26,6 @@
     androidTestImplementation project(':internal-testutils'), {
         exclude group: 'androidx.appcompat', module: 'appcompat'
     }
-    androidTestImplementation(GUAVA_LISTENABLE_FUTURE_AVOID_CONFLICT)
 }
 
 android {
diff --git a/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatTextViewTest.java b/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatTextViewTest.java
index 8bb5944..2ee01c7 100644
--- a/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatTextViewTest.java
+++ b/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatTextViewTest.java
@@ -632,6 +632,8 @@
         });
     }
 
+    /*
+    TODO(nona): Re-enable this test case (http://b/120038752).
     @Test
     public void testSetTextAsync_directionDifference() throws Throwable {
         mActivity.runOnUiThread(new Runnable() {
@@ -646,6 +648,7 @@
             }
         });
     }
+    */
 
     @Test
     public void testSetTextAsync_createAndAttach() throws Throwable {
diff --git a/buildSrc/build_dependencies.gradle b/buildSrc/build_dependencies.gradle
index 74cbd52..c24edf0 100644
--- a/buildSrc/build_dependencies.gradle
+++ b/buildSrc/build_dependencies.gradle
@@ -30,7 +30,7 @@
     logger.warn("USING OVERRIDDEN ANDROID GRADLE PLUGIN DEPENDENCY OF " + build_libs.gradle)
 } else {
     // Keep gradle plugin version in sync with ub_supportlib-master manifest.
-    build_libs.gradle = 'com.android.tools.build:gradle:3.2.1-SNAPSHOT'
+    build_libs.gradle = 'com.android.tools.build:gradle:3.3.0-rc01'
 }
 
 build_libs.error_prone_gradle = 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.13'
diff --git a/buildSrc/init.gradle b/buildSrc/init.gradle
index 6de67cf..516bd79 100644
--- a/buildSrc/init.gradle
+++ b/buildSrc/init.gradle
@@ -87,7 +87,7 @@
                             archiveName "${project.name}-${v.baseName}-allclasses.jar"
                         }
 
-                        jarifyTask.dependsOn v.getJavaCompiler()
+                        jarifyTask.dependsOn v.getJavaCompileProvider()
                         v.assemble.dependsOn jarifyTask
                     }
                 }
diff --git a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
index c6e6dd5..87a0b6d 100644
--- a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
@@ -17,7 +17,8 @@
 package androidx.build
 
 import androidx.build.SupportConfig.BUILD_TOOLS_VERSION
-import androidx.build.SupportConfig.CURRENT_SDK_VERSION
+import androidx.build.SupportConfig.COMPILE_SDK_VERSION
+import androidx.build.SupportConfig.TARGET_SDK_VERSION
 import androidx.build.SupportConfig.DEFAULT_MIN_SDK_VERSION
 import androidx.build.SupportConfig.INSTRUMENTATION_RUNNER
 import androidx.build.dependencyTracker.AffectedModuleDetector
@@ -177,11 +178,11 @@
     }
 
     private fun Project.configureAndroidCommonOptions(extension: BaseExtension) {
-        extension.compileSdkVersion(CURRENT_SDK_VERSION)
+        extension.compileSdkVersion(COMPILE_SDK_VERSION)
         extension.buildToolsVersion = BUILD_TOOLS_VERSION
         // Expose the compilation SDK for use as the target SDK in test manifests.
         extension.defaultConfig.addManifestPlaceholders(
-                mapOf("target-sdk-version" to CURRENT_SDK_VERSION))
+                mapOf("target-sdk-version" to TARGET_SDK_VERSION))
 
         extension.defaultConfig.testInstrumentationRunner = INSTRUMENTATION_RUNNER
         extension.testOptions.unitTests.isReturnDefaultValues = true
@@ -271,7 +272,7 @@
 
     private fun Project.configureAndroidApplicationOptions(extension: AppExtension) {
         extension.defaultConfig.apply {
-            targetSdkVersion(CURRENT_SDK_VERSION)
+            targetSdkVersion(TARGET_SDK_VERSION)
 
             versionCode = 1
             versionName = "1.0"
diff --git a/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt b/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt
index 266eed7..60d8669 100644
--- a/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt
@@ -43,6 +43,7 @@
 import org.gradle.api.tasks.bundling.Zip
 import org.gradle.api.tasks.compile.JavaCompile
 import org.gradle.api.tasks.javadoc.Javadoc
+import org.gradle.api.tasks.util.PatternSet
 import java.io.File
 import java.net.URLClassLoader
 import java.time.LocalDateTime
@@ -477,7 +478,8 @@
             setDocletpath(doclavaConfig.resolve())
             destinationDir = project.docsDir()
             classpath = androidJarFile(project)
-            source(project.zipTree(androidSrcJarFile(project)))
+            source(project.zipTree(androidSrcJarFile(project))
+                .matching(PatternSet().include("**/*.java")))
             exclude("**/overview.html") // TODO https://issuetracker.google.com/issues/116699307
             apiFile = sdkApiFile(project)
             generateDocs = false
@@ -565,10 +567,10 @@
 
 fun androidJarFile(project: Project): FileCollection =
         project.files(arrayOf(File(project.sdkPath(),
-                "platforms/android-${SupportConfig.CURRENT_SDK_VERSION}/android.jar")))
+                "platforms/${SupportConfig.COMPILE_SDK_VERSION}/android.jar")))
 
 private fun androidSrcJarFile(project: Project): File = File(project.sdkPath(),
-        "platforms/android-${SupportConfig.CURRENT_SDK_VERSION}/android-stubs-src.jar")
+        "platforms/${SupportConfig.COMPILE_SDK_VERSION}/android-stubs-src.jar")
 
 private fun PublishDocsRules.resolve(extension: SupportLibraryExtension): DocsRule? {
     val mavenGroup = extension.mavenGroup
diff --git a/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt b/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
index bbd9a74..3d155b3 100644
--- a/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
@@ -88,6 +88,7 @@
     prebuilts(LibraryGroups.WEAR, "1.0.0")
             .addStubs("wear/wear_stubs/com.google.android.wearable-stubs.jar")
     prebuilts(LibraryGroups.WEBKIT, "1.0.0")
+    ignore(LibraryGroups.ROOM, "room-coroutines") // TODO(danysantiago): Land on prebuilts
     prebuilts(LibraryGroups.ROOM, "2.1.0-alpha01")
     prebuilts(LibraryGroups.PERSISTENCE, "2.0.0")
     ignore(LibraryGroups.LIFECYCLE, "lifecycle-savedstate-core")
diff --git a/buildSrc/src/main/kotlin/androidx/build/SupportAndroidLibraryPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/SupportAndroidLibraryPlugin.kt
index 1ec69b7..ffe92d3 100644
--- a/buildSrc/src/main/kotlin/androidx/build/SupportAndroidLibraryPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/SupportAndroidLibraryPlugin.kt
@@ -22,6 +22,7 @@
 import com.android.build.gradle.LibraryPlugin
 import org.gradle.api.Plugin
 import org.gradle.api.Project
+import org.gradle.api.artifacts.ComponentModuleMetadataDetails
 import org.gradle.api.logging.LogLevel
 import org.gradle.api.plugins.JavaBasePlugin
 import org.gradle.kotlin.dsl.apply
@@ -41,6 +42,12 @@
         project.setupVersion(supportLibraryExtension)
         project.configureMavenArtifactUpload(supportLibraryExtension)
 
+        // Workaround for concurrentfuture
+        project.dependencies.modules.module("com.google.guava:listenablefuture") {
+            (it as ComponentModuleMetadataDetails).replacedBy(
+                "com.google.guava:guava", "guava contains listenablefuture")
+        }
+
         project.afterEvaluate {
             if (supportLibraryExtension.publish) {
                 project.extra.set("publish", true)
diff --git a/buildSrc/src/main/kotlin/androidx/build/SupportConfig.kt b/buildSrc/src/main/kotlin/androidx/build/SupportConfig.kt
index 2dc35ef..5a45ac0 100644
--- a/buildSrc/src/main/kotlin/androidx/build/SupportConfig.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/SupportConfig.kt
@@ -24,7 +24,23 @@
     const val DEFAULT_MIN_SDK_VERSION = 14
     const val INSTRUMENTATION_RUNNER = "androidx.test.runner.AndroidJUnitRunner"
     const val BUILD_TOOLS_VERSION = "28.0.3"
-    const val CURRENT_SDK_VERSION = 28
+
+    /**
+     * The Android SDK version to use for compilation.
+     *
+     * Either an integer value or a pre-release platform code, prefixed with "android-" (ex.
+     * "android-28" or "android-Q") as you would see within the SDK's platforms directory.
+     */
+    const val COMPILE_SDK_VERSION = "android-28"
+
+    /**
+     * The Android SDK version to use for targetSdkVersion meta-data.
+     *
+     * Either an integer value (ex. 28), a pre-release platform code (ex. "Q") as you would see
+     * within the SDK's platforms directory as android-<version>, or a released platform version
+     * code as you would see within Build.VERSIONS.VERSION_CODE (ex. "HONEYCOMB" or "P").
+     */
+    const val TARGET_SDK_VERSION = "28"
 
     fun getKeystore(project: Project): File {
         val supportRoot = (project.rootProject.property("ext") as ExtraPropertiesExtension)
diff --git a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
index ccdbb42..e5b72a5 100644
--- a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
@@ -33,8 +33,6 @@
 const val GUAVA = "com.google.guava:guava:23.5-jre"
 const val GUAVA_ANDROID = "com.google.guava:guava:23.6-android"
 const val GUAVA_LISTENABLE_FUTURE = "com.google.guava:listenablefuture:1.0"
-const val GUAVA_LISTENABLE_FUTURE_AVOID_CONFLICT =
-        "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava"
 const val INTELLIJ_ANNOTATIONS = "com.intellij:annotations:12.0"
 const val JAVAPOET = "com.squareup:javapoet:1.8.0"
 const val JSR250 = "javax.annotation:javax.annotation-api:1.2"
@@ -47,7 +45,7 @@
 const val NULLAWAY = "com.uber.nullaway:nullaway:0.3.7"
 const val REACTIVE_STREAMS = "org.reactivestreams:reactive-streams:1.0.0"
 const val RX_JAVA = "io.reactivex.rxjava2:rxjava:2.0.6"
-const val TEST_CORE = "androidx.test:core:1.0.0"
+const val TEST_CORE = "androidx.test:core:1.1.0-alpha01"
 const val TEST_RUNNER = "androidx.test:runner:1.1.0"
 const val TEST_RULES = "androidx.test:rules:1.1.0"
 const val TEST_EXT_JUNIT = "androidx.test.ext:junit:1.0.0"
@@ -61,7 +59,7 @@
 const val XPP3 = "xpp3:xpp3:1.1.4c"
 const val XMLPULL = "xmlpull:xmlpull:1.1.3.1"
 
-private const val NAV_SUPPORT_VERSION = "27.1.1"
+private const val NAV_SUPPORT_VERSION = "28.0.0"
 const val NAV_SUPPORT_COMPAT = "com.android.support:support-compat:$NAV_SUPPORT_VERSION"
 const val NAV_SUPPORT_CORE_UTILS = "com.android.support:support-core-utils:$NAV_SUPPORT_VERSION"
 const val NAV_SUPPORT_DESIGN = "com.android.support:design:$NAV_SUPPORT_VERSION"
diff --git a/concurrent/futures/src/test/java/androidx/concurrent/futures/CallbackToFutureAdapterTest.java b/concurrent/futures/src/test/java/androidx/concurrent/futures/CallbackToFutureAdapterTest.java
index b0ea6eb..8e8148c 100644
--- a/concurrent/futures/src/test/java/androidx/concurrent/futures/CallbackToFutureAdapterTest.java
+++ b/concurrent/futures/src/test/java/androidx/concurrent/futures/CallbackToFutureAdapterTest.java
@@ -81,7 +81,7 @@
         assertThat(t).isEqualTo(t);
     }
 
-    @Test
+    // Temporarily disabled due to b/120236209.
     public void testGcedCallback() throws Exception {
         AtomicBoolean wasCalled = new AtomicBoolean();
         ListenableFuture<String> future = exampleLeakyCallbackAdapter(wasCalled);
diff --git a/core/ktx/build.gradle b/core/ktx/build.gradle
index 0d3473e..781a82e 100644
--- a/core/ktx/build.gradle
+++ b/core/ktx/build.gradle
@@ -25,7 +25,6 @@
     androidTestImplementation(TEST_RULES)
     androidTestImplementation(TRUTH)
     androidTestImplementation(project(":internal-testutils-ktx"))
-    androidTestImplementation(GUAVA_LISTENABLE_FUTURE_AVOID_CONFLICT)
 }
 
 supportLibrary {
diff --git a/development/studio/studio.vmoptions b/development/studio/studio.vmoptions
new file mode 100644
index 0000000..ae65e63
--- /dev/null
+++ b/development/studio/studio.vmoptions
@@ -0,0 +1 @@
+-Xmx8g
diff --git a/docs-fake/build.gradle b/docs-fake/build.gradle
index 685a75c..4750de6 100644
--- a/docs-fake/build.gradle
+++ b/docs-fake/build.gradle
@@ -36,7 +36,7 @@
 
 android {
     defaultConfig {
-        minSdkVersion SupportConfig.CURRENT_SDK_VERSION
+        minSdkVersion SupportConfig.COMPILE_SDK_VERSION
         javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = false
     }
 
diff --git a/dynamic-animation/ktx/build.gradle b/dynamic-animation/ktx/build.gradle
index 95c9d3e..2a2e6cb 100644
--- a/dynamic-animation/ktx/build.gradle
+++ b/dynamic-animation/ktx/build.gradle
@@ -42,7 +42,6 @@
     androidTestImplementation(TEST_RUNNER)
     androidTestImplementation(TEST_RULES)
     androidTestImplementation(TRUTH)
-    androidTestImplementation(GUAVA_LISTENABLE_FUTURE_AVOID_CONFLICT)
 }
 
 supportLibrary {
diff --git a/fragment/api/1.1.0-alpha03.txt b/fragment/api/1.1.0-alpha03.txt
index 0e4cde9..dd5f2a0 100644
--- a/fragment/api/1.1.0-alpha03.txt
+++ b/fragment/api/1.1.0-alpha03.txt
@@ -115,6 +115,7 @@
     method public final android.content.Context requireContext();
     method public final androidx.fragment.app.FragmentManager requireFragmentManager();
     method public final Object requireHost();
+    method public final android.view.View requireView();
     method public void setAllowEnterTransitionOverlap(boolean);
     method public void setAllowReturnTransitionOverlap(boolean);
     method public void setArguments(android.os.Bundle?);
diff --git a/fragment/api/current.txt b/fragment/api/current.txt
index 0e4cde9..dd5f2a0 100644
--- a/fragment/api/current.txt
+++ b/fragment/api/current.txt
@@ -115,6 +115,7 @@
     method public final android.content.Context requireContext();
     method public final androidx.fragment.app.FragmentManager requireFragmentManager();
     method public final Object requireHost();
+    method public final android.view.View requireView();
     method public void setAllowEnterTransitionOverlap(boolean);
     method public void setAllowReturnTransitionOverlap(boolean);
     method public void setArguments(android.os.Bundle?);
diff --git a/fragment/build.gradle b/fragment/build.gradle
index d49e056..d6cdd5a 100644
--- a/fragment/build.gradle
+++ b/fragment/build.gradle
@@ -31,7 +31,6 @@
     androidTestImplementation project(':internal-testutils'), {
         exclude group: 'androidx.fragment', module: 'fragment'
     }
-    androidTestImplementation(GUAVA_LISTENABLE_FUTURE_AVOID_CONFLICT)
 }
 
 supportLibrary {
diff --git a/fragment/ktx/build.gradle b/fragment/ktx/build.gradle
index afe98c1..feffd87 100644
--- a/fragment/ktx/build.gradle
+++ b/fragment/ktx/build.gradle
@@ -41,7 +41,6 @@
     androidTestImplementation(TRUTH)
     androidTestImplementation(TEST_RUNNER)
     androidTestImplementation(TEST_RULES)
-    androidTestImplementation(GUAVA_LISTENABLE_FUTURE_AVOID_CONFLICT)
 }
 
 supportLibrary {
diff --git a/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimationTest.java b/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimationTest.java
index 1f66403..0f1f4cd 100644
--- a/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimationTest.java
+++ b/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimationTest.java
@@ -450,7 +450,7 @@
                 .commit();
         FragmentTestUtil.waitForExecution(mActivityRule);
 
-        final View fragmentView = fragment1.getView();
+        final View fragmentView = fragment1.requireView();
 
         final TranslateAnimation xAnimation = new TranslateAnimation(0, 1000, 0, 0);
         mActivityRule.runOnUiThread(new Runnable() {
@@ -569,8 +569,8 @@
     private void assertPostponed(AnimatorFragment fragment, int expectedAnimators)
             throws InterruptedException {
         assertTrue(fragment.mOnCreateViewCalled);
-        assertEquals(View.VISIBLE, fragment.getView().getVisibility());
-        assertEquals(0f, fragment.getView().getAlpha(), 0f);
+        assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
+        assertEquals(0f, fragment.requireView().getAlpha(), 0f);
         assertEquals(expectedAnimators, fragment.numAnimators);
     }
 
diff --git a/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimatorTest.java b/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimatorTest.java
index ec1a2a7..4c08a34 100644
--- a/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimatorTest.java
+++ b/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimatorTest.java
@@ -126,7 +126,7 @@
         mActivityRule.runOnUiThread(new Runnable() {
             @Override
             public void run() {
-                assertEquals(View.GONE, fragment.getView().getVisibility());
+                assertEquals(View.GONE, fragment.requireView().getVisibility());
 
             }
         });
@@ -141,7 +141,7 @@
         mActivityRule.runOnUiThread(new Runnable() {
             @Override
             public void run() {
-                assertEquals(View.VISIBLE, fragment.getView().getVisibility());
+                assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
             }
         });
 
@@ -150,7 +150,7 @@
         mActivityRule.runOnUiThread(new Runnable() {
             @Override
             public void run() {
-                assertEquals(View.GONE, fragment.getView().getVisibility());
+                assertEquals(View.GONE, fragment.requireView().getVisibility());
             }
         });
     }
@@ -173,7 +173,7 @@
         mActivityRule.runOnUiThread(new Runnable() {
             @Override
             public void run() {
-                assertEquals(View.GONE, fragment.getView().getVisibility());
+                assertEquals(View.GONE, fragment.requireView().getVisibility());
 
             }
         });
@@ -189,7 +189,7 @@
         mActivityRule.runOnUiThread(new Runnable() {
             @Override
             public void run() {
-                assertEquals(View.VISIBLE, fragment.getView().getVisibility());
+                assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
             }
         });
 
@@ -198,7 +198,7 @@
         mActivityRule.runOnUiThread(new Runnable() {
             @Override
             public void run() {
-                assertEquals(View.GONE, fragment.getView().getVisibility());
+                assertEquals(View.GONE, fragment.requireView().getVisibility());
             }
         });
     }
@@ -547,8 +547,8 @@
     private void assertPostponed(AnimatorFragment fragment, int expectedAnimators)
             throws InterruptedException {
         assertTrue(fragment.mOnCreateViewCalled);
-        assertEquals(View.VISIBLE, fragment.getView().getVisibility());
-        assertEquals(0f, fragment.getView().getAlpha(), 0f);
+        assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
+        assertEquals(0f, fragment.requireView().getAlpha(), 0f);
         assertEquals(expectedAnimators, fragment.numAnimators);
     }
 
diff --git a/fragment/src/androidTest/java/androidx/fragment/app/FragmentLifecycleTest.java b/fragment/src/androidTest/java/androidx/fragment/app/FragmentLifecycleTest.java
index e4efc72..4e665a2 100644
--- a/fragment/src/androidTest/java/androidx/fragment/app/FragmentLifecycleTest.java
+++ b/fragment/src/androidTest/java/androidx/fragment/app/FragmentLifecycleTest.java
@@ -17,6 +17,7 @@
 
 package androidx.fragment.app;
 
+import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
 import static org.junit.Assert.assertEquals;
@@ -53,6 +54,7 @@
 import androidx.fragment.app.test.EmptyFragmentTestActivity;
 import androidx.fragment.app.test.FragmentTestActivity;
 import androidx.fragment.test.R;
+import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.ViewModelStore;
 import androidx.lifecycle.ViewModelStoreOwner;
 import androidx.test.InstrumentationRegistry;
@@ -92,6 +94,9 @@
         assertTrue("fragment is not added", strictFragment.isAdded());
         assertFalse("fragment is detached", strictFragment.isDetached());
         assertTrue("fragment is not resumed", strictFragment.isResumed());
+        Lifecycle lifecycle = strictFragment.getLifecycle();
+        assertThat(lifecycle.getCurrentState())
+                .isEqualTo(Lifecycle.State.RESUMED);
 
         // Test removal as well; StrictFragment will throw here too.
         fm.beginTransaction().remove(strictFragment).commit();
@@ -99,6 +104,12 @@
 
         assertFalse("fragment is added", strictFragment.isAdded());
         assertFalse("fragment is resumed", strictFragment.isResumed());
+        assertThat(lifecycle.getCurrentState())
+                .isEqualTo(Lifecycle.State.DESTROYED);
+        // Once removed, a new Lifecycle should be created just in case
+        // the developer reuses the same Fragment
+        assertThat(strictFragment.getLifecycle().getCurrentState())
+                .isEqualTo(Lifecycle.State.INITIALIZED);
 
         // This one is perhaps counterintuitive; "detached" means specifically detached
         // but still managed by a FragmentManager. The .remove call above
diff --git a/fragment/src/androidTest/java/androidx/fragment/app/FragmentReorderingTest.java b/fragment/src/androidTest/java/androidx/fragment/app/FragmentReorderingTest.java
index b2890d57..6516ae6 100644
--- a/fragment/src/androidTest/java/androidx/fragment/app/FragmentReorderingTest.java
+++ b/fragment/src/androidTest/java/androidx/fragment/app/FragmentReorderingTest.java
@@ -676,7 +676,7 @@
                 .setReorderingAllowed(true)
                 .commit();
         mFM.executePendingTransactions();
-        final View editText = fragment2.getView().findViewById(R.id.editText);
+        final View editText = fragment2.requireView().findViewById(R.id.editText);
         assertTrue(editText.isFocused());
         assertFalse(firstEditText.isFocused());
     }
diff --git a/fragment/src/androidTest/java/androidx/fragment/app/FragmentTest.java b/fragment/src/androidTest/java/androidx/fragment/app/FragmentTest.java
index 7864152..a507679 100644
--- a/fragment/src/androidTest/java/androidx/fragment/app/FragmentTest.java
+++ b/fragment/src/androidTest/java/androidx/fragment/app/FragmentTest.java
@@ -15,6 +15,8 @@
  */
 package androidx.fragment.app;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
@@ -69,6 +71,31 @@
     @SmallTest
     @UiThreadTest
     @Test
+    public void testRequireView() {
+        StrictViewFragment fragment1 = new StrictViewFragment();
+        mActivity.getSupportFragmentManager()
+                .beginTransaction()
+                .add(R.id.content, fragment1)
+                .commitNow();
+        assertThat(fragment1.requireView())
+                .isNotNull();
+    }
+
+    @SmallTest
+    @UiThreadTest
+    @Test(expected = IllegalStateException.class)
+    public void testRequireViewWithoutView() {
+        StrictFragment fragment1 = new StrictFragment();
+        mActivity.getSupportFragmentManager()
+                .beginTransaction()
+                .add(fragment1, "fragment")
+                .commitNow();
+        fragment1.requireView();
+    }
+
+    @SmallTest
+    @UiThreadTest
+    @Test
     public void testOnCreateOrder() throws Throwable {
         OrderFragment fragment1 = new OrderFragment();
         OrderFragment fragment2 = new OrderFragment();
@@ -135,7 +162,7 @@
         if (fragment.getView() == null) {
             FragmentTestUtil.waitForExecution(mActivityRule);
         }
-        final View view = fragment.getView();
+        final View view = fragment.requireView();
         final Animation animation = view.getAnimation();
         if (animation == null || animation.hasEnded()) {
             // animation has already completed
@@ -207,6 +234,11 @@
         } catch (IllegalStateException expected) {
         }
         try {
+            fragment.requireView();
+            fail();
+        } catch (IllegalStateException expected) {
+        }
+        try {
             fragment.requireFragmentManager();
             fail();
         } catch (IllegalStateException expected) {
diff --git a/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransactionTest.java b/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransactionTest.java
index b951403..d095bff 100644
--- a/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransactionTest.java
+++ b/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransactionTest.java
@@ -267,19 +267,6 @@
         assertFalse("runOnCommit runnable for back stack transaction was run", ran[0]);
     }
 
-    /**
-     * Test to ensure that when onBackPressed() is received that there is no crash.
-     */
-    @Test
-    @UiThreadTest
-    public void crashOnBackPressed() {
-        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
-        Bundle outState = new Bundle();
-        FragmentTestActivity activity = mActivityRule.getActivity();
-        instrumentation.callActivityOnSaveInstanceState(activity, outState);
-        activity.onBackPressed();
-    }
-
     // Ensure that getFragments() works during transactions, even if it is run off thread
     @Test
     public void getFragmentsOffThread() throws Throwable {
diff --git a/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransitionTest.java b/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransitionTest.java
index b6c8562..aab49d6 100644
--- a/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransitionTest.java
+++ b/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransitionTest.java
@@ -552,7 +552,7 @@
         final View endGreen = findViewById(fragment2, R.id.greenSquare);
         final View endBlue = findViewById(fragment2, R.id.blueSquare);
 
-        assertEquals(View.GONE, fragment1.getView().getVisibility());
+        assertEquals(View.GONE, fragment1.requireView().getVisibility());
         assertEquals(View.VISIBLE, startGreen.getVisibility());
         assertEquals(View.VISIBLE, startBlue.getVisibility());
 
@@ -571,7 +571,7 @@
         verifyAndClearTransition(fragment1.reenterTransition, null, startGreen, startBlue);
         verifyNoOtherTransitions(fragment1);
 
-        assertEquals(View.VISIBLE, fragment1.getView().getVisibility());
+        assertEquals(View.VISIBLE, fragment1.requireView().getVisibility());
         assertEquals(View.VISIBLE, startGreen.getVisibility());
         assertEquals(View.VISIBLE, startBlue.getVisibility());
 
@@ -856,7 +856,7 @@
     }
 
     private View findViewById(Fragment fragment, int id) {
-        return fragment.getView().findViewById(id);
+        return fragment.requireView().findViewById(id);
     }
 
     private View findGreen() {
diff --git a/fragment/src/androidTest/java/androidx/fragment/app/FragmentViewTests.java b/fragment/src/androidTest/java/androidx/fragment/app/FragmentViewTests.java
index 4547a4d..d958e39 100644
--- a/fragment/src/androidTest/java/androidx/fragment/app/FragmentViewTests.java
+++ b/fragment/src/androidTest/java/androidx/fragment/app/FragmentViewTests.java
@@ -258,7 +258,7 @@
         final Fragment replacement1 = fm.findFragmentByTag("1");
         FragmentTestUtil.assertChildren(container, replacement1);
         assertTrue(replacement1.isHidden());
-        assertEquals(View.GONE, replacement1.getView().getVisibility());
+        assertEquals(View.GONE, replacement1.requireView().getVisibility());
     }
 
     // Removing a detached fragment should do nothing to the View and popping should bring
@@ -334,21 +334,21 @@
         FragmentTestUtil.executePendingTransactions(mActivityRule);
 
         FragmentTestUtil.assertChildren(container, fragment);
-        assertEquals(View.VISIBLE, fragment.getView().getVisibility());
+        assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
 
         fm.beginTransaction().hide(fragment).addToBackStack(null).commit();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
 
         FragmentTestUtil.assertChildren(container, fragment);
         assertTrue(fragment.isHidden());
-        assertEquals(View.GONE, fragment.getView().getVisibility());
+        assertEquals(View.GONE, fragment.requireView().getVisibility());
 
         fm.popBackStack();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
 
         FragmentTestUtil.assertChildren(container, fragment);
         assertFalse(fragment.isHidden());
-        assertEquals(View.VISIBLE, fragment.getView().getVisibility());
+        assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
     }
 
     // Hiding a hidden fragment should not throw
@@ -391,21 +391,21 @@
 
         FragmentTestUtil.assertChildren(container, fragment);
         assertTrue(fragment.isHidden());
-        assertEquals(View.GONE, fragment.getView().getVisibility());
+        assertEquals(View.GONE, fragment.requireView().getVisibility());
 
         fm.beginTransaction().show(fragment).addToBackStack(null).commit();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
 
         FragmentTestUtil.assertChildren(container, fragment);
         assertFalse(fragment.isHidden());
-        assertEquals(View.VISIBLE, fragment.getView().getVisibility());
+        assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
 
         fm.popBackStack();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
 
         FragmentTestUtil.assertChildren(container, fragment);
         assertTrue(fragment.isHidden());
-        assertEquals(View.GONE, fragment.getView().getVisibility());
+        assertEquals(View.GONE, fragment.requireView().getVisibility());
     }
 
     // Showing a shown fragment should not throw
@@ -447,7 +447,7 @@
 
         FragmentTestUtil.assertChildren(container, fragment);
         assertFalse(fragment.isDetached());
-        assertEquals(View.VISIBLE, fragment.getView().getVisibility());
+        assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
 
         fm.beginTransaction().detach(fragment).addToBackStack(null).commit();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
@@ -460,7 +460,7 @@
 
         FragmentTestUtil.assertChildren(container, fragment);
         assertFalse(fragment.isDetached());
-        assertEquals(View.VISIBLE, fragment.getView().getVisibility());
+        assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
     }
 
     // Detaching a hidden fragment should remove the View from the hierarchy. Then popping it should
@@ -478,7 +478,7 @@
         FragmentTestUtil.assertChildren(container, fragment);
         assertFalse(fragment.isDetached());
         assertTrue(fragment.isHidden());
-        assertEquals(View.GONE, fragment.getView().getVisibility());
+        assertEquals(View.GONE, fragment.requireView().getVisibility());
 
         fm.beginTransaction().detach(fragment).addToBackStack(null).commit();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
@@ -493,7 +493,7 @@
         FragmentTestUtil.assertChildren(container, fragment);
         assertTrue(fragment.isHidden());
         assertFalse(fragment.isDetached());
-        assertEquals(View.GONE, fragment.getView().getVisibility());
+        assertEquals(View.GONE, fragment.requireView().getVisibility());
     }
 
     // Detaching a detached fragment should not throw
@@ -542,7 +542,7 @@
 
         FragmentTestUtil.assertChildren(container, fragment);
         assertFalse(fragment.isDetached());
-        assertEquals(View.VISIBLE, fragment.getView().getVisibility());
+        assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
 
         fm.popBackStack();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
@@ -577,7 +577,7 @@
         FragmentTestUtil.assertChildren(container, fragment);
         assertTrue(fragment.isHidden());
         assertFalse(fragment.isDetached());
-        assertEquals(View.GONE, fragment.getView().getVisibility());
+        assertEquals(View.GONE, fragment.requireView().getVisibility());
 
         fm.popBackStack();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
@@ -633,7 +633,7 @@
         FragmentTestUtil.executePendingTransactions(mActivityRule);
 
         FragmentTestUtil.assertChildren(container, fragment2);
-        assertEquals(View.VISIBLE, fragment2.getView().getVisibility());
+        assertEquals(View.VISIBLE, fragment2.requireView().getVisibility());
 
         fm.popBackStack();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
@@ -644,7 +644,7 @@
         assertFalse(replacement1.isHidden());
         assertTrue(replacement1.isAdded());
         assertFalse(replacement1.isDetached());
-        assertEquals(View.VISIBLE, replacement1.getView().getVisibility());
+        assertEquals(View.VISIBLE, replacement1.requireView().getVisibility());
     }
 
     // Replace of multiple fragments in a container. Popping should replace it back again
@@ -673,7 +673,7 @@
         FragmentTestUtil.executePendingTransactions(mActivityRule);
 
         FragmentTestUtil.assertChildren(container, fragment3);
-        assertEquals(View.VISIBLE, fragment3.getView().getVisibility());
+        assertEquals(View.VISIBLE, fragment3.requireView().getVisibility());
 
         fm.popBackStack();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
@@ -686,13 +686,13 @@
         assertFalse(replacement1.isHidden());
         assertTrue(replacement1.isAdded());
         assertFalse(replacement1.isDetached());
-        assertEquals(View.VISIBLE, replacement1.getView().getVisibility());
+        assertEquals(View.VISIBLE, replacement1.requireView().getVisibility());
 
         // fragment2 was hidden, so it should be returned hidden
         assertTrue(replacement2.isHidden());
         assertTrue(replacement2.isAdded());
         assertFalse(replacement2.isDetached());
-        assertEquals(View.GONE, replacement2.getView().getVisibility());
+        assertEquals(View.GONE, replacement2.requireView().getVisibility());
     }
 
     // Replace of empty container. Should act as add and popping should just remove the fragment
@@ -711,7 +711,7 @@
         FragmentTestUtil.executePendingTransactions(mActivityRule);
 
         FragmentTestUtil.assertChildren(container, fragment);
-        assertEquals(View.VISIBLE, fragment.getView().getVisibility());
+        assertEquals(View.VISIBLE, fragment.requireView().getVisibility());
 
         fm.popBackStack();
         FragmentTestUtil.executePendingTransactions(mActivityRule);
@@ -845,7 +845,7 @@
         FragmentTestUtil.executePendingTransactions(mActivityRule);
         FragmentTestUtil.assertChildren(container, fragment1);
 
-        assertEquals(View.INVISIBLE, fragment1.getView().getVisibility());
+        assertEquals(View.INVISIBLE, fragment1.requireView().getVisibility());
 
         final InvisibleFragment fragment2 = new InvisibleFragment();
         fragment2.visibility = View.GONE;
@@ -856,7 +856,7 @@
         FragmentTestUtil.executePendingTransactions(mActivityRule);
         FragmentTestUtil.assertChildren(container, fragment2);
 
-        assertEquals(View.GONE, fragment2.getView().getVisibility());
+        assertEquals(View.GONE, fragment2.requireView().getVisibility());
     }
 
     // Test to ensure that popping and adding a fragment properly track the fragments added
@@ -951,8 +951,7 @@
         FragmentTestUtil.executePendingTransactions(mActivityRule);
 
         FragmentTestUtil.assertChildren(container, fragment1);
-        ViewGroup innerContainer = (ViewGroup)
-                fragment1.getView().findViewById(R.id.fragmentContainer1);
+        ViewGroup innerContainer = fragment1.requireView().findViewById(R.id.fragmentContainer1);
 
         Fragment fragment2 = fragment1.getChildFragmentManager().findFragmentByTag("inner");
         FragmentTestUtil.assertChildren(innerContainer, fragment2);
diff --git a/fragment/src/androidTest/java/androidx/fragment/app/PostponedTransitionTest.java b/fragment/src/androidTest/java/androidx/fragment/app/PostponedTransitionTest.java
index 86e68e6..1a52b437 100644
--- a/fragment/src/androidTest/java/androidx/fragment/app/PostponedTransitionTest.java
+++ b/fragment/src/androidTest/java/androidx/fragment/app/PostponedTransitionTest.java
@@ -367,8 +367,8 @@
         clearTargets(fragment1);
         clearTargets(fragment2);
 
-        final View startBlue1 = fragment1.getView().findViewById(R.id.blueSquare);
-        final View startBlue2 = fragment2.getView().findViewById(R.id.blueSquare);
+        final View startBlue1 = fragment1.requireView().findViewById(R.id.blueSquare);
+        final View startBlue2 = fragment2.requireView().findViewById(R.id.blueSquare);
 
         final TransitionFragment fragment3 = new PostponedFragment2();
 
@@ -465,8 +465,8 @@
         clearTargets(fragment1);
         clearTargets(fragment2);
 
-        final View startBlue1 = fragment1.getView().findViewById(R.id.blueSquare);
-        final View startBlue2 = fragment2.getView().findViewById(R.id.blueSquare);
+        final View startBlue1 = fragment1.requireView().findViewById(R.id.blueSquare);
+        final View startBlue2 = fragment2.requireView().findViewById(R.id.blueSquare);
 
         final TransitionFragment fragment3 = new PostponedFragment2();
 
@@ -563,8 +563,8 @@
         clearTargets(fragment1);
         clearTargets(fragment2);
 
-        final View startBlue1 = fragment1.getView().findViewById(R.id.blueSquare);
-        final View startBlue2 = fragment2.getView().findViewById(R.id.blueSquare);
+        final View startBlue1 = fragment1.requireView().findViewById(R.id.blueSquare);
+        final View startBlue2 = fragment2.requireView().findViewById(R.id.blueSquare);
 
         final TransitionFragment fragment3 = new PostponedFragment2();
         final StrictFragment strictFragment1 = new StrictFragment();
@@ -621,7 +621,7 @@
     @Test
     public void commitNowStartsPostponed() throws Throwable {
         final FragmentManager fm = mActivityRule.getActivity().getSupportFragmentManager();
-        final View startBlue1 = mBeginningFragment.getView().findViewById(R.id.blueSquare);
+        final View startBlue1 = mBeginningFragment.requireView().findViewById(R.id.blueSquare);
 
         final TransitionFragment fragment2 = new PostponedFragment2();
         final TransitionFragment fragment1 = new PostponedFragment1();
@@ -634,7 +634,7 @@
                 .commit();
         FragmentTestUtil.waitForExecution(mActivityRule);
 
-        final View startBlue2 = fragment2.getView().findViewById(R.id.blueSquare);
+        final View startBlue2 = fragment2.requireView().findViewById(R.id.blueSquare);
 
         mInstrumentation.runOnMainSync(new Runnable() {
             @Override
@@ -709,7 +709,7 @@
     @Test
     public void popPostponedTransaction() throws Throwable {
         final FragmentManager fm = mActivityRule.getActivity().getSupportFragmentManager();
-        final View startBlue = mBeginningFragment.getView().findViewById(R.id.blueSquare);
+        final View startBlue = mBeginningFragment.requireView().findViewById(R.id.blueSquare);
 
         final TransitionFragment fragment = new PostponedFragment2();
 
@@ -892,7 +892,7 @@
         assertEquals(0, start.sharedElementReturn.targets.size());
         assertEquals(0, end.sharedElementReturn.targets.size());
 
-        final View blue = end.getView().findViewById(R.id.blueSquare);
+        final View blue = end.requireView().findViewById(R.id.blueSquare);
         assertTrue(end.sharedElementEnter.targets.contains(blue));
         assertEquals("blueSquare", end.sharedElementEnter.targets.get(0).getTransitionName());
         assertEquals("blueSquare", end.sharedElementEnter.targets.get(1).getTransitionName());
@@ -926,7 +926,7 @@
         assertEquals(2, start.sharedElementReturn.targets.size());
         assertEquals(0, end.sharedElementReturn.targets.size());
 
-        final View blue = end.getView().findViewById(R.id.blueSquare);
+        final View blue = end.requireView().findViewById(R.id.blueSquare);
         assertTrue(start.sharedElementReturn.targets.contains(blue));
         assertEquals("blueSquare", start.sharedElementReturn.targets.get(0).getTransitionName());
         assertEquals("blueSquare", start.sharedElementReturn.targets.get(1).getTransitionName());
diff --git a/fragment/src/main/java/androidx/fragment/app/Fragment.java b/fragment/src/main/java/androidx/fragment/app/Fragment.java
index 7e3c0f8..e4e54eb 100644
--- a/fragment/src/main/java/androidx/fragment/app/Fragment.java
+++ b/fragment/src/main/java/androidx/fragment/app/Fragment.java
@@ -239,7 +239,7 @@
     // track it separately.
     boolean mIsCreated;
 
-    final LifecycleRegistry mLifecycleRegistry;
+    LifecycleRegistry mLifecycleRegistry;
 
     // This is initialized in performCreateView and unavailable outside of the
     // onCreateView/onDestroyView lifecycle
@@ -409,6 +409,10 @@
      * attributes from a layout resource, although note this happens when the fragment is attached.
      */
     public Fragment() {
+        initLifecycle();
+    }
+
+    private void initLifecycle() {
         mLifecycleRegistry = new LifecycleRegistry(this);
         if (Build.VERSION.SDK_INT >= 19) {
             mLifecycleRegistry.addObserver(new GenericLifecycleObserver() {
@@ -963,8 +967,7 @@
 
     /**
      * Control whether a fragment instance is retained across Activity
-     * re-creation (such as from a configuration change).  This can only
-     * be used with fragments not in the back stack.  If set, the fragment
+     * re-creation (such as from a configuration change). If set, the fragment
      * lifecycle will be slightly different when an activity is recreated:
      * <ul>
      * <li> {@link #onDestroy()} will not be called (but {@link #onDetach()} still
@@ -1597,6 +1600,22 @@
     }
 
     /**
+     * Get the root view for the fragment's layout (the one returned by {@link #onCreateView}).
+     *
+     * @throws IllegalStateException if no view was returned by {@link #onCreateView}.
+     * @see #getView()
+     */
+    @NonNull
+    public final View requireView() {
+        View view = getView();
+        if (view == null) {
+            throw new IllegalStateException("Fragment " + this + " did not return a View from"
+                    + " onCreateView() or this was called before onCreateView().");
+        }
+        return view;
+    }
+
+    /**
      * Called when the fragment's activity has been created and this
      * fragment's view hierarchy instantiated.  It can be used to do final
      * initialization once these pieces are in place, such as retrieving
@@ -1754,6 +1773,8 @@
      * internally manages, not things the application sets.
      */
     void initState() {
+        initLifecycle();
+        mSavedStateRegistry = new BundleSavedStateRegistry();
         mWho = UUID.randomUUID().toString();
         mAdded = false;
         mRemoving = false;
diff --git a/fragment/src/main/java/androidx/fragment/app/FragmentManagerImpl.java b/fragment/src/main/java/androidx/fragment/app/FragmentManagerImpl.java
index b70f697..acee499 100644
--- a/fragment/src/main/java/androidx/fragment/app/FragmentManagerImpl.java
+++ b/fragment/src/main/java/androidx/fragment/app/FragmentManagerImpl.java
@@ -1890,7 +1890,7 @@
         for (int i = 0; i < numAdded; i++) {
             final Fragment fragment = fragments.valueAt(i);
             if (!fragment.mAdded) {
-                final View view = fragment.getView();
+                final View view = fragment.requireView();
                 fragment.mPostponedAlpha = view.getAlpha();
                 view.setAlpha(0f);
             }
diff --git a/fragment/src/main/java/androidx/fragment/app/FragmentTransition.java b/fragment/src/main/java/androidx/fragment/app/FragmentTransition.java
index b8273a0..642058d 100644
--- a/fragment/src/main/java/androidx/fragment/app/FragmentTransition.java
+++ b/fragment/src/main/java/androidx/fragment/app/FragmentTransition.java
@@ -561,7 +561,7 @@
         final Fragment inFragment = fragments.lastIn;
         final Fragment outFragment = fragments.firstOut;
         if (inFragment != null) {
-            inFragment.getView().setVisibility(View.VISIBLE);
+            inFragment.requireView().setVisibility(View.VISIBLE);
         }
         if (inFragment == null || outFragment == null) {
             return null; // no shared element without a fragment
@@ -786,7 +786,7 @@
         }
         final Fragment outFragment = fragments.firstOut;
         final ArrayMap<String, View> outSharedElements = new ArrayMap<>();
-        impl.findNamedViews(outSharedElements, outFragment.getView());
+        impl.findNamedViews(outSharedElements, outFragment.requireView());
 
         final SharedElementCallback sharedElementCallback;
         final ArrayList<String> names;
diff --git a/fragment/src/main/java/androidx/fragment/app/FragmentTransitionImpl.java b/fragment/src/main/java/androidx/fragment/app/FragmentTransitionImpl.java
index 33ba74e..7aeeab7 100644
--- a/fragment/src/main/java/androidx/fragment/app/FragmentTransitionImpl.java
+++ b/fragment/src/main/java/androidx/fragment/app/FragmentTransitionImpl.java
@@ -23,6 +23,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.core.view.OneShotPreDrawListener;
 import androidx.core.view.ViewCompat;
@@ -211,7 +212,7 @@
      * Finds all views that have transition names in the hierarchy under the given view and
      * stores them in {@code namedViews} map with the name as the key.
      */
-    void findNamedViews(Map<String, View> namedViews, View view) {
+    void findNamedViews(Map<String, View> namedViews, @NonNull View view) {
         if (view.getVisibility() == View.VISIBLE) {
             String transitionName = ViewCompat.getTransitionName(view);
             if (transitionName != null) {
diff --git a/fragment/src/main/java/androidx/fragment/app/ListFragment.java b/fragment/src/main/java/androidx/fragment/app/ListFragment.java
index e1e087b..adbcb67 100644
--- a/fragment/src/main/java/androidx/fragment/app/ListFragment.java
+++ b/fragment/src/main/java/androidx/fragment/app/ListFragment.java
@@ -189,7 +189,7 @@
             if (!mListShown && !hadAdapter) {
                 // The list was hidden, and previously didn't have an
                 // adapter.  It is now time to show it.
-                setListShown(true, getView().getWindowToken() != null);
+                setListShown(true, requireView().getWindowToken() != null);
             }
         }
     }
diff --git a/fragment/testing/api/1.1.0-alpha03.txt b/fragment/testing/api/1.1.0-alpha03.txt
index 2ad9886..8c83aa3 100644
--- a/fragment/testing/api/1.1.0-alpha03.txt
+++ b/fragment/testing/api/1.1.0-alpha03.txt
@@ -5,9 +5,11 @@
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launch(Class<F>);
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launch(Class<F>, android.os.Bundle?);
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launch(Class<F>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
+    method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launch(Class<F>, android.os.Bundle?, int, androidx.fragment.app.FragmentFactory?);
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchInContainer(Class<F>);
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchInContainer(Class<F>, android.os.Bundle?);
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchInContainer(Class<F>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
+    method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchInContainer(Class<F>, android.os.Bundle?, int, androidx.fragment.app.FragmentFactory?);
     method public androidx.fragment.app.testing.FragmentScenario<F> moveToState(androidx.lifecycle.Lifecycle.State);
     method public androidx.fragment.app.testing.FragmentScenario<F> onFragment(androidx.fragment.app.testing.FragmentScenario.FragmentAction<F>);
     method public androidx.fragment.app.testing.FragmentScenario<F> recreate();
diff --git a/fragment/testing/api/current.txt b/fragment/testing/api/current.txt
index 2ad9886..8c83aa3 100644
--- a/fragment/testing/api/current.txt
+++ b/fragment/testing/api/current.txt
@@ -5,9 +5,11 @@
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launch(Class<F>);
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launch(Class<F>, android.os.Bundle?);
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launch(Class<F>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
+    method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launch(Class<F>, android.os.Bundle?, int, androidx.fragment.app.FragmentFactory?);
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchInContainer(Class<F>);
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchInContainer(Class<F>, android.os.Bundle?);
     method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchInContainer(Class<F>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
+    method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchInContainer(Class<F>, android.os.Bundle?, int, androidx.fragment.app.FragmentFactory?);
     method public androidx.fragment.app.testing.FragmentScenario<F> moveToState(androidx.lifecycle.Lifecycle.State);
     method public androidx.fragment.app.testing.FragmentScenario<F> onFragment(androidx.fragment.app.testing.FragmentScenario.FragmentAction<F>);
     method public androidx.fragment.app.testing.FragmentScenario<F> recreate();
diff --git a/fragment/testing/build.gradle b/fragment/testing/build.gradle
index 440de5a..d6c5ae0 100644
--- a/fragment/testing/build.gradle
+++ b/fragment/testing/build.gradle
@@ -43,7 +43,6 @@
     androidTestImplementation(TEST_RULES)
     androidTestImplementation(TEST_EXT_JUNIT)
     androidTestImplementation(TRUTH)
-    androidTestImplementation(GUAVA_LISTENABLE_FUTURE_AVOID_CONFLICT)
 }
 
 supportLibrary {
diff --git a/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt b/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt
index b790676..0413ee2 100644
--- a/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt
+++ b/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt
@@ -18,6 +18,7 @@
 
 import android.os.Bundle
 import androidx.fragment.app.FragmentFactory
+import androidx.fragment.testing.test.R.style.ThemedFragmentTheme
 import androidx.lifecycle.Lifecycle.State
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.google.common.truth.Truth.assertThat
@@ -69,6 +70,17 @@
     }
 
     @Test
+    fun launchThemedFragment() {
+        with(launchFragment<ThemedFragment>(themeResId = ThemedFragmentTheme)) {
+            onFragment { fragment ->
+                assertThat(fragment.state).isEqualTo(State.RESUMED)
+                assertThat(fragment.isViewAttachedToWindow).isFalse()
+                assertThat(fragment.hasThemedFragmentTheme()).isTrue()
+            }
+        }
+    }
+
+    @Test
     fun launchFragmentInContainer() {
         with(launchFragmentInContainer<StateRecordingFragment>()) {
             onFragment { fragment ->
@@ -92,10 +104,21 @@
     }
 
     @Test
+    fun launchThemedFragmentInContainer() {
+        with(launchFragmentInContainer<ThemedFragment>(themeResId = ThemedFragmentTheme)) {
+            onFragment { fragment ->
+                assertThat(fragment.state).isEqualTo(State.RESUMED)
+                assertThat(fragment.isViewAttachedToWindow).isTrue()
+                assertThat(fragment.hasThemedFragmentTheme()).isTrue()
+            }
+        }
+    }
+
+    @Test
     fun launchFragmentWithFragmentFactory() {
         with(
-            launchFragment<NoDefaultConstructorFragment>(/*fragmentArgs=*/null,
-                NoDefaultConstructorFragmentFactory("my constructor arg")
+            launchFragment<NoDefaultConstructorFragment>(
+                factory = NoDefaultConstructorFragmentFactory("my constructor arg")
             )
         ) {
             onFragment { fragment ->
@@ -109,8 +132,8 @@
     @Test
     fun launchInContainerFragmentWithFragmentFactory() {
         with(
-            launchFragmentInContainer<NoDefaultConstructorFragment>(/*fragmentArgs=*/null,
-                NoDefaultConstructorFragmentFactory("my constructor arg")
+            launchFragmentInContainer<NoDefaultConstructorFragment>(
+                factory = NoDefaultConstructorFragmentFactory("my constructor arg")
             )
         ) {
             onFragment { fragment ->
@@ -124,7 +147,7 @@
     @Test
     fun launchWithCrossInlineFactoryFunction() {
         var numberOfInstantiations = 0
-        with(launchFragment(/*fragmentArgs=*/null) {
+        with(launchFragment {
             numberOfInstantiations++
             NoDefaultConstructorFragment("my constructor arg")
         }) {
@@ -140,7 +163,7 @@
     @Test
     fun launchInContainerWithCrossInlineFactoryFunction() {
         var numberOfInstantiations = 0
-        with(launchFragmentInContainer(/*fragmentArgs=*/null) {
+        with(launchFragmentInContainer {
             numberOfInstantiations++
             NoDefaultConstructorFragment("my constructor arg")
         }) {
@@ -328,7 +351,7 @@
     @Test
     fun recreateFragmentWithFragmentFactory() {
         var numberOfInstantiations = 0
-        with(launchFragment(/*fragmentArgs=*/null) {
+        with(launchFragment {
             numberOfInstantiations++
             NoDefaultConstructorFragment("my constructor arg")
         }) {
@@ -347,4 +370,23 @@
             }
         }
     }
+
+    @Test
+    fun recreateThemedFragment() {
+        with(launchFragmentInContainer<ThemedFragment>(themeResId = ThemedFragmentTheme)) {
+            onFragment { fragment ->
+                assertThat(fragment.state).isEqualTo(State.RESUMED)
+                assertThat(fragment.isViewAttachedToWindow).isTrue()
+                assertThat(fragment.hasThemedFragmentTheme()).isTrue()
+                assertThat(fragment.numberOfRecreations).isEqualTo(0)
+            }
+            recreate()
+            onFragment { fragment ->
+                assertThat(fragment.state).isEqualTo(State.RESUMED)
+                assertThat(fragment.isViewAttachedToWindow).isTrue()
+                assertThat(fragment.hasThemedFragmentTheme()).isTrue()
+                assertThat(fragment.numberOfRecreations).isEqualTo(1)
+            }
+        }
+    }
 }
diff --git a/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/ThemedFragment.kt b/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/ThemedFragment.kt
new file mode 100644
index 0000000..40dda59
--- /dev/null
+++ b/fragment/testing/src/androidTest/java/androidx/fragment/app/testing/ThemedFragment.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2018 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.fragment.app.testing
+
+import androidx.fragment.testing.test.R
+
+/**
+ * A minimum example fragment which requires a specific theme.
+ * For example, if your fragment uses material components views, those views require
+ * Theme.MaterialComponents.
+ */
+class ThemedFragment : StateRecordingFragment() {
+    fun hasThemedFragmentTheme(): Boolean {
+        val attrs =
+            context!!.theme.obtainStyledAttributes(intArrayOf(R.attr.exampleRequiredAttribute))
+        try {
+            return attrs.hasValue(R.styleable.ThemedFragmentTheme_exampleRequiredAttribute)
+        } finally {
+            attrs.recycle()
+        }
+    }
+}
\ No newline at end of file
diff --git a/fragment/testing/src/androidTest/res/values/attrs.xml b/fragment/testing/src/androidTest/res/values/attrs.xml
new file mode 100644
index 0000000..cb748bf
--- /dev/null
+++ b/fragment/testing/src/androidTest/res/values/attrs.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright 2018 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.
+  -->
+<resources xmlns:tools="http://schemas.android.com/tools">
+    <declare-styleable name="ThemedFragmentTheme">
+        <attr name="exampleRequiredAttribute" format="boolean"/>
+    </declare-styleable>
+</resources>
\ No newline at end of file
diff --git a/fragment/testing/src/androidTest/res/values/styles.xml b/fragment/testing/src/androidTest/res/values/styles.xml
new file mode 100644
index 0000000..abb88fe
--- /dev/null
+++ b/fragment/testing/src/androidTest/res/values/styles.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright 2018 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.
+  -->
+<resources xmlns:tools="http://schemas.android.com/tools">
+    <style name="ThemedFragmentTheme" parent="android:Theme">
+        <item name="exampleRequiredAttribute">true</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/fragment/testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.java b/fragment/testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.java
index 0eccbbf..b146da7 100644
--- a/fragment/testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.java
+++ b/fragment/testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.java
@@ -19,7 +19,10 @@
 import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 import static androidx.core.util.Preconditions.checkNotNull;
 import static androidx.core.util.Preconditions.checkState;
+import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
 
+import android.content.ComponentName;
+import android.content.Intent;
 import android.os.Bundle;
 
 import androidx.annotation.NonNull;
@@ -29,6 +32,7 @@
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentActivity;
 import androidx.fragment.app.FragmentFactory;
+import androidx.fragment.testing.R;
 import androidx.lifecycle.Lifecycle.State;
 import androidx.lifecycle.ViewModel;
 import androidx.lifecycle.ViewModelProvider;
@@ -63,8 +67,17 @@
      */
     @RestrictTo(LIBRARY)
     public static class EmptyFragmentActivity extends FragmentActivity {
+
+        @NonNull
+        public static final String THEME_EXTRAS_BUNDLE_KEY =
+                "androidx.fragment.app.testing.FragmentScenario.EmptyFragmentActivity"
+                        + ".THEME_EXTRAS_BUNDLE_KEY";
+
         @Override
         protected void onCreate(@Nullable Bundle savedInstanceState) {
+            setTheme(getIntent().getIntExtra(THEME_EXTRAS_BUNDLE_KEY,
+                    R.style.FragmentScenarioEmptyFragmentActivityTheme));
+
             // Checks if we have a custom FragmentFactory and set it.
             ViewModelProvider viewModelProvider = new ViewModelProvider(
                     this, ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication()));
@@ -158,7 +171,28 @@
     public static <F extends Fragment> FragmentScenario<F> launch(
             @NonNull Class<F> fragmentClass, @Nullable Bundle fragmentArgs,
             @Nullable FragmentFactory factory) {
-        return internalLaunch(fragmentClass, fragmentArgs, factory, /*containerViewId=*/ 0);
+        return launch(fragmentClass, fragmentArgs,
+                R.style.FragmentScenarioEmptyFragmentActivityTheme, factory);
+    }
+
+    /**
+     * Launches a Fragment with given arguments hosted by an empty {@link FragmentActivity} themed
+     * by {@code themeResId}, using the given {@link FragmentFactory} and waits for it to reach the
+     * resumed state.
+     * <p>
+     * This method cannot be called from the main thread.
+     *
+     * @param fragmentClass a fragment class to instantiate
+     * @param fragmentArgs a bundle to passed into fragment
+     * @param themeResId a style resource id to be set to the host activity's theme
+     * @param factory a fragment factory to use or null to use default factory
+     */
+    @NonNull
+    public static <F extends Fragment> FragmentScenario<F> launch(
+            @NonNull Class<F> fragmentClass, @Nullable Bundle fragmentArgs,
+            int themeResId, @Nullable FragmentFactory factory) {
+        return internalLaunch(fragmentClass, fragmentArgs, themeResId, factory,
+                /*containerViewId=*/ 0);
     }
 
     /**
@@ -177,8 +211,8 @@
 
     /**
      * Launches a Fragment in the Activity's root view container {@code android.R.id.content}, with
-     * given arguments hosted by an empty {@link FragmentActivity} using the given
-     * {@link FragmentFactory} and waits for it to reach the resumed state.
+     * given arguments hosted by an empty {@link FragmentActivity} and waits for it to reach the
+     * resumed state.
      * <p>
      * This method cannot be called from the main thread.
      *
@@ -193,8 +227,8 @@
 
     /**
      * Launches a Fragment in the Activity's root view container {@code android.R.id.content}, with
-     * given arguments hosted by an empty {@link FragmentActivity} and waits for it to reach the
-     * resumed state.
+     * given arguments hosted by an empty {@link FragmentActivity} using the given
+     * {@link FragmentFactory} and waits for it to reach the resumed state.
      * <p>
      * This method cannot be called from the main thread.
      *
@@ -206,17 +240,45 @@
     public static <F extends Fragment> FragmentScenario<F> launchInContainer(
             @NonNull Class<F> fragmentClass, @Nullable Bundle fragmentArgs,
             @Nullable FragmentFactory factory) {
+        return launchInContainer(
+                fragmentClass, fragmentArgs, R.style.FragmentScenarioEmptyFragmentActivityTheme,
+                factory);
+    }
+
+    /**
+     * Launches a Fragment in the Activity's root view container {@code android.R.id.content}, with
+     * given arguments hosted by an empty {@link FragmentActivity} themed by {@code themeResId},
+     * using the given {@link FragmentFactory} and waits for it to reach the resumed state.
+     * <p>
+     * This method cannot be called from the main thread.
+     *
+     * @param fragmentClass a fragment class to instantiate
+     * @param fragmentArgs a bundle to passed into fragment
+     * @param themeResId a style resource id to be set to the host activity's theme
+     * @param factory a fragment factory to use or null to use default factory
+     */
+    @NonNull
+    public static <F extends Fragment> FragmentScenario<F> launchInContainer(
+            @NonNull Class<F> fragmentClass, @Nullable Bundle fragmentArgs,
+            int themeResId, @Nullable FragmentFactory factory) {
         return internalLaunch(
-                fragmentClass, fragmentArgs, factory, /*containerViewId=*/ android.R.id.content);
+                fragmentClass, fragmentArgs, themeResId, factory,
+                /*containerViewId=*/ android.R.id.content);
     }
 
     @NonNull
     private static <F extends Fragment> FragmentScenario<F> internalLaunch(
             @NonNull final Class<F> fragmentClass, final @Nullable Bundle fragmentArgs,
-            @Nullable final FragmentFactory factory, final int containerViewId) {
+            final int themeResId, @Nullable final FragmentFactory factory,
+            final int containerViewId) {
+        Intent startActivityIntent =
+                Intent.makeMainActivity(
+                        new ComponentName(getApplicationContext(),
+                                EmptyFragmentActivity.class))
+                        .putExtra(EmptyFragmentActivity.THEME_EXTRAS_BUNDLE_KEY, themeResId);
         FragmentScenario<F> scenario = new FragmentScenario<>(
                 fragmentClass, factory,
-                ActivityScenario.launch(EmptyFragmentActivity.class));
+                ActivityScenario.<EmptyFragmentActivity>launch(startActivityIntent));
         scenario.mActivityScenario.onActivity(
                 new ActivityScenario.ActivityAction<EmptyFragmentActivity>() {
                     @Override
diff --git a/fragment/testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt b/fragment/testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt
index 9246386..48da729 100644
--- a/fragment/testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt
+++ b/fragment/testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt
@@ -20,6 +20,7 @@
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
 import androidx.fragment.app.FragmentFactory
+import androidx.fragment.testing.R
 
 /**
  * Launches a Fragment with given arguments hosted by an empty [FragmentActivity] using
@@ -28,12 +29,14 @@
  * This method cannot be called from the main thread.
  *
  * @param fragmentArgs a bundle to passed into fragment
+ * @param themeResId a style resource id to be set to the host activity's theme
  * @param factory a fragment factory to use or null to use default factory
  */
 inline fun <reified F : Fragment> launchFragment(
     fragmentArgs: Bundle? = null,
+    themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
     factory: FragmentFactory? = null
-) = FragmentScenario.launch(F::class.java, fragmentArgs, factory)
+) = FragmentScenario.launch(F::class.java, fragmentArgs, themeResId, factory)
 
 /**
  * Launches a Fragment with given arguments hosted by an empty [FragmentActivity] using
@@ -42,12 +45,14 @@
  * This method cannot be called from the main thread.
  *
  * @param fragmentArgs a bundle to passed into fragment
+ * @param themeResId a style resource id to be set to the host activity's theme
  * @param instantiate method which will be used to instantiate the Fragment.
  */
 inline fun <reified F : Fragment> launchFragment(
     fragmentArgs: Bundle? = null,
+    themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
     crossinline instantiate: (args: Bundle?) -> F
-) = FragmentScenario.launch(F::class.java, fragmentArgs, object : FragmentFactory() {
+) = FragmentScenario.launch(F::class.java, fragmentArgs, themeResId, object : FragmentFactory() {
     override fun instantiate(
         classLoader: ClassLoader,
         className: String,
@@ -66,12 +71,14 @@
  * This method cannot be called from the main thread.
  *
  * @param fragmentArgs a bundle to passed into fragment
+ * @param themeResId a style resource id to be set to the host activity's theme
  * @param factory a fragment factory to use or null to use default factory
  */
 inline fun <reified F : Fragment> launchFragmentInContainer(
     fragmentArgs: Bundle? = null,
+    themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
     factory: FragmentFactory? = null
-) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, factory)
+) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, themeResId, factory)
 
 /**
  * Launches a Fragment in the Activity's root view container `android.R.id.content`, with
@@ -82,20 +89,23 @@
  * This method cannot be called from the main thread.
  *
  * @param fragmentArgs a bundle to passed into fragment
+ * @param themeResId a style resource id to be set to the host activity's theme
  * @param instantiate method which will be used to instantiate the Fragment. This is a
  * simplification of the [FragmentFactory] interface for cases where only a single class
  * needs a custom constructor called.
  */
 inline fun <reified F : Fragment> launchFragmentInContainer(
     fragmentArgs: Bundle? = null,
+    themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
     crossinline instantiate: (args: Bundle?) -> F
-) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, object : FragmentFactory() {
-    override fun instantiate(
-        classLoader: ClassLoader,
-        className: String,
-        args: Bundle?
-    ) = when (className) {
-        F::class.java.name -> instantiate(args)
-        else -> super.instantiate(classLoader, className, args)
-    }
-})
+) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, themeResId,
+    object : FragmentFactory() {
+        override fun instantiate(
+            classLoader: ClassLoader,
+            className: String,
+            args: Bundle?
+        ) = when (className) {
+            F::class.java.name -> instantiate(args)
+            else -> super.instantiate(classLoader, className, args)
+        }
+    })
diff --git a/jetifier/jetifier/core/build.gradle b/jetifier/jetifier/core/build.gradle
index 20913b7..aa29f54 100644
--- a/jetifier/jetifier/core/build.gradle
+++ b/jetifier/jetifier/core/build.gradle
@@ -26,7 +26,7 @@
 
 dependencies {
     compile("com.google.code.gson:gson:2.8.0")
-    compile("org.jetbrains.kotlin:kotlin-stdlib:1.2.20")
+    compile(KOTLIN_STDLIB)
     testCompile("junit:junit:4.12")
     testCompile("com.google.truth:truth:0.34")
 }
diff --git a/jetifier/jetifier/processor/build.gradle b/jetifier/jetifier/processor/build.gradle
index eb96de1..09dbbd6 100644
--- a/jetifier/jetifier/processor/build.gradle
+++ b/jetifier/jetifier/processor/build.gradle
@@ -30,7 +30,7 @@
     compile("org.ow2.asm:asm-util:6.0")
     compile("org.ow2.asm:asm-commons:6.0")
     compile("org.jdom:jdom2:2.0.6")
-    compile("org.jetbrains.kotlin:kotlin-stdlib:1.2.20")
+    compile(KOTLIN_STDLIB)
     testCompile("junit:junit:4.12")
     testCompile("com.google.truth:truth:0.34")
 }
diff --git a/jetifier/jetifier/processor/src/test/kotlin/com/android/tools/build/jetifier/processor/transform/proguard/ProGuardTypesMapperTest.kt b/jetifier/jetifier/processor/src/test/kotlin/com/android/tools/build/jetifier/processor/transform/proguard/ProGuardTypesMapperTest.kt
index d0c5a48..453066f 100644
--- a/jetifier/jetifier/processor/src/test/kotlin/com/android/tools/build/jetifier/processor/transform/proguard/ProGuardTypesMapperTest.kt
+++ b/jetifier/jetifier/processor/src/test/kotlin/com/android/tools/build/jetifier/processor/transform/proguard/ProGuardTypesMapperTest.kt
@@ -243,7 +243,8 @@
             .getsRewrittenTo("support.v7.Activity")
     }
 
-    @Test fun proGuard_solver_wildcard_shouldRewrite() {
+    // Temporarily disabled due to b/120234632.
+    fun proGuard_solver_wildcard_shouldRewrite() {
         ProGuardTester()
             .forGivenPrefixes(
                 "support/"
@@ -258,7 +259,8 @@
             .getsRewrittenTo("test.preference.**")
     }
 
-    @Test fun proGuard_solver_wildcard2_shouldRewrite() {
+    // Temporarily disabled due to b/120234632.
+    fun proGuard_solver_wildcard2_shouldRewrite() {
         ProGuardTester()
             .forGivenPrefixes(
                 "support/"
@@ -272,7 +274,8 @@
             .getsRewrittenTo("test.preference.**")
     }
 
-    @Test fun proGuard_solver_wildcard3_shouldRewrite() {
+    // Temporarily disabled due to b/120234632.
+    fun proGuard_solver_wildcard3_shouldRewrite() {
         ProGuardTester()
             .forGivenPrefixes(
                 "support/"
diff --git a/jetifier/jetifier/processor/src/test/kotlin/com/android/tools/build/jetifier/processor/transform/proguard/ProguardSamplesTest.kt b/jetifier/jetifier/processor/src/test/kotlin/com/android/tools/build/jetifier/processor/transform/proguard/ProguardSamplesTest.kt
index ad5917d..e8b11db 100644
--- a/jetifier/jetifier/processor/src/test/kotlin/com/android/tools/build/jetifier/processor/transform/proguard/ProguardSamplesTest.kt
+++ b/jetifier/jetifier/processor/src/test/kotlin/com/android/tools/build/jetifier/processor/transform/proguard/ProguardSamplesTest.kt
@@ -237,7 +237,8 @@
             )
     }
 
-    @Test fun proGuard_sample5() {
+    // Temporarily disabled due to b/120236364.
+    fun proGuard_sample5() {
         ProGuardTester()
             .forGivenPrefixes(
                 "support/"
diff --git a/leanback/api/1.0.0.txt b/leanback/api/1.0.0.txt
index fd27b25..2da313b 100644
--- a/leanback/api/1.0.0.txt
+++ b/leanback/api/1.0.0.txt
@@ -1,220 +1,229 @@
+// Signature format: 2.0
 package androidx.leanback.app {
 
   public final class BackgroundManager {
-    method public void attach(android.view.Window);
-    method public void attachToView(android.view.View);
+    method public void attach(android.view.Window!);
+    method public void attachToView(android.view.View!);
     method public void clearDrawable();
-    method public int getColor();
-    method public deprecated android.graphics.drawable.Drawable getDefaultDimLayer();
-    method public deprecated android.graphics.drawable.Drawable getDimLayer();
-    method public android.graphics.drawable.Drawable getDrawable();
-    method public static androidx.leanback.app.BackgroundManager getInstance(android.app.Activity);
+    method @ColorInt public int getColor();
+    method @Deprecated public android.graphics.drawable.Drawable! getDefaultDimLayer();
+    method @Deprecated public android.graphics.drawable.Drawable! getDimLayer();
+    method public android.graphics.drawable.Drawable! getDrawable();
+    method public static androidx.leanback.app.BackgroundManager! getInstance(android.app.Activity!);
     method public boolean isAttached();
     method public boolean isAutoReleaseOnStop();
     method public void release();
     method public void setAutoReleaseOnStop(boolean);
-    method public void setBitmap(android.graphics.Bitmap);
-    method public void setColor(int);
-    method public deprecated void setDimLayer(android.graphics.drawable.Drawable);
-    method public void setDrawable(android.graphics.drawable.Drawable);
+    method public void setBitmap(android.graphics.Bitmap!);
+    method public void setColor(@ColorInt int);
+    method @Deprecated public void setDimLayer(android.graphics.drawable.Drawable!);
+    method public void setDrawable(android.graphics.drawable.Drawable!);
     method public void setThemeDrawableResourceId(int);
   }
 
-  public deprecated class BaseFragment extends androidx.leanback.app.BrandedFragment {
-    method protected java.lang.Object createEntranceTransition();
-    method public final androidx.leanback.app.ProgressBarManager getProgressBarManager();
-    method protected void onEntranceTransitionEnd();
-    method protected void onEntranceTransitionPrepare();
-    method protected void onEntranceTransitionStart();
-    method public void prepareEntranceTransition();
-    method protected void runEntranceTransition(java.lang.Object);
-    method public void startEntranceTransition();
+  @Deprecated public class BaseFragment extends androidx.leanback.app.BrandedFragment {
+    method @Deprecated protected Object! createEntranceTransition();
+    method @Deprecated public final androidx.leanback.app.ProgressBarManager! getProgressBarManager();
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated protected void onEntranceTransitionEnd();
+    method @Deprecated protected void onEntranceTransitionPrepare();
+    method @Deprecated protected void onEntranceTransitionStart();
+    method @Deprecated public void prepareEntranceTransition();
+    method @Deprecated protected void runEntranceTransition(Object!);
+    method @Deprecated public void startEntranceTransition();
   }
 
   public class BaseSupportFragment extends androidx.leanback.app.BrandedSupportFragment {
-    method protected java.lang.Object createEntranceTransition();
-    method public final androidx.leanback.app.ProgressBarManager getProgressBarManager();
+    method protected Object! createEntranceTransition();
+    method public final androidx.leanback.app.ProgressBarManager! getProgressBarManager();
     method protected void onEntranceTransitionEnd();
     method protected void onEntranceTransitionPrepare();
     method protected void onEntranceTransitionStart();
     method public void prepareEntranceTransition();
-    method protected void runEntranceTransition(java.lang.Object);
+    method protected void runEntranceTransition(Object!);
     method public void startEntranceTransition();
   }
 
-  public deprecated class BrandedFragment extends android.app.Fragment {
-    ctor public BrandedFragment();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public int getSearchAffordanceColor();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public java.lang.CharSequence getTitle();
-    method public android.view.View getTitleView();
-    method public androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void installTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public final boolean isShowingTitle();
-    method public android.view.View onInflateTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColor(int);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitleView(android.view.View);
-    method public void showTitle(boolean);
-    method public void showTitle(int);
+  @Deprecated public class BrandedFragment extends android.app.Fragment {
+    ctor @Deprecated public BrandedFragment();
+    method @Deprecated public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method @Deprecated public int getSearchAffordanceColor();
+    method @Deprecated public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method @Deprecated public CharSequence! getTitle();
+    method @Deprecated public android.view.View! getTitleView();
+    method @Deprecated public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
+    method @Deprecated public void installTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public final boolean isShowingTitle();
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public android.view.View! onInflateTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onPause();
+    method @Deprecated public void onResume();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onStart();
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setOnSearchClickedListener(android.view.View.OnClickListener!);
+    method @Deprecated public void setSearchAffordanceColor(int);
+    method @Deprecated public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method @Deprecated public void setTitle(CharSequence!);
+    method @Deprecated public void setTitleView(android.view.View!);
+    method @Deprecated public void showTitle(boolean);
+    method @Deprecated public void showTitle(int);
   }
 
   public class BrandedSupportFragment extends androidx.fragment.app.Fragment {
     ctor public BrandedSupportFragment();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
     method public int getSearchAffordanceColor();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public java.lang.CharSequence getTitle();
-    method public android.view.View getTitleView();
-    method public androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void installTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
+    method public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method public CharSequence! getTitle();
+    method public android.view.View! getTitleView();
+    method public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
+    method public void installTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
     method public final boolean isShowingTitle();
-    method public android.view.View onInflateTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
+    method public android.view.View! onInflateTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnSearchClickedListener(android.view.View.OnClickListener!);
     method public void setSearchAffordanceColor(int);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitleView(android.view.View);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setTitle(CharSequence!);
+    method public void setTitleView(android.view.View!);
     method public void showTitle(boolean);
     method public void showTitle(int);
   }
 
-  public deprecated class BrowseFragment extends androidx.leanback.app.BaseFragment {
-    ctor public BrowseFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, int);
-    method public void enableMainFragmentScaling(boolean);
-    method public deprecated void enableRowScaling(boolean);
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBrandColor();
-    method public androidx.leanback.app.HeadersFragment getHeadersFragment();
-    method public int getHeadersState();
-    method public android.app.Fragment getMainFragment();
-    method public final androidx.leanback.app.BrowseFragment.MainFragmentAdapterRegistry getMainFragmentRegistry();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.app.RowsFragment getRowsFragment();
-    method public int getSelectedPosition();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getSelectedRowViewHolder();
-    method public final boolean isHeadersTransitionOnBackEnabled();
-    method public boolean isInHeadersTransition();
-    method public boolean isShowingHeaders();
-    method public androidx.leanback.app.HeadersFragment onCreateHeadersFragment();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setBrandColor(int);
-    method public void setBrowseTransitionListener(androidx.leanback.app.BrowseFragment.BrowseTransitionListener);
-    method public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector);
-    method public void setHeadersState(int);
-    method public final void setHeadersTransitionOnBackEnabled(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
-    method public void startHeadersTransition(boolean);
-    field public static final int HEADERS_DISABLED = 3; // 0x3
-    field public static final int HEADERS_ENABLED = 1; // 0x1
-    field public static final int HEADERS_HIDDEN = 2; // 0x2
+  @Deprecated public class BrowseFragment extends androidx.leanback.app.BaseFragment {
+    method @Deprecated public static android.os.Bundle! createArgs(android.os.Bundle!, String!, int);
+    method @Deprecated public void enableMainFragmentScaling(boolean);
+    method @Deprecated public void enableRowScaling(boolean);
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated @ColorInt public int getBrandColor();
+    method @Deprecated public androidx.leanback.app.HeadersFragment! getHeadersFragment();
+    method @Deprecated public int getHeadersState();
+    method @Deprecated public android.app.Fragment! getMainFragment();
+    method @Deprecated public final androidx.leanback.app.BrowseFragment.MainFragmentAdapterRegistry! getMainFragmentRegistry();
+    method @Deprecated public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public androidx.leanback.widget.OnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method @Deprecated public androidx.leanback.app.RowsFragment! getRowsFragment();
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! getSelectedRowViewHolder();
+    method @Deprecated public final boolean isHeadersTransitionOnBackEnabled();
+    method @Deprecated public boolean isInHeadersTransition();
+    method @Deprecated public boolean isShowingHeaders();
+    method @Deprecated public androidx.leanback.app.HeadersFragment! onCreateHeadersFragment();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroy();
+    method @Deprecated public void onStop();
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setBrandColor(@ColorInt int);
+    method @Deprecated public void setBrowseTransitionListener(androidx.leanback.app.BrowseFragment.BrowseTransitionListener!);
+    method @Deprecated public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method @Deprecated public void setHeadersState(int);
+    method @Deprecated public final void setHeadersTransitionOnBackEnabled(boolean);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
+    method @Deprecated public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method @Deprecated public void startHeadersTransition(boolean);
+    field @Deprecated public static final int HEADERS_DISABLED = 3; // 0x3
+    field @Deprecated public static final int HEADERS_ENABLED = 1; // 0x1
+    field @Deprecated public static final int HEADERS_HIDDEN = 2; // 0x2
   }
 
-  public static deprecated class BrowseFragment.BrowseTransitionListener {
-    ctor public BrowseFragment.BrowseTransitionListener();
-    method public void onHeadersTransitionStart(boolean);
-    method public void onHeadersTransitionStop(boolean);
+  @Deprecated public static class BrowseFragment.BrowseTransitionListener {
+    ctor @Deprecated public BrowseFragment.BrowseTransitionListener();
+    method @Deprecated public void onHeadersTransitionStart(boolean);
+    method @Deprecated public void onHeadersTransitionStop(boolean);
   }
 
-  public static abstract deprecated class BrowseFragment.FragmentFactory<T extends android.app.Fragment> {
-    ctor public BrowseFragment.FragmentFactory();
-    method public abstract T createFragment(java.lang.Object);
+  @Deprecated public abstract static class BrowseFragment.FragmentFactory<T extends android.app.Fragment> {
+    ctor @Deprecated public BrowseFragment.FragmentFactory();
+    method @Deprecated public abstract T! createFragment(Object!);
   }
 
-  public static abstract deprecated interface BrowseFragment.FragmentHost {
-    method public abstract void notifyDataReady(androidx.leanback.app.BrowseFragment.MainFragmentAdapter);
-    method public abstract void notifyViewCreated(androidx.leanback.app.BrowseFragment.MainFragmentAdapter);
-    method public abstract void showTitleView(boolean);
+  @Deprecated public static interface BrowseFragment.FragmentHost {
+    method @Deprecated public void notifyDataReady(androidx.leanback.app.BrowseFragment.MainFragmentAdapter!);
+    method @Deprecated public void notifyViewCreated(androidx.leanback.app.BrowseFragment.MainFragmentAdapter!);
+    method @Deprecated public void showTitleView(boolean);
   }
 
-  public static deprecated class BrowseFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseFragment.FragmentFactory {
-    ctor public BrowseFragment.ListRowFragmentFactory();
-    method public androidx.leanback.app.RowsFragment createFragment(java.lang.Object);
+  @Deprecated public static class BrowseFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseFragment.FragmentFactory<androidx.leanback.app.RowsFragment> {
+    ctor @Deprecated public BrowseFragment.ListRowFragmentFactory();
+    method @Deprecated public androidx.leanback.app.RowsFragment! createFragment(Object!);
   }
 
-  public static deprecated class BrowseFragment.MainFragmentAdapter<T extends android.app.Fragment> {
-    ctor public BrowseFragment.MainFragmentAdapter(T);
-    method public final T getFragment();
-    method public final androidx.leanback.app.BrowseFragment.FragmentHost getFragmentHost();
-    method public boolean isScalingEnabled();
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public boolean onTransitionPrepare();
-    method public void onTransitionStart();
-    method public void setAlignment(int);
-    method public void setEntranceTransitionState(boolean);
-    method public void setExpand(boolean);
-    method public void setScalingEnabled(boolean);
+  @Deprecated public static class BrowseFragment.MainFragmentAdapter<T extends android.app.Fragment> {
+    ctor @Deprecated public BrowseFragment.MainFragmentAdapter(T!);
+    method @Deprecated public final T! getFragment();
+    method @Deprecated public final androidx.leanback.app.BrowseFragment.FragmentHost! getFragmentHost();
+    method @Deprecated public boolean isScalingEnabled();
+    method @Deprecated public boolean isScrolling();
+    method @Deprecated public void onTransitionEnd();
+    method @Deprecated public boolean onTransitionPrepare();
+    method @Deprecated public void onTransitionStart();
+    method @Deprecated public void setAlignment(int);
+    method @Deprecated public void setEntranceTransitionState(boolean);
+    method @Deprecated public void setExpand(boolean);
+    method @Deprecated public void setScalingEnabled(boolean);
   }
 
-  public static abstract deprecated interface BrowseFragment.MainFragmentAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseFragment.MainFragmentAdapter getMainFragmentAdapter();
+  @Deprecated public static interface BrowseFragment.MainFragmentAdapterProvider {
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentAdapter! getMainFragmentAdapter();
   }
 
-  public static final deprecated class BrowseFragment.MainFragmentAdapterRegistry {
-    ctor public BrowseFragment.MainFragmentAdapterRegistry();
-    method public android.app.Fragment createFragment(java.lang.Object);
-    method public void registerFragment(java.lang.Class, androidx.leanback.app.BrowseFragment.FragmentFactory);
+  @Deprecated public static final class BrowseFragment.MainFragmentAdapterRegistry {
+    ctor @Deprecated public BrowseFragment.MainFragmentAdapterRegistry();
+    method @Deprecated public android.app.Fragment! createFragment(Object!);
+    method @Deprecated public void registerFragment(Class!, androidx.leanback.app.BrowseFragment.FragmentFactory!);
   }
 
-  public static deprecated class BrowseFragment.MainFragmentRowsAdapter<T extends android.app.Fragment> {
-    ctor public BrowseFragment.MainFragmentRowsAdapter(T);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public final T getFragment();
-    method public int getSelectedPosition();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
-    method public void setSelectedPosition(int, boolean);
+  @Deprecated public static class BrowseFragment.MainFragmentRowsAdapter<T extends android.app.Fragment> {
+    ctor @Deprecated public BrowseFragment.MainFragmentRowsAdapter(T!);
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method @Deprecated public final T! getFragment();
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method @Deprecated public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract deprecated interface BrowseFragment.MainFragmentRowsAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
+  @Deprecated public static interface BrowseFragment.MainFragmentRowsAdapterProvider {
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
   }
 
   public class BrowseSupportFragment extends androidx.leanback.app.BaseSupportFragment {
-    ctor public BrowseSupportFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, int);
+    method public static android.os.Bundle! createArgs(android.os.Bundle!, String!, int);
     method public void enableMainFragmentScaling(boolean);
-    method public deprecated void enableRowScaling(boolean);
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBrandColor();
+    method @Deprecated public void enableRowScaling(boolean);
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @ColorInt public int getBrandColor();
     method public int getHeadersState();
-    method public androidx.leanback.app.HeadersSupportFragment getHeadersSupportFragment();
-    method public androidx.fragment.app.Fragment getMainFragment();
-    method public final androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapterRegistry getMainFragmentRegistry();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.app.RowsSupportFragment getRowsSupportFragment();
+    method public androidx.leanback.app.HeadersSupportFragment! getHeadersSupportFragment();
+    method public androidx.fragment.app.Fragment! getMainFragment();
+    method public final androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapterRegistry! getMainFragmentRegistry();
+    method public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method public androidx.leanback.widget.OnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method public androidx.leanback.app.RowsSupportFragment! getRowsSupportFragment();
     method public int getSelectedPosition();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getSelectedRowViewHolder();
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! getSelectedRowViewHolder();
     method public final boolean isHeadersTransitionOnBackEnabled();
     method public boolean isInHeadersTransition();
     method public boolean isShowingHeaders();
-    method public androidx.leanback.app.HeadersSupportFragment onCreateHeadersSupportFragment();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setBrandColor(int);
-    method public void setBrowseTransitionListener(androidx.leanback.app.BrowseSupportFragment.BrowseTransitionListener);
-    method public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector);
+    method public androidx.leanback.app.HeadersSupportFragment! onCreateHeadersSupportFragment();
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setBrandColor(@ColorInt int);
+    method public void setBrowseTransitionListener(androidx.leanback.app.BrowseSupportFragment.BrowseTransitionListener!);
+    method public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector!);
     method public void setHeadersState(int);
     method public final void setHeadersTransitionOnBackEnabled(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, boolean);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
     method public void startHeadersTransition(boolean);
     field public static final int HEADERS_DISABLED = 3; // 0x3
     field public static final int HEADERS_ENABLED = 1; // 0x1
@@ -227,26 +236,26 @@
     method public void onHeadersTransitionStop(boolean);
   }
 
-  public static abstract class BrowseSupportFragment.FragmentFactory<T extends androidx.fragment.app.Fragment> {
+  public abstract static class BrowseSupportFragment.FragmentFactory<T extends androidx.fragment.app.Fragment> {
     ctor public BrowseSupportFragment.FragmentFactory();
-    method public abstract T createFragment(java.lang.Object);
+    method public abstract T! createFragment(Object!);
   }
 
-  public static abstract interface BrowseSupportFragment.FragmentHost {
-    method public abstract void notifyDataReady(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter);
-    method public abstract void notifyViewCreated(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter);
-    method public abstract void showTitleView(boolean);
+  public static interface BrowseSupportFragment.FragmentHost {
+    method public void notifyDataReady(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter!);
+    method public void notifyViewCreated(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter!);
+    method public void showTitleView(boolean);
   }
 
-  public static class BrowseSupportFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseSupportFragment.FragmentFactory {
+  public static class BrowseSupportFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseSupportFragment.FragmentFactory<androidx.leanback.app.RowsSupportFragment> {
     ctor public BrowseSupportFragment.ListRowFragmentFactory();
-    method public androidx.leanback.app.RowsSupportFragment createFragment(java.lang.Object);
+    method public androidx.leanback.app.RowsSupportFragment! createFragment(Object!);
   }
 
   public static class BrowseSupportFragment.MainFragmentAdapter<T extends androidx.fragment.app.Fragment> {
-    ctor public BrowseSupportFragment.MainFragmentAdapter(T);
-    method public final T getFragment();
-    method public final androidx.leanback.app.BrowseSupportFragment.FragmentHost getFragmentHost();
+    ctor public BrowseSupportFragment.MainFragmentAdapter(T!);
+    method public final T! getFragment();
+    method public final androidx.leanback.app.BrowseSupportFragment.FragmentHost! getFragmentHost();
     method public boolean isScalingEnabled();
     method public boolean isScrolling();
     method public void onTransitionEnd();
@@ -258,228 +267,234 @@
     method public void setScalingEnabled(boolean);
   }
 
-  public static abstract interface BrowseSupportFragment.MainFragmentAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter getMainFragmentAdapter();
+  public static interface BrowseSupportFragment.MainFragmentAdapterProvider {
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter! getMainFragmentAdapter();
   }
 
   public static final class BrowseSupportFragment.MainFragmentAdapterRegistry {
     ctor public BrowseSupportFragment.MainFragmentAdapterRegistry();
-    method public androidx.fragment.app.Fragment createFragment(java.lang.Object);
-    method public void registerFragment(java.lang.Class, androidx.leanback.app.BrowseSupportFragment.FragmentFactory);
+    method public androidx.fragment.app.Fragment! createFragment(Object!);
+    method public void registerFragment(Class!, androidx.leanback.app.BrowseSupportFragment.FragmentFactory!);
   }
 
   public static class BrowseSupportFragment.MainFragmentRowsAdapter<T extends androidx.fragment.app.Fragment> {
-    ctor public BrowseSupportFragment.MainFragmentRowsAdapter(T);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public final T getFragment();
+    ctor public BrowseSupportFragment.MainFragmentRowsAdapter(T!);
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method public final T! getFragment();
     method public int getSelectedPosition();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
     method public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract interface BrowseSupportFragment.MainFragmentRowsAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
+  public static interface BrowseSupportFragment.MainFragmentRowsAdapterProvider {
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
   }
 
-  public deprecated class DetailsFragment extends androidx.leanback.app.BaseFragment {
-    ctor public DetailsFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.DetailsParallax getParallax();
-    method public androidx.leanback.app.RowsFragment getRowsFragment();
-    method protected deprecated android.view.View inflateTitle(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, int, int);
-    method protected void onSetRowStatus(androidx.leanback.widget.RowPresenter, androidx.leanback.widget.RowPresenter.ViewHolder, int, int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter);
-    method protected void setupPresenter(androidx.leanback.widget.Presenter);
+  @Deprecated public class DetailsFragment extends androidx.leanback.app.BaseFragment {
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public androidx.leanback.widget.DetailsParallax! getParallax();
+    method @Deprecated public androidx.leanback.app.RowsFragment! getRowsFragment();
+    method @Deprecated protected android.view.View! inflateTitle(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, int, int);
+    method @Deprecated protected void onSetRowStatus(androidx.leanback.widget.RowPresenter!, androidx.leanback.widget.RowPresenter.ViewHolder!, int, int, int);
+    method @Deprecated public void onStop();
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
+    method @Deprecated protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!);
+    method @Deprecated protected void setupPresenter(androidx.leanback.widget.Presenter!);
   }
 
-  public deprecated class DetailsFragmentBackgroundController {
-    ctor public DetailsFragmentBackgroundController(androidx.leanback.app.DetailsFragment);
-    method public boolean canNavigateToVideoFragment();
-    method public void enableParallax();
-    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget);
-    method public final android.app.Fragment findOrCreateVideoFragment();
-    method public final android.graphics.drawable.Drawable getBottomDrawable();
-    method public final android.graphics.Bitmap getCoverBitmap();
-    method public final android.graphics.drawable.Drawable getCoverDrawable();
-    method public final int getParallaxDrawableMaxOffset();
-    method public final androidx.leanback.media.PlaybackGlue getPlaybackGlue();
-    method public final int getSolidColor();
-    method public androidx.leanback.media.PlaybackGlueHost onCreateGlueHost();
-    method public android.app.Fragment onCreateVideoFragment();
-    method public final void setCoverBitmap(android.graphics.Bitmap);
-    method public final void setParallaxDrawableMaxOffset(int);
-    method public final void setSolidColor(int);
-    method public void setupVideoPlayback(androidx.leanback.media.PlaybackGlue);
-    method public final void switchToRows();
-    method public final void switchToVideo();
+  @Deprecated public class DetailsFragmentBackgroundController {
+    ctor @Deprecated public DetailsFragmentBackgroundController(androidx.leanback.app.DetailsFragment!);
+    method @Deprecated public boolean canNavigateToVideoFragment();
+    method @Deprecated public void enableParallax();
+    method @Deprecated public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget?);
+    method @Deprecated public final android.app.Fragment! findOrCreateVideoFragment();
+    method @Deprecated public final android.graphics.drawable.Drawable! getBottomDrawable();
+    method @Deprecated public final android.graphics.Bitmap! getCoverBitmap();
+    method @Deprecated public final android.graphics.drawable.Drawable! getCoverDrawable();
+    method @Deprecated public final int getParallaxDrawableMaxOffset();
+    method @Deprecated public final androidx.leanback.media.PlaybackGlue! getPlaybackGlue();
+    method @Deprecated @ColorInt public final int getSolidColor();
+    method @Deprecated public androidx.leanback.media.PlaybackGlueHost! onCreateGlueHost();
+    method @Deprecated public android.app.Fragment! onCreateVideoFragment();
+    method @Deprecated public final void setCoverBitmap(android.graphics.Bitmap!);
+    method @Deprecated public final void setParallaxDrawableMaxOffset(int);
+    method @Deprecated public final void setSolidColor(@ColorInt int);
+    method @Deprecated public void setupVideoPlayback(androidx.leanback.media.PlaybackGlue);
+    method @Deprecated public final void switchToRows();
+    method @Deprecated public final void switchToVideo();
   }
 
   public class DetailsSupportFragment extends androidx.leanback.app.BaseSupportFragment {
-    ctor public DetailsSupportFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.DetailsParallax getParallax();
-    method public androidx.leanback.app.RowsSupportFragment getRowsSupportFragment();
-    method protected deprecated android.view.View inflateTitle(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, int, int);
-    method protected void onSetRowStatus(androidx.leanback.widget.RowPresenter, androidx.leanback.widget.RowPresenter.ViewHolder, int, int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method public androidx.leanback.widget.DetailsParallax! getParallax();
+    method public androidx.leanback.app.RowsSupportFragment! getRowsSupportFragment();
+    method @Deprecated protected android.view.View! inflateTitle(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, int, int);
+    method protected void onSetRowStatus(androidx.leanback.widget.RowPresenter!, androidx.leanback.widget.RowPresenter.ViewHolder!, int, int, int);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, boolean);
-    method protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter);
-    method protected void setupPresenter(androidx.leanback.widget.Presenter);
+    method protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!);
+    method protected void setupPresenter(androidx.leanback.widget.Presenter!);
   }
 
   public class DetailsSupportFragmentBackgroundController {
-    ctor public DetailsSupportFragmentBackgroundController(androidx.leanback.app.DetailsSupportFragment);
+    ctor public DetailsSupportFragmentBackgroundController(androidx.leanback.app.DetailsSupportFragment!);
     method public boolean canNavigateToVideoSupportFragment();
     method public void enableParallax();
-    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget);
-    method public final androidx.fragment.app.Fragment findOrCreateVideoSupportFragment();
-    method public final android.graphics.drawable.Drawable getBottomDrawable();
-    method public final android.graphics.Bitmap getCoverBitmap();
-    method public final android.graphics.drawable.Drawable getCoverDrawable();
+    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget?);
+    method public final androidx.fragment.app.Fragment! findOrCreateVideoSupportFragment();
+    method public final android.graphics.drawable.Drawable! getBottomDrawable();
+    method public final android.graphics.Bitmap! getCoverBitmap();
+    method public final android.graphics.drawable.Drawable! getCoverDrawable();
     method public final int getParallaxDrawableMaxOffset();
-    method public final androidx.leanback.media.PlaybackGlue getPlaybackGlue();
-    method public final int getSolidColor();
-    method public androidx.leanback.media.PlaybackGlueHost onCreateGlueHost();
-    method public androidx.fragment.app.Fragment onCreateVideoSupportFragment();
-    method public final void setCoverBitmap(android.graphics.Bitmap);
+    method public final androidx.leanback.media.PlaybackGlue! getPlaybackGlue();
+    method @ColorInt public final int getSolidColor();
+    method public androidx.leanback.media.PlaybackGlueHost! onCreateGlueHost();
+    method public androidx.fragment.app.Fragment! onCreateVideoSupportFragment();
+    method public final void setCoverBitmap(android.graphics.Bitmap!);
     method public final void setParallaxDrawableMaxOffset(int);
-    method public final void setSolidColor(int);
+    method public final void setSolidColor(@ColorInt int);
     method public void setupVideoPlayback(androidx.leanback.media.PlaybackGlue);
     method public final void switchToRows();
     method public final void switchToVideo();
   }
 
-  public deprecated class ErrorFragment extends androidx.leanback.app.BrandedFragment {
-    ctor public ErrorFragment();
-    method public android.graphics.drawable.Drawable getBackgroundDrawable();
-    method public android.view.View.OnClickListener getButtonClickListener();
-    method public java.lang.String getButtonText();
-    method public android.graphics.drawable.Drawable getImageDrawable();
-    method public java.lang.CharSequence getMessage();
-    method public boolean isBackgroundTranslucent();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setButtonClickListener(android.view.View.OnClickListener);
-    method public void setButtonText(java.lang.String);
-    method public void setDefaultBackground(boolean);
-    method public void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setMessage(java.lang.CharSequence);
+  @Deprecated public class ErrorFragment extends androidx.leanback.app.BrandedFragment {
+    ctor @Deprecated public ErrorFragment();
+    method @Deprecated public android.graphics.drawable.Drawable! getBackgroundDrawable();
+    method @Deprecated public android.view.View.OnClickListener! getButtonClickListener();
+    method @Deprecated public String! getButtonText();
+    method @Deprecated public android.graphics.drawable.Drawable! getImageDrawable();
+    method @Deprecated public CharSequence! getMessage();
+    method @Deprecated public boolean isBackgroundTranslucent();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setButtonClickListener(android.view.View.OnClickListener!);
+    method @Deprecated public void setButtonText(String!);
+    method @Deprecated public void setDefaultBackground(boolean);
+    method @Deprecated public void setImageDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setMessage(CharSequence!);
   }
 
   public class ErrorSupportFragment extends androidx.leanback.app.BrandedSupportFragment {
     ctor public ErrorSupportFragment();
-    method public android.graphics.drawable.Drawable getBackgroundDrawable();
-    method public android.view.View.OnClickListener getButtonClickListener();
-    method public java.lang.String getButtonText();
-    method public android.graphics.drawable.Drawable getImageDrawable();
-    method public java.lang.CharSequence getMessage();
+    method public android.graphics.drawable.Drawable! getBackgroundDrawable();
+    method public android.view.View.OnClickListener! getButtonClickListener();
+    method public String! getButtonText();
+    method public android.graphics.drawable.Drawable! getImageDrawable();
+    method public CharSequence! getMessage();
     method public boolean isBackgroundTranslucent();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setButtonClickListener(android.view.View.OnClickListener);
-    method public void setButtonText(java.lang.String);
+    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
+    method public void setButtonClickListener(android.view.View.OnClickListener!);
+    method public void setButtonText(String!);
     method public void setDefaultBackground(boolean);
-    method public void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setMessage(java.lang.CharSequence);
+    method public void setImageDrawable(android.graphics.drawable.Drawable!);
+    method public void setMessage(CharSequence!);
   }
 
-  public deprecated class GuidedStepFragment extends android.app.Fragment {
-    ctor public GuidedStepFragment();
-    method public static int add(android.app.FragmentManager, androidx.leanback.app.GuidedStepFragment);
-    method public static int add(android.app.FragmentManager, androidx.leanback.app.GuidedStepFragment, int);
-    method public static int addAsRoot(android.app.Activity, androidx.leanback.app.GuidedStepFragment, int);
-    method public void collapseAction(boolean);
-    method public void collapseSubActions();
-    method public void expandAction(androidx.leanback.widget.GuidedAction, boolean);
-    method public void expandSubActions(androidx.leanback.widget.GuidedAction);
-    method public androidx.leanback.widget.GuidedAction findActionById(long);
-    method public int findActionPositionById(long);
-    method public androidx.leanback.widget.GuidedAction findButtonActionById(long);
-    method public int findButtonActionPositionById(long);
-    method public void finishGuidedStepFragments();
-    method public android.view.View getActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getActions();
-    method public android.view.View getButtonActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getButtonActions();
-    method public static androidx.leanback.app.GuidedStepFragment getCurrentGuidedStepFragment(android.app.FragmentManager);
-    method public androidx.leanback.widget.GuidanceStylist getGuidanceStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedActionsStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedButtonActionsStylist();
-    method public int getSelectedActionPosition();
-    method public int getSelectedButtonActionPosition();
-    method public int getUiStyle();
-    method public boolean isExpanded();
-    method public boolean isFocusOutEndAllowed();
-    method public boolean isFocusOutStartAllowed();
-    method public boolean isSubActionsExpanded();
-    method public void notifyActionChanged(int);
-    method public void notifyButtonActionChanged(int);
-    method protected void onAddSharedElementTransition(android.app.FragmentTransaction, androidx.leanback.app.GuidedStepFragment);
-    method public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateActionsStylist();
-    method public android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateButtonActionsStylist();
-    method public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle);
-    method public androidx.leanback.widget.GuidanceStylist onCreateGuidanceStylist();
-    method public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction);
-    method public deprecated void onGuidedActionEdited(androidx.leanback.widget.GuidedAction);
-    method public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction);
-    method protected void onProvideFragmentTransitions();
-    method public int onProvideTheme();
-    method public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void openInEditMode(androidx.leanback.widget.GuidedAction);
-    method public void popBackStackToGuidedStepFragment(java.lang.Class, int);
-    method public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>);
-    method public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setSelectedActionPosition(int);
-    method public void setSelectedButtonActionPosition(int);
-    method public void setUiStyle(int);
-    field public static final java.lang.String EXTRA_UI_STYLE = "uiStyle";
-    field public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
-    field public static final deprecated int UI_STYLE_DEFAULT = 0; // 0x0
-    field public static final int UI_STYLE_ENTRANCE = 1; // 0x1
-    field public static final int UI_STYLE_REPLACE = 0; // 0x0
+  @Deprecated public class GuidedStepFragment extends android.app.Fragment {
+    ctor @Deprecated public GuidedStepFragment();
+    method @Deprecated public static int add(android.app.FragmentManager!, androidx.leanback.app.GuidedStepFragment!);
+    method @Deprecated public static int add(android.app.FragmentManager!, androidx.leanback.app.GuidedStepFragment!, int);
+    method @Deprecated public static int addAsRoot(android.app.Activity!, androidx.leanback.app.GuidedStepFragment!, int);
+    method @Deprecated public void collapseAction(boolean);
+    method @Deprecated public void collapseSubActions();
+    method @Deprecated public void expandAction(androidx.leanback.widget.GuidedAction!, boolean);
+    method @Deprecated public void expandSubActions(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public androidx.leanback.widget.GuidedAction! findActionById(long);
+    method @Deprecated public int findActionPositionById(long);
+    method @Deprecated public androidx.leanback.widget.GuidedAction! findButtonActionById(long);
+    method @Deprecated public int findButtonActionPositionById(long);
+    method @Deprecated public void finishGuidedStepFragments();
+    method @Deprecated public android.view.View! getActionItemView(int);
+    method @Deprecated public java.util.List<androidx.leanback.widget.GuidedAction>! getActions();
+    method @Deprecated public android.view.View! getButtonActionItemView(int);
+    method @Deprecated public java.util.List<androidx.leanback.widget.GuidedAction>! getButtonActions();
+    method @Deprecated public static androidx.leanback.app.GuidedStepFragment! getCurrentGuidedStepFragment(android.app.FragmentManager!);
+    method @Deprecated public androidx.leanback.widget.GuidanceStylist! getGuidanceStylist();
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! getGuidedActionsStylist();
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! getGuidedButtonActionsStylist();
+    method @Deprecated public int getSelectedActionPosition();
+    method @Deprecated public int getSelectedButtonActionPosition();
+    method @Deprecated public int getUiStyle();
+    method @Deprecated public boolean isExpanded();
+    method @Deprecated public boolean isFocusOutEndAllowed();
+    method @Deprecated public boolean isFocusOutStartAllowed();
+    method @Deprecated public boolean isSubActionsExpanded();
+    method @Deprecated public void notifyActionChanged(int);
+    method @Deprecated public void notifyButtonActionChanged(int);
+    method @Deprecated protected void onAddSharedElementTransition(android.app.FragmentTransaction!, androidx.leanback.app.GuidedStepFragment!);
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! onCreateActionsStylist();
+    method @Deprecated public android.view.View! onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! onCreateButtonActionsStylist();
+    method @Deprecated public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle!);
+    method @Deprecated public androidx.leanback.widget.GuidanceStylist! onCreateGuidanceStylist();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionEdited(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated protected void onProvideFragmentTransitions();
+    method @Deprecated public int onProvideTheme();
+    method @Deprecated public void onResume();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void openInEditMode(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void popBackStackToGuidedStepFragment(Class!, int);
+    method @Deprecated public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method @Deprecated public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>!);
+    method @Deprecated public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method @Deprecated public void setSelectedActionPosition(int);
+    method @Deprecated public void setSelectedButtonActionPosition(int);
+    method @Deprecated public void setUiStyle(int);
+    field @Deprecated public static final String EXTRA_UI_STYLE = "uiStyle";
+    field @Deprecated public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
+    field @Deprecated public static final int UI_STYLE_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int UI_STYLE_ENTRANCE = 1; // 0x1
+    field @Deprecated public static final int UI_STYLE_REPLACE = 0; // 0x0
   }
 
   public class GuidedStepSupportFragment extends androidx.fragment.app.Fragment {
     ctor public GuidedStepSupportFragment();
-    method public static int add(androidx.fragment.app.FragmentManager, androidx.leanback.app.GuidedStepSupportFragment);
-    method public static int add(androidx.fragment.app.FragmentManager, androidx.leanback.app.GuidedStepSupportFragment, int);
-    method public static int addAsRoot(androidx.fragment.app.FragmentActivity, androidx.leanback.app.GuidedStepSupportFragment, int);
+    method public static int add(androidx.fragment.app.FragmentManager!, androidx.leanback.app.GuidedStepSupportFragment!);
+    method public static int add(androidx.fragment.app.FragmentManager!, androidx.leanback.app.GuidedStepSupportFragment!, int);
+    method public static int addAsRoot(androidx.fragment.app.FragmentActivity!, androidx.leanback.app.GuidedStepSupportFragment!, int);
     method public void collapseAction(boolean);
     method public void collapseSubActions();
-    method public void expandAction(androidx.leanback.widget.GuidedAction, boolean);
-    method public void expandSubActions(androidx.leanback.widget.GuidedAction);
-    method public androidx.leanback.widget.GuidedAction findActionById(long);
+    method public void expandAction(androidx.leanback.widget.GuidedAction!, boolean);
+    method public void expandSubActions(androidx.leanback.widget.GuidedAction!);
+    method public androidx.leanback.widget.GuidedAction! findActionById(long);
     method public int findActionPositionById(long);
-    method public androidx.leanback.widget.GuidedAction findButtonActionById(long);
+    method public androidx.leanback.widget.GuidedAction! findButtonActionById(long);
     method public int findButtonActionPositionById(long);
     method public void finishGuidedStepSupportFragments();
-    method public android.view.View getActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getActions();
-    method public android.view.View getButtonActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getButtonActions();
-    method public static androidx.leanback.app.GuidedStepSupportFragment getCurrentGuidedStepSupportFragment(androidx.fragment.app.FragmentManager);
-    method public androidx.leanback.widget.GuidanceStylist getGuidanceStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedActionsStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedButtonActionsStylist();
+    method public android.view.View! getActionItemView(int);
+    method public java.util.List<androidx.leanback.widget.GuidedAction>! getActions();
+    method public android.view.View! getButtonActionItemView(int);
+    method public java.util.List<androidx.leanback.widget.GuidedAction>! getButtonActions();
+    method public static androidx.leanback.app.GuidedStepSupportFragment! getCurrentGuidedStepSupportFragment(androidx.fragment.app.FragmentManager!);
+    method public androidx.leanback.widget.GuidanceStylist! getGuidanceStylist();
+    method public androidx.leanback.widget.GuidedActionsStylist! getGuidedActionsStylist();
+    method public androidx.leanback.widget.GuidedActionsStylist! getGuidedButtonActionsStylist();
     method public int getSelectedActionPosition();
     method public int getSelectedButtonActionPosition();
     method public int getUiStyle();
@@ -489,216 +504,266 @@
     method public boolean isSubActionsExpanded();
     method public void notifyActionChanged(int);
     method public void notifyButtonActionChanged(int);
-    method protected void onAddSharedElementTransition(androidx.fragment.app.FragmentTransaction, androidx.leanback.app.GuidedStepSupportFragment);
-    method public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateActionsStylist();
-    method public android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateButtonActionsStylist();
-    method public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle);
-    method public androidx.leanback.widget.GuidanceStylist onCreateGuidanceStylist();
-    method public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction);
-    method public deprecated void onGuidedActionEdited(androidx.leanback.widget.GuidedAction);
-    method public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction);
+    method protected void onAddSharedElementTransition(androidx.fragment.app.FragmentTransaction!, androidx.leanback.app.GuidedStepSupportFragment!);
+    method public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method public androidx.leanback.widget.GuidedActionsStylist! onCreateActionsStylist();
+    method public android.view.View! onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method public androidx.leanback.widget.GuidedActionsStylist! onCreateButtonActionsStylist();
+    method public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle!);
+    method public androidx.leanback.widget.GuidanceStylist! onCreateGuidanceStylist();
+    method public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionEdited(androidx.leanback.widget.GuidedAction!);
+    method public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction!);
+    method public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction!);
     method protected void onProvideFragmentTransitions();
     method public int onProvideTheme();
-    method public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void openInEditMode(androidx.leanback.widget.GuidedAction);
-    method public void popBackStackToGuidedStepSupportFragment(java.lang.Class, int);
-    method public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>);
-    method public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>);
+    method public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method public void openInEditMode(androidx.leanback.widget.GuidedAction!);
+    method public void popBackStackToGuidedStepSupportFragment(Class!, int);
+    method public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>!);
+    method public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
     method public void setSelectedActionPosition(int);
     method public void setSelectedButtonActionPosition(int);
     method public void setUiStyle(int);
-    field public static final java.lang.String EXTRA_UI_STYLE = "uiStyle";
+    field public static final String EXTRA_UI_STYLE = "uiStyle";
     field public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
-    field public static final deprecated int UI_STYLE_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int UI_STYLE_DEFAULT = 0; // 0x0
     field public static final int UI_STYLE_ENTRANCE = 1; // 0x1
     field public static final int UI_STYLE_REPLACE = 0; // 0x0
   }
 
-  public deprecated class HeadersFragment extends android.app.Fragment {
-    ctor public HeadersFragment();
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public void onTransitionStart();
-    method public void setOnHeaderClickedListener(androidx.leanback.app.HeadersFragment.OnHeaderClickedListener);
-    method public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersFragment.OnHeaderViewSelectedListener);
+  @Deprecated public class HeadersFragment extends android.app.Fragment {
+    ctor @Deprecated public HeadersFragment();
+    method @Deprecated public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method @Deprecated public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
+    method @Deprecated public boolean isScrolling();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onTransitionEnd();
+    method @Deprecated public boolean onTransitionPrepare();
+    method @Deprecated public void onTransitionStart();
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setAlignment(int);
+    method @Deprecated public void setOnHeaderClickedListener(androidx.leanback.app.HeadersFragment.OnHeaderClickedListener!);
+    method @Deprecated public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersFragment.OnHeaderViewSelectedListener!);
+    method @Deprecated public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract deprecated interface HeadersFragment.OnHeaderClickedListener {
-    method public abstract void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  @Deprecated public static interface HeadersFragment.OnHeaderClickedListener {
+    method @Deprecated public void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
-  public static abstract deprecated interface HeadersFragment.OnHeaderViewSelectedListener {
-    method public abstract void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  @Deprecated public static interface HeadersFragment.OnHeaderViewSelectedListener {
+    method @Deprecated public void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
   public class HeadersSupportFragment extends androidx.fragment.app.Fragment {
     ctor public HeadersSupportFragment();
+    method public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method public int getSelectedPosition();
+    method public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
     method public boolean isScrolling();
     method public void onTransitionEnd();
+    method public boolean onTransitionPrepare();
     method public void onTransitionStart();
-    method public void setOnHeaderClickedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderClickedListener);
-    method public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener);
+    method public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setAlignment(int);
+    method public void setOnHeaderClickedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderClickedListener!);
+    method public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener!);
+    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method public void setSelectedPosition(int);
+    method public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract interface HeadersSupportFragment.OnHeaderClickedListener {
-    method public abstract void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  public static interface HeadersSupportFragment.OnHeaderClickedListener {
+    method public void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
-  public static abstract interface HeadersSupportFragment.OnHeaderViewSelectedListener {
-    method public abstract void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  public static interface HeadersSupportFragment.OnHeaderViewSelectedListener {
+    method public void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
-  public abstract deprecated class OnboardingFragment extends android.app.Fragment {
-    ctor public OnboardingFragment();
-    method public final int getArrowBackgroundColor();
-    method public final int getArrowColor();
-    method protected final int getCurrentPageIndex();
-    method public final int getDescriptionViewTextColor();
-    method public final int getDotBackgroundColor();
-    method public final int getIconResourceId();
-    method public final int getLogoResourceId();
-    method protected abstract int getPageCount();
-    method protected abstract java.lang.CharSequence getPageDescription(int);
-    method protected abstract java.lang.CharSequence getPageTitle(int);
-    method public final java.lang.CharSequence getStartButtonText();
-    method public final int getTitleViewTextColor();
-    method protected final boolean isLogoAnimationFinished();
-    method protected void moveToNextPage();
-    method protected void moveToPreviousPage();
-    method protected abstract android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected abstract android.view.View onCreateContentView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateDescriptionAnimator();
-    method protected android.animation.Animator onCreateEnterAnimation();
-    method protected abstract android.view.View onCreateForegroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateLogoAnimation();
-    method protected android.animation.Animator onCreateTitleAnimator();
-    method protected void onFinishFragment();
-    method protected void onLogoAnimationFinished();
-    method protected void onPageChanged(int, int);
-    method public int onProvideTheme();
-    method public void setArrowBackgroundColor(int);
-    method public void setArrowColor(int);
-    method public void setDescriptionViewTextColor(int);
-    method public void setDotBackgroundColor(int);
-    method public final void setIconResouceId(int);
-    method public final void setLogoResourceId(int);
-    method public void setStartButtonText(java.lang.CharSequence);
-    method public void setTitleViewTextColor(int);
-    method protected final void startEnterAnimation(boolean);
+  @Deprecated public abstract class OnboardingFragment extends android.app.Fragment {
+    ctor @Deprecated public OnboardingFragment();
+    method @Deprecated @ColorInt public final int getArrowBackgroundColor();
+    method @Deprecated @ColorInt public final int getArrowColor();
+    method @Deprecated protected final int getCurrentPageIndex();
+    method @Deprecated @ColorInt public final int getDescriptionViewTextColor();
+    method @Deprecated @ColorInt public final int getDotBackgroundColor();
+    method @Deprecated public final int getIconResourceId();
+    method @Deprecated public final int getLogoResourceId();
+    method @Deprecated protected abstract int getPageCount();
+    method @Deprecated protected abstract CharSequence! getPageDescription(int);
+    method @Deprecated protected abstract CharSequence! getPageTitle(int);
+    method @Deprecated public final CharSequence! getStartButtonText();
+    method @Deprecated @ColorInt public final int getTitleViewTextColor();
+    method @Deprecated protected final boolean isLogoAnimationFinished();
+    method @Deprecated protected void moveToNextPage();
+    method @Deprecated protected void moveToPreviousPage();
+    method @Deprecated protected abstract android.view.View? onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method @Deprecated protected abstract android.view.View? onCreateContentView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method @Deprecated protected android.animation.Animator! onCreateDescriptionAnimator();
+    method @Deprecated protected android.animation.Animator? onCreateEnterAnimation();
+    method @Deprecated protected abstract android.view.View? onCreateForegroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method @Deprecated protected android.animation.Animator? onCreateLogoAnimation();
+    method @Deprecated protected android.animation.Animator! onCreateTitleAnimator();
+    method @Deprecated public android.view.View? onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated protected void onFinishFragment();
+    method @Deprecated protected void onLogoAnimationFinished();
+    method @Deprecated protected void onPageChanged(int, int);
+    method @Deprecated public int onProvideTheme();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public void setArrowBackgroundColor(@ColorInt int);
+    method @Deprecated public void setArrowColor(@ColorInt int);
+    method @Deprecated public void setDescriptionViewTextColor(@ColorInt int);
+    method @Deprecated public void setDotBackgroundColor(@ColorInt int);
+    method @Deprecated public final void setIconResouceId(int);
+    method @Deprecated public final void setLogoResourceId(int);
+    method @Deprecated public void setStartButtonText(CharSequence!);
+    method @Deprecated public void setTitleViewTextColor(@ColorInt int);
+    method @Deprecated protected final void startEnterAnimation(boolean);
   }
 
   public abstract class OnboardingSupportFragment extends androidx.fragment.app.Fragment {
     ctor public OnboardingSupportFragment();
-    method public final int getArrowBackgroundColor();
-    method public final int getArrowColor();
+    method @ColorInt public final int getArrowBackgroundColor();
+    method @ColorInt public final int getArrowColor();
     method protected final int getCurrentPageIndex();
-    method public final int getDescriptionViewTextColor();
-    method public final int getDotBackgroundColor();
+    method @ColorInt public final int getDescriptionViewTextColor();
+    method @ColorInt public final int getDotBackgroundColor();
     method public final int getIconResourceId();
     method public final int getLogoResourceId();
     method protected abstract int getPageCount();
-    method protected abstract java.lang.CharSequence getPageDescription(int);
-    method protected abstract java.lang.CharSequence getPageTitle(int);
-    method public final java.lang.CharSequence getStartButtonText();
-    method public final int getTitleViewTextColor();
+    method protected abstract CharSequence! getPageDescription(int);
+    method protected abstract CharSequence! getPageTitle(int);
+    method public final CharSequence! getStartButtonText();
+    method @ColorInt public final int getTitleViewTextColor();
     method protected final boolean isLogoAnimationFinished();
     method protected void moveToNextPage();
     method protected void moveToPreviousPage();
-    method protected abstract android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected abstract android.view.View onCreateContentView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateDescriptionAnimator();
-    method protected android.animation.Animator onCreateEnterAnimation();
-    method protected abstract android.view.View onCreateForegroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateLogoAnimation();
-    method protected android.animation.Animator onCreateTitleAnimator();
+    method protected abstract android.view.View? onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method protected abstract android.view.View? onCreateContentView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method protected android.animation.Animator! onCreateDescriptionAnimator();
+    method protected android.animation.Animator? onCreateEnterAnimation();
+    method protected abstract android.view.View? onCreateForegroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method protected android.animation.Animator? onCreateLogoAnimation();
+    method protected android.animation.Animator! onCreateTitleAnimator();
     method protected void onFinishFragment();
     method protected void onLogoAnimationFinished();
     method protected void onPageChanged(int, int);
     method public int onProvideTheme();
-    method public void setArrowBackgroundColor(int);
-    method public void setArrowColor(int);
-    method public void setDescriptionViewTextColor(int);
-    method public void setDotBackgroundColor(int);
+    method public void setArrowBackgroundColor(@ColorInt int);
+    method public void setArrowColor(@ColorInt int);
+    method public void setDescriptionViewTextColor(@ColorInt int);
+    method public void setDotBackgroundColor(@ColorInt int);
     method public final void setIconResouceId(int);
     method public final void setLogoResourceId(int);
-    method public void setStartButtonText(java.lang.CharSequence);
-    method public void setTitleViewTextColor(int);
+    method public void setStartButtonText(CharSequence!);
+    method public void setTitleViewTextColor(@ColorInt int);
     method protected final void startEnterAnimation(boolean);
   }
 
-  public deprecated class PlaybackFragment extends android.app.Fragment {
-    ctor public PlaybackFragment();
-    method public deprecated void fadeOut();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBackgroundType();
-    method public androidx.leanback.app.ProgressBarManager getProgressBarManager();
-    method public void hideControlsOverlay(boolean);
-    method public boolean isControlsOverlayAutoHideEnabled();
-    method public boolean isControlsOverlayVisible();
-    method public deprecated boolean isFadingEnabled();
-    method public void notifyPlaybackRowChanged();
-    method protected void onBufferingStateChanged(boolean);
-    method protected void onError(int, java.lang.CharSequence);
-    method protected void onVideoSizeChanged(int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setBackgroundType(int);
-    method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public deprecated void setFadingEnabled(boolean);
-    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setPlaybackRow(androidx.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method public void showControlsOverlay(boolean);
-    method public void tickle();
-    field public static final int BG_DARK = 1; // 0x1
-    field public static final int BG_LIGHT = 2; // 0x2
-    field public static final int BG_NONE = 0; // 0x0
+  @Deprecated public class PlaybackFragment extends android.app.Fragment {
+    ctor @Deprecated public PlaybackFragment();
+    method @Deprecated public void fadeOut();
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public int getBackgroundType();
+    method @Deprecated public androidx.leanback.app.ProgressBarManager! getProgressBarManager();
+    method @Deprecated public void hideControlsOverlay(boolean);
+    method @Deprecated public boolean isControlsOverlayAutoHideEnabled();
+    method @Deprecated public boolean isControlsOverlayVisible();
+    method @Deprecated public boolean isFadingEnabled();
+    method @Deprecated public void notifyPlaybackRowChanged();
+    method @Deprecated protected void onBufferingStateChanged(boolean);
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroy();
+    method @Deprecated public void onDestroyView();
+    method @Deprecated protected void onError(int, CharSequence!);
+    method @Deprecated public void onPause();
+    method @Deprecated public void onResume();
+    method @Deprecated public void onStart();
+    method @Deprecated public void onStop();
+    method @Deprecated protected void onVideoSizeChanged(int, int);
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setBackgroundType(int);
+    method @Deprecated public void setControlsOverlayAutoHideEnabled(boolean);
+    method @Deprecated public void setFadingEnabled(boolean);
+    method @Deprecated public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method @Deprecated public final void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method @Deprecated public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method @Deprecated public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method @Deprecated public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
+    method @Deprecated public void showControlsOverlay(boolean);
+    method @Deprecated public void tickle();
+    field @Deprecated public static final int BG_DARK = 1; // 0x1
+    field @Deprecated public static final int BG_LIGHT = 2; // 0x2
+    field @Deprecated public static final int BG_NONE = 0; // 0x0
   }
 
-  public deprecated class PlaybackFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
-    ctor public PlaybackFragmentGlueHost(androidx.leanback.app.PlaybackFragment);
-    method public void fadeOut();
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+  @Deprecated public class PlaybackFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
+    ctor @Deprecated public PlaybackFragmentGlueHost(androidx.leanback.app.PlaybackFragment!);
+    method @Deprecated public void fadeOut();
+    method @Deprecated public androidx.leanback.media.PlaybackGlueHost.PlayerCallback! getPlayerCallback();
+    method @Deprecated public void hideControlsOverlay(boolean);
+    method @Deprecated public boolean isControlsOverlayAutoHideEnabled();
+    method @Deprecated public boolean isControlsOverlayVisible();
+    method @Deprecated public void notifyPlaybackRowChanged();
+    method @Deprecated public void setControlsOverlayAutoHideEnabled(boolean);
+    method @Deprecated public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method @Deprecated public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method @Deprecated public void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method @Deprecated public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method @Deprecated public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method @Deprecated public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
+    method @Deprecated public void showControlsOverlay(boolean);
   }
 
   public class PlaybackSupportFragment extends androidx.fragment.app.Fragment {
     ctor public PlaybackSupportFragment();
-    method public deprecated void fadeOut();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
+    method @Deprecated public void fadeOut();
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
     method public int getBackgroundType();
-    method public androidx.leanback.app.ProgressBarManager getProgressBarManager();
+    method public androidx.leanback.app.ProgressBarManager! getProgressBarManager();
     method public void hideControlsOverlay(boolean);
     method public boolean isControlsOverlayAutoHideEnabled();
     method public boolean isControlsOverlayVisible();
-    method public deprecated boolean isFadingEnabled();
+    method @Deprecated public boolean isFadingEnabled();
     method public void notifyPlaybackRowChanged();
     method protected void onBufferingStateChanged(boolean);
-    method protected void onError(int, java.lang.CharSequence);
+    method protected void onError(int, CharSequence!);
     method protected void onVideoSizeChanged(int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
     method public void setBackgroundType(int);
     method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public deprecated void setFadingEnabled(boolean);
-    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setPlaybackRow(androidx.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+    method @Deprecated public void setFadingEnabled(boolean);
+    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, boolean);
     method public void showControlsOverlay(boolean);
@@ -709,9 +774,9 @@
   }
 
   public class PlaybackSupportFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
-    ctor public PlaybackSupportFragmentGlueHost(androidx.leanback.app.PlaybackSupportFragment);
+    ctor public PlaybackSupportFragmentGlueHost(androidx.leanback.app.PlaybackSupportFragment!);
     method public void fadeOut();
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
   }
 
   public final class ProgressBarManager {
@@ -721,173 +786,204 @@
     method public long getInitialDelay();
     method public void hide();
     method public void setInitialDelay(long);
-    method public void setProgressBarView(android.view.View);
-    method public void setRootView(android.view.ViewGroup);
+    method public void setProgressBarView(android.view.View!);
+    method public void setRootView(android.view.ViewGroup!);
     method public void show();
   }
 
-  public deprecated class RowsFragment extends android.app.Fragment implements androidx.leanback.app.BrowseFragment.MainFragmentAdapterProvider androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapterProvider {
-    ctor public RowsFragment();
-    method public deprecated void enableRowScaling(boolean);
-    method protected androidx.leanback.widget.VerticalGridView findGridViewFromRoot(android.view.View);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public androidx.leanback.app.BrowseFragment.MainFragmentAdapter getMainFragmentAdapter();
-    method public androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(int);
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public boolean onTransitionPrepare();
-    method public void setAlignment(int);
-    method public void setEntranceTransitionState(boolean);
-    method public void setExpand(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+  @Deprecated public class RowsFragment extends android.app.Fragment implements androidx.leanback.app.BrowseFragment.MainFragmentAdapterProvider androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapterProvider {
+    ctor @Deprecated public RowsFragment();
+    method @Deprecated public void enableRowScaling(boolean);
+    method @Deprecated protected androidx.leanback.widget.VerticalGridView! findGridViewFromRoot(android.view.View!);
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method @Deprecated public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentAdapter! getMainFragmentAdapter();
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
+    method @Deprecated public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public androidx.leanback.widget.BaseOnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method @Deprecated public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! getRowViewHolder(int);
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
+    method @Deprecated public boolean isScrolling();
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onTransitionEnd();
+    method @Deprecated public boolean onTransitionPrepare();
+    method @Deprecated public void onTransitionStart();
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setAlignment(int);
+    method @Deprecated public void setEntranceTransitionState(boolean);
+    method @Deprecated public void setExpand(boolean);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method @Deprecated public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method @Deprecated public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
   }
 
-  public static class RowsFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentAdapter {
-    ctor public RowsFragment.MainFragmentAdapter(androidx.leanback.app.RowsFragment);
+  @Deprecated public static class RowsFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentAdapter<androidx.leanback.app.RowsFragment> {
+    ctor @Deprecated public RowsFragment.MainFragmentAdapter(androidx.leanback.app.RowsFragment!);
   }
 
-  public static deprecated class RowsFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter {
-    ctor public RowsFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsFragment);
+  @Deprecated public static class RowsFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter<androidx.leanback.app.RowsFragment> {
+    ctor @Deprecated public RowsFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsFragment!);
   }
 
   public class RowsSupportFragment extends androidx.fragment.app.Fragment implements androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapterProvider androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapterProvider {
     ctor public RowsSupportFragment();
-    method public deprecated void enableRowScaling(boolean);
-    method protected androidx.leanback.widget.VerticalGridView findGridViewFromRoot(android.view.View);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter getMainFragmentAdapter();
-    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(int);
+    method @Deprecated public void enableRowScaling(boolean);
+    method protected androidx.leanback.widget.VerticalGridView! findGridViewFromRoot(android.view.View!);
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter! getMainFragmentAdapter();
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
+    method public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method public androidx.leanback.widget.BaseOnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! getRowViewHolder(int);
+    method public int getSelectedPosition();
+    method public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
     method public boolean isScrolling();
     method public void onTransitionEnd();
     method public boolean onTransitionPrepare();
+    method public void onTransitionStart();
+    method public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
     method public void setAlignment(int);
     method public void setEntranceTransitionState(boolean);
     method public void setExpand(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method public void setSelectedPosition(int);
+    method public void setSelectedPosition(int, boolean);
   }
 
-  public static class RowsSupportFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter {
-    ctor public RowsSupportFragment.MainFragmentAdapter(androidx.leanback.app.RowsSupportFragment);
+  public static class RowsSupportFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter<androidx.leanback.app.RowsSupportFragment> {
+    ctor public RowsSupportFragment.MainFragmentAdapter(androidx.leanback.app.RowsSupportFragment!);
   }
 
-  public static class RowsSupportFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter {
-    ctor public RowsSupportFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsSupportFragment);
+  public static class RowsSupportFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter<androidx.leanback.app.RowsSupportFragment> {
+    ctor public RowsSupportFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsSupportFragment!);
   }
 
-  public deprecated class SearchFragment extends android.app.Fragment {
-    ctor public SearchFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String);
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, java.lang.String);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public android.content.Intent getRecognizerIntent();
-    method public androidx.leanback.app.RowsFragment getRowsFragment();
-    method public java.lang.String getTitle();
-    method public static androidx.leanback.app.SearchFragment newInstance(java.lang.String);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchQuery(java.lang.String, boolean);
-    method public void setSearchQuery(android.content.Intent, boolean);
-    method public void setSearchResultProvider(androidx.leanback.app.SearchFragment.SearchResultProvider);
-    method public deprecated void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback);
-    method public void setTitle(java.lang.String);
-    method public void startRecognition();
+  @Deprecated public class SearchFragment extends android.app.Fragment {
+    ctor @Deprecated public SearchFragment();
+    method @Deprecated public static android.os.Bundle! createArgs(android.os.Bundle!, String!);
+    method @Deprecated public static android.os.Bundle! createArgs(android.os.Bundle!, String!, String!);
+    method @Deprecated public void displayCompletions(java.util.List<java.lang.String>!);
+    method @Deprecated public void displayCompletions(android.view.inputmethod.CompletionInfo[]!);
+    method @Deprecated public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method @Deprecated public android.content.Intent! getRecognizerIntent();
+    method @Deprecated public androidx.leanback.app.RowsFragment! getRowsFragment();
+    method @Deprecated public String! getTitle();
+    method @Deprecated public static androidx.leanback.app.SearchFragment! newInstance(String!);
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroy();
+    method @Deprecated public void onPause();
+    method @Deprecated public void onRequestPermissionsResult(int, String[]!, int[]!);
+    method @Deprecated public void onResume();
+    method @Deprecated public void onStart();
+    method @Deprecated public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method @Deprecated public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors!);
+    method @Deprecated public void setSearchQuery(String!, boolean);
+    method @Deprecated public void setSearchQuery(android.content.Intent!, boolean);
+    method @Deprecated public void setSearchResultProvider(androidx.leanback.app.SearchFragment.SearchResultProvider!);
+    method @Deprecated public void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback!);
+    method @Deprecated public void setTitle(String!);
+    method @Deprecated public void startRecognition();
   }
 
-  public static abstract interface SearchFragment.SearchResultProvider {
-    method public abstract androidx.leanback.widget.ObjectAdapter getResultsAdapter();
-    method public abstract boolean onQueryTextChange(java.lang.String);
-    method public abstract boolean onQueryTextSubmit(java.lang.String);
+  @Deprecated public static interface SearchFragment.SearchResultProvider {
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getResultsAdapter();
+    method @Deprecated public boolean onQueryTextChange(String!);
+    method @Deprecated public boolean onQueryTextSubmit(String!);
   }
 
   public class SearchSupportFragment extends androidx.fragment.app.Fragment {
     ctor public SearchSupportFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String);
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, java.lang.String);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public android.content.Intent getRecognizerIntent();
-    method public androidx.leanback.app.RowsSupportFragment getRowsSupportFragment();
-    method public java.lang.String getTitle();
-    method public static androidx.leanback.app.SearchSupportFragment newInstance(java.lang.String);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchQuery(java.lang.String, boolean);
-    method public void setSearchQuery(android.content.Intent, boolean);
-    method public void setSearchResultProvider(androidx.leanback.app.SearchSupportFragment.SearchResultProvider);
-    method public deprecated void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback);
-    method public void setTitle(java.lang.String);
+    method public static android.os.Bundle! createArgs(android.os.Bundle!, String!);
+    method public static android.os.Bundle! createArgs(android.os.Bundle!, String!, String!);
+    method public void displayCompletions(java.util.List<java.lang.String>!);
+    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]!);
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public android.content.Intent! getRecognizerIntent();
+    method public androidx.leanback.app.RowsSupportFragment! getRowsSupportFragment();
+    method public String! getTitle();
+    method public static androidx.leanback.app.SearchSupportFragment! newInstance(String!);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchQuery(String!, boolean);
+    method public void setSearchQuery(android.content.Intent!, boolean);
+    method public void setSearchResultProvider(androidx.leanback.app.SearchSupportFragment.SearchResultProvider!);
+    method @Deprecated public void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback!);
+    method public void setTitle(String!);
     method public void startRecognition();
   }
 
-  public static abstract interface SearchSupportFragment.SearchResultProvider {
-    method public abstract androidx.leanback.widget.ObjectAdapter getResultsAdapter();
-    method public abstract boolean onQueryTextChange(java.lang.String);
-    method public abstract boolean onQueryTextSubmit(java.lang.String);
+  public static interface SearchSupportFragment.SearchResultProvider {
+    method public androidx.leanback.widget.ObjectAdapter! getResultsAdapter();
+    method public boolean onQueryTextChange(String!);
+    method public boolean onQueryTextSubmit(String!);
   }
 
-  public deprecated class VerticalGridFragment extends androidx.leanback.app.BaseFragment {
-    ctor public VerticalGridFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.VerticalGridPresenter getGridPresenter();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
+  @Deprecated public class VerticalGridFragment extends androidx.leanback.app.BaseFragment {
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public androidx.leanback.widget.VerticalGridPresenter! getGridPresenter();
+    method @Deprecated public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int);
   }
 
   public class VerticalGridSupportFragment extends androidx.leanback.app.BaseSupportFragment {
-    ctor public VerticalGridSupportFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.VerticalGridPresenter getGridPresenter();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public androidx.leanback.widget.VerticalGridPresenter! getGridPresenter();
+    method public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
     method public void setSelectedPosition(int);
   }
 
-  public deprecated class VideoFragment extends androidx.leanback.app.PlaybackFragment {
-    ctor public VideoFragment();
-    method public android.view.SurfaceView getSurfaceView();
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+  @Deprecated public class VideoFragment extends androidx.leanback.app.PlaybackFragment {
+    ctor @Deprecated public VideoFragment();
+    method @Deprecated public android.view.SurfaceView! getSurfaceView();
+    method @Deprecated public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
-  public deprecated class VideoFragmentGlueHost extends androidx.leanback.app.PlaybackFragmentGlueHost implements androidx.leanback.media.SurfaceHolderGlueHost {
-    ctor public VideoFragmentGlueHost(androidx.leanback.app.VideoFragment);
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+  @Deprecated public class VideoFragmentGlueHost extends androidx.leanback.app.PlaybackFragmentGlueHost implements androidx.leanback.media.SurfaceHolderGlueHost {
+    ctor @Deprecated public VideoFragmentGlueHost(androidx.leanback.app.VideoFragment!);
+    method @Deprecated public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
   public class VideoSupportFragment extends androidx.leanback.app.PlaybackSupportFragment {
     ctor public VideoSupportFragment();
-    method public android.view.SurfaceView getSurfaceView();
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+    method public android.view.SurfaceView! getSurfaceView();
+    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
   public class VideoSupportFragmentGlueHost extends androidx.leanback.app.PlaybackSupportFragmentGlueHost implements androidx.leanback.media.SurfaceHolderGlueHost {
-    ctor public VideoSupportFragmentGlueHost(androidx.leanback.app.VideoSupportFragment);
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+    ctor public VideoSupportFragmentGlueHost(androidx.leanback.app.VideoSupportFragment!);
+    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
 }
@@ -896,9 +992,9 @@
 
   public abstract class CursorMapper {
     ctor public CursorMapper();
-    method protected abstract java.lang.Object bind(android.database.Cursor);
-    method protected abstract void bindColumns(android.database.Cursor);
-    method public java.lang.Object convert(android.database.Cursor);
+    method protected abstract Object! bind(android.database.Cursor!);
+    method protected abstract void bindColumns(android.database.Cursor!);
+    method public Object! convert(android.database.Cursor!);
   }
 
 }
@@ -907,96 +1003,96 @@
 
   public class BoundsRule {
     ctor public BoundsRule();
-    ctor public BoundsRule(androidx.leanback.graphics.BoundsRule);
-    method public void calculateBounds(android.graphics.Rect, android.graphics.Rect);
-    field public androidx.leanback.graphics.BoundsRule.ValueRule bottom;
-    field public androidx.leanback.graphics.BoundsRule.ValueRule left;
-    field public androidx.leanback.graphics.BoundsRule.ValueRule right;
-    field public androidx.leanback.graphics.BoundsRule.ValueRule top;
+    ctor public BoundsRule(androidx.leanback.graphics.BoundsRule!);
+    method public void calculateBounds(android.graphics.Rect!, android.graphics.Rect!);
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! bottom;
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! left;
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! right;
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! top;
   }
 
   public static final class BoundsRule.ValueRule {
-    method public static androidx.leanback.graphics.BoundsRule.ValueRule absoluteValue(int);
+    method public static androidx.leanback.graphics.BoundsRule.ValueRule! absoluteValue(int);
     method public int getAbsoluteValue();
     method public float getFraction();
-    method public static androidx.leanback.graphics.BoundsRule.ValueRule inheritFromParent(float);
-    method public static androidx.leanback.graphics.BoundsRule.ValueRule inheritFromParentWithOffset(float, int);
+    method public static androidx.leanback.graphics.BoundsRule.ValueRule! inheritFromParent(float);
+    method public static androidx.leanback.graphics.BoundsRule.ValueRule! inheritFromParentWithOffset(float, int);
     method public void setAbsoluteValue(int);
     method public void setFraction(float);
   }
 
   public final class ColorFilterCache {
-    method public static androidx.leanback.graphics.ColorFilterCache getColorFilterCache(int);
-    method public android.graphics.ColorFilter getFilterForLevel(float);
+    method public static androidx.leanback.graphics.ColorFilterCache! getColorFilterCache(int);
+    method public android.graphics.ColorFilter! getFilterForLevel(float);
   }
 
   public final class ColorFilterDimmer {
-    method public void applyFilterToView(android.view.View);
-    method public static androidx.leanback.graphics.ColorFilterDimmer create(androidx.leanback.graphics.ColorFilterCache, float, float);
-    method public static androidx.leanback.graphics.ColorFilterDimmer createDefault(android.content.Context);
-    method public android.graphics.ColorFilter getColorFilter();
-    method public android.graphics.Paint getPaint();
+    method public void applyFilterToView(android.view.View!);
+    method public static androidx.leanback.graphics.ColorFilterDimmer! create(androidx.leanback.graphics.ColorFilterCache!, float, float);
+    method public static androidx.leanback.graphics.ColorFilterDimmer! createDefault(android.content.Context!);
+    method public android.graphics.ColorFilter! getColorFilter();
+    method public android.graphics.Paint! getPaint();
     method public void setActiveLevel(float);
   }
 
   public final class ColorOverlayDimmer {
     method public int applyToColor(int);
-    method public static androidx.leanback.graphics.ColorOverlayDimmer createColorOverlayDimmer(int, float, float);
-    method public static androidx.leanback.graphics.ColorOverlayDimmer createDefault(android.content.Context);
-    method public void drawColorOverlay(android.graphics.Canvas, android.view.View, boolean);
+    method public static androidx.leanback.graphics.ColorOverlayDimmer! createColorOverlayDimmer(int, float, float);
+    method public static androidx.leanback.graphics.ColorOverlayDimmer! createDefault(android.content.Context!);
+    method public void drawColorOverlay(android.graphics.Canvas!, android.view.View!, boolean);
     method public int getAlpha();
     method public float getAlphaFloat();
-    method public android.graphics.Paint getPaint();
+    method public android.graphics.Paint! getPaint();
     method public boolean needsDraw();
     method public void setActiveLevel(float);
   }
 
   public class CompositeDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
     ctor public CompositeDrawable();
-    method public void addChildDrawable(android.graphics.drawable.Drawable);
-    method public void draw(android.graphics.Canvas);
-    method public androidx.leanback.graphics.CompositeDrawable.ChildDrawable getChildAt(int);
+    method public void addChildDrawable(android.graphics.drawable.Drawable!);
+    method public void draw(android.graphics.Canvas!);
+    method public androidx.leanback.graphics.CompositeDrawable.ChildDrawable! getChildAt(int);
     method public int getChildCount();
-    method public android.graphics.drawable.Drawable getDrawable(int);
+    method public android.graphics.drawable.Drawable! getDrawable(int);
     method public int getOpacity();
-    method public void invalidateDrawable(android.graphics.drawable.Drawable);
+    method public void invalidateDrawable(android.graphics.drawable.Drawable!);
     method public void removeChild(int);
-    method public void removeDrawable(android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
+    method public void removeDrawable(android.graphics.drawable.Drawable!);
+    method public void scheduleDrawable(android.graphics.drawable.Drawable!, Runnable!, long);
     method public void setAlpha(int);
-    method public void setChildDrawableAt(int, android.graphics.drawable.Drawable);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+    method public void setChildDrawableAt(int, android.graphics.drawable.Drawable!);
+    method public void setColorFilter(android.graphics.ColorFilter!);
+    method public void unscheduleDrawable(android.graphics.drawable.Drawable!, Runnable!);
   }
 
   public static final class CompositeDrawable.ChildDrawable {
-    ctor public CompositeDrawable.ChildDrawable(android.graphics.drawable.Drawable, androidx.leanback.graphics.CompositeDrawable);
-    method public androidx.leanback.graphics.BoundsRule getBoundsRule();
-    method public android.graphics.drawable.Drawable getDrawable();
+    ctor public CompositeDrawable.ChildDrawable(android.graphics.drawable.Drawable!, androidx.leanback.graphics.CompositeDrawable!);
+    method public androidx.leanback.graphics.BoundsRule! getBoundsRule();
+    method public android.graphics.drawable.Drawable! getDrawable();
     method public void recomputeBounds();
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> BOTTOM_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> BOTTOM_FRACTION;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> LEFT_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> LEFT_FRACTION;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> RIGHT_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> RIGHT_FRACTION;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> TOP_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> TOP_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! BOTTOM_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! BOTTOM_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! LEFT_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! LEFT_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! RIGHT_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! RIGHT_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! TOP_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! TOP_FRACTION;
   }
 
   public class FitWidthBitmapDrawable extends android.graphics.drawable.Drawable {
     ctor public FitWidthBitmapDrawable();
-    method public void draw(android.graphics.Canvas);
-    method public android.graphics.Bitmap getBitmap();
+    method public void draw(android.graphics.Canvas!);
+    method public android.graphics.Bitmap! getBitmap();
     method public int getOpacity();
-    method public android.graphics.Rect getSource();
+    method public android.graphics.Rect! getSource();
     method public int getVerticalOffset();
     method public void setAlpha(int);
-    method public void setBitmap(android.graphics.Bitmap);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setSource(android.graphics.Rect);
+    method public void setBitmap(android.graphics.Bitmap!);
+    method public void setColorFilter(android.graphics.ColorFilter!);
+    method public void setSource(android.graphics.Rect!);
     method public void setVerticalOffset(int);
-    field public static final android.util.Property<androidx.leanback.graphics.FitWidthBitmapDrawable, java.lang.Integer> PROPERTY_VERTICAL_OFFSET;
+    field public static final android.util.Property<androidx.leanback.graphics.FitWidthBitmapDrawable,java.lang.Integer>! PROPERTY_VERTICAL_OFFSET;
   }
 
 }
@@ -1004,34 +1100,38 @@
 package androidx.leanback.media {
 
   public class MediaControllerAdapter extends androidx.leanback.media.PlayerAdapter {
-    ctor public MediaControllerAdapter(android.support.v4.media.session.MediaControllerCompat);
-    method public android.graphics.drawable.Drawable getMediaArt(android.content.Context);
-    method public android.support.v4.media.session.MediaControllerCompat getMediaController();
-    method public java.lang.CharSequence getMediaSubtitle();
-    method public java.lang.CharSequence getMediaTitle();
+    ctor public MediaControllerAdapter(android.support.v4.media.session.MediaControllerCompat!);
+    method public android.graphics.drawable.Drawable! getMediaArt(android.content.Context!);
+    method public android.support.v4.media.session.MediaControllerCompat! getMediaController();
+    method public CharSequence! getMediaSubtitle();
+    method public CharSequence! getMediaTitle();
     method public void pause();
     method public void play();
   }
 
-  public abstract deprecated class MediaControllerGlue extends androidx.leanback.media.PlaybackControlGlue {
-    ctor public MediaControllerGlue(android.content.Context, int[], int[]);
-    method public void attachToMediaController(android.support.v4.media.session.MediaControllerCompat);
-    method public void detach();
-    method public int getCurrentPosition();
-    method public int getCurrentSpeedId();
-    method public android.graphics.drawable.Drawable getMediaArt();
-    method public final android.support.v4.media.session.MediaControllerCompat getMediaController();
-    method public int getMediaDuration();
-    method public java.lang.CharSequence getMediaSubtitle();
-    method public java.lang.CharSequence getMediaTitle();
-    method public long getSupportedActions();
-    method public boolean hasValidMedia();
-    method public boolean isMediaPlaying();
+  @Deprecated public abstract class MediaControllerGlue extends androidx.leanback.media.PlaybackControlGlue {
+    ctor @Deprecated public MediaControllerGlue(android.content.Context!, int[]!, int[]!);
+    method @Deprecated public void attachToMediaController(android.support.v4.media.session.MediaControllerCompat!);
+    method @Deprecated public void detach();
+    method @Deprecated public int getCurrentPosition();
+    method @Deprecated public int getCurrentSpeedId();
+    method @Deprecated public android.graphics.drawable.Drawable! getMediaArt();
+    method @Deprecated public final android.support.v4.media.session.MediaControllerCompat! getMediaController();
+    method @Deprecated public int getMediaDuration();
+    method @Deprecated public CharSequence! getMediaSubtitle();
+    method @Deprecated public CharSequence! getMediaTitle();
+    method @Deprecated public long getSupportedActions();
+    method @Deprecated public boolean hasValidMedia();
+    method @Deprecated public boolean isMediaPlaying();
+    method @Deprecated public void next();
+    method @Deprecated public void pause();
+    method @Deprecated public void play(int);
+    method @Deprecated public void previous();
   }
 
   public class MediaPlayerAdapter extends androidx.leanback.media.PlayerAdapter {
-    ctor public MediaPlayerAdapter(android.content.Context);
-    method public final android.media.MediaPlayer getMediaPlayer();
+    ctor public MediaPlayerAdapter(android.content.Context!);
+    method public final android.media.MediaPlayer! getMediaPlayer();
     method public int getProgressUpdatingInterval();
     method protected boolean onError(int, int);
     method protected boolean onInfo(int, int);
@@ -1040,17 +1140,17 @@
     method public void play();
     method public void release();
     method public void reset();
-    method public boolean setDataSource(android.net.Uri);
+    method public boolean setDataSource(android.net.Uri!);
   }
 
-  public class PlaybackBannerControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue {
-    ctor public PlaybackBannerControlGlue(android.content.Context, int[], T);
-    ctor public PlaybackBannerControlGlue(android.content.Context, int[], int[], T);
+  public class PlaybackBannerControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue<T> {
+    ctor public PlaybackBannerControlGlue(android.content.Context!, int[]!, T!);
+    ctor public PlaybackBannerControlGlue(android.content.Context!, int[]!, int[]!, T!);
     method public int[] getFastForwardSpeeds();
     method public int[] getRewindSpeeds();
-    method public void onActionClicked(androidx.leanback.widget.Action);
-    method protected androidx.leanback.widget.PlaybackRowPresenter onCreateRowPresenter();
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
+    method public void onActionClicked(androidx.leanback.widget.Action!);
+    method protected androidx.leanback.widget.PlaybackRowPresenter! onCreateRowPresenter();
+    method public boolean onKey(android.view.View!, int, android.view.KeyEvent!);
     field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
     field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
     field public static final int ACTION_FAST_FORWARD = 128; // 0x80
@@ -1069,38 +1169,38 @@
   }
 
   public abstract class PlaybackBaseControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackGlue implements androidx.leanback.widget.OnActionClickedListener android.view.View.OnKeyListener {
-    ctor public PlaybackBaseControlGlue(android.content.Context, T);
-    method public android.graphics.drawable.Drawable getArt();
+    ctor public PlaybackBaseControlGlue(android.content.Context!, T!);
+    method public android.graphics.drawable.Drawable! getArt();
     method public final long getBufferedPosition();
-    method public androidx.leanback.widget.PlaybackControlsRow getControlsRow();
+    method public androidx.leanback.widget.PlaybackControlsRow! getControlsRow();
     method public long getCurrentPosition();
     method public final long getDuration();
-    method public androidx.leanback.widget.PlaybackRowPresenter getPlaybackRowPresenter();
-    method public final T getPlayerAdapter();
-    method public java.lang.CharSequence getSubtitle();
+    method public androidx.leanback.widget.PlaybackRowPresenter! getPlaybackRowPresenter();
+    method public final T! getPlayerAdapter();
+    method public CharSequence! getSubtitle();
     method public long getSupportedActions();
-    method public java.lang.CharSequence getTitle();
+    method public CharSequence! getTitle();
     method public boolean isControlsOverlayAutoHideEnabled();
     method public final boolean isPlaying();
     method public final boolean isPrepared();
-    method protected static void notifyItemChanged(androidx.leanback.widget.ArrayObjectAdapter, java.lang.Object);
-    method protected void onCreatePrimaryActions(androidx.leanback.widget.ArrayObjectAdapter);
-    method protected abstract androidx.leanback.widget.PlaybackRowPresenter onCreateRowPresenter();
-    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter);
+    method protected static void notifyItemChanged(androidx.leanback.widget.ArrayObjectAdapter!, Object!);
+    method protected void onCreatePrimaryActions(androidx.leanback.widget.ArrayObjectAdapter!);
+    method protected abstract androidx.leanback.widget.PlaybackRowPresenter! onCreateRowPresenter();
+    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter!);
     method protected void onMetadataChanged();
-    method protected void onPlayCompleted();
-    method protected void onPlayStateChanged();
-    method protected void onPreparedStateChanged();
-    method protected void onUpdateBufferedProgress();
-    method protected void onUpdateDuration();
-    method protected void onUpdateProgress();
+    method @CallSuper protected void onPlayCompleted();
+    method @CallSuper protected void onPlayStateChanged();
+    method @CallSuper protected void onPreparedStateChanged();
+    method @CallSuper protected void onUpdateBufferedProgress();
+    method @CallSuper protected void onUpdateDuration();
+    method @CallSuper protected void onUpdateProgress();
     method public final void seekTo(long);
-    method public void setArt(android.graphics.drawable.Drawable);
+    method public void setArt(android.graphics.drawable.Drawable!);
     method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
-    method public void setSubtitle(java.lang.CharSequence);
-    method public void setTitle(java.lang.CharSequence);
+    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow!);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method public void setSubtitle(CharSequence!);
+    method public void setTitle(CharSequence!);
     field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
     field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
     field public static final int ACTION_FAST_FORWARD = 128; // 0x80
@@ -1113,38 +1213,38 @@
   }
 
   public abstract class PlaybackControlGlue extends androidx.leanback.media.PlaybackGlue implements androidx.leanback.widget.OnActionClickedListener android.view.View.OnKeyListener {
-    ctor public PlaybackControlGlue(android.content.Context, int[]);
-    ctor public PlaybackControlGlue(android.content.Context, int[], int[]);
+    ctor public PlaybackControlGlue(android.content.Context!, int[]!);
+    ctor public PlaybackControlGlue(android.content.Context!, int[]!, int[]!);
     method public void enableProgressUpdating(boolean);
-    method public androidx.leanback.widget.PlaybackControlsRow getControlsRow();
-    method public deprecated androidx.leanback.widget.PlaybackControlsRowPresenter getControlsRowPresenter();
+    method public androidx.leanback.widget.PlaybackControlsRow! getControlsRow();
+    method @Deprecated public androidx.leanback.widget.PlaybackControlsRowPresenter! getControlsRowPresenter();
     method public abstract int getCurrentPosition();
     method public abstract int getCurrentSpeedId();
-    method public int[] getFastForwardSpeeds();
-    method public abstract android.graphics.drawable.Drawable getMediaArt();
+    method public int[]! getFastForwardSpeeds();
+    method public abstract android.graphics.drawable.Drawable! getMediaArt();
     method public abstract int getMediaDuration();
-    method public abstract java.lang.CharSequence getMediaSubtitle();
-    method public abstract java.lang.CharSequence getMediaTitle();
-    method public androidx.leanback.widget.PlaybackRowPresenter getPlaybackRowPresenter();
-    method public int[] getRewindSpeeds();
+    method public abstract CharSequence! getMediaSubtitle();
+    method public abstract CharSequence! getMediaTitle();
+    method public androidx.leanback.widget.PlaybackRowPresenter! getPlaybackRowPresenter();
+    method public int[]! getRewindSpeeds();
     method public abstract long getSupportedActions();
     method public int getUpdatePeriod();
     method public abstract boolean hasValidMedia();
     method public boolean isFadingEnabled();
     method public abstract boolean isMediaPlaying();
-    method public void onActionClicked(androidx.leanback.widget.Action);
+    method public void onActionClicked(androidx.leanback.widget.Action!);
     method protected void onCreateControlsRowAndPresenter();
-    method protected void onCreatePrimaryActions(androidx.leanback.widget.SparseArrayObjectAdapter);
-    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter);
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
+    method protected void onCreatePrimaryActions(androidx.leanback.widget.SparseArrayObjectAdapter!);
+    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter!);
+    method public boolean onKey(android.view.View!, int, android.view.KeyEvent!);
     method protected void onMetadataChanged();
     method protected void onStateChanged();
     method public void play(int);
     method public final void play();
-    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow);
-    method public deprecated void setControlsRowPresenter(androidx.leanback.widget.PlaybackControlsRowPresenter);
+    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow!);
+    method @Deprecated public void setControlsRowPresenter(androidx.leanback.widget.PlaybackControlsRowPresenter!);
     method public void setFadingEnabled(boolean);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
     method public void updateProgress();
     field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
     field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
@@ -1164,16 +1264,16 @@
   }
 
   public abstract class PlaybackGlue {
-    ctor public PlaybackGlue(android.content.Context);
-    method public void addPlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback);
-    method public android.content.Context getContext();
-    method public androidx.leanback.media.PlaybackGlueHost getHost();
-    method protected java.util.List<androidx.leanback.media.PlaybackGlue.PlayerCallback> getPlayerCallbacks();
+    ctor public PlaybackGlue(android.content.Context!);
+    method public void addPlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback!);
+    method public android.content.Context! getContext();
+    method public androidx.leanback.media.PlaybackGlueHost! getHost();
+    method protected java.util.List<androidx.leanback.media.PlaybackGlue.PlayerCallback>! getPlayerCallbacks();
     method public boolean isPlaying();
     method public boolean isPrepared();
     method public void next();
-    method protected void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost);
-    method protected void onDetachedFromHost();
+    method @CallSuper protected void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost!);
+    method @CallSuper protected void onDetachedFromHost();
     method protected void onHostPause();
     method protected void onHostResume();
     method protected void onHostStart();
@@ -1182,36 +1282,36 @@
     method public void play();
     method public void playWhenPrepared();
     method public void previous();
-    method public void removePlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback);
-    method public final void setHost(androidx.leanback.media.PlaybackGlueHost);
+    method public void removePlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback!);
+    method public final void setHost(androidx.leanback.media.PlaybackGlueHost!);
   }
 
-  public static abstract class PlaybackGlue.PlayerCallback {
+  public abstract static class PlaybackGlue.PlayerCallback {
     ctor public PlaybackGlue.PlayerCallback();
-    method public void onPlayCompleted(androidx.leanback.media.PlaybackGlue);
-    method public void onPlayStateChanged(androidx.leanback.media.PlaybackGlue);
-    method public void onPreparedStateChanged(androidx.leanback.media.PlaybackGlue);
+    method public void onPlayCompleted(androidx.leanback.media.PlaybackGlue!);
+    method public void onPlayStateChanged(androidx.leanback.media.PlaybackGlue!);
+    method public void onPreparedStateChanged(androidx.leanback.media.PlaybackGlue!);
   }
 
   public abstract class PlaybackGlueHost {
     ctor public PlaybackGlueHost();
-    method public deprecated void fadeOut();
-    method public androidx.leanback.media.PlaybackGlueHost.PlayerCallback getPlayerCallback();
+    method @Deprecated public void fadeOut();
+    method public androidx.leanback.media.PlaybackGlueHost.PlayerCallback! getPlayerCallback();
     method public void hideControlsOverlay(boolean);
     method public boolean isControlsOverlayAutoHideEnabled();
     method public boolean isControlsOverlayVisible();
     method public void notifyPlaybackRowChanged();
     method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public deprecated void setFadingEnabled(boolean);
-    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setPlaybackRow(androidx.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
+    method @Deprecated public void setFadingEnabled(boolean);
+    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method public void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
     method public void showControlsOverlay(boolean);
   }
 
-  public static abstract class PlaybackGlueHost.HostCallback {
+  public abstract static class PlaybackGlueHost.HostCallback {
     ctor public PlaybackGlueHost.HostCallback();
     method public void onHostDestroy();
     method public void onHostPause();
@@ -1223,40 +1323,40 @@
   public static class PlaybackGlueHost.PlayerCallback {
     ctor public PlaybackGlueHost.PlayerCallback();
     method public void onBufferingStateChanged(boolean);
-    method public void onError(int, java.lang.CharSequence);
+    method public void onError(int, CharSequence!);
     method public void onVideoSizeChanged(int, int);
   }
 
-  public class PlaybackTransportControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue {
-    ctor public PlaybackTransportControlGlue(android.content.Context, T);
-    method public final androidx.leanback.widget.PlaybackSeekDataProvider getSeekProvider();
+  public class PlaybackTransportControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue<T> {
+    ctor public PlaybackTransportControlGlue(android.content.Context!, T!);
+    method public final androidx.leanback.widget.PlaybackSeekDataProvider! getSeekProvider();
     method public final boolean isSeekEnabled();
-    method public void onActionClicked(androidx.leanback.widget.Action);
-    method protected androidx.leanback.widget.PlaybackRowPresenter onCreateRowPresenter();
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
+    method public void onActionClicked(androidx.leanback.widget.Action!);
+    method protected androidx.leanback.widget.PlaybackRowPresenter! onCreateRowPresenter();
+    method public boolean onKey(android.view.View!, int, android.view.KeyEvent!);
     method public final void setSeekEnabled(boolean);
-    method public final void setSeekProvider(androidx.leanback.widget.PlaybackSeekDataProvider);
+    method public final void setSeekProvider(androidx.leanback.widget.PlaybackSeekDataProvider!);
   }
 
   public abstract class PlayerAdapter {
     ctor public PlayerAdapter();
     method public void fastForward();
     method public long getBufferedPosition();
-    method public final androidx.leanback.media.PlayerAdapter.Callback getCallback();
+    method public final androidx.leanback.media.PlayerAdapter.Callback! getCallback();
     method public long getCurrentPosition();
     method public long getDuration();
     method public long getSupportedActions();
     method public boolean isPlaying();
     method public boolean isPrepared();
     method public void next();
-    method public void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost);
+    method public void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost!);
     method public void onDetachedFromHost();
     method public abstract void pause();
     method public abstract void play();
     method public void previous();
     method public void rewind();
     method public void seekTo(long);
-    method public final void setCallback(androidx.leanback.media.PlayerAdapter.Callback);
+    method public final void setCallback(androidx.leanback.media.PlayerAdapter.Callback!);
     method public void setProgressUpdatingEnabled(boolean);
     method public void setRepeatAction(int);
     method public void setShuffleAction(int);
@@ -1264,20 +1364,20 @@
 
   public static class PlayerAdapter.Callback {
     ctor public PlayerAdapter.Callback();
-    method public void onBufferedPositionChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onBufferingStateChanged(androidx.leanback.media.PlayerAdapter, boolean);
-    method public void onCurrentPositionChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onDurationChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onError(androidx.leanback.media.PlayerAdapter, int, java.lang.String);
-    method public void onMetadataChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onPlayCompleted(androidx.leanback.media.PlayerAdapter);
-    method public void onPlayStateChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onPreparedStateChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onVideoSizeChanged(androidx.leanback.media.PlayerAdapter, int, int);
+    method public void onBufferedPositionChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onBufferingStateChanged(androidx.leanback.media.PlayerAdapter!, boolean);
+    method public void onCurrentPositionChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onDurationChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onError(androidx.leanback.media.PlayerAdapter!, int, String!);
+    method public void onMetadataChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onPlayCompleted(androidx.leanback.media.PlayerAdapter!);
+    method public void onPlayStateChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onPreparedStateChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onVideoSizeChanged(androidx.leanback.media.PlayerAdapter!, int, int);
   }
 
-  public abstract interface SurfaceHolderGlueHost {
-    method public abstract void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+  public interface SurfaceHolderGlueHost {
+    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
 }
@@ -1285,11 +1385,11 @@
 package androidx.leanback.system {
 
   public class Settings {
-    method public boolean getBoolean(java.lang.String);
-    method public static androidx.leanback.system.Settings getInstance(android.content.Context);
-    method public void setBoolean(java.lang.String, boolean);
-    field public static final java.lang.String OUTLINE_CLIPPING_DISABLED = "OUTLINE_CLIPPING_DISABLED";
-    field public static final java.lang.String PREFER_STATIC_SHADOWS = "PREFER_STATIC_SHADOWS";
+    method public boolean getBoolean(String!);
+    method public static androidx.leanback.system.Settings! getInstance(android.content.Context!);
+    method public void setBoolean(String!, boolean);
+    field public static final String OUTLINE_CLIPPING_DISABLED = "OUTLINE_CLIPPING_DISABLED";
+    field public static final String PREFER_STATIC_SHADOWS = "PREFER_STATIC_SHADOWS";
   }
 
 }
@@ -1298,33 +1398,33 @@
 
   public abstract class AbstractDetailsDescriptionPresenter extends androidx.leanback.widget.Presenter {
     ctor public AbstractDetailsDescriptionPresenter();
-    method protected abstract void onBindDescription(androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder, java.lang.Object);
-    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method protected abstract void onBindDescription(androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder!, Object!);
+    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public final androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
   }
 
   public static class AbstractDetailsDescriptionPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public AbstractDetailsDescriptionPresenter.ViewHolder(android.view.View);
-    method public android.widget.TextView getBody();
-    method public android.widget.TextView getSubtitle();
-    method public android.widget.TextView getTitle();
+    ctor public AbstractDetailsDescriptionPresenter.ViewHolder(android.view.View!);
+    method public android.widget.TextView! getBody();
+    method public android.widget.TextView! getSubtitle();
+    method public android.widget.TextView! getTitle();
   }
 
   public abstract class AbstractMediaItemPresenter extends androidx.leanback.widget.RowPresenter {
     ctor public AbstractMediaItemPresenter();
     ctor public AbstractMediaItemPresenter(int);
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public androidx.leanback.widget.Presenter getActionPresenter();
-    method protected int getMediaPlayState(java.lang.Object);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method public androidx.leanback.widget.Presenter! getActionPresenter();
+    method protected int getMediaPlayState(Object!);
     method public int getThemeId();
     method public boolean hasMediaRowSeparator();
-    method protected abstract void onBindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder, java.lang.Object);
-    method public void onBindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method protected void onBindRowActions(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method protected void onUnbindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method public void onUnbindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method public void setActionPresenter(androidx.leanback.widget.Presenter);
+    method protected abstract void onBindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!, Object!);
+    method public void onBindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method protected void onBindRowActions(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method protected void onUnbindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method public void onUnbindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method public void setActionPresenter(androidx.leanback.widget.Presenter!);
     method public void setBackgroundColor(int);
     method public void setHasMediaRowSeparator(boolean);
     method public void setThemeId(int);
@@ -1334,19 +1434,19 @@
   }
 
   public static class AbstractMediaItemPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public AbstractMediaItemPresenter.ViewHolder(android.view.View);
-    method public android.view.ViewGroup getMediaItemActionsContainer();
-    method public android.view.View getMediaItemDetailsView();
-    method public android.widget.TextView getMediaItemDurationView();
-    method public android.widget.TextView getMediaItemNameView();
-    method public android.widget.TextView getMediaItemNumberView();
-    method public android.widget.ViewFlipper getMediaItemNumberViewFlipper();
-    method public android.view.View getMediaItemPausedView();
-    method public android.view.View getMediaItemPlayingView();
-    method public androidx.leanback.widget.MultiActionsProvider.MultiAction[] getMediaItemRowActions();
-    method public android.view.View getMediaItemRowSeparator();
-    method public android.view.View getSelectorView();
-    method public void notifyActionChanged(androidx.leanback.widget.MultiActionsProvider.MultiAction);
+    ctor public AbstractMediaItemPresenter.ViewHolder(android.view.View!);
+    method public android.view.ViewGroup! getMediaItemActionsContainer();
+    method public android.view.View! getMediaItemDetailsView();
+    method public android.widget.TextView! getMediaItemDurationView();
+    method public android.widget.TextView! getMediaItemNameView();
+    method public android.widget.TextView! getMediaItemNumberView();
+    method public android.widget.ViewFlipper! getMediaItemNumberViewFlipper();
+    method public android.view.View! getMediaItemPausedView();
+    method public android.view.View! getMediaItemPlayingView();
+    method public androidx.leanback.widget.MultiActionsProvider.MultiAction[]! getMediaItemRowActions();
+    method public android.view.View! getMediaItemRowSeparator();
+    method public android.view.View! getSelectorView();
+    method public void notifyActionChanged(androidx.leanback.widget.MultiActionsProvider.MultiAction!);
     method public void notifyDetailsChanged();
     method public void notifyPlayStateChanged();
     method public void onBindRowActions();
@@ -1354,70 +1454,70 @@
   }
 
   public abstract class AbstractMediaListHeaderPresenter extends androidx.leanback.widget.RowPresenter {
-    ctor public AbstractMediaListHeaderPresenter(android.content.Context, int);
+    ctor public AbstractMediaListHeaderPresenter(android.content.Context!, int);
     ctor public AbstractMediaListHeaderPresenter();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected abstract void onBindMediaListHeaderViewHolder(androidx.leanback.widget.AbstractMediaListHeaderPresenter.ViewHolder, java.lang.Object);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method protected abstract void onBindMediaListHeaderViewHolder(androidx.leanback.widget.AbstractMediaListHeaderPresenter.ViewHolder!, Object!);
     method public void setBackgroundColor(int);
   }
 
   public static class AbstractMediaListHeaderPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public AbstractMediaListHeaderPresenter.ViewHolder(android.view.View);
-    method public android.widget.TextView getHeaderView();
+    ctor public AbstractMediaListHeaderPresenter.ViewHolder(android.view.View!);
+    method public android.widget.TextView! getHeaderView();
   }
 
   public class Action {
     ctor public Action(long);
-    ctor public Action(long, java.lang.CharSequence);
-    ctor public Action(long, java.lang.CharSequence, java.lang.CharSequence);
-    ctor public Action(long, java.lang.CharSequence, java.lang.CharSequence, android.graphics.drawable.Drawable);
+    ctor public Action(long, CharSequence!);
+    ctor public Action(long, CharSequence!, CharSequence!);
+    ctor public Action(long, CharSequence!, CharSequence!, android.graphics.drawable.Drawable!);
     method public final void addKeyCode(int);
-    method public final android.graphics.drawable.Drawable getIcon();
+    method public final android.graphics.drawable.Drawable! getIcon();
     method public final long getId();
-    method public final java.lang.CharSequence getLabel1();
-    method public final java.lang.CharSequence getLabel2();
+    method public final CharSequence! getLabel1();
+    method public final CharSequence! getLabel2();
     method public final void removeKeyCode(int);
     method public final boolean respondsToKeyCode(int);
-    method public final void setIcon(android.graphics.drawable.Drawable);
+    method public final void setIcon(android.graphics.drawable.Drawable!);
     method public final void setId(long);
-    method public final void setLabel1(java.lang.CharSequence);
-    method public final void setLabel2(java.lang.CharSequence);
+    method public final void setLabel1(CharSequence!);
+    method public final void setLabel2(CharSequence!);
     field public static final long NO_ID = -1L; // 0xffffffffffffffffL
   }
 
   public class ArrayObjectAdapter extends androidx.leanback.widget.ObjectAdapter {
-    ctor public ArrayObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public ArrayObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public ArrayObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public ArrayObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public ArrayObjectAdapter();
-    method public void add(java.lang.Object);
-    method public void add(int, java.lang.Object);
-    method public void addAll(int, java.util.Collection);
+    method public void add(Object!);
+    method public void add(int, Object!);
+    method public void addAll(int, java.util.Collection!);
     method public void clear();
-    method public java.lang.Object get(int);
-    method public int indexOf(java.lang.Object);
+    method public Object! get(int);
+    method public int indexOf(Object!);
     method public void move(int, int);
     method public void notifyArrayItemRangeChanged(int, int);
-    method public boolean remove(java.lang.Object);
+    method public boolean remove(Object!);
     method public int removeItems(int, int);
-    method public void replace(int, java.lang.Object);
-    method public void setItems(java.util.List, androidx.leanback.widget.DiffCallback);
+    method public void replace(int, Object!);
+    method public void setItems(java.util.List!, androidx.leanback.widget.DiffCallback!);
     method public int size();
-    method public <E> java.util.List<E> unmodifiableList();
+    method public <E> java.util.List<E>! unmodifiableList();
   }
 
   public class BaseCardView extends android.widget.FrameLayout {
-    ctor public BaseCardView(android.content.Context);
-    ctor public BaseCardView(android.content.Context, android.util.AttributeSet);
-    ctor public BaseCardView(android.content.Context, android.util.AttributeSet, int);
-    method protected androidx.leanback.widget.BaseCardView.LayoutParams generateDefaultLayoutParams();
-    method public androidx.leanback.widget.BaseCardView.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected androidx.leanback.widget.BaseCardView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
+    ctor public BaseCardView(android.content.Context!);
+    ctor public BaseCardView(android.content.Context!, android.util.AttributeSet!);
+    ctor public BaseCardView(android.content.Context!, android.util.AttributeSet!, int);
+    method protected androidx.leanback.widget.BaseCardView.LayoutParams! generateDefaultLayoutParams();
+    method public androidx.leanback.widget.BaseCardView.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
+    method protected androidx.leanback.widget.BaseCardView.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
     method public int getCardType();
-    method public deprecated int getExtraVisibility();
+    method @Deprecated public int getExtraVisibility();
     method public int getInfoVisibility();
     method public boolean isSelectedAnimationDelayed();
     method public void setCardType(int);
-    method public deprecated void setExtraVisibility(int);
+    method @Deprecated public void setExtraVisibility(int);
     method public void setInfoVisibility(int);
     method public void setSelectedAnimationDelayed(boolean);
     field public static final int CARD_REGION_VISIBLE_ACTIVATED = 1; // 0x1
@@ -1430,10 +1530,10 @@
   }
 
   public static class BaseCardView.LayoutParams extends android.widget.FrameLayout.LayoutParams {
-    ctor public BaseCardView.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public BaseCardView.LayoutParams(android.content.Context!, android.util.AttributeSet!);
     ctor public BaseCardView.LayoutParams(int, int);
-    ctor public BaseCardView.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public BaseCardView.LayoutParams(androidx.leanback.widget.BaseCardView.LayoutParams);
+    ctor public BaseCardView.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public BaseCardView.LayoutParams(androidx.leanback.widget.BaseCardView.LayoutParams!);
     field public static final int VIEW_TYPE_EXTRA = 2; // 0x2
     field public static final int VIEW_TYPE_INFO = 1; // 0x1
     field public static final int VIEW_TYPE_MAIN = 0; // 0x0
@@ -1441,23 +1541,23 @@
   }
 
   public abstract class BaseGridView extends androidx.recyclerview.widget.RecyclerView {
-    method public void addOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener);
+    method public void addOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener!);
     method public void animateIn();
     method public void animateOut();
     method public int getChildDrawingOrder(int, int);
-    method public deprecated int getHorizontalMargin();
+    method @Deprecated public int getHorizontalMargin();
     method public int getHorizontalSpacing();
     method public int getInitialPrefetchItemCount();
     method public int getItemAlignmentOffset();
     method public float getItemAlignmentOffsetPercent();
     method public int getItemAlignmentViewId();
-    method public androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener getOnUnhandledKeyListener();
+    method public androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener! getOnUnhandledKeyListener();
     method public final int getSaveChildrenLimitNumber();
     method public final int getSaveChildrenPolicy();
     method public int getSelectedPosition();
-    method public deprecated int getVerticalMargin();
+    method @Deprecated public int getVerticalMargin();
     method public int getVerticalSpacing();
-    method public void getViewSelectedOffsets(android.view.View, int[]);
+    method public void getViewSelectedOffsets(android.view.View!, int[]!);
     method public int getWindowAlignment();
     method public int getWindowAlignmentOffset();
     method public float getWindowAlignmentOffsetPercent();
@@ -1469,41 +1569,41 @@
     method public boolean isScrollEnabled();
     method public boolean isWindowAlignmentPreferKeyLineOverHighEdge();
     method public boolean isWindowAlignmentPreferKeyLineOverLowEdge();
-    method public boolean onRequestFocusInDescendants(int, android.graphics.Rect);
-    method public void removeOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener);
+    method public boolean onRequestFocusInDescendants(int, android.graphics.Rect!);
+    method public void removeOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener!);
     method public void setAnimateChildLayout(boolean);
     method public void setChildrenVisibility(int);
     method public void setFocusDrawingOrderEnabled(boolean);
     method public final void setFocusSearchDisabled(boolean);
     method public void setGravity(int);
     method public void setHasOverlappingRendering(boolean);
-    method public deprecated void setHorizontalMargin(int);
+    method @Deprecated public void setHorizontalMargin(int);
     method public void setHorizontalSpacing(int);
     method public void setInitialPrefetchItemCount(int);
     method public void setItemAlignmentOffset(int);
     method public void setItemAlignmentOffsetPercent(float);
     method public void setItemAlignmentOffsetWithPadding(boolean);
     method public void setItemAlignmentViewId(int);
-    method public deprecated void setItemMargin(int);
+    method @Deprecated public void setItemMargin(int);
     method public void setItemSpacing(int);
     method public void setLayoutEnabled(boolean);
-    method public void setOnChildLaidOutListener(androidx.leanback.widget.OnChildLaidOutListener);
-    method public void setOnChildSelectedListener(androidx.leanback.widget.OnChildSelectedListener);
-    method public void setOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener);
-    method public void setOnKeyInterceptListener(androidx.leanback.widget.BaseGridView.OnKeyInterceptListener);
-    method public void setOnMotionInterceptListener(androidx.leanback.widget.BaseGridView.OnMotionInterceptListener);
-    method public void setOnTouchInterceptListener(androidx.leanback.widget.BaseGridView.OnTouchInterceptListener);
-    method public void setOnUnhandledKeyListener(androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener);
+    method public void setOnChildLaidOutListener(androidx.leanback.widget.OnChildLaidOutListener!);
+    method public void setOnChildSelectedListener(androidx.leanback.widget.OnChildSelectedListener!);
+    method public void setOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener!);
+    method public void setOnKeyInterceptListener(androidx.leanback.widget.BaseGridView.OnKeyInterceptListener!);
+    method public void setOnMotionInterceptListener(androidx.leanback.widget.BaseGridView.OnMotionInterceptListener!);
+    method public void setOnTouchInterceptListener(androidx.leanback.widget.BaseGridView.OnTouchInterceptListener!);
+    method public void setOnUnhandledKeyListener(androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener!);
     method public void setPruneChild(boolean);
     method public final void setSaveChildrenLimitNumber(int);
     method public final void setSaveChildrenPolicy(int);
     method public void setScrollEnabled(boolean);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, int);
-    method public void setSelectedPosition(int, androidx.leanback.widget.ViewHolderTask);
+    method public void setSelectedPosition(int, androidx.leanback.widget.ViewHolderTask!);
     method public void setSelectedPositionSmooth(int);
-    method public void setSelectedPositionSmooth(int, androidx.leanback.widget.ViewHolderTask);
-    method public deprecated void setVerticalMargin(int);
+    method public void setSelectedPositionSmooth(int, androidx.leanback.widget.ViewHolderTask!);
+    method @Deprecated public void setVerticalMargin(int);
     method public void setVerticalSpacing(int);
     method public void setWindowAlignment(int);
     method public void setWindowAlignmentOffset(int);
@@ -1522,165 +1622,171 @@
     field public static final float WINDOW_ALIGN_OFFSET_PERCENT_DISABLED = -1.0f;
   }
 
-  public static abstract interface BaseGridView.OnKeyInterceptListener {
-    method public abstract boolean onInterceptKeyEvent(android.view.KeyEvent);
+  public static interface BaseGridView.OnKeyInterceptListener {
+    method public boolean onInterceptKeyEvent(android.view.KeyEvent!);
   }
 
-  public static abstract interface BaseGridView.OnMotionInterceptListener {
-    method public abstract boolean onInterceptMotionEvent(android.view.MotionEvent);
+  public static interface BaseGridView.OnMotionInterceptListener {
+    method public boolean onInterceptMotionEvent(android.view.MotionEvent!);
   }
 
-  public static abstract interface BaseGridView.OnTouchInterceptListener {
-    method public abstract boolean onInterceptTouchEvent(android.view.MotionEvent);
+  public static interface BaseGridView.OnTouchInterceptListener {
+    method public boolean onInterceptTouchEvent(android.view.MotionEvent!);
   }
 
-  public static abstract interface BaseGridView.OnUnhandledKeyListener {
-    method public abstract boolean onUnhandledKey(android.view.KeyEvent);
+  public static interface BaseGridView.OnUnhandledKeyListener {
+    method public boolean onUnhandledKey(android.view.KeyEvent!);
   }
 
-  public abstract interface BaseOnItemViewClickedListener<T> {
-    method public abstract void onItemClicked(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object, androidx.leanback.widget.RowPresenter.ViewHolder, T);
+  public interface BaseOnItemViewClickedListener<T> {
+    method public void onItemClicked(androidx.leanback.widget.Presenter.ViewHolder!, Object!, androidx.leanback.widget.RowPresenter.ViewHolder!, T!);
   }
 
-  public abstract interface BaseOnItemViewSelectedListener<T> {
-    method public abstract void onItemSelected(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object, androidx.leanback.widget.RowPresenter.ViewHolder, T);
+  public interface BaseOnItemViewSelectedListener<T> {
+    method public void onItemSelected(androidx.leanback.widget.Presenter.ViewHolder!, Object!, androidx.leanback.widget.RowPresenter.ViewHolder!, T!);
   }
 
   public class BrowseFrameLayout extends android.widget.FrameLayout {
-    ctor public BrowseFrameLayout(android.content.Context);
-    ctor public BrowseFrameLayout(android.content.Context, android.util.AttributeSet);
-    ctor public BrowseFrameLayout(android.content.Context, android.util.AttributeSet, int);
-    method public androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener getOnChildFocusListener();
-    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener getOnFocusSearchListener();
-    method public void setOnChildFocusListener(androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener);
-    method public void setOnDispatchKeyListener(android.view.View.OnKeyListener);
-    method public void setOnFocusSearchListener(androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener);
+    ctor public BrowseFrameLayout(android.content.Context!);
+    ctor public BrowseFrameLayout(android.content.Context!, android.util.AttributeSet!);
+    ctor public BrowseFrameLayout(android.content.Context!, android.util.AttributeSet!, int);
+    method public androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener! getOnChildFocusListener();
+    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener! getOnFocusSearchListener();
+    method public void setOnChildFocusListener(androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener!);
+    method public void setOnDispatchKeyListener(android.view.View.OnKeyListener!);
+    method public void setOnFocusSearchListener(androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener!);
   }
 
-  public static abstract interface BrowseFrameLayout.OnChildFocusListener {
-    method public abstract void onRequestChildFocus(android.view.View, android.view.View);
-    method public abstract boolean onRequestFocusInDescendants(int, android.graphics.Rect);
+  public static interface BrowseFrameLayout.OnChildFocusListener {
+    method public void onRequestChildFocus(android.view.View!, android.view.View!);
+    method public boolean onRequestFocusInDescendants(int, android.graphics.Rect!);
   }
 
-  public static abstract interface BrowseFrameLayout.OnFocusSearchListener {
-    method public abstract android.view.View onFocusSearch(android.view.View, int);
+  public static interface BrowseFrameLayout.OnFocusSearchListener {
+    method public android.view.View! onFocusSearch(android.view.View!, int);
   }
 
   public final class ClassPresenterSelector extends androidx.leanback.widget.PresenterSelector {
     ctor public ClassPresenterSelector();
-    method public androidx.leanback.widget.ClassPresenterSelector addClassPresenter(java.lang.Class<?>, androidx.leanback.widget.Presenter);
-    method public androidx.leanback.widget.ClassPresenterSelector addClassPresenterSelector(java.lang.Class<?>, androidx.leanback.widget.PresenterSelector);
-    method public androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
+    method public androidx.leanback.widget.ClassPresenterSelector! addClassPresenter(Class<?>!, androidx.leanback.widget.Presenter!);
+    method public androidx.leanback.widget.ClassPresenterSelector! addClassPresenterSelector(Class<?>!, androidx.leanback.widget.PresenterSelector!);
+    method public androidx.leanback.widget.Presenter! getPresenter(Object!);
   }
 
   public class ControlButtonPresenterSelector extends androidx.leanback.widget.PresenterSelector {
     ctor public ControlButtonPresenterSelector();
-    method public androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public androidx.leanback.widget.Presenter getPrimaryPresenter();
-    method public androidx.leanback.widget.Presenter getSecondaryPresenter();
+    method public androidx.leanback.widget.Presenter! getPresenter(Object!);
+    method public androidx.leanback.widget.Presenter! getPrimaryPresenter();
+    method public androidx.leanback.widget.Presenter! getSecondaryPresenter();
   }
 
   public class CursorObjectAdapter extends androidx.leanback.widget.ObjectAdapter {
-    ctor public CursorObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public CursorObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public CursorObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public CursorObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public CursorObjectAdapter();
-    method public void changeCursor(android.database.Cursor);
+    method public void changeCursor(android.database.Cursor!);
     method public void close();
-    method public java.lang.Object get(int);
-    method public final android.database.Cursor getCursor();
-    method public final androidx.leanback.database.CursorMapper getMapper();
+    method public Object! get(int);
+    method public final android.database.Cursor! getCursor();
+    method public final androidx.leanback.database.CursorMapper! getMapper();
     method protected final void invalidateCache(int);
     method protected final void invalidateCache(int, int);
     method public boolean isClosed();
     method protected void onCursorChanged();
     method protected void onMapperChanged();
-    method public final void setMapper(androidx.leanback.database.CursorMapper);
+    method public final void setMapper(androidx.leanback.database.CursorMapper!);
     method public int size();
-    method public android.database.Cursor swapCursor(android.database.Cursor);
+    method public android.database.Cursor! swapCursor(android.database.Cursor!);
   }
 
   public class DetailsOverviewLogoPresenter extends androidx.leanback.widget.Presenter {
     ctor public DetailsOverviewLogoPresenter();
-    method public boolean isBoundToImage(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder, androidx.leanback.widget.DetailsOverviewRow);
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public android.view.View onCreateView(android.view.ViewGroup);
-    method public androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void setContext(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter);
+    method public boolean isBoundToImage(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder!, androidx.leanback.widget.DetailsOverviewRow!);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public android.view.View! onCreateView(android.view.ViewGroup!);
+    method public androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void setContext(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!);
   }
 
   public static class DetailsOverviewLogoPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public DetailsOverviewLogoPresenter.ViewHolder(android.view.View);
-    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter getParentPresenter();
-    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder getParentViewHolder();
+    ctor public DetailsOverviewLogoPresenter.ViewHolder(android.view.View!);
+    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter! getParentPresenter();
+    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder! getParentViewHolder();
     method public boolean isSizeFromDrawableIntrinsic();
     method public void setSizeFromDrawableIntrinsic(boolean);
-    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter mParentPresenter;
-    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder mParentViewHolder;
+    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter! mParentPresenter;
+    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder! mParentViewHolder;
   }
 
   public class DetailsOverviewRow extends androidx.leanback.widget.Row {
-    ctor public DetailsOverviewRow(java.lang.Object);
-    method public final deprecated void addAction(androidx.leanback.widget.Action);
-    method public final deprecated void addAction(int, androidx.leanback.widget.Action);
-    method public androidx.leanback.widget.Action getActionForKeyCode(int);
-    method public final deprecated java.util.List<androidx.leanback.widget.Action> getActions();
-    method public final androidx.leanback.widget.ObjectAdapter getActionsAdapter();
-    method public final android.graphics.drawable.Drawable getImageDrawable();
-    method public final java.lang.Object getItem();
+    ctor public DetailsOverviewRow(Object!);
+    method @Deprecated public final void addAction(androidx.leanback.widget.Action!);
+    method @Deprecated public final void addAction(int, androidx.leanback.widget.Action!);
+    method public androidx.leanback.widget.Action! getActionForKeyCode(int);
+    method @Deprecated public final java.util.List<androidx.leanback.widget.Action>! getActions();
+    method public final androidx.leanback.widget.ObjectAdapter! getActionsAdapter();
+    method public final android.graphics.drawable.Drawable! getImageDrawable();
+    method public final Object! getItem();
     method public boolean isImageScaleUpAllowed();
-    method public final deprecated boolean removeAction(androidx.leanback.widget.Action);
-    method public final void setActionsAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public final void setImageBitmap(android.content.Context, android.graphics.Bitmap);
-    method public final void setImageDrawable(android.graphics.drawable.Drawable);
+    method @Deprecated public final boolean removeAction(androidx.leanback.widget.Action!);
+    method public final void setActionsAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public final void setImageBitmap(android.content.Context!, android.graphics.Bitmap!);
+    method public final void setImageDrawable(android.graphics.drawable.Drawable!);
     method public void setImageScaleUpAllowed(boolean);
-    method public final void setItem(java.lang.Object);
+    method public final void setItem(Object!);
   }
 
   public static class DetailsOverviewRow.Listener {
     ctor public DetailsOverviewRow.Listener();
-    method public void onActionsAdapterChanged(androidx.leanback.widget.DetailsOverviewRow);
-    method public void onImageDrawableChanged(androidx.leanback.widget.DetailsOverviewRow);
-    method public void onItemChanged(androidx.leanback.widget.DetailsOverviewRow);
+    method public void onActionsAdapterChanged(androidx.leanback.widget.DetailsOverviewRow!);
+    method public void onImageDrawableChanged(androidx.leanback.widget.DetailsOverviewRow!);
+    method public void onItemChanged(androidx.leanback.widget.DetailsOverviewRow!);
   }
 
-  public deprecated class DetailsOverviewRowPresenter extends androidx.leanback.widget.RowPresenter {
-    ctor public DetailsOverviewRowPresenter(androidx.leanback.widget.Presenter);
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public int getBackgroundColor();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public boolean isStyleLarge();
-    method public final boolean isUsingDefaultSelectEffect();
-    method public void setBackgroundColor(int);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public final void setSharedElementEnterTransition(android.app.Activity, java.lang.String, long);
-    method public final void setSharedElementEnterTransition(android.app.Activity, java.lang.String);
-    method public void setStyleLarge(boolean);
+  @Deprecated public class DetailsOverviewRowPresenter extends androidx.leanback.widget.RowPresenter {
+    ctor @Deprecated public DetailsOverviewRowPresenter(androidx.leanback.widget.Presenter!);
+    method @Deprecated protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method @Deprecated @ColorInt public int getBackgroundColor();
+    method @Deprecated public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
+    method @Deprecated public boolean isStyleLarge();
+    method @Deprecated public final boolean isUsingDefaultSelectEffect();
+    method @Deprecated protected void onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!, Object!);
+    method @Deprecated protected void onRowViewAttachedToWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated protected void onRowViewDetachedFromWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated protected void onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method @Deprecated protected void onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated protected void onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated public void setBackgroundColor(@ColorInt int);
+    method @Deprecated public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method @Deprecated public final void setSharedElementEnterTransition(android.app.Activity!, String!, long);
+    method @Deprecated public final void setSharedElementEnterTransition(android.app.Activity!, String!);
+    method @Deprecated public void setStyleLarge(boolean);
   }
 
-  public final class DetailsOverviewRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public DetailsOverviewRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.Presenter);
-    field public final androidx.leanback.widget.Presenter.ViewHolder mDetailsDescriptionViewHolder;
+  @Deprecated public final class DetailsOverviewRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
+    ctor @Deprecated public DetailsOverviewRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.Presenter!);
+    field @Deprecated public final androidx.leanback.widget.Presenter.ViewHolder! mDetailsDescriptionViewHolder;
   }
 
   public class DetailsParallax extends androidx.leanback.widget.RecyclerViewParallax {
     ctor public DetailsParallax();
-    method public androidx.leanback.widget.Parallax.IntProperty getOverviewRowBottom();
-    method public androidx.leanback.widget.Parallax.IntProperty getOverviewRowTop();
+    method public androidx.leanback.widget.Parallax.IntProperty! getOverviewRowBottom();
+    method public androidx.leanback.widget.Parallax.IntProperty! getOverviewRowTop();
   }
 
   public abstract class DiffCallback<Value> {
     ctor public DiffCallback();
     method public abstract boolean areContentsTheSame(Value, Value);
     method public abstract boolean areItemsTheSame(Value, Value);
-    method public java.lang.Object getChangePayload(Value, Value);
+    method public Object! getChangePayload(Value, Value);
   }
 
   public class DividerPresenter extends androidx.leanback.widget.Presenter {
     ctor public DividerPresenter();
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
   }
 
   public class DividerRow extends androidx.leanback.widget.Row {
@@ -1688,15 +1794,15 @@
     method public final boolean isRenderedAsRowView();
   }
 
-  public abstract interface FacetProvider {
-    method public abstract java.lang.Object getFacet(java.lang.Class<?>);
+  public interface FacetProvider {
+    method public Object! getFacet(Class<?>!);
   }
 
-  public abstract interface FacetProviderAdapter {
-    method public abstract androidx.leanback.widget.FacetProvider getFacetProvider(int);
+  public interface FacetProviderAdapter {
+    method public androidx.leanback.widget.FacetProvider! getFacetProvider(int);
   }
 
-  public abstract interface FocusHighlight {
+  public interface FocusHighlight {
     field public static final int ZOOM_FACTOR_LARGE = 3; // 0x3
     field public static final int ZOOM_FACTOR_MEDIUM = 2; // 0x2
     field public static final int ZOOM_FACTOR_NONE = 0; // 0x0
@@ -1705,43 +1811,43 @@
   }
 
   public class FocusHighlightHelper {
-    ctor public deprecated FocusHighlightHelper();
-    method public static void setupBrowseItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter, int, boolean);
-    method public static deprecated void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView);
-    method public static deprecated void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView, boolean);
-    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter);
-    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter, boolean);
+    ctor @Deprecated public FocusHighlightHelper();
+    method public static void setupBrowseItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter!, int, boolean);
+    method @Deprecated public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView!);
+    method @Deprecated public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView!, boolean);
+    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter!);
+    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter!, boolean);
   }
 
-  public abstract interface FragmentAnimationProvider {
-    method public abstract void onImeAppearing(java.util.List<android.animation.Animator>);
-    method public abstract void onImeDisappearing(java.util.List<android.animation.Animator>);
+  public interface FragmentAnimationProvider {
+    method public void onImeAppearing(java.util.List<android.animation.Animator>);
+    method public void onImeDisappearing(java.util.List<android.animation.Animator>);
   }
 
   public class FullWidthDetailsOverviewRowPresenter extends androidx.leanback.widget.RowPresenter {
-    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter);
-    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter, androidx.leanback.widget.DetailsOverviewLogoPresenter);
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
+    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter!);
+    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter!, androidx.leanback.widget.DetailsOverviewLogoPresenter!);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
     method public final int getActionsBackgroundColor();
     method public final int getAlignmentMode();
     method public final int getBackgroundColor();
     method public final int getInitialState();
     method protected int getLayoutResourceId();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
+    method public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
     method public final boolean isParticipatingEntranceTransition();
     method public final boolean isUsingDefaultSelectEffect();
-    method public final void notifyOnBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder);
-    method protected void onLayoutLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, boolean);
-    method protected void onLayoutOverviewFrame(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, boolean);
-    method protected void onStateChanged(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int);
+    method public final void notifyOnBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!);
+    method protected void onLayoutLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, boolean);
+    method protected void onLayoutOverviewFrame(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, boolean);
+    method protected void onStateChanged(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int);
     method public final void setActionsBackgroundColor(int);
     method public final void setAlignmentMode(int);
     method public final void setBackgroundColor(int);
     method public final void setInitialState(int);
-    method public final void setListener(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.Listener);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
+    method public final void setListener(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.Listener!);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
     method public final void setParticipatingEntranceTransition(boolean);
-    method public final void setState(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int);
+    method public final void setState(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int);
     field public static final int ALIGN_MODE_MIDDLE = 1; // 0x1
     field public static final int ALIGN_MODE_START = 0; // 0x0
     field public static final int STATE_FULL = 1; // 0x1
@@ -1750,21 +1856,21 @@
     field protected int mInitialState;
   }
 
-  public static abstract class FullWidthDetailsOverviewRowPresenter.Listener {
+  public abstract static class FullWidthDetailsOverviewRowPresenter.Listener {
     ctor public FullWidthDetailsOverviewRowPresenter.Listener();
-    method public void onBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder);
+    method public void onBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!);
   }
 
   public class FullWidthDetailsOverviewRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public FullWidthDetailsOverviewRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.Presenter, androidx.leanback.widget.DetailsOverviewLogoPresenter);
-    method protected androidx.leanback.widget.DetailsOverviewRow.Listener createRowListener();
-    method public final android.view.ViewGroup getActionsRow();
-    method public final android.view.ViewGroup getDetailsDescriptionFrame();
-    method public final androidx.leanback.widget.Presenter.ViewHolder getDetailsDescriptionViewHolder();
-    method public final androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder getLogoViewHolder();
-    method public final android.view.ViewGroup getOverviewView();
+    ctor public FullWidthDetailsOverviewRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.Presenter!, androidx.leanback.widget.DetailsOverviewLogoPresenter!);
+    method protected androidx.leanback.widget.DetailsOverviewRow.Listener! createRowListener();
+    method public final android.view.ViewGroup! getActionsRow();
+    method public final android.view.ViewGroup! getDetailsDescriptionFrame();
+    method public final androidx.leanback.widget.Presenter.ViewHolder! getDetailsDescriptionViewHolder();
+    method public final androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder! getLogoViewHolder();
+    method public final android.view.ViewGroup! getOverviewView();
     method public final int getState();
-    field protected final androidx.leanback.widget.DetailsOverviewRow.Listener mRowListener;
+    field protected final androidx.leanback.widget.DetailsOverviewRow.Listener! mRowListener;
   }
 
   public class FullWidthDetailsOverviewRowPresenter.ViewHolder.DetailsOverviewRowListener extends androidx.leanback.widget.DetailsOverviewRow.Listener {
@@ -1775,18 +1881,18 @@
     ctor public FullWidthDetailsOverviewSharedElementHelper();
     method public boolean getAutoStartSharedElementTransition();
     method public void setAutoStartSharedElementTransition(boolean);
-    method public void setSharedElementEnterTransition(android.app.Activity, java.lang.String);
-    method public void setSharedElementEnterTransition(android.app.Activity, java.lang.String, long);
+    method public void setSharedElementEnterTransition(android.app.Activity!, String!);
+    method public void setSharedElementEnterTransition(android.app.Activity!, String!, long);
     method public void startPostponedEnterTransition();
   }
 
   public class GuidanceStylist implements androidx.leanback.widget.FragmentAnimationProvider {
     ctor public GuidanceStylist();
-    method public android.widget.TextView getBreadcrumbView();
-    method public android.widget.TextView getDescriptionView();
-    method public android.widget.ImageView getIconView();
-    method public android.widget.TextView getTitleView();
-    method public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup, androidx.leanback.widget.GuidanceStylist.Guidance);
+    method public android.widget.TextView! getBreadcrumbView();
+    method public android.widget.TextView! getDescriptionView();
+    method public android.widget.ImageView! getIconView();
+    method public android.widget.TextView! getTitleView();
+    method public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, androidx.leanback.widget.GuidanceStylist.Guidance!);
     method public void onDestroyView();
     method public void onImeAppearing(java.util.List<android.animation.Animator>);
     method public void onImeDisappearing(java.util.List<android.animation.Animator>);
@@ -1794,27 +1900,27 @@
   }
 
   public static class GuidanceStylist.Guidance {
-    ctor public GuidanceStylist.Guidance(java.lang.String, java.lang.String, java.lang.String, android.graphics.drawable.Drawable);
-    method public java.lang.String getBreadcrumb();
-    method public java.lang.String getDescription();
-    method public android.graphics.drawable.Drawable getIconDrawable();
-    method public java.lang.String getTitle();
+    ctor public GuidanceStylist.Guidance(String!, String!, String!, android.graphics.drawable.Drawable!);
+    method public String! getBreadcrumb();
+    method public String! getDescription();
+    method public android.graphics.drawable.Drawable! getIconDrawable();
+    method public String! getTitle();
   }
 
   public class GuidedAction extends androidx.leanback.widget.Action {
     ctor protected GuidedAction();
-    method public java.lang.String[] getAutofillHints();
+    method public String[]! getAutofillHints();
     method public int getCheckSetId();
-    method public java.lang.CharSequence getDescription();
+    method public CharSequence! getDescription();
     method public int getDescriptionEditInputType();
     method public int getDescriptionInputType();
-    method public java.lang.CharSequence getEditDescription();
+    method public CharSequence! getEditDescription();
     method public int getEditInputType();
-    method public java.lang.CharSequence getEditTitle();
+    method public CharSequence! getEditTitle();
     method public int getInputType();
-    method public android.content.Intent getIntent();
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getSubActions();
-    method public java.lang.CharSequence getTitle();
+    method public android.content.Intent! getIntent();
+    method public java.util.List<androidx.leanback.widget.GuidedAction>! getSubActions();
+    method public CharSequence! getTitle();
     method public boolean hasEditableActivatorView();
     method public boolean hasMultilineDescription();
     method public boolean hasNext();
@@ -1828,17 +1934,17 @@
     method public boolean isEditable();
     method public boolean isEnabled();
     method public boolean isFocusable();
-    method public void onRestoreInstanceState(android.os.Bundle, java.lang.String);
-    method public void onSaveInstanceState(android.os.Bundle, java.lang.String);
+    method public void onRestoreInstanceState(android.os.Bundle!, String!);
+    method public void onSaveInstanceState(android.os.Bundle!, String!);
     method public void setChecked(boolean);
-    method public void setDescription(java.lang.CharSequence);
-    method public void setEditDescription(java.lang.CharSequence);
-    method public void setEditTitle(java.lang.CharSequence);
+    method public void setDescription(CharSequence!);
+    method public void setEditDescription(CharSequence!);
+    method public void setEditTitle(CharSequence!);
     method public void setEnabled(boolean);
     method public void setFocusable(boolean);
-    method public void setIntent(android.content.Intent);
-    method public void setSubActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setTitle(java.lang.CharSequence);
+    method public void setIntent(android.content.Intent!);
+    method public void setSubActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method public void setTitle(CharSequence!);
     field public static final long ACTION_ID_CANCEL = -5L; // 0xfffffffffffffffbL
     field public static final long ACTION_ID_CONTINUE = -7L; // 0xfffffffffffffff9L
     field public static final long ACTION_ID_CURRENT = -3L; // 0xfffffffffffffffdL
@@ -1852,80 +1958,80 @@
     field public static final int NO_CHECK_SET = 0; // 0x0
   }
 
-  public static class GuidedAction.Builder extends androidx.leanback.widget.GuidedAction.BuilderBase {
-    ctor public deprecated GuidedAction.Builder();
-    ctor public GuidedAction.Builder(android.content.Context);
-    method public androidx.leanback.widget.GuidedAction build();
+  public static class GuidedAction.Builder extends androidx.leanback.widget.GuidedAction.BuilderBase<androidx.leanback.widget.GuidedAction.Builder> {
+    ctor @Deprecated public GuidedAction.Builder();
+    ctor public GuidedAction.Builder(android.content.Context!);
+    method public androidx.leanback.widget.GuidedAction! build();
   }
 
-  public static abstract class GuidedAction.BuilderBase<B extends androidx.leanback.widget.GuidedAction.BuilderBase> {
-    ctor public GuidedAction.BuilderBase(android.content.Context);
-    method protected final void applyValues(androidx.leanback.widget.GuidedAction);
-    method public B autoSaveRestoreEnabled(boolean);
-    method public B autofillHints(java.lang.String...);
-    method public B checkSetId(int);
-    method public B checked(boolean);
-    method public B clickAction(long);
-    method public B description(java.lang.CharSequence);
-    method public B description(int);
-    method public B descriptionEditInputType(int);
-    method public B descriptionEditable(boolean);
-    method public B descriptionInputType(int);
-    method public B editDescription(java.lang.CharSequence);
-    method public B editDescription(int);
-    method public B editInputType(int);
-    method public B editTitle(java.lang.CharSequence);
-    method public B editTitle(int);
-    method public B editable(boolean);
-    method public B enabled(boolean);
-    method public B focusable(boolean);
-    method public android.content.Context getContext();
-    method public B hasEditableActivatorView(boolean);
-    method public B hasNext(boolean);
-    method public B icon(android.graphics.drawable.Drawable);
-    method public B icon(int);
-    method public deprecated B iconResourceId(int, android.content.Context);
-    method public B id(long);
-    method public B infoOnly(boolean);
-    method public B inputType(int);
-    method public B intent(android.content.Intent);
-    method public B multilineDescription(boolean);
-    method public B subActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public B title(java.lang.CharSequence);
-    method public B title(int);
+  public abstract static class GuidedAction.BuilderBase<B extends androidx.leanback.widget.GuidedAction.BuilderBase> {
+    ctor public GuidedAction.BuilderBase(android.content.Context!);
+    method protected final void applyValues(androidx.leanback.widget.GuidedAction!);
+    method public B! autoSaveRestoreEnabled(boolean);
+    method public B! autofillHints(java.lang.String...!);
+    method public B! checkSetId(int);
+    method public B! checked(boolean);
+    method public B! clickAction(long);
+    method public B! description(CharSequence!);
+    method public B! description(@StringRes int);
+    method public B! descriptionEditInputType(int);
+    method public B! descriptionEditable(boolean);
+    method public B! descriptionInputType(int);
+    method public B! editDescription(CharSequence!);
+    method public B! editDescription(@StringRes int);
+    method public B! editInputType(int);
+    method public B! editTitle(CharSequence!);
+    method public B! editTitle(@StringRes int);
+    method public B! editable(boolean);
+    method public B! enabled(boolean);
+    method public B! focusable(boolean);
+    method public android.content.Context! getContext();
+    method public B! hasEditableActivatorView(boolean);
+    method public B! hasNext(boolean);
+    method public B! icon(android.graphics.drawable.Drawable!);
+    method public B! icon(@DrawableRes int);
+    method @Deprecated public B! iconResourceId(@DrawableRes int, android.content.Context!);
+    method public B! id(long);
+    method public B! infoOnly(boolean);
+    method public B! inputType(int);
+    method public B! intent(android.content.Intent!);
+    method public B! multilineDescription(boolean);
+    method public B! subActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method public B! title(CharSequence!);
+    method public B! title(@StringRes int);
   }
 
-  public abstract interface GuidedActionAutofillSupport {
-    method public abstract void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener);
+  public interface GuidedActionAutofillSupport {
+    method public void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener!);
   }
 
-  public static abstract interface GuidedActionAutofillSupport.OnAutofillListener {
-    method public abstract void onAutofill(android.view.View);
+  public static interface GuidedActionAutofillSupport.OnAutofillListener {
+    method public void onAutofill(android.view.View!);
   }
 
-  public class GuidedActionDiffCallback extends androidx.leanback.widget.DiffCallback {
+  public class GuidedActionDiffCallback extends androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction> {
     ctor public GuidedActionDiffCallback();
     method public boolean areContentsTheSame(androidx.leanback.widget.GuidedAction, androidx.leanback.widget.GuidedAction);
     method public boolean areItemsTheSame(androidx.leanback.widget.GuidedAction, androidx.leanback.widget.GuidedAction);
-    method public static androidx.leanback.widget.GuidedActionDiffCallback getInstance();
+    method public static androidx.leanback.widget.GuidedActionDiffCallback! getInstance();
   }
 
   public class GuidedActionEditText extends android.widget.EditText implements androidx.leanback.widget.GuidedActionAutofillSupport androidx.leanback.widget.ImeKeyMonitor {
-    ctor public GuidedActionEditText(android.content.Context);
-    ctor public GuidedActionEditText(android.content.Context, android.util.AttributeSet);
-    ctor public GuidedActionEditText(android.content.Context, android.util.AttributeSet, int);
-    method public void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener);
-    method public void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener);
+    ctor public GuidedActionEditText(android.content.Context!);
+    ctor public GuidedActionEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public GuidedActionEditText(android.content.Context!, android.util.AttributeSet!, int);
+    method public void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener!);
+    method public void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener!);
   }
 
   public class GuidedActionsStylist implements androidx.leanback.widget.FragmentAnimationProvider {
     ctor public GuidedActionsStylist();
     method public void collapseAction(boolean);
-    method public void expandAction(androidx.leanback.widget.GuidedAction, boolean);
-    method public androidx.leanback.widget.VerticalGridView getActionsGridView();
-    method public androidx.leanback.widget.GuidedAction getExpandedAction();
-    method public int getItemViewType(androidx.leanback.widget.GuidedAction);
-    method public androidx.leanback.widget.VerticalGridView getSubActionsGridView();
+    method public void expandAction(androidx.leanback.widget.GuidedAction!, boolean);
+    method public androidx.leanback.widget.VerticalGridView! getActionsGridView();
+    method public androidx.leanback.widget.GuidedAction! getExpandedAction();
+    method public int getItemViewType(androidx.leanback.widget.GuidedAction!);
+    method public androidx.leanback.widget.VerticalGridView! getSubActionsGridView();
     method public final boolean isBackKeyToCollapseActivatorView();
     method public final boolean isBackKeyToCollapseSubActions();
     method public boolean isButtonActions();
@@ -1933,53 +2039,53 @@
     method public boolean isExpanded();
     method public boolean isInExpandTransition();
     method public boolean isSubActionsExpanded();
-    method public void onAnimateItemChecked(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemFocused(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemPressed(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemPressedCancelled(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method public void onBindActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onBindCheckMarkView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onBindChevronView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onBindViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup);
-    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
+    method public void onAnimateItemChecked(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean);
+    method public void onAnimateItemFocused(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean);
+    method public void onAnimateItemPressed(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean);
+    method public void onAnimateItemPressedCancelled(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
+    method public void onBindActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onBindCheckMarkView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onBindChevronView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onBindViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder! onCreateViewHolder(android.view.ViewGroup!, int);
     method public void onDestroyView();
-    method protected deprecated void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction, boolean);
-    method protected void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean, boolean);
+    method @Deprecated protected void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!, boolean);
+    method @CallSuper protected void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean, boolean);
     method public void onImeAppearing(java.util.List<android.animation.Animator>);
     method public void onImeDisappearing(java.util.List<android.animation.Animator>);
     method public int onProvideItemLayoutId();
     method public int onProvideItemLayoutId(int);
     method public int onProvideLayoutId();
-    method public boolean onUpdateActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onUpdateExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method public void openInEditMode(androidx.leanback.widget.GuidedAction);
+    method public boolean onUpdateActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onUpdateExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
+    method public void openInEditMode(androidx.leanback.widget.GuidedAction!);
     method public void setAsButtonActions();
     method public final void setBackKeyToCollapseActivatorView(boolean);
     method public final void setBackKeyToCollapseSubActions(boolean);
-    method public deprecated void setEditingMode(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction, boolean);
-    method public deprecated void setExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method protected void setupImeOptions(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public deprecated void startExpandedTransition(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
+    method @Deprecated public void setEditingMode(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!, boolean);
+    method @Deprecated public void setExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
+    method protected void setupImeOptions(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void startExpandedTransition(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
     field public static final int VIEW_TYPE_DATE_PICKER = 1; // 0x1
     field public static final int VIEW_TYPE_DEFAULT = 0; // 0x0
   }
 
   public static class GuidedActionsStylist.ViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder implements androidx.leanback.widget.FacetProvider {
-    ctor public GuidedActionsStylist.ViewHolder(android.view.View);
-    ctor public GuidedActionsStylist.ViewHolder(android.view.View, boolean);
-    method public androidx.leanback.widget.GuidedAction getAction();
-    method public android.widget.ImageView getCheckmarkView();
-    method public android.widget.ImageView getChevronView();
-    method public android.view.View getContentView();
-    method public android.widget.TextView getDescriptionView();
-    method public android.widget.EditText getEditableDescriptionView();
-    method public android.widget.EditText getEditableTitleView();
-    method public android.view.View getEditingView();
-    method public java.lang.Object getFacet(java.lang.Class<?>);
-    method public android.widget.ImageView getIconView();
-    method public android.widget.TextView getTitleView();
+    ctor public GuidedActionsStylist.ViewHolder(android.view.View!);
+    ctor public GuidedActionsStylist.ViewHolder(android.view.View!, boolean);
+    method public androidx.leanback.widget.GuidedAction! getAction();
+    method public android.widget.ImageView! getCheckmarkView();
+    method public android.widget.ImageView! getChevronView();
+    method public android.view.View! getContentView();
+    method public android.widget.TextView! getDescriptionView();
+    method public android.widget.EditText! getEditableDescriptionView();
+    method public android.widget.EditText! getEditableTitleView();
+    method public android.view.View! getEditingView();
+    method public Object! getFacet(Class<?>!);
+    method public android.widget.ImageView! getIconView();
+    method public android.widget.TextView! getTitleView();
     method public boolean isInEditing();
     method public boolean isInEditingActivatorView();
     method public boolean isInEditingDescription();
@@ -1991,48 +2097,48 @@
   public class GuidedDatePickerAction extends androidx.leanback.widget.GuidedAction {
     ctor public GuidedDatePickerAction();
     method public long getDate();
-    method public java.lang.String getDatePickerFormat();
+    method public String! getDatePickerFormat();
     method public long getMaxDate();
     method public long getMinDate();
     method public void setDate(long);
   }
 
-  public static final class GuidedDatePickerAction.Builder extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase {
-    ctor public GuidedDatePickerAction.Builder(android.content.Context);
-    method public androidx.leanback.widget.GuidedDatePickerAction build();
+  public static final class GuidedDatePickerAction.Builder extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase<androidx.leanback.widget.GuidedDatePickerAction.Builder> {
+    ctor public GuidedDatePickerAction.Builder(android.content.Context!);
+    method public androidx.leanback.widget.GuidedDatePickerAction! build();
   }
 
-  public static abstract class GuidedDatePickerAction.BuilderBase<B extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase> extends androidx.leanback.widget.GuidedAction.BuilderBase {
-    ctor public GuidedDatePickerAction.BuilderBase(android.content.Context);
-    method protected final void applyDatePickerValues(androidx.leanback.widget.GuidedDatePickerAction);
-    method public B date(long);
-    method public B datePickerFormat(java.lang.String);
-    method public B maxDate(long);
-    method public B minDate(long);
+  public abstract static class GuidedDatePickerAction.BuilderBase<B extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase> extends androidx.leanback.widget.GuidedAction.BuilderBase<B> {
+    ctor public GuidedDatePickerAction.BuilderBase(android.content.Context!);
+    method protected final void applyDatePickerValues(androidx.leanback.widget.GuidedDatePickerAction!);
+    method public B! date(long);
+    method public B! datePickerFormat(String!);
+    method public B! maxDate(long);
+    method public B! minDate(long);
   }
 
   public class HeaderItem {
-    ctor public HeaderItem(long, java.lang.String);
-    ctor public HeaderItem(java.lang.String);
-    method public java.lang.CharSequence getContentDescription();
-    method public java.lang.CharSequence getDescription();
+    ctor public HeaderItem(long, String!);
+    ctor public HeaderItem(String!);
+    method public CharSequence! getContentDescription();
+    method public CharSequence! getDescription();
     method public final long getId();
-    method public final java.lang.String getName();
-    method public void setContentDescription(java.lang.CharSequence);
-    method public void setDescription(java.lang.CharSequence);
+    method public final String! getName();
+    method public void setContentDescription(CharSequence!);
+    method public void setDescription(CharSequence!);
   }
 
   public class HorizontalGridView extends androidx.leanback.widget.BaseGridView {
-    ctor public HorizontalGridView(android.content.Context);
-    ctor public HorizontalGridView(android.content.Context, android.util.AttributeSet);
-    ctor public HorizontalGridView(android.content.Context, android.util.AttributeSet, int);
+    ctor public HorizontalGridView(android.content.Context!);
+    ctor public HorizontalGridView(android.content.Context!, android.util.AttributeSet!);
+    ctor public HorizontalGridView(android.content.Context!, android.util.AttributeSet!, int);
     method public final boolean getFadingLeftEdge();
     method public final int getFadingLeftEdgeLength();
     method public final int getFadingLeftEdgeOffset();
     method public final boolean getFadingRightEdge();
     method public final int getFadingRightEdgeLength();
     method public final int getFadingRightEdgeOffset();
-    method protected void initAttributes(android.content.Context, android.util.AttributeSet);
+    method protected void initAttributes(android.content.Context!, android.util.AttributeSet!);
     method public final void setFadingLeftEdge(boolean);
     method public final void setFadingLeftEdgeLength(int);
     method public final void setFadingLeftEdgeOffset(int);
@@ -2045,31 +2151,31 @@
 
   public final class HorizontalHoverCardSwitcher extends androidx.leanback.widget.PresenterSwitcher {
     ctor public HorizontalHoverCardSwitcher();
-    method protected void insertView(android.view.View);
-    method public void select(androidx.leanback.widget.HorizontalGridView, android.view.View, java.lang.Object);
+    method protected void insertView(android.view.View!);
+    method public void select(androidx.leanback.widget.HorizontalGridView!, android.view.View!, Object!);
   }
 
   public class ImageCardView extends androidx.leanback.widget.BaseCardView {
-    ctor public deprecated ImageCardView(android.content.Context, int);
-    ctor public ImageCardView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ImageCardView(android.content.Context);
-    ctor public ImageCardView(android.content.Context, android.util.AttributeSet);
-    method public android.graphics.drawable.Drawable getBadgeImage();
-    method public java.lang.CharSequence getContentText();
-    method public android.graphics.drawable.Drawable getInfoAreaBackground();
-    method public android.graphics.drawable.Drawable getMainImage();
-    method public final android.widget.ImageView getMainImageView();
-    method public java.lang.CharSequence getTitleText();
-    method public void setBadgeImage(android.graphics.drawable.Drawable);
-    method public void setContentText(java.lang.CharSequence);
-    method public void setInfoAreaBackground(android.graphics.drawable.Drawable);
-    method public void setInfoAreaBackgroundColor(int);
-    method public void setMainImage(android.graphics.drawable.Drawable);
-    method public void setMainImage(android.graphics.drawable.Drawable, boolean);
+    ctor @Deprecated public ImageCardView(android.content.Context!, int);
+    ctor public ImageCardView(android.content.Context!, android.util.AttributeSet!, int);
+    ctor public ImageCardView(android.content.Context!);
+    ctor public ImageCardView(android.content.Context!, android.util.AttributeSet!);
+    method public android.graphics.drawable.Drawable! getBadgeImage();
+    method public CharSequence! getContentText();
+    method public android.graphics.drawable.Drawable! getInfoAreaBackground();
+    method public android.graphics.drawable.Drawable! getMainImage();
+    method public final android.widget.ImageView! getMainImageView();
+    method public CharSequence! getTitleText();
+    method public void setBadgeImage(android.graphics.drawable.Drawable!);
+    method public void setContentText(CharSequence!);
+    method public void setInfoAreaBackground(android.graphics.drawable.Drawable!);
+    method public void setInfoAreaBackgroundColor(@ColorInt int);
+    method public void setMainImage(android.graphics.drawable.Drawable!);
+    method public void setMainImage(android.graphics.drawable.Drawable!, boolean);
     method public void setMainImageAdjustViewBounds(boolean);
     method public void setMainImageDimensions(int, int);
-    method public void setMainImageScaleType(android.widget.ImageView.ScaleType);
-    method public void setTitleText(java.lang.CharSequence);
+    method public void setMainImageScaleType(android.widget.ImageView.ScaleType!);
+    method public void setTitleText(CharSequence!);
     field public static final int CARD_TYPE_FLAG_CONTENT = 2; // 0x2
     field public static final int CARD_TYPE_FLAG_ICON_LEFT = 8; // 0x8
     field public static final int CARD_TYPE_FLAG_ICON_RIGHT = 4; // 0x4
@@ -2077,19 +2183,19 @@
     field public static final int CARD_TYPE_FLAG_TITLE = 1; // 0x1
   }
 
-  public abstract interface ImeKeyMonitor {
-    method public abstract void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener);
+  public interface ImeKeyMonitor {
+    method public void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener!);
   }
 
-  public static abstract interface ImeKeyMonitor.ImeKeyListener {
-    method public abstract boolean onKeyPreIme(android.widget.EditText, int, android.view.KeyEvent);
+  public static interface ImeKeyMonitor.ImeKeyListener {
+    method public boolean onKeyPreIme(android.widget.EditText!, int, android.view.KeyEvent!);
   }
 
   public final class ItemAlignmentFacet {
     ctor public ItemAlignmentFacet();
-    method public androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[] getAlignmentDefs();
+    method public androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[]! getAlignmentDefs();
     method public boolean isMultiAlignment();
-    method public void setAlignmentDefs(androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[]);
+    method public void setAlignmentDefs(androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[]!);
     field public static final float ITEM_ALIGN_OFFSET_PERCENT_DISABLED = -1.0f;
   }
 
@@ -2110,113 +2216,113 @@
   }
 
   public class ItemBridgeAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter implements androidx.leanback.widget.FacetProviderAdapter {
-    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter, androidx.leanback.widget.PresenterSelector);
-    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter);
+    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter!, androidx.leanback.widget.PresenterSelector!);
+    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter!);
     ctor public ItemBridgeAdapter();
     method public void clear();
-    method public androidx.leanback.widget.FacetProvider getFacetProvider(int);
+    method public androidx.leanback.widget.FacetProvider! getFacetProvider(int);
     method public int getItemCount();
-    method public java.util.ArrayList<androidx.leanback.widget.Presenter> getPresenterMapper();
-    method public androidx.leanback.widget.ItemBridgeAdapter.Wrapper getWrapper();
-    method protected void onAddPresenter(androidx.leanback.widget.Presenter, int);
-    method protected void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method protected void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder, int);
-    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder, int, java.util.List);
-    method protected void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final androidx.recyclerview.widget.RecyclerView.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
-    method protected void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final boolean onFailedToRecycleView(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method protected void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final void onViewAttachedToWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public final void onViewDetachedFromWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public final void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setAdapterListener(androidx.leanback.widget.ItemBridgeAdapter.AdapterListener);
-    method public void setPresenter(androidx.leanback.widget.PresenterSelector);
-    method public void setPresenterMapper(java.util.ArrayList<androidx.leanback.widget.Presenter>);
-    method public void setWrapper(androidx.leanback.widget.ItemBridgeAdapter.Wrapper);
+    method public java.util.ArrayList<androidx.leanback.widget.Presenter>! getPresenterMapper();
+    method public androidx.leanback.widget.ItemBridgeAdapter.Wrapper! getWrapper();
+    method protected void onAddPresenter(androidx.leanback.widget.Presenter!, int);
+    method protected void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method protected void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder!, int);
+    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder!, int, java.util.List!);
+    method protected void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final androidx.recyclerview.widget.RecyclerView.ViewHolder! onCreateViewHolder(android.view.ViewGroup!, int);
+    method protected void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final boolean onFailedToRecycleView(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method protected void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final void onViewAttachedToWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method public final void onViewDetachedFromWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method public final void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setAdapterListener(androidx.leanback.widget.ItemBridgeAdapter.AdapterListener!);
+    method public void setPresenter(androidx.leanback.widget.PresenterSelector!);
+    method public void setPresenterMapper(java.util.ArrayList<androidx.leanback.widget.Presenter>!);
+    method public void setWrapper(androidx.leanback.widget.ItemBridgeAdapter.Wrapper!);
   }
 
   public static class ItemBridgeAdapter.AdapterListener {
     ctor public ItemBridgeAdapter.AdapterListener();
-    method public void onAddPresenter(androidx.leanback.widget.Presenter, int);
-    method public void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder, java.util.List);
-    method public void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
+    method public void onAddPresenter(androidx.leanback.widget.Presenter!, int);
+    method public void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!, java.util.List!);
+    method public void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
   }
 
   public class ItemBridgeAdapter.ViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder implements androidx.leanback.widget.FacetProvider {
-    method public final java.lang.Object getExtraObject();
-    method public java.lang.Object getFacet(java.lang.Class<?>);
-    method public final java.lang.Object getItem();
-    method public final androidx.leanback.widget.Presenter getPresenter();
-    method public final androidx.leanback.widget.Presenter.ViewHolder getViewHolder();
-    method public void setExtraObject(java.lang.Object);
+    method public final Object! getExtraObject();
+    method public Object! getFacet(Class<?>!);
+    method public final Object! getItem();
+    method public final androidx.leanback.widget.Presenter! getPresenter();
+    method public final androidx.leanback.widget.Presenter.ViewHolder! getViewHolder();
+    method public void setExtraObject(Object!);
   }
 
-  public static abstract class ItemBridgeAdapter.Wrapper {
+  public abstract static class ItemBridgeAdapter.Wrapper {
     ctor public ItemBridgeAdapter.Wrapper();
-    method public abstract android.view.View createWrapper(android.view.View);
-    method public abstract void wrap(android.view.View, android.view.View);
+    method public abstract android.view.View! createWrapper(android.view.View!);
+    method public abstract void wrap(android.view.View!, android.view.View!);
   }
 
   public class ItemBridgeAdapterShadowOverlayWrapper extends androidx.leanback.widget.ItemBridgeAdapter.Wrapper {
-    ctor public ItemBridgeAdapterShadowOverlayWrapper(androidx.leanback.widget.ShadowOverlayHelper);
-    method public android.view.View createWrapper(android.view.View);
-    method public void wrap(android.view.View, android.view.View);
+    ctor public ItemBridgeAdapterShadowOverlayWrapper(androidx.leanback.widget.ShadowOverlayHelper!);
+    method public android.view.View! createWrapper(android.view.View!);
+    method public void wrap(android.view.View!, android.view.View!);
   }
 
   public class ListRow extends androidx.leanback.widget.Row {
-    ctor public ListRow(androidx.leanback.widget.HeaderItem, androidx.leanback.widget.ObjectAdapter);
-    ctor public ListRow(long, androidx.leanback.widget.HeaderItem, androidx.leanback.widget.ObjectAdapter);
-    ctor public ListRow(androidx.leanback.widget.ObjectAdapter);
-    method public final androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public java.lang.CharSequence getContentDescription();
-    method public void setContentDescription(java.lang.CharSequence);
+    ctor public ListRow(androidx.leanback.widget.HeaderItem!, androidx.leanback.widget.ObjectAdapter!);
+    ctor public ListRow(long, androidx.leanback.widget.HeaderItem!, androidx.leanback.widget.ObjectAdapter!);
+    ctor public ListRow(androidx.leanback.widget.ObjectAdapter!);
+    method public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public CharSequence! getContentDescription();
+    method public void setContentDescription(CharSequence!);
   }
 
   public final class ListRowHoverCardView extends android.widget.LinearLayout {
-    ctor public ListRowHoverCardView(android.content.Context);
-    ctor public ListRowHoverCardView(android.content.Context, android.util.AttributeSet);
-    ctor public ListRowHoverCardView(android.content.Context, android.util.AttributeSet, int);
-    method public java.lang.CharSequence getDescription();
-    method public java.lang.CharSequence getTitle();
-    method public void setDescription(java.lang.CharSequence);
-    method public void setTitle(java.lang.CharSequence);
+    ctor public ListRowHoverCardView(android.content.Context!);
+    ctor public ListRowHoverCardView(android.content.Context!, android.util.AttributeSet!);
+    ctor public ListRowHoverCardView(android.content.Context!, android.util.AttributeSet!, int);
+    method public CharSequence! getDescription();
+    method public CharSequence! getTitle();
+    method public void setDescription(CharSequence!);
+    method public void setTitle(CharSequence!);
   }
 
   public class ListRowPresenter extends androidx.leanback.widget.RowPresenter {
     ctor public ListRowPresenter();
     ctor public ListRowPresenter(int);
     ctor public ListRowPresenter(int, boolean);
-    method protected void applySelectLevelToChild(androidx.leanback.widget.ListRowPresenter.ViewHolder, android.view.View);
+    method protected void applySelectLevelToChild(androidx.leanback.widget.ListRowPresenter.ViewHolder!, android.view.View!);
     method public final boolean areChildRoundedCornersEnabled();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected androidx.leanback.widget.ShadowOverlayHelper.Options createShadowOverlayOptions();
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method protected androidx.leanback.widget.ShadowOverlayHelper.Options! createShadowOverlayOptions();
     method public final void enableChildRoundedCorners(boolean);
     method public int getExpandedRowHeight();
     method public final int getFocusZoomFactor();
-    method public final androidx.leanback.widget.PresenterSelector getHoverCardPresenterSelector();
-    method public int getRecycledPoolSize(androidx.leanback.widget.Presenter);
+    method public final androidx.leanback.widget.PresenterSelector! getHoverCardPresenterSelector();
+    method public int getRecycledPoolSize(androidx.leanback.widget.Presenter!);
     method public int getRowHeight();
     method public final boolean getShadowEnabled();
-    method public final deprecated int getZoomFactor();
+    method @Deprecated public final int getZoomFactor();
     method public final boolean isFocusDimmerUsed();
     method public final boolean isKeepChildForeground();
     method public boolean isUsingDefaultListSelectEffect();
     method public final boolean isUsingDefaultSelectEffect();
     method public boolean isUsingDefaultShadow();
-    method public boolean isUsingOutlineClipping(android.content.Context);
-    method public boolean isUsingZOrder(android.content.Context);
+    method public boolean isUsingOutlineClipping(android.content.Context!);
+    method public boolean isUsingZOrder(android.content.Context!);
     method public void setExpandedRowHeight(int);
-    method public final void setHoverCardPresenterSelector(androidx.leanback.widget.PresenterSelector);
+    method public final void setHoverCardPresenterSelector(androidx.leanback.widget.PresenterSelector!);
     method public final void setKeepChildForeground(boolean);
     method public void setNumRows(int);
-    method public void setRecycledPoolSize(androidx.leanback.widget.Presenter, int);
+    method public void setRecycledPoolSize(androidx.leanback.widget.Presenter!, int);
     method public void setRowHeight(int);
     method public final void setShadowEnabled(boolean);
   }
@@ -2224,379 +2330,379 @@
   public static class ListRowPresenter.SelectItemViewHolderTask extends androidx.leanback.widget.Presenter.ViewHolderTask {
     ctor public ListRowPresenter.SelectItemViewHolderTask(int);
     method public int getItemPosition();
-    method public androidx.leanback.widget.Presenter.ViewHolderTask getItemTask();
+    method public androidx.leanback.widget.Presenter.ViewHolderTask! getItemTask();
     method public boolean isSmoothScroll();
     method public void setItemPosition(int);
-    method public void setItemTask(androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setItemTask(androidx.leanback.widget.Presenter.ViewHolderTask!);
     method public void setSmoothScroll(boolean);
   }
 
   public static class ListRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public ListRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.HorizontalGridView, androidx.leanback.widget.ListRowPresenter);
-    method public final androidx.leanback.widget.ItemBridgeAdapter getBridgeAdapter();
-    method public final androidx.leanback.widget.HorizontalGridView getGridView();
-    method public androidx.leanback.widget.Presenter.ViewHolder getItemViewHolder(int);
-    method public final androidx.leanback.widget.ListRowPresenter getListRowPresenter();
+    ctor public ListRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.HorizontalGridView!, androidx.leanback.widget.ListRowPresenter!);
+    method public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method public final androidx.leanback.widget.HorizontalGridView! getGridView();
+    method public androidx.leanback.widget.Presenter.ViewHolder! getItemViewHolder(int);
+    method public final androidx.leanback.widget.ListRowPresenter! getListRowPresenter();
     method public int getSelectedPosition();
   }
 
   public final class ListRowView extends android.widget.LinearLayout {
-    ctor public ListRowView(android.content.Context);
-    ctor public ListRowView(android.content.Context, android.util.AttributeSet);
-    ctor public ListRowView(android.content.Context, android.util.AttributeSet, int);
-    method public androidx.leanback.widget.HorizontalGridView getGridView();
+    ctor public ListRowView(android.content.Context!);
+    ctor public ListRowView(android.content.Context!, android.util.AttributeSet!);
+    ctor public ListRowView(android.content.Context!, android.util.AttributeSet!, int);
+    method public androidx.leanback.widget.HorizontalGridView! getGridView();
   }
 
-  public abstract interface MultiActionsProvider {
-    method public abstract androidx.leanback.widget.MultiActionsProvider.MultiAction[] getActions();
+  public interface MultiActionsProvider {
+    method public androidx.leanback.widget.MultiActionsProvider.MultiAction[]! getActions();
   }
 
   public static class MultiActionsProvider.MultiAction {
     ctor public MultiActionsProvider.MultiAction(long);
-    method public android.graphics.drawable.Drawable getCurrentDrawable();
-    method public android.graphics.drawable.Drawable[] getDrawables();
+    method public android.graphics.drawable.Drawable! getCurrentDrawable();
+    method public android.graphics.drawable.Drawable[]! getDrawables();
     method public long getId();
     method public int getIndex();
     method public void incrementIndex();
-    method public void setDrawables(android.graphics.drawable.Drawable[]);
+    method public void setDrawables(android.graphics.drawable.Drawable[]!);
     method public void setIndex(int);
   }
 
   public abstract class ObjectAdapter {
-    ctor public ObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public ObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public ObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public ObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public ObjectAdapter();
-    method public abstract java.lang.Object get(int);
+    method public abstract Object! get(int);
     method public long getId(int);
-    method public final androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public final androidx.leanback.widget.PresenterSelector getPresenterSelector();
+    method public final androidx.leanback.widget.Presenter! getPresenter(Object!);
+    method public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
     method public final boolean hasStableIds();
     method public boolean isImmediateNotifySupported();
     method protected final void notifyChanged();
     method protected final void notifyItemMoved(int, int);
     method public final void notifyItemRangeChanged(int, int);
-    method public final void notifyItemRangeChanged(int, int, java.lang.Object);
+    method public final void notifyItemRangeChanged(int, int, Object!);
     method protected final void notifyItemRangeInserted(int, int);
     method protected final void notifyItemRangeRemoved(int, int);
     method protected void onHasStableIdsChanged();
     method protected void onPresenterSelectorChanged();
-    method public final void registerObserver(androidx.leanback.widget.ObjectAdapter.DataObserver);
+    method public final void registerObserver(androidx.leanback.widget.ObjectAdapter.DataObserver!);
     method public final void setHasStableIds(boolean);
-    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector);
+    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
     method public abstract int size();
     method public final void unregisterAllObservers();
-    method public final void unregisterObserver(androidx.leanback.widget.ObjectAdapter.DataObserver);
+    method public final void unregisterObserver(androidx.leanback.widget.ObjectAdapter.DataObserver!);
     field public static final int NO_ID = -1; // 0xffffffff
   }
 
-  public static abstract class ObjectAdapter.DataObserver {
+  public abstract static class ObjectAdapter.DataObserver {
     ctor public ObjectAdapter.DataObserver();
     method public void onChanged();
     method public void onItemMoved(int, int);
     method public void onItemRangeChanged(int, int);
-    method public void onItemRangeChanged(int, int, java.lang.Object);
+    method public void onItemRangeChanged(int, int, Object!);
     method public void onItemRangeInserted(int, int);
     method public void onItemRangeRemoved(int, int);
   }
 
-  public abstract interface OnActionClickedListener {
-    method public abstract void onActionClicked(androidx.leanback.widget.Action);
+  public interface OnActionClickedListener {
+    method public void onActionClicked(androidx.leanback.widget.Action!);
   }
 
-  public abstract interface OnChildLaidOutListener {
-    method public abstract void onChildLaidOut(android.view.ViewGroup, android.view.View, int, long);
+  public interface OnChildLaidOutListener {
+    method public void onChildLaidOut(android.view.ViewGroup!, android.view.View!, int, long);
   }
 
-  public abstract deprecated interface OnChildSelectedListener {
-    method public abstract void onChildSelected(android.view.ViewGroup, android.view.View, int, long);
+  @Deprecated public interface OnChildSelectedListener {
+    method @Deprecated public void onChildSelected(android.view.ViewGroup!, android.view.View!, int, long);
   }
 
   public abstract class OnChildViewHolderSelectedListener {
     ctor public OnChildViewHolderSelectedListener();
-    method public void onChildViewHolderSelected(androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.ViewHolder, int, int);
-    method public void onChildViewHolderSelectedAndPositioned(androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.ViewHolder, int, int);
+    method public void onChildViewHolderSelected(androidx.recyclerview.widget.RecyclerView!, androidx.recyclerview.widget.RecyclerView.ViewHolder!, int, int);
+    method public void onChildViewHolderSelectedAndPositioned(androidx.recyclerview.widget.RecyclerView!, androidx.recyclerview.widget.RecyclerView.ViewHolder!, int, int);
   }
 
-  public abstract interface OnItemViewClickedListener implements androidx.leanback.widget.BaseOnItemViewClickedListener {
+  public interface OnItemViewClickedListener extends androidx.leanback.widget.BaseOnItemViewClickedListener<androidx.leanback.widget.Row> {
   }
 
-  public abstract interface OnItemViewSelectedListener implements androidx.leanback.widget.BaseOnItemViewSelectedListener {
+  public interface OnItemViewSelectedListener extends androidx.leanback.widget.BaseOnItemViewSelectedListener<androidx.leanback.widget.Row> {
   }
 
   public class PageRow extends androidx.leanback.widget.Row {
-    ctor public PageRow(androidx.leanback.widget.HeaderItem);
+    ctor public PageRow(androidx.leanback.widget.HeaderItem!);
     method public final boolean isRenderedAsRowView();
   }
 
   public abstract class Parallax<PropertyT extends android.util.Property> {
     ctor public Parallax();
-    method public androidx.leanback.widget.ParallaxEffect addEffect(androidx.leanback.widget.Parallax.PropertyMarkerValue...);
-    method public final PropertyT addProperty(java.lang.String);
-    method public abstract PropertyT createProperty(java.lang.String, int);
-    method public java.util.List<androidx.leanback.widget.ParallaxEffect> getEffects();
+    method public androidx.leanback.widget.ParallaxEffect! addEffect(androidx.leanback.widget.Parallax.PropertyMarkerValue...!);
+    method public final PropertyT! addProperty(String!);
+    method public abstract PropertyT! createProperty(String!, int);
+    method public java.util.List<androidx.leanback.widget.ParallaxEffect>! getEffects();
     method public abstract float getMaxValue();
-    method public final java.util.List<PropertyT> getProperties();
+    method public final java.util.List<PropertyT>! getProperties();
     method public void removeAllEffects();
-    method public void removeEffect(androidx.leanback.widget.ParallaxEffect);
-    method public void updateValues();
+    method public void removeEffect(androidx.leanback.widget.ParallaxEffect!);
+    method @CallSuper public void updateValues();
   }
 
-  public static class Parallax.FloatProperty extends android.util.Property {
-    ctor public Parallax.FloatProperty(java.lang.String, int);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue at(float, float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atAbsolute(float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atFraction(float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMax();
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMin();
-    method public final java.lang.Float get(androidx.leanback.widget.Parallax);
+  public static class Parallax.FloatProperty extends android.util.Property<androidx.leanback.widget.Parallax,java.lang.Float> {
+    ctor public Parallax.FloatProperty(String!, int);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! at(float, float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atAbsolute(float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atFraction(float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMax();
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMin();
+    method public final Float! get(androidx.leanback.widget.Parallax!);
     method public final int getIndex();
-    method public final float getValue(androidx.leanback.widget.Parallax);
-    method public final void set(androidx.leanback.widget.Parallax, java.lang.Float);
-    method public final void setValue(androidx.leanback.widget.Parallax, float);
+    method public final float getValue(androidx.leanback.widget.Parallax!);
+    method public final void set(androidx.leanback.widget.Parallax!, Float!);
+    method public final void setValue(androidx.leanback.widget.Parallax!, float);
     field public static final float UNKNOWN_AFTER = 3.4028235E38f;
     field public static final float UNKNOWN_BEFORE = -3.4028235E38f;
   }
 
-  public static class Parallax.IntProperty extends android.util.Property {
-    ctor public Parallax.IntProperty(java.lang.String, int);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue at(int, float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atAbsolute(int);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atFraction(float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMax();
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMin();
-    method public final java.lang.Integer get(androidx.leanback.widget.Parallax);
+  public static class Parallax.IntProperty extends android.util.Property<androidx.leanback.widget.Parallax,java.lang.Integer> {
+    ctor public Parallax.IntProperty(String!, int);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! at(int, float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atAbsolute(int);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atFraction(float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMax();
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMin();
+    method public final Integer! get(androidx.leanback.widget.Parallax!);
     method public final int getIndex();
-    method public final int getValue(androidx.leanback.widget.Parallax);
-    method public final void set(androidx.leanback.widget.Parallax, java.lang.Integer);
-    method public final void setValue(androidx.leanback.widget.Parallax, int);
+    method public final int getValue(androidx.leanback.widget.Parallax!);
+    method public final void set(androidx.leanback.widget.Parallax!, Integer!);
+    method public final void setValue(androidx.leanback.widget.Parallax!, int);
     field public static final int UNKNOWN_AFTER = 2147483647; // 0x7fffffff
     field public static final int UNKNOWN_BEFORE = -2147483648; // 0x80000000
   }
 
   public static class Parallax.PropertyMarkerValue<PropertyT> {
-    ctor public Parallax.PropertyMarkerValue(PropertyT);
-    method public PropertyT getProperty();
+    ctor public Parallax.PropertyMarkerValue(PropertyT!);
+    method public PropertyT! getProperty();
   }
 
   public abstract class ParallaxEffect {
-    method public final void addTarget(androidx.leanback.widget.ParallaxTarget);
-    method public final java.util.List<androidx.leanback.widget.Parallax.PropertyMarkerValue> getPropertyRanges();
-    method public final java.util.List<androidx.leanback.widget.ParallaxTarget> getTargets();
-    method public final void performMapping(androidx.leanback.widget.Parallax);
-    method public final void removeTarget(androidx.leanback.widget.ParallaxTarget);
-    method public final void setPropertyRanges(androidx.leanback.widget.Parallax.PropertyMarkerValue...);
-    method public final androidx.leanback.widget.ParallaxEffect target(androidx.leanback.widget.ParallaxTarget);
-    method public final androidx.leanback.widget.ParallaxEffect target(java.lang.Object, android.animation.PropertyValuesHolder);
-    method public final <T, V extends java.lang.Number> androidx.leanback.widget.ParallaxEffect target(T, android.util.Property<T, V>);
+    method public final void addTarget(androidx.leanback.widget.ParallaxTarget!);
+    method public final java.util.List<androidx.leanback.widget.Parallax.PropertyMarkerValue>! getPropertyRanges();
+    method public final java.util.List<androidx.leanback.widget.ParallaxTarget>! getTargets();
+    method public final void performMapping(androidx.leanback.widget.Parallax!);
+    method public final void removeTarget(androidx.leanback.widget.ParallaxTarget!);
+    method public final void setPropertyRanges(androidx.leanback.widget.Parallax.PropertyMarkerValue...!);
+    method public final androidx.leanback.widget.ParallaxEffect! target(androidx.leanback.widget.ParallaxTarget!);
+    method public final androidx.leanback.widget.ParallaxEffect! target(Object!, android.animation.PropertyValuesHolder!);
+    method public final <T, V extends java.lang.Number> androidx.leanback.widget.ParallaxEffect! target(T!, android.util.Property<T,V>!);
   }
 
   public abstract class ParallaxTarget {
     ctor public ParallaxTarget();
-    method public void directUpdate(java.lang.Number);
+    method public void directUpdate(Number!);
     method public boolean isDirectMapping();
     method public void update(float);
   }
 
-  public static final class ParallaxTarget.DirectPropertyTarget<T, V extends java.lang.Number> extends androidx.leanback.widget.ParallaxTarget {
-    ctor public ParallaxTarget.DirectPropertyTarget(java.lang.Object, android.util.Property<T, V>);
+  public static final class ParallaxTarget.DirectPropertyTarget<T extends java.lang.Object, V extends java.lang.Number> extends androidx.leanback.widget.ParallaxTarget {
+    ctor public ParallaxTarget.DirectPropertyTarget(Object!, android.util.Property<T,V>!);
   }
 
   public static final class ParallaxTarget.PropertyValuesHolderTarget extends androidx.leanback.widget.ParallaxTarget {
-    ctor public ParallaxTarget.PropertyValuesHolderTarget(java.lang.Object, android.animation.PropertyValuesHolder);
+    ctor public ParallaxTarget.PropertyValuesHolderTarget(Object!, android.animation.PropertyValuesHolder!);
   }
 
   public class PlaybackControlsRow extends androidx.leanback.widget.Row {
-    ctor public PlaybackControlsRow(java.lang.Object);
+    ctor public PlaybackControlsRow(Object!);
     ctor public PlaybackControlsRow();
-    method public androidx.leanback.widget.Action getActionForKeyCode(int);
-    method public androidx.leanback.widget.Action getActionForKeyCode(androidx.leanback.widget.ObjectAdapter, int);
+    method public androidx.leanback.widget.Action! getActionForKeyCode(int);
+    method public androidx.leanback.widget.Action! getActionForKeyCode(androidx.leanback.widget.ObjectAdapter!, int);
     method public long getBufferedPosition();
-    method public deprecated int getBufferedProgress();
-    method public deprecated long getBufferedProgressLong();
+    method @Deprecated public int getBufferedProgress();
+    method @Deprecated public long getBufferedProgressLong();
     method public long getCurrentPosition();
-    method public deprecated int getCurrentTime();
-    method public deprecated long getCurrentTimeLong();
+    method @Deprecated public int getCurrentTime();
+    method @Deprecated public long getCurrentTimeLong();
     method public long getDuration();
-    method public final android.graphics.drawable.Drawable getImageDrawable();
-    method public final java.lang.Object getItem();
-    method public final androidx.leanback.widget.ObjectAdapter getPrimaryActionsAdapter();
-    method public final androidx.leanback.widget.ObjectAdapter getSecondaryActionsAdapter();
-    method public deprecated int getTotalTime();
-    method public deprecated long getTotalTimeLong();
+    method public final android.graphics.drawable.Drawable! getImageDrawable();
+    method public final Object! getItem();
+    method public final androidx.leanback.widget.ObjectAdapter! getPrimaryActionsAdapter();
+    method public final androidx.leanback.widget.ObjectAdapter! getSecondaryActionsAdapter();
+    method @Deprecated public int getTotalTime();
+    method @Deprecated public long getTotalTimeLong();
     method public void setBufferedPosition(long);
-    method public deprecated void setBufferedProgress(int);
-    method public deprecated void setBufferedProgressLong(long);
+    method @Deprecated public void setBufferedProgress(int);
+    method @Deprecated public void setBufferedProgressLong(long);
     method public void setCurrentPosition(long);
-    method public deprecated void setCurrentTime(int);
-    method public deprecated void setCurrentTimeLong(long);
+    method @Deprecated public void setCurrentTime(int);
+    method @Deprecated public void setCurrentTimeLong(long);
     method public void setDuration(long);
-    method public final void setImageBitmap(android.content.Context, android.graphics.Bitmap);
-    method public final void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setOnPlaybackProgressChangedListener(androidx.leanback.widget.PlaybackControlsRow.OnPlaybackProgressCallback);
-    method public final void setPrimaryActionsAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public final void setSecondaryActionsAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public deprecated void setTotalTime(int);
-    method public deprecated void setTotalTimeLong(long);
+    method public final void setImageBitmap(android.content.Context!, android.graphics.Bitmap!);
+    method public final void setImageDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnPlaybackProgressChangedListener(androidx.leanback.widget.PlaybackControlsRow.OnPlaybackProgressCallback!);
+    method public final void setPrimaryActionsAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public final void setSecondaryActionsAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setTotalTime(int);
+    method @Deprecated public void setTotalTimeLong(long);
   }
 
   public static class PlaybackControlsRow.ClosedCaptioningAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context);
-    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context!);
+    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context!, int);
     field public static final int INDEX_OFF = 0; // 0x0
     field public static final int INDEX_ON = 1; // 0x1
-    field public static final deprecated int OFF = 0; // 0x0
-    field public static final deprecated int ON = 1; // 0x1
+    field @Deprecated public static final int OFF = 0; // 0x0
+    field @Deprecated public static final int ON = 1; // 0x1
   }
 
   public static class PlaybackControlsRow.FastForwardAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context);
-    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context!);
+    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context!, int);
   }
 
   public static class PlaybackControlsRow.HighQualityAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context);
-    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context!);
+    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context!, int);
     field public static final int INDEX_OFF = 0; // 0x0
     field public static final int INDEX_ON = 1; // 0x1
-    field public static final deprecated int OFF = 0; // 0x0
-    field public static final deprecated int ON = 1; // 0x1
+    field @Deprecated public static final int OFF = 0; // 0x0
+    field @Deprecated public static final int ON = 1; // 0x1
   }
 
   public static class PlaybackControlsRow.MoreActions extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.MoreActions(android.content.Context);
+    ctor public PlaybackControlsRow.MoreActions(android.content.Context!);
   }
 
-  public static abstract class PlaybackControlsRow.MultiAction extends androidx.leanback.widget.Action {
+  public abstract static class PlaybackControlsRow.MultiAction extends androidx.leanback.widget.Action {
     ctor public PlaybackControlsRow.MultiAction(int);
     method public int getActionCount();
-    method public android.graphics.drawable.Drawable getDrawable(int);
+    method public android.graphics.drawable.Drawable! getDrawable(int);
     method public int getIndex();
-    method public java.lang.String getLabel(int);
-    method public java.lang.String getSecondaryLabel(int);
+    method public String! getLabel(int);
+    method public String! getSecondaryLabel(int);
     method public void nextIndex();
-    method public void setDrawables(android.graphics.drawable.Drawable[]);
+    method public void setDrawables(android.graphics.drawable.Drawable[]!);
     method public void setIndex(int);
-    method public void setLabels(java.lang.String[]);
-    method public void setSecondaryLabels(java.lang.String[]);
+    method public void setLabels(String[]!);
+    method public void setSecondaryLabels(String[]!);
   }
 
   public static class PlaybackControlsRow.OnPlaybackProgressCallback {
     ctor public PlaybackControlsRow.OnPlaybackProgressCallback();
-    method public void onBufferedPositionChanged(androidx.leanback.widget.PlaybackControlsRow, long);
-    method public void onCurrentPositionChanged(androidx.leanback.widget.PlaybackControlsRow, long);
-    method public void onDurationChanged(androidx.leanback.widget.PlaybackControlsRow, long);
+    method public void onBufferedPositionChanged(androidx.leanback.widget.PlaybackControlsRow!, long);
+    method public void onCurrentPositionChanged(androidx.leanback.widget.PlaybackControlsRow!, long);
+    method public void onDurationChanged(androidx.leanback.widget.PlaybackControlsRow!, long);
   }
 
   public static class PlaybackControlsRow.PictureInPictureAction extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.PictureInPictureAction(android.content.Context);
+    ctor public PlaybackControlsRow.PictureInPictureAction(android.content.Context!);
   }
 
   public static class PlaybackControlsRow.PlayPauseAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.PlayPauseAction(android.content.Context);
+    ctor public PlaybackControlsRow.PlayPauseAction(android.content.Context!);
     field public static final int INDEX_PAUSE = 1; // 0x1
     field public static final int INDEX_PLAY = 0; // 0x0
-    field public static final deprecated int PAUSE = 1; // 0x1
-    field public static final deprecated int PLAY = 0; // 0x0
+    field @Deprecated public static final int PAUSE = 1; // 0x1
+    field @Deprecated public static final int PLAY = 0; // 0x0
   }
 
   public static class PlaybackControlsRow.RepeatAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context);
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context, int);
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context, int, int);
-    field public static final deprecated int ALL = 1; // 0x1
+    ctor public PlaybackControlsRow.RepeatAction(android.content.Context!);
+    ctor public PlaybackControlsRow.RepeatAction(android.content.Context!, int);
+    ctor public PlaybackControlsRow.RepeatAction(android.content.Context!, int, int);
+    field @Deprecated public static final int ALL = 1; // 0x1
     field public static final int INDEX_ALL = 1; // 0x1
     field public static final int INDEX_NONE = 0; // 0x0
     field public static final int INDEX_ONE = 2; // 0x2
-    field public static final deprecated int NONE = 0; // 0x0
-    field public static final deprecated int  // 0x2
+    field @Deprecated public static final int NONE = 0; // 0x0
+    field @Deprecated public static final int  // 0x2
   }
 
   public static class PlaybackControlsRow.RewindAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.RewindAction(android.content.Context);
-    ctor public PlaybackControlsRow.RewindAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.RewindAction(android.content.Context!);
+    ctor public PlaybackControlsRow.RewindAction(android.content.Context!, int);
   }
 
   public static class PlaybackControlsRow.ShuffleAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context);
-    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context!);
+    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context!, int);
     field public static final int INDEX_OFF = 0; // 0x0
     field public static final int INDEX_ON = 1; // 0x1
-    field public static final deprecated int OFF = 0; // 0x0
-    field public static final deprecated int ON = 1; // 0x1
+    field @Deprecated public static final int OFF = 0; // 0x0
+    field @Deprecated public static final int ON = 1; // 0x1
   }
 
   public static class PlaybackControlsRow.SkipNextAction extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.SkipNextAction(android.content.Context);
+    ctor public PlaybackControlsRow.SkipNextAction(android.content.Context!);
   }
 
   public static class PlaybackControlsRow.SkipPreviousAction extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.SkipPreviousAction(android.content.Context);
+    ctor public PlaybackControlsRow.SkipPreviousAction(android.content.Context!);
   }
 
-  public static abstract class PlaybackControlsRow.ThumbsAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ThumbsAction(int, android.content.Context, int, int);
+  public abstract static class PlaybackControlsRow.ThumbsAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
+    ctor public PlaybackControlsRow.ThumbsAction(int, android.content.Context!, int, int);
     field public static final int INDEX_OUTLINE = 1; // 0x1
     field public static final int INDEX_SOLID = 0; // 0x0
-    field public static final deprecated int OUTLINE = 1; // 0x1
-    field public static final deprecated int SOLID = 0; // 0x0
+    field @Deprecated public static final int OUTLINE = 1; // 0x1
+    field @Deprecated public static final int SOLID = 0; // 0x0
   }
 
   public static class PlaybackControlsRow.ThumbsDownAction extends androidx.leanback.widget.PlaybackControlsRow.ThumbsAction {
-    ctor public PlaybackControlsRow.ThumbsDownAction(android.content.Context);
+    ctor public PlaybackControlsRow.ThumbsDownAction(android.content.Context!);
   }
 
   public static class PlaybackControlsRow.ThumbsUpAction extends androidx.leanback.widget.PlaybackControlsRow.ThumbsAction {
-    ctor public PlaybackControlsRow.ThumbsUpAction(android.content.Context);
+    ctor public PlaybackControlsRow.ThumbsUpAction(android.content.Context!);
   }
 
   public class PlaybackControlsRowPresenter extends androidx.leanback.widget.PlaybackRowPresenter {
-    ctor public PlaybackControlsRowPresenter(androidx.leanback.widget.Presenter);
+    ctor public PlaybackControlsRowPresenter(androidx.leanback.widget.Presenter!);
     ctor public PlaybackControlsRowPresenter();
     method public boolean areSecondaryActionsHidden();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public int getBackgroundColor();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public int getProgressColor();
-    method public void setBackgroundColor(int);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public void setProgressColor(int);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method @ColorInt public int getBackgroundColor();
+    method public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
+    method @ColorInt public int getProgressColor();
+    method public void setBackgroundColor(@ColorInt int);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method public void setProgressColor(@ColorInt int);
     method public void setSecondaryActionsHidden(boolean);
-    method public void showBottomSpace(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder, boolean);
-    method public void showPrimaryActions(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder);
+    method public void showBottomSpace(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder!, boolean);
+    method public void showPrimaryActions(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder!);
   }
 
   public class PlaybackControlsRowPresenter.ViewHolder extends androidx.leanback.widget.PlaybackRowPresenter.ViewHolder {
-    field public final androidx.leanback.widget.Presenter.ViewHolder mDescriptionViewHolder;
+    field public final androidx.leanback.widget.Presenter.ViewHolder! mDescriptionViewHolder;
   }
 
   public abstract class PlaybackRowPresenter extends androidx.leanback.widget.RowPresenter {
     ctor public PlaybackRowPresenter();
-    method public void onReappear(androidx.leanback.widget.RowPresenter.ViewHolder);
+    method public void onReappear(androidx.leanback.widget.RowPresenter.ViewHolder!);
   }
 
   public static class PlaybackRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public PlaybackRowPresenter.ViewHolder(android.view.View);
+    ctor public PlaybackRowPresenter.ViewHolder(android.view.View!);
   }
 
   public class PlaybackSeekDataProvider {
     ctor public PlaybackSeekDataProvider();
-    method public long[] getSeekPositions();
-    method public void getThumbnail(int, androidx.leanback.widget.PlaybackSeekDataProvider.ResultCallback);
+    method public long[]! getSeekPositions();
+    method public void getThumbnail(int, androidx.leanback.widget.PlaybackSeekDataProvider.ResultCallback!);
     method public void reset();
   }
 
   public static class PlaybackSeekDataProvider.ResultCallback {
     ctor public PlaybackSeekDataProvider.ResultCallback();
-    method public void onThumbnailLoaded(android.graphics.Bitmap, int);
+    method public void onThumbnailLoaded(android.graphics.Bitmap!, int);
   }
 
-  public abstract interface PlaybackSeekUi {
-    method public abstract void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+  public interface PlaybackSeekUi {
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
   }
 
   public static class PlaybackSeekUi.Client {
     ctor public PlaybackSeekUi.Client();
-    method public androidx.leanback.widget.PlaybackSeekDataProvider getPlaybackSeekDataProvider();
+    method public androidx.leanback.widget.PlaybackSeekDataProvider! getPlaybackSeekDataProvider();
     method public boolean isSeekEnabled();
     method public void onSeekFinished(boolean);
     method public void onSeekPositionChanged(long);
@@ -2605,158 +2711,158 @@
 
   public class PlaybackTransportRowPresenter extends androidx.leanback.widget.PlaybackRowPresenter {
     ctor public PlaybackTransportRowPresenter();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
     method public float getDefaultSeekIncrement();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public int getProgressColor();
-    method public int getSecondaryProgressColor();
-    method protected void onProgressBarClicked(androidx.leanback.widget.PlaybackTransportRowPresenter.ViewHolder);
+    method public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
+    method @ColorInt public int getProgressColor();
+    method @ColorInt public int getSecondaryProgressColor();
+    method protected void onProgressBarClicked(androidx.leanback.widget.PlaybackTransportRowPresenter.ViewHolder!);
     method public void setDefaultSeekIncrement(float);
-    method public void setDescriptionPresenter(androidx.leanback.widget.Presenter);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public void setProgressColor(int);
-    method public void setSecondaryProgressColor(int);
+    method public void setDescriptionPresenter(androidx.leanback.widget.Presenter!);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method public void setProgressColor(@ColorInt int);
+    method public void setSecondaryProgressColor(@ColorInt int);
   }
 
   public class PlaybackTransportRowPresenter.ViewHolder extends androidx.leanback.widget.PlaybackRowPresenter.ViewHolder implements androidx.leanback.widget.PlaybackSeekUi {
-    ctor public PlaybackTransportRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.Presenter);
-    method public final android.widget.TextView getCurrentPositionView();
-    method public final androidx.leanback.widget.Presenter.ViewHolder getDescriptionViewHolder();
-    method public final android.widget.TextView getDurationView();
+    ctor public PlaybackTransportRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.Presenter!);
+    method public final android.widget.TextView! getCurrentPositionView();
+    method public final androidx.leanback.widget.Presenter.ViewHolder! getDescriptionViewHolder();
+    method public final android.widget.TextView! getDurationView();
     method protected void onSetCurrentPositionLabel(long);
     method protected void onSetDurationLabel(long);
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
   }
 
   public abstract class Presenter implements androidx.leanback.widget.FacetProvider {
     ctor public Presenter();
-    method protected static void cancelAnimationsRecursive(android.view.View);
-    method public final java.lang.Object getFacet(java.lang.Class<?>);
-    method public abstract void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object, java.util.List<java.lang.Object>);
-    method public abstract androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public abstract void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public final void setFacet(java.lang.Class<?>, java.lang.Object);
-    method public void setOnClickListener(androidx.leanback.widget.Presenter.ViewHolder, android.view.View.OnClickListener);
+    method protected static void cancelAnimationsRecursive(android.view.View!);
+    method public final Object! getFacet(Class<?>!);
+    method public abstract void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!, java.util.List<java.lang.Object>!);
+    method public abstract androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public abstract void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public final void setFacet(Class<?>!, Object!);
+    method public void setOnClickListener(androidx.leanback.widget.Presenter.ViewHolder!, android.view.View.OnClickListener!);
   }
 
   public static class Presenter.ViewHolder implements androidx.leanback.widget.FacetProvider {
-    ctor public Presenter.ViewHolder(android.view.View);
-    method public final java.lang.Object getFacet(java.lang.Class<?>);
-    method public final void setFacet(java.lang.Class<?>, java.lang.Object);
-    field public final android.view.View view;
+    ctor public Presenter.ViewHolder(android.view.View!);
+    method public final Object! getFacet(Class<?>!);
+    method public final void setFacet(Class<?>!, Object!);
+    field public final android.view.View! view;
   }
 
-  public static abstract class Presenter.ViewHolderTask {
+  public abstract static class Presenter.ViewHolderTask {
     ctor public Presenter.ViewHolderTask();
-    method public void run(androidx.leanback.widget.Presenter.ViewHolder);
+    method public void run(androidx.leanback.widget.Presenter.ViewHolder!);
   }
 
   public abstract class PresenterSelector {
     ctor public PresenterSelector();
-    method public abstract androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public androidx.leanback.widget.Presenter[] getPresenters();
+    method public abstract androidx.leanback.widget.Presenter! getPresenter(Object!);
+    method public androidx.leanback.widget.Presenter[]! getPresenters();
   }
 
   public abstract class PresenterSwitcher {
     ctor public PresenterSwitcher();
     method public void clear();
-    method public final android.view.ViewGroup getParentViewGroup();
-    method public void init(android.view.ViewGroup, androidx.leanback.widget.PresenterSelector);
-    method protected abstract void insertView(android.view.View);
-    method protected void onViewSelected(android.view.View);
-    method public void select(java.lang.Object);
-    method protected void showView(android.view.View, boolean);
+    method public final android.view.ViewGroup! getParentViewGroup();
+    method public void init(android.view.ViewGroup!, androidx.leanback.widget.PresenterSelector!);
+    method protected abstract void insertView(android.view.View!);
+    method protected void onViewSelected(android.view.View!);
+    method public void select(Object!);
+    method protected void showView(android.view.View!, boolean);
     method public void unselect();
   }
 
-  public class RecyclerViewParallax extends androidx.leanback.widget.Parallax {
+  public class RecyclerViewParallax extends androidx.leanback.widget.Parallax<androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty> {
     ctor public RecyclerViewParallax();
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty createProperty(java.lang.String, int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! createProperty(String!, int);
     method public float getMaxValue();
-    method public androidx.recyclerview.widget.RecyclerView getRecyclerView();
-    method public void setRecyclerView(androidx.recyclerview.widget.RecyclerView);
+    method public androidx.recyclerview.widget.RecyclerView! getRecyclerView();
+    method public void setRecyclerView(androidx.recyclerview.widget.RecyclerView!);
   }
 
   public static final class RecyclerViewParallax.ChildPositionProperty extends androidx.leanback.widget.Parallax.IntProperty {
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty adapterPosition(int);
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty fraction(float);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! adapterPosition(int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! fraction(float);
     method public int getAdapterPosition();
     method public float getFraction();
     method public int getOffset();
     method public int getViewId();
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty offset(int);
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty viewId(int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! offset(int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! viewId(int);
   }
 
   public class Row {
-    ctor public Row(long, androidx.leanback.widget.HeaderItem);
-    ctor public Row(androidx.leanback.widget.HeaderItem);
+    ctor public Row(long, androidx.leanback.widget.HeaderItem!);
+    ctor public Row(androidx.leanback.widget.HeaderItem!);
     ctor public Row();
-    method public final androidx.leanback.widget.HeaderItem getHeaderItem();
+    method public final androidx.leanback.widget.HeaderItem! getHeaderItem();
     method public final long getId();
     method public boolean isRenderedAsRowView();
-    method public final void setHeaderItem(androidx.leanback.widget.HeaderItem);
+    method public final void setHeaderItem(androidx.leanback.widget.HeaderItem!);
     method public final void setId(long);
   }
 
   public class RowHeaderPresenter extends androidx.leanback.widget.Presenter {
     ctor public RowHeaderPresenter();
-    method protected static float getFontDescent(android.widget.TextView, android.graphics.Paint);
-    method public int getSpaceUnderBaseline(androidx.leanback.widget.RowHeaderPresenter.ViewHolder);
+    method protected static float getFontDescent(android.widget.TextView!, android.graphics.Paint!);
+    method public int getSpaceUnderBaseline(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!);
     method public boolean isNullItemVisibilityGone();
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method protected void onSelectLevelChanged(androidx.leanback.widget.RowHeaderPresenter.ViewHolder);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method protected void onSelectLevelChanged(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
     method public void setNullItemVisibilityGone(boolean);
-    method public final void setSelectLevel(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, float);
+    method public final void setSelectLevel(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, float);
   }
 
   public static class RowHeaderPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public RowHeaderPresenter.ViewHolder(android.view.View);
+    ctor public RowHeaderPresenter.ViewHolder(android.view.View!);
     method public final float getSelectLevel();
   }
 
   public final class RowHeaderView extends android.widget.TextView {
-    ctor public RowHeaderView(android.content.Context);
-    ctor public RowHeaderView(android.content.Context, android.util.AttributeSet);
-    ctor public RowHeaderView(android.content.Context, android.util.AttributeSet, int);
+    ctor public RowHeaderView(android.content.Context!);
+    ctor public RowHeaderView(android.content.Context!, android.util.AttributeSet!);
+    ctor public RowHeaderView(android.content.Context!, android.util.AttributeSet!, int);
   }
 
   public abstract class RowPresenter extends androidx.leanback.widget.Presenter {
     ctor public RowPresenter();
-    method protected abstract androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected void dispatchItemSelectedListener(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public void freeze(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public final androidx.leanback.widget.RowHeaderPresenter getHeaderPresenter();
-    method public final androidx.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method protected abstract androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method protected void dispatchItemSelectedListener(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method public void freeze(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method public final androidx.leanback.widget.RowHeaderPresenter! getHeaderPresenter();
+    method public final androidx.leanback.widget.RowPresenter.ViewHolder! getRowViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
     method public final boolean getSelectEffectEnabled();
-    method public final float getSelectLevel(androidx.leanback.widget.Presenter.ViewHolder);
+    method public final float getSelectLevel(androidx.leanback.widget.Presenter.ViewHolder!);
     method public final int getSyncActivatePolicy();
-    method protected void initializeRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder);
+    method protected void initializeRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!);
     method protected boolean isClippingChildren();
     method public boolean isUsingDefaultSelectEffect();
-    method protected void onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder, java.lang.Object);
-    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method protected void onRowViewAttachedToWindow(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onRowViewDetachedFromWindow(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onRowViewExpanded(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method protected void onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method protected void onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method public final void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public final void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public final void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void setEntranceTransitionState(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public final void setHeaderPresenter(androidx.leanback.widget.RowHeaderPresenter);
-    method public final void setRowViewExpanded(androidx.leanback.widget.Presenter.ViewHolder, boolean);
-    method public final void setRowViewSelected(androidx.leanback.widget.Presenter.ViewHolder, boolean);
+    method protected void onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!, Object!);
+    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public final androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method protected void onRowViewAttachedToWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method protected void onRowViewDetachedFromWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method protected void onRowViewExpanded(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method protected void onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method protected void onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method protected void onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method public final void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public final void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public final void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void setEntranceTransitionState(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method public final void setHeaderPresenter(androidx.leanback.widget.RowHeaderPresenter!);
+    method public final void setRowViewExpanded(androidx.leanback.widget.Presenter.ViewHolder!, boolean);
+    method public final void setRowViewSelected(androidx.leanback.widget.Presenter.ViewHolder!, boolean);
     method public final void setSelectEffectEnabled(boolean);
-    method public final void setSelectLevel(androidx.leanback.widget.Presenter.ViewHolder, float);
+    method public final void setSelectLevel(androidx.leanback.widget.Presenter.ViewHolder!, float);
     method public final void setSyncActivatePolicy(int);
     field public static final int SYNC_ACTIVATED_CUSTOM = 0; // 0x0
     field public static final int SYNC_ACTIVATED_TO_EXPANDED = 1; // 0x1
@@ -2765,137 +2871,142 @@
   }
 
   public static class RowPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public RowPresenter.ViewHolder(android.view.View);
-    method public final androidx.leanback.widget.RowHeaderPresenter.ViewHolder getHeaderViewHolder();
-    method public final androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public final androidx.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public android.view.View.OnKeyListener getOnKeyListener();
-    method public final androidx.leanback.widget.Row getRow();
-    method public final java.lang.Object getRowObject();
+    ctor public RowPresenter.ViewHolder(android.view.View!);
+    method public final androidx.leanback.widget.RowHeaderPresenter.ViewHolder! getHeaderViewHolder();
+    method public final androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method public final androidx.leanback.widget.BaseOnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method public android.view.View.OnKeyListener! getOnKeyListener();
+    method public final androidx.leanback.widget.Row! getRow();
+    method public final Object! getRowObject();
     method public final float getSelectLevel();
-    method public java.lang.Object getSelectedItem();
-    method public androidx.leanback.widget.Presenter.ViewHolder getSelectedItemViewHolder();
+    method public Object! getSelectedItem();
+    method public androidx.leanback.widget.Presenter.ViewHolder! getSelectedItemViewHolder();
     method public final boolean isExpanded();
     method public final boolean isSelected();
     method public final void setActivated(boolean);
-    method public final void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setOnKeyListener(android.view.View.OnKeyListener);
-    method public final void syncActivatedStatus(android.view.View);
-    field protected final androidx.leanback.graphics.ColorOverlayDimmer mColorDimmer;
+    method public final void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method public void setOnKeyListener(android.view.View.OnKeyListener!);
+    method public final void syncActivatedStatus(android.view.View!);
+    field protected final androidx.leanback.graphics.ColorOverlayDimmer! mColorDimmer;
   }
 
   public class SearchBar extends android.widget.RelativeLayout {
-    ctor public SearchBar(android.content.Context);
-    ctor public SearchBar(android.content.Context, android.util.AttributeSet);
-    ctor public SearchBar(android.content.Context, android.util.AttributeSet, int);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public java.lang.CharSequence getHint();
-    method public java.lang.String getTitle();
+    ctor public SearchBar(android.content.Context!);
+    ctor public SearchBar(android.content.Context!, android.util.AttributeSet!);
+    ctor public SearchBar(android.content.Context!, android.util.AttributeSet!, int);
+    method public void displayCompletions(java.util.List<java.lang.String>!);
+    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]!);
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public CharSequence! getHint();
+    method public String! getTitle();
     method public boolean isRecognizing();
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setPermissionListener(androidx.leanback.widget.SearchBar.SearchBarPermissionListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchBarListener(androidx.leanback.widget.SearchBar.SearchBarListener);
-    method public void setSearchQuery(java.lang.String);
-    method public deprecated void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback);
-    method public void setSpeechRecognizer(android.speech.SpeechRecognizer);
-    method public void setTitle(java.lang.String);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setPermissionListener(androidx.leanback.widget.SearchBar.SearchBarPermissionListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchBarListener(androidx.leanback.widget.SearchBar.SearchBarListener!);
+    method public void setSearchQuery(String!);
+    method @Deprecated public void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback!);
+    method public void setSpeechRecognizer(android.speech.SpeechRecognizer!);
+    method public void setTitle(String!);
     method public void startRecognition();
     method public void stopRecognition();
   }
 
-  public static abstract interface SearchBar.SearchBarListener {
-    method public abstract void onKeyboardDismiss(java.lang.String);
-    method public abstract void onSearchQueryChange(java.lang.String);
-    method public abstract void onSearchQuerySubmit(java.lang.String);
+  public static interface SearchBar.SearchBarListener {
+    method public void onKeyboardDismiss(String!);
+    method public void onSearchQueryChange(String!);
+    method public void onSearchQuerySubmit(String!);
   }
 
-  public static abstract interface SearchBar.SearchBarPermissionListener {
-    method public abstract void requestAudioPermission();
+  public static interface SearchBar.SearchBarPermissionListener {
+    method public void requestAudioPermission();
   }
 
   public class SearchEditText extends android.widget.EditText {
-    ctor public SearchEditText(android.content.Context);
-    ctor public SearchEditText(android.content.Context, android.util.AttributeSet);
-    ctor public SearchEditText(android.content.Context, android.util.AttributeSet, int);
-    method public void setOnKeyboardDismissListener(androidx.leanback.widget.SearchEditText.OnKeyboardDismissListener);
+    ctor public SearchEditText(android.content.Context!);
+    ctor public SearchEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public SearchEditText(android.content.Context!, android.util.AttributeSet!, int);
+    method public static boolean isLayoutRtl(android.view.View!);
+    method public void reset();
+    method public void setFinalRecognizedText(CharSequence!);
+    method public void setOnKeyboardDismissListener(androidx.leanback.widget.SearchEditText.OnKeyboardDismissListener!);
+    method public void updateRecognizedText(String!, String!);
+    method public void updateRecognizedText(String!, java.util.List<java.lang.Float>!);
   }
 
-  public static abstract interface SearchEditText.OnKeyboardDismissListener {
-    method public abstract void onKeyboardDismiss();
+  public static interface SearchEditText.OnKeyboardDismissListener {
+    method public void onKeyboardDismiss();
   }
 
   public class SearchOrbView extends android.widget.FrameLayout implements android.view.View.OnClickListener {
-    ctor public SearchOrbView(android.content.Context);
-    ctor public SearchOrbView(android.content.Context, android.util.AttributeSet);
-    ctor public SearchOrbView(android.content.Context, android.util.AttributeSet, int);
+    ctor public SearchOrbView(android.content.Context!);
+    ctor public SearchOrbView(android.content.Context!, android.util.AttributeSet!);
+    ctor public SearchOrbView(android.content.Context!, android.util.AttributeSet!, int);
     method public void enableOrbColorAnimation(boolean);
-    method public int getOrbColor();
-    method public androidx.leanback.widget.SearchOrbView.Colors getOrbColors();
-    method public android.graphics.drawable.Drawable getOrbIcon();
-    method public void onClick(android.view.View);
-    method public void setOnOrbClickedListener(android.view.View.OnClickListener);
+    method @ColorInt public int getOrbColor();
+    method public androidx.leanback.widget.SearchOrbView.Colors! getOrbColors();
+    method public android.graphics.drawable.Drawable! getOrbIcon();
+    method public void onClick(android.view.View!);
+    method public void setOnOrbClickedListener(android.view.View.OnClickListener!);
     method public void setOrbColor(int);
-    method public deprecated void setOrbColor(int, int);
-    method public void setOrbColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setOrbIcon(android.graphics.drawable.Drawable);
+    method @Deprecated public void setOrbColor(@ColorInt int, @ColorInt int);
+    method public void setOrbColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setOrbIcon(android.graphics.drawable.Drawable!);
   }
 
   public static class SearchOrbView.Colors {
-    ctor public SearchOrbView.Colors(int);
-    ctor public SearchOrbView.Colors(int, int);
-    ctor public SearchOrbView.Colors(int, int, int);
+    ctor public SearchOrbView.Colors(@ColorInt int);
+    ctor public SearchOrbView.Colors(@ColorInt int, @ColorInt int);
+    ctor public SearchOrbView.Colors(@ColorInt int, @ColorInt int, @ColorInt int);
     method public static int getBrightColor(int);
-    field public int brightColor;
-    field public int color;
-    field public int iconColor;
+    field @ColorInt public int brightColor;
+    field @ColorInt public int color;
+    field @ColorInt public int iconColor;
   }
 
   public class SectionRow extends androidx.leanback.widget.Row {
-    ctor public SectionRow(androidx.leanback.widget.HeaderItem);
-    ctor public SectionRow(long, java.lang.String);
-    ctor public SectionRow(java.lang.String);
+    ctor public SectionRow(androidx.leanback.widget.HeaderItem!);
+    ctor public SectionRow(long, String!);
+    ctor public SectionRow(String!);
     method public final boolean isRenderedAsRowView();
   }
 
   public class ShadowOverlayContainer extends android.widget.FrameLayout {
-    ctor public ShadowOverlayContainer(android.content.Context);
-    ctor public ShadowOverlayContainer(android.content.Context, android.util.AttributeSet);
-    ctor public ShadowOverlayContainer(android.content.Context, android.util.AttributeSet, int);
+    ctor public ShadowOverlayContainer(android.content.Context!);
+    ctor public ShadowOverlayContainer(android.content.Context!, android.util.AttributeSet!);
+    ctor public ShadowOverlayContainer(android.content.Context!, android.util.AttributeSet!, int);
     method public int getShadowType();
-    method public android.view.View getWrappedView();
-    method public deprecated void initialize(boolean, boolean);
-    method public deprecated void initialize(boolean, boolean, boolean);
-    method public static void prepareParentForShadow(android.view.ViewGroup);
-    method public void setOverlayColor(int);
+    method public android.view.View! getWrappedView();
+    method @Deprecated public void initialize(boolean, boolean);
+    method @Deprecated public void initialize(boolean, boolean, boolean);
+    method public static void prepareParentForShadow(android.view.ViewGroup!);
+    method public void setOverlayColor(@ColorInt int);
     method public void setShadowFocusLevel(float);
     method public static boolean supportsDynamicShadow();
     method public static boolean supportsShadow();
     method public void useDynamicShadow();
     method public void useDynamicShadow(float, float);
     method public void useStaticShadow();
-    method public void wrap(android.view.View);
+    method public void wrap(android.view.View!);
     field public static final int SHADOW_DYNAMIC = 3; // 0x3
     field public static final int SHADOW_NONE = 1; // 0x1
     field public static final int SHADOW_STATIC = 2; // 0x2
   }
 
   public final class ShadowOverlayHelper {
-    method public androidx.leanback.widget.ShadowOverlayContainer createShadowOverlayContainer(android.content.Context);
+    method public androidx.leanback.widget.ShadowOverlayContainer! createShadowOverlayContainer(android.content.Context!);
     method public int getShadowType();
     method public boolean needsOverlay();
     method public boolean needsRoundedCorner();
     method public boolean needsWrapper();
-    method public void onViewCreated(android.view.View);
-    method public void prepareParentForShadow(android.view.ViewGroup);
-    method public static void setNoneWrapperOverlayColor(android.view.View, int);
-    method public static void setNoneWrapperShadowFocusLevel(android.view.View, float);
-    method public void setOverlayColor(android.view.View, int);
-    method public void setShadowFocusLevel(android.view.View, float);
+    method public void onViewCreated(android.view.View!);
+    method public void prepareParentForShadow(android.view.ViewGroup!);
+    method public static void setNoneWrapperOverlayColor(android.view.View!, int);
+    method public static void setNoneWrapperShadowFocusLevel(android.view.View!, float);
+    method public void setOverlayColor(android.view.View!, int);
+    method public void setShadowFocusLevel(android.view.View!, float);
     method public static boolean supportsDynamicShadow();
     method public static boolean supportsForeground();
     method public static boolean supportsRoundedCorner();
@@ -2907,104 +3018,104 @@
 
   public static final class ShadowOverlayHelper.Builder {
     ctor public ShadowOverlayHelper.Builder();
-    method public androidx.leanback.widget.ShadowOverlayHelper build(android.content.Context);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder keepForegroundDrawable(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder needsOverlay(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder needsRoundedCorner(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder needsShadow(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder options(androidx.leanback.widget.ShadowOverlayHelper.Options);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder preferZOrder(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper! build(android.content.Context!);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! keepForegroundDrawable(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! needsOverlay(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! needsRoundedCorner(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! needsShadow(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! options(androidx.leanback.widget.ShadowOverlayHelper.Options!);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! preferZOrder(boolean);
   }
 
   public static final class ShadowOverlayHelper.Options {
     ctor public ShadowOverlayHelper.Options();
-    method public androidx.leanback.widget.ShadowOverlayHelper.Options dynamicShadowZ(float, float);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Options! dynamicShadowZ(float, float);
     method public float getDynamicShadowFocusedZ();
     method public float getDynamicShadowUnfocusedZ();
     method public int getRoundedCornerRadius();
-    method public androidx.leanback.widget.ShadowOverlayHelper.Options roundedCornerRadius(int);
-    field public static final androidx.leanback.widget.ShadowOverlayHelper.Options DEFAULT;
+    method public androidx.leanback.widget.ShadowOverlayHelper.Options! roundedCornerRadius(int);
+    field public static final androidx.leanback.widget.ShadowOverlayHelper.Options! DEFAULT;
   }
 
   public final class SinglePresenterSelector extends androidx.leanback.widget.PresenterSelector {
-    ctor public SinglePresenterSelector(androidx.leanback.widget.Presenter);
-    method public androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
+    ctor public SinglePresenterSelector(androidx.leanback.widget.Presenter!);
+    method public androidx.leanback.widget.Presenter! getPresenter(Object!);
   }
 
   public class SparseArrayObjectAdapter extends androidx.leanback.widget.ObjectAdapter {
-    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public SparseArrayObjectAdapter();
     method public void clear(int);
     method public void clear();
-    method public java.lang.Object get(int);
-    method public int indexOf(java.lang.Object);
+    method public Object! get(int);
+    method public int indexOf(Object!);
     method public int indexOf(int);
-    method public java.lang.Object lookup(int);
+    method public Object! lookup(int);
     method public void notifyArrayItemRangeChanged(int, int);
-    method public void set(int, java.lang.Object);
+    method public void set(int, Object!);
     method public int size();
   }
 
   public class SpeechOrbView extends androidx.leanback.widget.SearchOrbView {
-    ctor public SpeechOrbView(android.content.Context);
-    ctor public SpeechOrbView(android.content.Context, android.util.AttributeSet);
-    ctor public SpeechOrbView(android.content.Context, android.util.AttributeSet, int);
-    method public void setListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setNotListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors);
+    ctor public SpeechOrbView(android.content.Context!);
+    ctor public SpeechOrbView(android.content.Context!, android.util.AttributeSet!);
+    ctor public SpeechOrbView(android.content.Context!, android.util.AttributeSet!, int);
+    method public void setListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setNotListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors!);
     method public void setSoundLevel(int);
     method public void showListening();
     method public void showNotListening();
   }
 
-  public abstract deprecated interface SpeechRecognitionCallback {
-    method public abstract void recognizeSpeech();
+  @Deprecated public interface SpeechRecognitionCallback {
+    method @Deprecated public void recognizeSpeech();
   }
 
   public class TitleHelper {
-    ctor public TitleHelper(android.view.ViewGroup, android.view.View);
-    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener getOnFocusSearchListener();
-    method public android.view.ViewGroup getSceneRoot();
-    method public android.view.View getTitleView();
+    ctor public TitleHelper(android.view.ViewGroup!, android.view.View!);
+    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener! getOnFocusSearchListener();
+    method public android.view.ViewGroup! getSceneRoot();
+    method public android.view.View! getTitleView();
     method public void showTitle(boolean);
   }
 
   public class TitleView extends android.widget.FrameLayout implements androidx.leanback.widget.TitleViewAdapter.Provider {
-    ctor public TitleView(android.content.Context);
-    ctor public TitleView(android.content.Context, android.util.AttributeSet);
-    ctor public TitleView(android.content.Context, android.util.AttributeSet, int);
+    ctor public TitleView(android.content.Context!);
+    ctor public TitleView(android.content.Context!, android.util.AttributeSet!);
+    ctor public TitleView(android.content.Context!, android.util.AttributeSet!, int);
     method public void enableAnimation(boolean);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public android.view.View getSearchAffordanceView();
-    method public java.lang.CharSequence getTitle();
-    method public androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method public android.view.View! getSearchAffordanceView();
+    method public CharSequence! getTitle();
+    method public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnSearchClickedListener(android.view.View.OnClickListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setTitle(CharSequence!);
     method public void updateComponentsVisibility(int);
   }
 
   public abstract class TitleViewAdapter {
     ctor public TitleViewAdapter();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public abstract android.view.View getSearchAffordanceView();
-    method public java.lang.CharSequence getTitle();
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method public abstract android.view.View! getSearchAffordanceView();
+    method public CharSequence! getTitle();
     method public void setAnimationEnabled(boolean);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnSearchClickedListener(android.view.View.OnClickListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setTitle(CharSequence!);
     method public void updateComponentsVisibility(int);
     field public static final int BRANDING_VIEW_VISIBLE = 2; // 0x2
     field public static final int FULL_VIEW_VISIBLE = 6; // 0x6
     field public static final int SEARCH_VIEW_VISIBLE = 4; // 0x4
   }
 
-  public static abstract interface TitleViewAdapter.Provider {
-    method public abstract androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
+  public static interface TitleViewAdapter.Provider {
+    method public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
   }
 
   public class VerticalGridPresenter extends androidx.leanback.widget.Presenter {
@@ -3012,46 +3123,46 @@
     ctor public VerticalGridPresenter(int);
     ctor public VerticalGridPresenter(int, boolean);
     method public final boolean areChildRoundedCornersEnabled();
-    method protected androidx.leanback.widget.VerticalGridPresenter.ViewHolder createGridViewHolder(android.view.ViewGroup);
-    method protected androidx.leanback.widget.ShadowOverlayHelper.Options createShadowOverlayOptions();
+    method protected androidx.leanback.widget.VerticalGridPresenter.ViewHolder! createGridViewHolder(android.view.ViewGroup!);
+    method protected androidx.leanback.widget.ShadowOverlayHelper.Options! createShadowOverlayOptions();
     method public final void enableChildRoundedCorners(boolean);
     method public final int getFocusZoomFactor();
     method public final boolean getKeepChildForeground();
     method public int getNumberOfColumns();
-    method public final androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public final androidx.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
+    method public final androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method public final androidx.leanback.widget.OnItemViewSelectedListener! getOnItemViewSelectedListener();
     method public final boolean getShadowEnabled();
-    method protected void initializeGridViewHolder(androidx.leanback.widget.VerticalGridPresenter.ViewHolder);
+    method protected void initializeGridViewHolder(androidx.leanback.widget.VerticalGridPresenter.ViewHolder!);
     method public final boolean isFocusDimmerUsed();
     method public boolean isUsingDefaultShadow();
-    method public boolean isUsingZOrder(android.content.Context);
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final androidx.leanback.widget.VerticalGridPresenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void setEntranceTransitionState(androidx.leanback.widget.VerticalGridPresenter.ViewHolder, boolean);
+    method public boolean isUsingZOrder(android.content.Context!);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public final androidx.leanback.widget.VerticalGridPresenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void setEntranceTransitionState(androidx.leanback.widget.VerticalGridPresenter.ViewHolder!, boolean);
     method public final void setKeepChildForeground(boolean);
     method public void setNumberOfColumns(int);
-    method public final void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
+    method public final void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
     method public final void setShadowEnabled(boolean);
   }
 
   public static class VerticalGridPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public VerticalGridPresenter.ViewHolder(androidx.leanback.widget.VerticalGridView);
-    method public androidx.leanback.widget.VerticalGridView getGridView();
+    ctor public VerticalGridPresenter.ViewHolder(androidx.leanback.widget.VerticalGridView!);
+    method public androidx.leanback.widget.VerticalGridView! getGridView();
   }
 
   public class VerticalGridView extends androidx.leanback.widget.BaseGridView {
-    ctor public VerticalGridView(android.content.Context);
-    ctor public VerticalGridView(android.content.Context, android.util.AttributeSet);
-    ctor public VerticalGridView(android.content.Context, android.util.AttributeSet, int);
-    method protected void initAttributes(android.content.Context, android.util.AttributeSet);
+    ctor public VerticalGridView(android.content.Context!);
+    ctor public VerticalGridView(android.content.Context!, android.util.AttributeSet!);
+    ctor public VerticalGridView(android.content.Context!, android.util.AttributeSet!, int);
+    method protected void initAttributes(android.content.Context!, android.util.AttributeSet!);
     method public void setColumnWidth(int);
     method public void setNumColumns(int);
   }
 
-  public abstract interface ViewHolderTask {
-    method public abstract void run(androidx.recyclerview.widget.RecyclerView.ViewHolder);
+  public interface ViewHolderTask {
+    method public void run(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
   }
 
 }
@@ -3059,61 +3170,61 @@
 package androidx.leanback.widget.picker {
 
   public class Picker extends android.widget.FrameLayout {
-    ctor public Picker(android.content.Context, android.util.AttributeSet, int);
-    method public void addOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener);
+    ctor public Picker(android.content.Context!, android.util.AttributeSet!, int);
+    method public void addOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener!);
     method public float getActivatedVisibleItemCount();
-    method public androidx.leanback.widget.picker.PickerColumn getColumnAt(int);
+    method public androidx.leanback.widget.picker.PickerColumn! getColumnAt(int);
     method public int getColumnsCount();
     method protected int getPickerItemHeightPixels();
     method public final int getPickerItemLayoutId();
     method public final int getPickerItemTextViewId();
     method public int getSelectedColumn();
-    method public final deprecated java.lang.CharSequence getSeparator();
-    method public final java.util.List<java.lang.CharSequence> getSeparators();
+    method @Deprecated public final CharSequence! getSeparator();
+    method public final java.util.List<java.lang.CharSequence>! getSeparators();
     method public float getVisibleItemCount();
     method public void onColumnValueChanged(int, int);
-    method public void removeOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener);
+    method public void removeOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener!);
     method public void setActivatedVisibleItemCount(float);
-    method public void setColumnAt(int, androidx.leanback.widget.picker.PickerColumn);
+    method public void setColumnAt(int, androidx.leanback.widget.picker.PickerColumn!);
     method public void setColumnValue(int, int, boolean);
-    method public void setColumns(java.util.List<androidx.leanback.widget.picker.PickerColumn>);
+    method public void setColumns(java.util.List<androidx.leanback.widget.picker.PickerColumn>!);
     method public final void setPickerItemTextViewId(int);
     method public void setSelectedColumn(int);
-    method public final void setSeparator(java.lang.CharSequence);
-    method public final void setSeparators(java.util.List<java.lang.CharSequence>);
+    method public final void setSeparator(CharSequence!);
+    method public final void setSeparators(java.util.List<java.lang.CharSequence>!);
     method public void setVisibleItemCount(float);
   }
 
-  public static abstract interface Picker.PickerValueListener {
-    method public abstract void onValueChanged(androidx.leanback.widget.picker.Picker, int);
+  public static interface Picker.PickerValueListener {
+    method public void onValueChanged(androidx.leanback.widget.picker.Picker!, int);
   }
 
   public class PickerColumn {
     ctor public PickerColumn();
     method public int getCount();
     method public int getCurrentValue();
-    method public java.lang.CharSequence getLabelFor(int);
-    method public java.lang.String getLabelFormat();
+    method public CharSequence! getLabelFor(int);
+    method public String! getLabelFormat();
     method public int getMaxValue();
     method public int getMinValue();
-    method public java.lang.CharSequence[] getStaticLabels();
+    method public CharSequence[]! getStaticLabels();
     method public void setCurrentValue(int);
-    method public void setLabelFormat(java.lang.String);
+    method public void setLabelFormat(String!);
     method public void setMaxValue(int);
     method public void setMinValue(int);
-    method public void setStaticLabels(java.lang.CharSequence[]);
+    method public void setStaticLabels(CharSequence[]!);
   }
 
   public class TimePicker extends androidx.leanback.widget.picker.Picker {
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet);
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet, int);
+    ctor public TimePicker(android.content.Context!, android.util.AttributeSet!);
+    ctor public TimePicker(android.content.Context!, android.util.AttributeSet!, int);
     method public int getHour();
     method public int getMinute();
     method public boolean is24Hour();
     method public boolean isPm();
-    method public void setHour(int);
+    method public void setHour(@IntRange(from=0, to=23) int);
     method public void setIs24Hour(boolean);
-    method public void setMinute(int);
+    method public void setMinute(@IntRange(from=0, to=59) int);
   }
 
 }
diff --git a/leanback/api/1.1.0-alpha01.txt b/leanback/api/1.1.0-alpha01.txt
index 04b1936..e77e6d1 100644
--- a/leanback/api/1.1.0-alpha01.txt
+++ b/leanback/api/1.1.0-alpha01.txt
@@ -1,220 +1,229 @@
+// Signature format: 2.0
 package androidx.leanback.app {
 
   public final class BackgroundManager {
-    method public void attach(android.view.Window);
-    method public void attachToView(android.view.View);
+    method public void attach(android.view.Window!);
+    method public void attachToView(android.view.View!);
     method public void clearDrawable();
-    method public int getColor();
-    method public deprecated android.graphics.drawable.Drawable getDefaultDimLayer();
-    method public deprecated android.graphics.drawable.Drawable getDimLayer();
-    method public android.graphics.drawable.Drawable getDrawable();
-    method public static androidx.leanback.app.BackgroundManager getInstance(android.app.Activity);
+    method @ColorInt public int getColor();
+    method @Deprecated public android.graphics.drawable.Drawable! getDefaultDimLayer();
+    method @Deprecated public android.graphics.drawable.Drawable! getDimLayer();
+    method public android.graphics.drawable.Drawable! getDrawable();
+    method public static androidx.leanback.app.BackgroundManager! getInstance(android.app.Activity!);
     method public boolean isAttached();
     method public boolean isAutoReleaseOnStop();
     method public void release();
     method public void setAutoReleaseOnStop(boolean);
-    method public void setBitmap(android.graphics.Bitmap);
-    method public void setColor(int);
-    method public deprecated void setDimLayer(android.graphics.drawable.Drawable);
-    method public void setDrawable(android.graphics.drawable.Drawable);
+    method public void setBitmap(android.graphics.Bitmap!);
+    method public void setColor(@ColorInt int);
+    method @Deprecated public void setDimLayer(android.graphics.drawable.Drawable!);
+    method public void setDrawable(android.graphics.drawable.Drawable!);
     method public void setThemeDrawableResourceId(int);
   }
 
-  public deprecated class BaseFragment extends androidx.leanback.app.BrandedFragment {
-    method protected java.lang.Object createEntranceTransition();
-    method public final androidx.leanback.app.ProgressBarManager getProgressBarManager();
-    method protected void onEntranceTransitionEnd();
-    method protected void onEntranceTransitionPrepare();
-    method protected void onEntranceTransitionStart();
-    method public void prepareEntranceTransition();
-    method protected void runEntranceTransition(java.lang.Object);
-    method public void startEntranceTransition();
+  @Deprecated public class BaseFragment extends androidx.leanback.app.BrandedFragment {
+    method @Deprecated protected Object! createEntranceTransition();
+    method @Deprecated public final androidx.leanback.app.ProgressBarManager! getProgressBarManager();
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated protected void onEntranceTransitionEnd();
+    method @Deprecated protected void onEntranceTransitionPrepare();
+    method @Deprecated protected void onEntranceTransitionStart();
+    method @Deprecated public void prepareEntranceTransition();
+    method @Deprecated protected void runEntranceTransition(Object!);
+    method @Deprecated public void startEntranceTransition();
   }
 
   public class BaseSupportFragment extends androidx.leanback.app.BrandedSupportFragment {
-    method protected java.lang.Object createEntranceTransition();
-    method public final androidx.leanback.app.ProgressBarManager getProgressBarManager();
+    method protected Object! createEntranceTransition();
+    method public final androidx.leanback.app.ProgressBarManager! getProgressBarManager();
     method protected void onEntranceTransitionEnd();
     method protected void onEntranceTransitionPrepare();
     method protected void onEntranceTransitionStart();
     method public void prepareEntranceTransition();
-    method protected void runEntranceTransition(java.lang.Object);
+    method protected void runEntranceTransition(Object!);
     method public void startEntranceTransition();
   }
 
-  public deprecated class BrandedFragment extends android.app.Fragment {
-    ctor public BrandedFragment();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public int getSearchAffordanceColor();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public java.lang.CharSequence getTitle();
-    method public android.view.View getTitleView();
-    method public androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void installTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public final boolean isShowingTitle();
-    method public android.view.View onInflateTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColor(int);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitleView(android.view.View);
-    method public void showTitle(boolean);
-    method public void showTitle(int);
+  @Deprecated public class BrandedFragment extends android.app.Fragment {
+    ctor @Deprecated public BrandedFragment();
+    method @Deprecated public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method @Deprecated public int getSearchAffordanceColor();
+    method @Deprecated public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method @Deprecated public CharSequence! getTitle();
+    method @Deprecated public android.view.View! getTitleView();
+    method @Deprecated public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
+    method @Deprecated public void installTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public final boolean isShowingTitle();
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public android.view.View! onInflateTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onPause();
+    method @Deprecated public void onResume();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onStart();
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setOnSearchClickedListener(android.view.View.OnClickListener!);
+    method @Deprecated public void setSearchAffordanceColor(int);
+    method @Deprecated public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method @Deprecated public void setTitle(CharSequence!);
+    method @Deprecated public void setTitleView(android.view.View!);
+    method @Deprecated public void showTitle(boolean);
+    method @Deprecated public void showTitle(int);
   }
 
   public class BrandedSupportFragment extends androidx.fragment.app.Fragment {
     ctor public BrandedSupportFragment();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
     method public int getSearchAffordanceColor();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public java.lang.CharSequence getTitle();
-    method public android.view.View getTitleView();
-    method public androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void installTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
+    method public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method public CharSequence! getTitle();
+    method public android.view.View! getTitleView();
+    method public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
+    method public void installTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
     method public final boolean isShowingTitle();
-    method public android.view.View onInflateTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
+    method public android.view.View! onInflateTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnSearchClickedListener(android.view.View.OnClickListener!);
     method public void setSearchAffordanceColor(int);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitleView(android.view.View);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setTitle(CharSequence!);
+    method public void setTitleView(android.view.View!);
     method public void showTitle(boolean);
     method public void showTitle(int);
   }
 
-  public deprecated class BrowseFragment extends androidx.leanback.app.BaseFragment {
-    ctor public BrowseFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, int);
-    method public void enableMainFragmentScaling(boolean);
-    method public deprecated void enableRowScaling(boolean);
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBrandColor();
-    method public androidx.leanback.app.HeadersFragment getHeadersFragment();
-    method public int getHeadersState();
-    method public android.app.Fragment getMainFragment();
-    method public final androidx.leanback.app.BrowseFragment.MainFragmentAdapterRegistry getMainFragmentRegistry();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.app.RowsFragment getRowsFragment();
-    method public int getSelectedPosition();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getSelectedRowViewHolder();
-    method public final boolean isHeadersTransitionOnBackEnabled();
-    method public boolean isInHeadersTransition();
-    method public boolean isShowingHeaders();
-    method public androidx.leanback.app.HeadersFragment onCreateHeadersFragment();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setBrandColor(int);
-    method public void setBrowseTransitionListener(androidx.leanback.app.BrowseFragment.BrowseTransitionListener);
-    method public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector);
-    method public void setHeadersState(int);
-    method public final void setHeadersTransitionOnBackEnabled(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
-    method public void startHeadersTransition(boolean);
-    field public static final int HEADERS_DISABLED = 3; // 0x3
-    field public static final int HEADERS_ENABLED = 1; // 0x1
-    field public static final int HEADERS_HIDDEN = 2; // 0x2
+  @Deprecated public class BrowseFragment extends androidx.leanback.app.BaseFragment {
+    method @Deprecated public static android.os.Bundle! createArgs(android.os.Bundle!, String!, int);
+    method @Deprecated public void enableMainFragmentScaling(boolean);
+    method @Deprecated public void enableRowScaling(boolean);
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated @ColorInt public int getBrandColor();
+    method @Deprecated public androidx.leanback.app.HeadersFragment! getHeadersFragment();
+    method @Deprecated public int getHeadersState();
+    method @Deprecated public android.app.Fragment! getMainFragment();
+    method @Deprecated public final androidx.leanback.app.BrowseFragment.MainFragmentAdapterRegistry! getMainFragmentRegistry();
+    method @Deprecated public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public androidx.leanback.widget.OnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method @Deprecated public androidx.leanback.app.RowsFragment! getRowsFragment();
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! getSelectedRowViewHolder();
+    method @Deprecated public final boolean isHeadersTransitionOnBackEnabled();
+    method @Deprecated public boolean isInHeadersTransition();
+    method @Deprecated public boolean isShowingHeaders();
+    method @Deprecated public androidx.leanback.app.HeadersFragment! onCreateHeadersFragment();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroy();
+    method @Deprecated public void onStop();
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setBrandColor(@ColorInt int);
+    method @Deprecated public void setBrowseTransitionListener(androidx.leanback.app.BrowseFragment.BrowseTransitionListener!);
+    method @Deprecated public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method @Deprecated public void setHeadersState(int);
+    method @Deprecated public final void setHeadersTransitionOnBackEnabled(boolean);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
+    method @Deprecated public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method @Deprecated public void startHeadersTransition(boolean);
+    field @Deprecated public static final int HEADERS_DISABLED = 3; // 0x3
+    field @Deprecated public static final int HEADERS_ENABLED = 1; // 0x1
+    field @Deprecated public static final int HEADERS_HIDDEN = 2; // 0x2
   }
 
-  public static deprecated class BrowseFragment.BrowseTransitionListener {
-    ctor public BrowseFragment.BrowseTransitionListener();
-    method public void onHeadersTransitionStart(boolean);
-    method public void onHeadersTransitionStop(boolean);
+  @Deprecated public static class BrowseFragment.BrowseTransitionListener {
+    ctor @Deprecated public BrowseFragment.BrowseTransitionListener();
+    method @Deprecated public void onHeadersTransitionStart(boolean);
+    method @Deprecated public void onHeadersTransitionStop(boolean);
   }
 
-  public static abstract deprecated class BrowseFragment.FragmentFactory<T extends android.app.Fragment> {
-    ctor public BrowseFragment.FragmentFactory();
-    method public abstract T createFragment(java.lang.Object);
+  @Deprecated public abstract static class BrowseFragment.FragmentFactory<T extends android.app.Fragment> {
+    ctor @Deprecated public BrowseFragment.FragmentFactory();
+    method @Deprecated public abstract T! createFragment(Object!);
   }
 
-  public static abstract deprecated interface BrowseFragment.FragmentHost {
-    method public abstract void notifyDataReady(androidx.leanback.app.BrowseFragment.MainFragmentAdapter);
-    method public abstract void notifyViewCreated(androidx.leanback.app.BrowseFragment.MainFragmentAdapter);
-    method public abstract void showTitleView(boolean);
+  @Deprecated public static interface BrowseFragment.FragmentHost {
+    method @Deprecated public void notifyDataReady(androidx.leanback.app.BrowseFragment.MainFragmentAdapter!);
+    method @Deprecated public void notifyViewCreated(androidx.leanback.app.BrowseFragment.MainFragmentAdapter!);
+    method @Deprecated public void showTitleView(boolean);
   }
 
-  public static deprecated class BrowseFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseFragment.FragmentFactory {
-    ctor public BrowseFragment.ListRowFragmentFactory();
-    method public androidx.leanback.app.RowsFragment createFragment(java.lang.Object);
+  @Deprecated public static class BrowseFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseFragment.FragmentFactory<androidx.leanback.app.RowsFragment> {
+    ctor @Deprecated public BrowseFragment.ListRowFragmentFactory();
+    method @Deprecated public androidx.leanback.app.RowsFragment! createFragment(Object!);
   }
 
-  public static deprecated class BrowseFragment.MainFragmentAdapter<T extends android.app.Fragment> {
-    ctor public BrowseFragment.MainFragmentAdapter(T);
-    method public final T getFragment();
-    method public final androidx.leanback.app.BrowseFragment.FragmentHost getFragmentHost();
-    method public boolean isScalingEnabled();
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public boolean onTransitionPrepare();
-    method public void onTransitionStart();
-    method public void setAlignment(int);
-    method public void setEntranceTransitionState(boolean);
-    method public void setExpand(boolean);
-    method public void setScalingEnabled(boolean);
+  @Deprecated public static class BrowseFragment.MainFragmentAdapter<T extends android.app.Fragment> {
+    ctor @Deprecated public BrowseFragment.MainFragmentAdapter(T!);
+    method @Deprecated public final T! getFragment();
+    method @Deprecated public final androidx.leanback.app.BrowseFragment.FragmentHost! getFragmentHost();
+    method @Deprecated public boolean isScalingEnabled();
+    method @Deprecated public boolean isScrolling();
+    method @Deprecated public void onTransitionEnd();
+    method @Deprecated public boolean onTransitionPrepare();
+    method @Deprecated public void onTransitionStart();
+    method @Deprecated public void setAlignment(int);
+    method @Deprecated public void setEntranceTransitionState(boolean);
+    method @Deprecated public void setExpand(boolean);
+    method @Deprecated public void setScalingEnabled(boolean);
   }
 
-  public static abstract deprecated interface BrowseFragment.MainFragmentAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseFragment.MainFragmentAdapter getMainFragmentAdapter();
+  @Deprecated public static interface BrowseFragment.MainFragmentAdapterProvider {
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentAdapter! getMainFragmentAdapter();
   }
 
-  public static final deprecated class BrowseFragment.MainFragmentAdapterRegistry {
-    ctor public BrowseFragment.MainFragmentAdapterRegistry();
-    method public android.app.Fragment createFragment(java.lang.Object);
-    method public void registerFragment(java.lang.Class, androidx.leanback.app.BrowseFragment.FragmentFactory);
+  @Deprecated public static final class BrowseFragment.MainFragmentAdapterRegistry {
+    ctor @Deprecated public BrowseFragment.MainFragmentAdapterRegistry();
+    method @Deprecated public android.app.Fragment! createFragment(Object!);
+    method @Deprecated public void registerFragment(Class!, androidx.leanback.app.BrowseFragment.FragmentFactory!);
   }
 
-  public static deprecated class BrowseFragment.MainFragmentRowsAdapter<T extends android.app.Fragment> {
-    ctor public BrowseFragment.MainFragmentRowsAdapter(T);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public final T getFragment();
-    method public int getSelectedPosition();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
-    method public void setSelectedPosition(int, boolean);
+  @Deprecated public static class BrowseFragment.MainFragmentRowsAdapter<T extends android.app.Fragment> {
+    ctor @Deprecated public BrowseFragment.MainFragmentRowsAdapter(T!);
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method @Deprecated public final T! getFragment();
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method @Deprecated public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract deprecated interface BrowseFragment.MainFragmentRowsAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
+  @Deprecated public static interface BrowseFragment.MainFragmentRowsAdapterProvider {
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
   }
 
   public class BrowseSupportFragment extends androidx.leanback.app.BaseSupportFragment {
-    ctor public BrowseSupportFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, int);
+    method public static android.os.Bundle! createArgs(android.os.Bundle!, String!, int);
     method public void enableMainFragmentScaling(boolean);
-    method public deprecated void enableRowScaling(boolean);
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBrandColor();
+    method @Deprecated public void enableRowScaling(boolean);
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @ColorInt public int getBrandColor();
     method public int getHeadersState();
-    method public androidx.leanback.app.HeadersSupportFragment getHeadersSupportFragment();
-    method public androidx.fragment.app.Fragment getMainFragment();
-    method public final androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapterRegistry getMainFragmentRegistry();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.app.RowsSupportFragment getRowsSupportFragment();
+    method public androidx.leanback.app.HeadersSupportFragment! getHeadersSupportFragment();
+    method public androidx.fragment.app.Fragment! getMainFragment();
+    method public final androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapterRegistry! getMainFragmentRegistry();
+    method public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method public androidx.leanback.widget.OnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method public androidx.leanback.app.RowsSupportFragment! getRowsSupportFragment();
     method public int getSelectedPosition();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getSelectedRowViewHolder();
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! getSelectedRowViewHolder();
     method public final boolean isHeadersTransitionOnBackEnabled();
     method public boolean isInHeadersTransition();
     method public boolean isShowingHeaders();
-    method public androidx.leanback.app.HeadersSupportFragment onCreateHeadersSupportFragment();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setBrandColor(int);
-    method public void setBrowseTransitionListener(androidx.leanback.app.BrowseSupportFragment.BrowseTransitionListener);
-    method public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector);
+    method public androidx.leanback.app.HeadersSupportFragment! onCreateHeadersSupportFragment();
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setBrandColor(@ColorInt int);
+    method public void setBrowseTransitionListener(androidx.leanback.app.BrowseSupportFragment.BrowseTransitionListener!);
+    method public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector!);
     method public void setHeadersState(int);
     method public final void setHeadersTransitionOnBackEnabled(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, boolean);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
     method public void startHeadersTransition(boolean);
     field public static final int HEADERS_DISABLED = 3; // 0x3
     field public static final int HEADERS_ENABLED = 1; // 0x1
@@ -227,26 +236,26 @@
     method public void onHeadersTransitionStop(boolean);
   }
 
-  public static abstract class BrowseSupportFragment.FragmentFactory<T extends androidx.fragment.app.Fragment> {
+  public abstract static class BrowseSupportFragment.FragmentFactory<T extends androidx.fragment.app.Fragment> {
     ctor public BrowseSupportFragment.FragmentFactory();
-    method public abstract T createFragment(java.lang.Object);
+    method public abstract T! createFragment(Object!);
   }
 
-  public static abstract interface BrowseSupportFragment.FragmentHost {
-    method public abstract void notifyDataReady(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter);
-    method public abstract void notifyViewCreated(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter);
-    method public abstract void showTitleView(boolean);
+  public static interface BrowseSupportFragment.FragmentHost {
+    method public void notifyDataReady(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter!);
+    method public void notifyViewCreated(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter!);
+    method public void showTitleView(boolean);
   }
 
-  public static class BrowseSupportFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseSupportFragment.FragmentFactory {
+  public static class BrowseSupportFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseSupportFragment.FragmentFactory<androidx.leanback.app.RowsSupportFragment> {
     ctor public BrowseSupportFragment.ListRowFragmentFactory();
-    method public androidx.leanback.app.RowsSupportFragment createFragment(java.lang.Object);
+    method public androidx.leanback.app.RowsSupportFragment! createFragment(Object!);
   }
 
   public static class BrowseSupportFragment.MainFragmentAdapter<T extends androidx.fragment.app.Fragment> {
-    ctor public BrowseSupportFragment.MainFragmentAdapter(T);
-    method public final T getFragment();
-    method public final androidx.leanback.app.BrowseSupportFragment.FragmentHost getFragmentHost();
+    ctor public BrowseSupportFragment.MainFragmentAdapter(T!);
+    method public final T! getFragment();
+    method public final androidx.leanback.app.BrowseSupportFragment.FragmentHost! getFragmentHost();
     method public boolean isScalingEnabled();
     method public boolean isScrolling();
     method public void onTransitionEnd();
@@ -258,228 +267,234 @@
     method public void setScalingEnabled(boolean);
   }
 
-  public static abstract interface BrowseSupportFragment.MainFragmentAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter getMainFragmentAdapter();
+  public static interface BrowseSupportFragment.MainFragmentAdapterProvider {
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter! getMainFragmentAdapter();
   }
 
   public static final class BrowseSupportFragment.MainFragmentAdapterRegistry {
     ctor public BrowseSupportFragment.MainFragmentAdapterRegistry();
-    method public androidx.fragment.app.Fragment createFragment(java.lang.Object);
-    method public void registerFragment(java.lang.Class, androidx.leanback.app.BrowseSupportFragment.FragmentFactory);
+    method public androidx.fragment.app.Fragment! createFragment(Object!);
+    method public void registerFragment(Class!, androidx.leanback.app.BrowseSupportFragment.FragmentFactory!);
   }
 
   public static class BrowseSupportFragment.MainFragmentRowsAdapter<T extends androidx.fragment.app.Fragment> {
-    ctor public BrowseSupportFragment.MainFragmentRowsAdapter(T);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public final T getFragment();
+    ctor public BrowseSupportFragment.MainFragmentRowsAdapter(T!);
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method public final T! getFragment();
     method public int getSelectedPosition();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
     method public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract interface BrowseSupportFragment.MainFragmentRowsAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
+  public static interface BrowseSupportFragment.MainFragmentRowsAdapterProvider {
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
   }
 
-  public deprecated class DetailsFragment extends androidx.leanback.app.BaseFragment {
-    ctor public DetailsFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.DetailsParallax getParallax();
-    method public androidx.leanback.app.RowsFragment getRowsFragment();
-    method protected deprecated android.view.View inflateTitle(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, int, int);
-    method protected void onSetRowStatus(androidx.leanback.widget.RowPresenter, androidx.leanback.widget.RowPresenter.ViewHolder, int, int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter);
-    method protected void setupPresenter(androidx.leanback.widget.Presenter);
+  @Deprecated public class DetailsFragment extends androidx.leanback.app.BaseFragment {
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public androidx.leanback.widget.DetailsParallax! getParallax();
+    method @Deprecated public androidx.leanback.app.RowsFragment! getRowsFragment();
+    method @Deprecated protected android.view.View! inflateTitle(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, int, int);
+    method @Deprecated protected void onSetRowStatus(androidx.leanback.widget.RowPresenter!, androidx.leanback.widget.RowPresenter.ViewHolder!, int, int, int);
+    method @Deprecated public void onStop();
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
+    method @Deprecated protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!);
+    method @Deprecated protected void setupPresenter(androidx.leanback.widget.Presenter!);
   }
 
-  public deprecated class DetailsFragmentBackgroundController {
-    ctor public DetailsFragmentBackgroundController(androidx.leanback.app.DetailsFragment);
-    method public boolean canNavigateToVideoFragment();
-    method public void enableParallax();
-    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget);
-    method public final android.app.Fragment findOrCreateVideoFragment();
-    method public final android.graphics.drawable.Drawable getBottomDrawable();
-    method public final android.graphics.Bitmap getCoverBitmap();
-    method public final android.graphics.drawable.Drawable getCoverDrawable();
-    method public final int getParallaxDrawableMaxOffset();
-    method public final androidx.leanback.media.PlaybackGlue getPlaybackGlue();
-    method public final int getSolidColor();
-    method public androidx.leanback.media.PlaybackGlueHost onCreateGlueHost();
-    method public android.app.Fragment onCreateVideoFragment();
-    method public final void setCoverBitmap(android.graphics.Bitmap);
-    method public final void setParallaxDrawableMaxOffset(int);
-    method public final void setSolidColor(int);
-    method public void setupVideoPlayback(androidx.leanback.media.PlaybackGlue);
-    method public final void switchToRows();
-    method public final void switchToVideo();
+  @Deprecated public class DetailsFragmentBackgroundController {
+    ctor @Deprecated public DetailsFragmentBackgroundController(androidx.leanback.app.DetailsFragment!);
+    method @Deprecated public boolean canNavigateToVideoFragment();
+    method @Deprecated public void enableParallax();
+    method @Deprecated public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget?);
+    method @Deprecated public final android.app.Fragment! findOrCreateVideoFragment();
+    method @Deprecated public final android.graphics.drawable.Drawable! getBottomDrawable();
+    method @Deprecated public final android.graphics.Bitmap! getCoverBitmap();
+    method @Deprecated public final android.graphics.drawable.Drawable! getCoverDrawable();
+    method @Deprecated public final int getParallaxDrawableMaxOffset();
+    method @Deprecated public final androidx.leanback.media.PlaybackGlue! getPlaybackGlue();
+    method @Deprecated @ColorInt public final int getSolidColor();
+    method @Deprecated public androidx.leanback.media.PlaybackGlueHost! onCreateGlueHost();
+    method @Deprecated public android.app.Fragment! onCreateVideoFragment();
+    method @Deprecated public final void setCoverBitmap(android.graphics.Bitmap!);
+    method @Deprecated public final void setParallaxDrawableMaxOffset(int);
+    method @Deprecated public final void setSolidColor(@ColorInt int);
+    method @Deprecated public void setupVideoPlayback(androidx.leanback.media.PlaybackGlue);
+    method @Deprecated public final void switchToRows();
+    method @Deprecated public final void switchToVideo();
   }
 
   public class DetailsSupportFragment extends androidx.leanback.app.BaseSupportFragment {
-    ctor public DetailsSupportFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.DetailsParallax getParallax();
-    method public androidx.leanback.app.RowsSupportFragment getRowsSupportFragment();
-    method protected deprecated android.view.View inflateTitle(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, int, int);
-    method protected void onSetRowStatus(androidx.leanback.widget.RowPresenter, androidx.leanback.widget.RowPresenter.ViewHolder, int, int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method public androidx.leanback.widget.DetailsParallax! getParallax();
+    method public androidx.leanback.app.RowsSupportFragment! getRowsSupportFragment();
+    method @Deprecated protected android.view.View! inflateTitle(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, int, int);
+    method protected void onSetRowStatus(androidx.leanback.widget.RowPresenter!, androidx.leanback.widget.RowPresenter.ViewHolder!, int, int, int);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, boolean);
-    method protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter);
-    method protected void setupPresenter(androidx.leanback.widget.Presenter);
+    method protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!);
+    method protected void setupPresenter(androidx.leanback.widget.Presenter!);
   }
 
   public class DetailsSupportFragmentBackgroundController {
-    ctor public DetailsSupportFragmentBackgroundController(androidx.leanback.app.DetailsSupportFragment);
+    ctor public DetailsSupportFragmentBackgroundController(androidx.leanback.app.DetailsSupportFragment!);
     method public boolean canNavigateToVideoSupportFragment();
     method public void enableParallax();
-    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget);
-    method public final androidx.fragment.app.Fragment findOrCreateVideoSupportFragment();
-    method public final android.graphics.drawable.Drawable getBottomDrawable();
-    method public final android.graphics.Bitmap getCoverBitmap();
-    method public final android.graphics.drawable.Drawable getCoverDrawable();
+    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget?);
+    method public final androidx.fragment.app.Fragment! findOrCreateVideoSupportFragment();
+    method public final android.graphics.drawable.Drawable! getBottomDrawable();
+    method public final android.graphics.Bitmap! getCoverBitmap();
+    method public final android.graphics.drawable.Drawable! getCoverDrawable();
     method public final int getParallaxDrawableMaxOffset();
-    method public final androidx.leanback.media.PlaybackGlue getPlaybackGlue();
-    method public final int getSolidColor();
-    method public androidx.leanback.media.PlaybackGlueHost onCreateGlueHost();
-    method public androidx.fragment.app.Fragment onCreateVideoSupportFragment();
-    method public final void setCoverBitmap(android.graphics.Bitmap);
+    method public final androidx.leanback.media.PlaybackGlue! getPlaybackGlue();
+    method @ColorInt public final int getSolidColor();
+    method public androidx.leanback.media.PlaybackGlueHost! onCreateGlueHost();
+    method public androidx.fragment.app.Fragment! onCreateVideoSupportFragment();
+    method public final void setCoverBitmap(android.graphics.Bitmap!);
     method public final void setParallaxDrawableMaxOffset(int);
-    method public final void setSolidColor(int);
+    method public final void setSolidColor(@ColorInt int);
     method public void setupVideoPlayback(androidx.leanback.media.PlaybackGlue);
     method public final void switchToRows();
     method public final void switchToVideo();
   }
 
-  public deprecated class ErrorFragment extends androidx.leanback.app.BrandedFragment {
-    ctor public ErrorFragment();
-    method public android.graphics.drawable.Drawable getBackgroundDrawable();
-    method public android.view.View.OnClickListener getButtonClickListener();
-    method public java.lang.String getButtonText();
-    method public android.graphics.drawable.Drawable getImageDrawable();
-    method public java.lang.CharSequence getMessage();
-    method public boolean isBackgroundTranslucent();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setButtonClickListener(android.view.View.OnClickListener);
-    method public void setButtonText(java.lang.String);
-    method public void setDefaultBackground(boolean);
-    method public void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setMessage(java.lang.CharSequence);
+  @Deprecated public class ErrorFragment extends androidx.leanback.app.BrandedFragment {
+    ctor @Deprecated public ErrorFragment();
+    method @Deprecated public android.graphics.drawable.Drawable! getBackgroundDrawable();
+    method @Deprecated public android.view.View.OnClickListener! getButtonClickListener();
+    method @Deprecated public String! getButtonText();
+    method @Deprecated public android.graphics.drawable.Drawable! getImageDrawable();
+    method @Deprecated public CharSequence! getMessage();
+    method @Deprecated public boolean isBackgroundTranslucent();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setButtonClickListener(android.view.View.OnClickListener!);
+    method @Deprecated public void setButtonText(String!);
+    method @Deprecated public void setDefaultBackground(boolean);
+    method @Deprecated public void setImageDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setMessage(CharSequence!);
   }
 
   public class ErrorSupportFragment extends androidx.leanback.app.BrandedSupportFragment {
     ctor public ErrorSupportFragment();
-    method public android.graphics.drawable.Drawable getBackgroundDrawable();
-    method public android.view.View.OnClickListener getButtonClickListener();
-    method public java.lang.String getButtonText();
-    method public android.graphics.drawable.Drawable getImageDrawable();
-    method public java.lang.CharSequence getMessage();
+    method public android.graphics.drawable.Drawable! getBackgroundDrawable();
+    method public android.view.View.OnClickListener! getButtonClickListener();
+    method public String! getButtonText();
+    method public android.graphics.drawable.Drawable! getImageDrawable();
+    method public CharSequence! getMessage();
     method public boolean isBackgroundTranslucent();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setButtonClickListener(android.view.View.OnClickListener);
-    method public void setButtonText(java.lang.String);
+    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
+    method public void setButtonClickListener(android.view.View.OnClickListener!);
+    method public void setButtonText(String!);
     method public void setDefaultBackground(boolean);
-    method public void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setMessage(java.lang.CharSequence);
+    method public void setImageDrawable(android.graphics.drawable.Drawable!);
+    method public void setMessage(CharSequence!);
   }
 
-  public deprecated class GuidedStepFragment extends android.app.Fragment {
-    ctor public GuidedStepFragment();
-    method public static int add(android.app.FragmentManager, androidx.leanback.app.GuidedStepFragment);
-    method public static int add(android.app.FragmentManager, androidx.leanback.app.GuidedStepFragment, int);
-    method public static int addAsRoot(android.app.Activity, androidx.leanback.app.GuidedStepFragment, int);
-    method public void collapseAction(boolean);
-    method public void collapseSubActions();
-    method public void expandAction(androidx.leanback.widget.GuidedAction, boolean);
-    method public void expandSubActions(androidx.leanback.widget.GuidedAction);
-    method public androidx.leanback.widget.GuidedAction findActionById(long);
-    method public int findActionPositionById(long);
-    method public androidx.leanback.widget.GuidedAction findButtonActionById(long);
-    method public int findButtonActionPositionById(long);
-    method public void finishGuidedStepFragments();
-    method public android.view.View getActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getActions();
-    method public android.view.View getButtonActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getButtonActions();
-    method public static androidx.leanback.app.GuidedStepFragment getCurrentGuidedStepFragment(android.app.FragmentManager);
-    method public androidx.leanback.widget.GuidanceStylist getGuidanceStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedActionsStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedButtonActionsStylist();
-    method public int getSelectedActionPosition();
-    method public int getSelectedButtonActionPosition();
-    method public int getUiStyle();
-    method public boolean isExpanded();
-    method public boolean isFocusOutEndAllowed();
-    method public boolean isFocusOutStartAllowed();
-    method public boolean isSubActionsExpanded();
-    method public void notifyActionChanged(int);
-    method public void notifyButtonActionChanged(int);
-    method protected void onAddSharedElementTransition(android.app.FragmentTransaction, androidx.leanback.app.GuidedStepFragment);
-    method public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateActionsStylist();
-    method public android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateButtonActionsStylist();
-    method public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle);
-    method public androidx.leanback.widget.GuidanceStylist onCreateGuidanceStylist();
-    method public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction);
-    method public deprecated void onGuidedActionEdited(androidx.leanback.widget.GuidedAction);
-    method public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction);
-    method protected void onProvideFragmentTransitions();
-    method public int onProvideTheme();
-    method public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void openInEditMode(androidx.leanback.widget.GuidedAction);
-    method public void popBackStackToGuidedStepFragment(java.lang.Class, int);
-    method public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>);
-    method public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setSelectedActionPosition(int);
-    method public void setSelectedButtonActionPosition(int);
-    method public void setUiStyle(int);
-    field public static final java.lang.String EXTRA_UI_STYLE = "uiStyle";
-    field public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
-    field public static final deprecated int UI_STYLE_DEFAULT = 0; // 0x0
-    field public static final int UI_STYLE_ENTRANCE = 1; // 0x1
-    field public static final int UI_STYLE_REPLACE = 0; // 0x0
+  @Deprecated public class GuidedStepFragment extends android.app.Fragment {
+    ctor @Deprecated public GuidedStepFragment();
+    method @Deprecated public static int add(android.app.FragmentManager!, androidx.leanback.app.GuidedStepFragment!);
+    method @Deprecated public static int add(android.app.FragmentManager!, androidx.leanback.app.GuidedStepFragment!, int);
+    method @Deprecated public static int addAsRoot(android.app.Activity!, androidx.leanback.app.GuidedStepFragment!, int);
+    method @Deprecated public void collapseAction(boolean);
+    method @Deprecated public void collapseSubActions();
+    method @Deprecated public void expandAction(androidx.leanback.widget.GuidedAction!, boolean);
+    method @Deprecated public void expandSubActions(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public androidx.leanback.widget.GuidedAction! findActionById(long);
+    method @Deprecated public int findActionPositionById(long);
+    method @Deprecated public androidx.leanback.widget.GuidedAction! findButtonActionById(long);
+    method @Deprecated public int findButtonActionPositionById(long);
+    method @Deprecated public void finishGuidedStepFragments();
+    method @Deprecated public android.view.View! getActionItemView(int);
+    method @Deprecated public java.util.List<androidx.leanback.widget.GuidedAction>! getActions();
+    method @Deprecated public android.view.View! getButtonActionItemView(int);
+    method @Deprecated public java.util.List<androidx.leanback.widget.GuidedAction>! getButtonActions();
+    method @Deprecated public static androidx.leanback.app.GuidedStepFragment! getCurrentGuidedStepFragment(android.app.FragmentManager!);
+    method @Deprecated public androidx.leanback.widget.GuidanceStylist! getGuidanceStylist();
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! getGuidedActionsStylist();
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! getGuidedButtonActionsStylist();
+    method @Deprecated public int getSelectedActionPosition();
+    method @Deprecated public int getSelectedButtonActionPosition();
+    method @Deprecated public int getUiStyle();
+    method @Deprecated public boolean isExpanded();
+    method @Deprecated public boolean isFocusOutEndAllowed();
+    method @Deprecated public boolean isFocusOutStartAllowed();
+    method @Deprecated public boolean isSubActionsExpanded();
+    method @Deprecated public void notifyActionChanged(int);
+    method @Deprecated public void notifyButtonActionChanged(int);
+    method @Deprecated protected void onAddSharedElementTransition(android.app.FragmentTransaction!, androidx.leanback.app.GuidedStepFragment!);
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! onCreateActionsStylist();
+    method @Deprecated public android.view.View! onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! onCreateButtonActionsStylist();
+    method @Deprecated public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle!);
+    method @Deprecated public androidx.leanback.widget.GuidanceStylist! onCreateGuidanceStylist();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionEdited(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated protected void onProvideFragmentTransitions();
+    method @Deprecated public int onProvideTheme();
+    method @Deprecated public void onResume();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void openInEditMode(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void popBackStackToGuidedStepFragment(Class!, int);
+    method @Deprecated public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method @Deprecated public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>!);
+    method @Deprecated public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method @Deprecated public void setSelectedActionPosition(int);
+    method @Deprecated public void setSelectedButtonActionPosition(int);
+    method @Deprecated public void setUiStyle(int);
+    field @Deprecated public static final String EXTRA_UI_STYLE = "uiStyle";
+    field @Deprecated public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
+    field @Deprecated public static final int UI_STYLE_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int UI_STYLE_ENTRANCE = 1; // 0x1
+    field @Deprecated public static final int UI_STYLE_REPLACE = 0; // 0x0
   }
 
   public class GuidedStepSupportFragment extends androidx.fragment.app.Fragment {
     ctor public GuidedStepSupportFragment();
-    method public static int add(androidx.fragment.app.FragmentManager, androidx.leanback.app.GuidedStepSupportFragment);
-    method public static int add(androidx.fragment.app.FragmentManager, androidx.leanback.app.GuidedStepSupportFragment, int);
-    method public static int addAsRoot(androidx.fragment.app.FragmentActivity, androidx.leanback.app.GuidedStepSupportFragment, int);
+    method public static int add(androidx.fragment.app.FragmentManager!, androidx.leanback.app.GuidedStepSupportFragment!);
+    method public static int add(androidx.fragment.app.FragmentManager!, androidx.leanback.app.GuidedStepSupportFragment!, int);
+    method public static int addAsRoot(androidx.fragment.app.FragmentActivity!, androidx.leanback.app.GuidedStepSupportFragment!, int);
     method public void collapseAction(boolean);
     method public void collapseSubActions();
-    method public void expandAction(androidx.leanback.widget.GuidedAction, boolean);
-    method public void expandSubActions(androidx.leanback.widget.GuidedAction);
-    method public androidx.leanback.widget.GuidedAction findActionById(long);
+    method public void expandAction(androidx.leanback.widget.GuidedAction!, boolean);
+    method public void expandSubActions(androidx.leanback.widget.GuidedAction!);
+    method public androidx.leanback.widget.GuidedAction! findActionById(long);
     method public int findActionPositionById(long);
-    method public androidx.leanback.widget.GuidedAction findButtonActionById(long);
+    method public androidx.leanback.widget.GuidedAction! findButtonActionById(long);
     method public int findButtonActionPositionById(long);
     method public void finishGuidedStepSupportFragments();
-    method public android.view.View getActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getActions();
-    method public android.view.View getButtonActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getButtonActions();
-    method public static androidx.leanback.app.GuidedStepSupportFragment getCurrentGuidedStepSupportFragment(androidx.fragment.app.FragmentManager);
-    method public androidx.leanback.widget.GuidanceStylist getGuidanceStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedActionsStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedButtonActionsStylist();
+    method public android.view.View! getActionItemView(int);
+    method public java.util.List<androidx.leanback.widget.GuidedAction>! getActions();
+    method public android.view.View! getButtonActionItemView(int);
+    method public java.util.List<androidx.leanback.widget.GuidedAction>! getButtonActions();
+    method public static androidx.leanback.app.GuidedStepSupportFragment! getCurrentGuidedStepSupportFragment(androidx.fragment.app.FragmentManager!);
+    method public androidx.leanback.widget.GuidanceStylist! getGuidanceStylist();
+    method public androidx.leanback.widget.GuidedActionsStylist! getGuidedActionsStylist();
+    method public androidx.leanback.widget.GuidedActionsStylist! getGuidedButtonActionsStylist();
     method public int getSelectedActionPosition();
     method public int getSelectedButtonActionPosition();
     method public int getUiStyle();
@@ -489,216 +504,266 @@
     method public boolean isSubActionsExpanded();
     method public void notifyActionChanged(int);
     method public void notifyButtonActionChanged(int);
-    method protected void onAddSharedElementTransition(androidx.fragment.app.FragmentTransaction, androidx.leanback.app.GuidedStepSupportFragment);
-    method public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateActionsStylist();
-    method public android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateButtonActionsStylist();
-    method public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle);
-    method public androidx.leanback.widget.GuidanceStylist onCreateGuidanceStylist();
-    method public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction);
-    method public deprecated void onGuidedActionEdited(androidx.leanback.widget.GuidedAction);
-    method public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction);
+    method protected void onAddSharedElementTransition(androidx.fragment.app.FragmentTransaction!, androidx.leanback.app.GuidedStepSupportFragment!);
+    method public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method public androidx.leanback.widget.GuidedActionsStylist! onCreateActionsStylist();
+    method public android.view.View! onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method public androidx.leanback.widget.GuidedActionsStylist! onCreateButtonActionsStylist();
+    method public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle!);
+    method public androidx.leanback.widget.GuidanceStylist! onCreateGuidanceStylist();
+    method public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionEdited(androidx.leanback.widget.GuidedAction!);
+    method public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction!);
+    method public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction!);
     method protected void onProvideFragmentTransitions();
     method public int onProvideTheme();
-    method public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void openInEditMode(androidx.leanback.widget.GuidedAction);
-    method public void popBackStackToGuidedStepSupportFragment(java.lang.Class, int);
-    method public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>);
-    method public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>);
+    method public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method public void openInEditMode(androidx.leanback.widget.GuidedAction!);
+    method public void popBackStackToGuidedStepSupportFragment(Class!, int);
+    method public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>!);
+    method public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
     method public void setSelectedActionPosition(int);
     method public void setSelectedButtonActionPosition(int);
     method public void setUiStyle(int);
-    field public static final java.lang.String EXTRA_UI_STYLE = "uiStyle";
+    field public static final String EXTRA_UI_STYLE = "uiStyle";
     field public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
-    field public static final deprecated int UI_STYLE_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int UI_STYLE_DEFAULT = 0; // 0x0
     field public static final int UI_STYLE_ENTRANCE = 1; // 0x1
     field public static final int UI_STYLE_REPLACE = 0; // 0x0
   }
 
-  public deprecated class HeadersFragment extends android.app.Fragment {
-    ctor public HeadersFragment();
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public void onTransitionStart();
-    method public void setOnHeaderClickedListener(androidx.leanback.app.HeadersFragment.OnHeaderClickedListener);
-    method public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersFragment.OnHeaderViewSelectedListener);
+  @Deprecated public class HeadersFragment extends android.app.Fragment {
+    ctor @Deprecated public HeadersFragment();
+    method @Deprecated public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method @Deprecated public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
+    method @Deprecated public boolean isScrolling();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onTransitionEnd();
+    method @Deprecated public boolean onTransitionPrepare();
+    method @Deprecated public void onTransitionStart();
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setAlignment(int);
+    method @Deprecated public void setOnHeaderClickedListener(androidx.leanback.app.HeadersFragment.OnHeaderClickedListener!);
+    method @Deprecated public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersFragment.OnHeaderViewSelectedListener!);
+    method @Deprecated public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract deprecated interface HeadersFragment.OnHeaderClickedListener {
-    method public abstract void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  @Deprecated public static interface HeadersFragment.OnHeaderClickedListener {
+    method @Deprecated public void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
-  public static abstract deprecated interface HeadersFragment.OnHeaderViewSelectedListener {
-    method public abstract void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  @Deprecated public static interface HeadersFragment.OnHeaderViewSelectedListener {
+    method @Deprecated public void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
   public class HeadersSupportFragment extends androidx.fragment.app.Fragment {
     ctor public HeadersSupportFragment();
+    method public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method public int getSelectedPosition();
+    method public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
     method public boolean isScrolling();
     method public void onTransitionEnd();
+    method public boolean onTransitionPrepare();
     method public void onTransitionStart();
-    method public void setOnHeaderClickedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderClickedListener);
-    method public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener);
+    method public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setAlignment(int);
+    method public void setOnHeaderClickedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderClickedListener!);
+    method public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener!);
+    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method public void setSelectedPosition(int);
+    method public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract interface HeadersSupportFragment.OnHeaderClickedListener {
-    method public abstract void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  public static interface HeadersSupportFragment.OnHeaderClickedListener {
+    method public void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
-  public static abstract interface HeadersSupportFragment.OnHeaderViewSelectedListener {
-    method public abstract void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  public static interface HeadersSupportFragment.OnHeaderViewSelectedListener {
+    method public void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
-  public abstract deprecated class OnboardingFragment extends android.app.Fragment {
-    ctor public OnboardingFragment();
-    method public final int getArrowBackgroundColor();
-    method public final int getArrowColor();
-    method protected final int getCurrentPageIndex();
-    method public final int getDescriptionViewTextColor();
-    method public final int getDotBackgroundColor();
-    method public final int getIconResourceId();
-    method public final int getLogoResourceId();
-    method protected abstract int getPageCount();
-    method protected abstract java.lang.CharSequence getPageDescription(int);
-    method protected abstract java.lang.CharSequence getPageTitle(int);
-    method public final java.lang.CharSequence getStartButtonText();
-    method public final int getTitleViewTextColor();
-    method protected final boolean isLogoAnimationFinished();
-    method protected void moveToNextPage();
-    method protected void moveToPreviousPage();
-    method protected abstract android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected abstract android.view.View onCreateContentView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateDescriptionAnimator();
-    method protected android.animation.Animator onCreateEnterAnimation();
-    method protected abstract android.view.View onCreateForegroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateLogoAnimation();
-    method protected android.animation.Animator onCreateTitleAnimator();
-    method protected void onFinishFragment();
-    method protected void onLogoAnimationFinished();
-    method protected void onPageChanged(int, int);
-    method public int onProvideTheme();
-    method public void setArrowBackgroundColor(int);
-    method public void setArrowColor(int);
-    method public void setDescriptionViewTextColor(int);
-    method public void setDotBackgroundColor(int);
-    method public final void setIconResouceId(int);
-    method public final void setLogoResourceId(int);
-    method public void setStartButtonText(java.lang.CharSequence);
-    method public void setTitleViewTextColor(int);
-    method protected final void startEnterAnimation(boolean);
+  @Deprecated public abstract class OnboardingFragment extends android.app.Fragment {
+    ctor @Deprecated public OnboardingFragment();
+    method @Deprecated @ColorInt public final int getArrowBackgroundColor();
+    method @Deprecated @ColorInt public final int getArrowColor();
+    method @Deprecated protected final int getCurrentPageIndex();
+    method @Deprecated @ColorInt public final int getDescriptionViewTextColor();
+    method @Deprecated @ColorInt public final int getDotBackgroundColor();
+    method @Deprecated public final int getIconResourceId();
+    method @Deprecated public final int getLogoResourceId();
+    method @Deprecated protected abstract int getPageCount();
+    method @Deprecated protected abstract CharSequence! getPageDescription(int);
+    method @Deprecated protected abstract CharSequence! getPageTitle(int);
+    method @Deprecated public final CharSequence! getStartButtonText();
+    method @Deprecated @ColorInt public final int getTitleViewTextColor();
+    method @Deprecated protected final boolean isLogoAnimationFinished();
+    method @Deprecated protected void moveToNextPage();
+    method @Deprecated protected void moveToPreviousPage();
+    method @Deprecated protected abstract android.view.View? onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method @Deprecated protected abstract android.view.View? onCreateContentView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method @Deprecated protected android.animation.Animator! onCreateDescriptionAnimator();
+    method @Deprecated protected android.animation.Animator? onCreateEnterAnimation();
+    method @Deprecated protected abstract android.view.View? onCreateForegroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method @Deprecated protected android.animation.Animator? onCreateLogoAnimation();
+    method @Deprecated protected android.animation.Animator! onCreateTitleAnimator();
+    method @Deprecated public android.view.View? onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated protected void onFinishFragment();
+    method @Deprecated protected void onLogoAnimationFinished();
+    method @Deprecated protected void onPageChanged(int, int);
+    method @Deprecated public int onProvideTheme();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public void setArrowBackgroundColor(@ColorInt int);
+    method @Deprecated public void setArrowColor(@ColorInt int);
+    method @Deprecated public void setDescriptionViewTextColor(@ColorInt int);
+    method @Deprecated public void setDotBackgroundColor(@ColorInt int);
+    method @Deprecated public final void setIconResouceId(int);
+    method @Deprecated public final void setLogoResourceId(int);
+    method @Deprecated public void setStartButtonText(CharSequence!);
+    method @Deprecated public void setTitleViewTextColor(@ColorInt int);
+    method @Deprecated protected final void startEnterAnimation(boolean);
   }
 
   public abstract class OnboardingSupportFragment extends androidx.fragment.app.Fragment {
     ctor public OnboardingSupportFragment();
-    method public final int getArrowBackgroundColor();
-    method public final int getArrowColor();
+    method @ColorInt public final int getArrowBackgroundColor();
+    method @ColorInt public final int getArrowColor();
     method protected final int getCurrentPageIndex();
-    method public final int getDescriptionViewTextColor();
-    method public final int getDotBackgroundColor();
+    method @ColorInt public final int getDescriptionViewTextColor();
+    method @ColorInt public final int getDotBackgroundColor();
     method public final int getIconResourceId();
     method public final int getLogoResourceId();
     method protected abstract int getPageCount();
-    method protected abstract java.lang.CharSequence getPageDescription(int);
-    method protected abstract java.lang.CharSequence getPageTitle(int);
-    method public final java.lang.CharSequence getStartButtonText();
-    method public final int getTitleViewTextColor();
+    method protected abstract CharSequence! getPageDescription(int);
+    method protected abstract CharSequence! getPageTitle(int);
+    method public final CharSequence! getStartButtonText();
+    method @ColorInt public final int getTitleViewTextColor();
     method protected final boolean isLogoAnimationFinished();
     method protected void moveToNextPage();
     method protected void moveToPreviousPage();
-    method protected abstract android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected abstract android.view.View onCreateContentView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateDescriptionAnimator();
-    method protected android.animation.Animator onCreateEnterAnimation();
-    method protected abstract android.view.View onCreateForegroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateLogoAnimation();
-    method protected android.animation.Animator onCreateTitleAnimator();
+    method protected abstract android.view.View? onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method protected abstract android.view.View? onCreateContentView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method protected android.animation.Animator! onCreateDescriptionAnimator();
+    method protected android.animation.Animator? onCreateEnterAnimation();
+    method protected abstract android.view.View? onCreateForegroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method protected android.animation.Animator? onCreateLogoAnimation();
+    method protected android.animation.Animator! onCreateTitleAnimator();
     method protected void onFinishFragment();
     method protected void onLogoAnimationFinished();
     method protected void onPageChanged(int, int);
     method public int onProvideTheme();
-    method public void setArrowBackgroundColor(int);
-    method public void setArrowColor(int);
-    method public void setDescriptionViewTextColor(int);
-    method public void setDotBackgroundColor(int);
+    method public void setArrowBackgroundColor(@ColorInt int);
+    method public void setArrowColor(@ColorInt int);
+    method public void setDescriptionViewTextColor(@ColorInt int);
+    method public void setDotBackgroundColor(@ColorInt int);
     method public final void setIconResouceId(int);
     method public final void setLogoResourceId(int);
-    method public void setStartButtonText(java.lang.CharSequence);
-    method public void setTitleViewTextColor(int);
+    method public void setStartButtonText(CharSequence!);
+    method public void setTitleViewTextColor(@ColorInt int);
     method protected final void startEnterAnimation(boolean);
   }
 
-  public deprecated class PlaybackFragment extends android.app.Fragment {
-    ctor public PlaybackFragment();
-    method public deprecated void fadeOut();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBackgroundType();
-    method public androidx.leanback.app.ProgressBarManager getProgressBarManager();
-    method public void hideControlsOverlay(boolean);
-    method public boolean isControlsOverlayAutoHideEnabled();
-    method public boolean isControlsOverlayVisible();
-    method public deprecated boolean isFadingEnabled();
-    method public void notifyPlaybackRowChanged();
-    method protected void onBufferingStateChanged(boolean);
-    method protected void onError(int, java.lang.CharSequence);
-    method protected void onVideoSizeChanged(int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setBackgroundType(int);
-    method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public deprecated void setFadingEnabled(boolean);
-    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setPlaybackRow(androidx.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method public void showControlsOverlay(boolean);
-    method public void tickle();
-    field public static final int BG_DARK = 1; // 0x1
-    field public static final int BG_LIGHT = 2; // 0x2
-    field public static final int BG_NONE = 0; // 0x0
+  @Deprecated public class PlaybackFragment extends android.app.Fragment {
+    ctor @Deprecated public PlaybackFragment();
+    method @Deprecated public void fadeOut();
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public int getBackgroundType();
+    method @Deprecated public androidx.leanback.app.ProgressBarManager! getProgressBarManager();
+    method @Deprecated public void hideControlsOverlay(boolean);
+    method @Deprecated public boolean isControlsOverlayAutoHideEnabled();
+    method @Deprecated public boolean isControlsOverlayVisible();
+    method @Deprecated public boolean isFadingEnabled();
+    method @Deprecated public void notifyPlaybackRowChanged();
+    method @Deprecated protected void onBufferingStateChanged(boolean);
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroy();
+    method @Deprecated public void onDestroyView();
+    method @Deprecated protected void onError(int, CharSequence!);
+    method @Deprecated public void onPause();
+    method @Deprecated public void onResume();
+    method @Deprecated public void onStart();
+    method @Deprecated public void onStop();
+    method @Deprecated protected void onVideoSizeChanged(int, int);
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setBackgroundType(int);
+    method @Deprecated public void setControlsOverlayAutoHideEnabled(boolean);
+    method @Deprecated public void setFadingEnabled(boolean);
+    method @Deprecated public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method @Deprecated public final void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method @Deprecated public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method @Deprecated public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method @Deprecated public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
+    method @Deprecated public void showControlsOverlay(boolean);
+    method @Deprecated public void tickle();
+    field @Deprecated public static final int BG_DARK = 1; // 0x1
+    field @Deprecated public static final int BG_LIGHT = 2; // 0x2
+    field @Deprecated public static final int BG_NONE = 0; // 0x0
   }
 
-  public deprecated class PlaybackFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
-    ctor public PlaybackFragmentGlueHost(androidx.leanback.app.PlaybackFragment);
-    method public void fadeOut();
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+  @Deprecated public class PlaybackFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
+    ctor @Deprecated public PlaybackFragmentGlueHost(androidx.leanback.app.PlaybackFragment!);
+    method @Deprecated public void fadeOut();
+    method @Deprecated public androidx.leanback.media.PlaybackGlueHost.PlayerCallback! getPlayerCallback();
+    method @Deprecated public void hideControlsOverlay(boolean);
+    method @Deprecated public boolean isControlsOverlayAutoHideEnabled();
+    method @Deprecated public boolean isControlsOverlayVisible();
+    method @Deprecated public void notifyPlaybackRowChanged();
+    method @Deprecated public void setControlsOverlayAutoHideEnabled(boolean);
+    method @Deprecated public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method @Deprecated public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method @Deprecated public void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method @Deprecated public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method @Deprecated public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method @Deprecated public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
+    method @Deprecated public void showControlsOverlay(boolean);
   }
 
   public class PlaybackSupportFragment extends androidx.fragment.app.Fragment {
     ctor public PlaybackSupportFragment();
-    method public deprecated void fadeOut();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
+    method @Deprecated public void fadeOut();
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
     method public int getBackgroundType();
-    method public androidx.leanback.app.ProgressBarManager getProgressBarManager();
+    method public androidx.leanback.app.ProgressBarManager! getProgressBarManager();
     method public void hideControlsOverlay(boolean);
     method public boolean isControlsOverlayAutoHideEnabled();
     method public boolean isControlsOverlayVisible();
-    method public deprecated boolean isFadingEnabled();
+    method @Deprecated public boolean isFadingEnabled();
     method public void notifyPlaybackRowChanged();
     method protected void onBufferingStateChanged(boolean);
-    method protected void onError(int, java.lang.CharSequence);
+    method protected void onError(int, CharSequence!);
     method protected void onVideoSizeChanged(int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
     method public void setBackgroundType(int);
     method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public deprecated void setFadingEnabled(boolean);
-    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setPlaybackRow(androidx.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+    method @Deprecated public void setFadingEnabled(boolean);
+    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, boolean);
     method public void showControlsOverlay(boolean);
@@ -709,9 +774,9 @@
   }
 
   public class PlaybackSupportFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
-    ctor public PlaybackSupportFragmentGlueHost(androidx.leanback.app.PlaybackSupportFragment);
+    ctor public PlaybackSupportFragmentGlueHost(androidx.leanback.app.PlaybackSupportFragment!);
     method public void fadeOut();
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
   }
 
   public final class ProgressBarManager {
@@ -721,173 +786,204 @@
     method public long getInitialDelay();
     method public void hide();
     method public void setInitialDelay(long);
-    method public void setProgressBarView(android.view.View);
-    method public void setRootView(android.view.ViewGroup);
+    method public void setProgressBarView(android.view.View!);
+    method public void setRootView(android.view.ViewGroup!);
     method public void show();
   }
 
-  public deprecated class RowsFragment extends android.app.Fragment implements androidx.leanback.app.BrowseFragment.MainFragmentAdapterProvider androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapterProvider {
-    ctor public RowsFragment();
-    method public deprecated void enableRowScaling(boolean);
-    method protected androidx.leanback.widget.VerticalGridView findGridViewFromRoot(android.view.View);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public androidx.leanback.app.BrowseFragment.MainFragmentAdapter getMainFragmentAdapter();
-    method public androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(int);
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public boolean onTransitionPrepare();
-    method public void setAlignment(int);
-    method public void setEntranceTransitionState(boolean);
-    method public void setExpand(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+  @Deprecated public class RowsFragment extends android.app.Fragment implements androidx.leanback.app.BrowseFragment.MainFragmentAdapterProvider androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapterProvider {
+    ctor @Deprecated public RowsFragment();
+    method @Deprecated public void enableRowScaling(boolean);
+    method @Deprecated protected androidx.leanback.widget.VerticalGridView! findGridViewFromRoot(android.view.View!);
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method @Deprecated public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentAdapter! getMainFragmentAdapter();
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
+    method @Deprecated public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public androidx.leanback.widget.BaseOnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method @Deprecated public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! getRowViewHolder(int);
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
+    method @Deprecated public boolean isScrolling();
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onTransitionEnd();
+    method @Deprecated public boolean onTransitionPrepare();
+    method @Deprecated public void onTransitionStart();
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setAlignment(int);
+    method @Deprecated public void setEntranceTransitionState(boolean);
+    method @Deprecated public void setExpand(boolean);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method @Deprecated public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method @Deprecated public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
   }
 
-  public static class RowsFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentAdapter {
-    ctor public RowsFragment.MainFragmentAdapter(androidx.leanback.app.RowsFragment);
+  @Deprecated public static class RowsFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentAdapter<androidx.leanback.app.RowsFragment> {
+    ctor @Deprecated public RowsFragment.MainFragmentAdapter(androidx.leanback.app.RowsFragment!);
   }
 
-  public static deprecated class RowsFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter {
-    ctor public RowsFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsFragment);
+  @Deprecated public static class RowsFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter<androidx.leanback.app.RowsFragment> {
+    ctor @Deprecated public RowsFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsFragment!);
   }
 
   public class RowsSupportFragment extends androidx.fragment.app.Fragment implements androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapterProvider androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapterProvider {
     ctor public RowsSupportFragment();
-    method public deprecated void enableRowScaling(boolean);
-    method protected androidx.leanback.widget.VerticalGridView findGridViewFromRoot(android.view.View);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter getMainFragmentAdapter();
-    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(int);
+    method @Deprecated public void enableRowScaling(boolean);
+    method protected androidx.leanback.widget.VerticalGridView! findGridViewFromRoot(android.view.View!);
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter! getMainFragmentAdapter();
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
+    method public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method public androidx.leanback.widget.BaseOnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! getRowViewHolder(int);
+    method public int getSelectedPosition();
+    method public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
     method public boolean isScrolling();
     method public void onTransitionEnd();
     method public boolean onTransitionPrepare();
+    method public void onTransitionStart();
+    method public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
     method public void setAlignment(int);
     method public void setEntranceTransitionState(boolean);
     method public void setExpand(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method public void setSelectedPosition(int);
+    method public void setSelectedPosition(int, boolean);
   }
 
-  public static class RowsSupportFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter {
-    ctor public RowsSupportFragment.MainFragmentAdapter(androidx.leanback.app.RowsSupportFragment);
+  public static class RowsSupportFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter<androidx.leanback.app.RowsSupportFragment> {
+    ctor public RowsSupportFragment.MainFragmentAdapter(androidx.leanback.app.RowsSupportFragment!);
   }
 
-  public static class RowsSupportFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter {
-    ctor public RowsSupportFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsSupportFragment);
+  public static class RowsSupportFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter<androidx.leanback.app.RowsSupportFragment> {
+    ctor public RowsSupportFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsSupportFragment!);
   }
 
-  public deprecated class SearchFragment extends android.app.Fragment {
-    ctor public SearchFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String);
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, java.lang.String);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public android.content.Intent getRecognizerIntent();
-    method public androidx.leanback.app.RowsFragment getRowsFragment();
-    method public java.lang.String getTitle();
-    method public static androidx.leanback.app.SearchFragment newInstance(java.lang.String);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchQuery(java.lang.String, boolean);
-    method public void setSearchQuery(android.content.Intent, boolean);
-    method public void setSearchResultProvider(androidx.leanback.app.SearchFragment.SearchResultProvider);
-    method public deprecated void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback);
-    method public void setTitle(java.lang.String);
-    method public void startRecognition();
+  @Deprecated public class SearchFragment extends android.app.Fragment {
+    ctor @Deprecated public SearchFragment();
+    method @Deprecated public static android.os.Bundle! createArgs(android.os.Bundle!, String!);
+    method @Deprecated public static android.os.Bundle! createArgs(android.os.Bundle!, String!, String!);
+    method @Deprecated public void displayCompletions(java.util.List<java.lang.String>!);
+    method @Deprecated public void displayCompletions(android.view.inputmethod.CompletionInfo[]!);
+    method @Deprecated public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method @Deprecated public android.content.Intent! getRecognizerIntent();
+    method @Deprecated public androidx.leanback.app.RowsFragment! getRowsFragment();
+    method @Deprecated public String! getTitle();
+    method @Deprecated public static androidx.leanback.app.SearchFragment! newInstance(String!);
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroy();
+    method @Deprecated public void onPause();
+    method @Deprecated public void onRequestPermissionsResult(int, String[]!, int[]!);
+    method @Deprecated public void onResume();
+    method @Deprecated public void onStart();
+    method @Deprecated public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method @Deprecated public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors!);
+    method @Deprecated public void setSearchQuery(String!, boolean);
+    method @Deprecated public void setSearchQuery(android.content.Intent!, boolean);
+    method @Deprecated public void setSearchResultProvider(androidx.leanback.app.SearchFragment.SearchResultProvider!);
+    method @Deprecated public void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback!);
+    method @Deprecated public void setTitle(String!);
+    method @Deprecated public void startRecognition();
   }
 
-  public static abstract interface SearchFragment.SearchResultProvider {
-    method public abstract androidx.leanback.widget.ObjectAdapter getResultsAdapter();
-    method public abstract boolean onQueryTextChange(java.lang.String);
-    method public abstract boolean onQueryTextSubmit(java.lang.String);
+  @Deprecated public static interface SearchFragment.SearchResultProvider {
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getResultsAdapter();
+    method @Deprecated public boolean onQueryTextChange(String!);
+    method @Deprecated public boolean onQueryTextSubmit(String!);
   }
 
   public class SearchSupportFragment extends androidx.fragment.app.Fragment {
     ctor public SearchSupportFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String);
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, java.lang.String);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public android.content.Intent getRecognizerIntent();
-    method public androidx.leanback.app.RowsSupportFragment getRowsSupportFragment();
-    method public java.lang.String getTitle();
-    method public static androidx.leanback.app.SearchSupportFragment newInstance(java.lang.String);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchQuery(java.lang.String, boolean);
-    method public void setSearchQuery(android.content.Intent, boolean);
-    method public void setSearchResultProvider(androidx.leanback.app.SearchSupportFragment.SearchResultProvider);
-    method public deprecated void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback);
-    method public void setTitle(java.lang.String);
+    method public static android.os.Bundle! createArgs(android.os.Bundle!, String!);
+    method public static android.os.Bundle! createArgs(android.os.Bundle!, String!, String!);
+    method public void displayCompletions(java.util.List<java.lang.String>!);
+    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]!);
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public android.content.Intent! getRecognizerIntent();
+    method public androidx.leanback.app.RowsSupportFragment! getRowsSupportFragment();
+    method public String! getTitle();
+    method public static androidx.leanback.app.SearchSupportFragment! newInstance(String!);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchQuery(String!, boolean);
+    method public void setSearchQuery(android.content.Intent!, boolean);
+    method public void setSearchResultProvider(androidx.leanback.app.SearchSupportFragment.SearchResultProvider!);
+    method @Deprecated public void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback!);
+    method public void setTitle(String!);
     method public void startRecognition();
   }
 
-  public static abstract interface SearchSupportFragment.SearchResultProvider {
-    method public abstract androidx.leanback.widget.ObjectAdapter getResultsAdapter();
-    method public abstract boolean onQueryTextChange(java.lang.String);
-    method public abstract boolean onQueryTextSubmit(java.lang.String);
+  public static interface SearchSupportFragment.SearchResultProvider {
+    method public androidx.leanback.widget.ObjectAdapter! getResultsAdapter();
+    method public boolean onQueryTextChange(String!);
+    method public boolean onQueryTextSubmit(String!);
   }
 
-  public deprecated class VerticalGridFragment extends androidx.leanback.app.BaseFragment {
-    ctor public VerticalGridFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.VerticalGridPresenter getGridPresenter();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
+  @Deprecated public class VerticalGridFragment extends androidx.leanback.app.BaseFragment {
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public androidx.leanback.widget.VerticalGridPresenter! getGridPresenter();
+    method @Deprecated public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int);
   }
 
   public class VerticalGridSupportFragment extends androidx.leanback.app.BaseSupportFragment {
-    ctor public VerticalGridSupportFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.VerticalGridPresenter getGridPresenter();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public androidx.leanback.widget.VerticalGridPresenter! getGridPresenter();
+    method public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
     method public void setSelectedPosition(int);
   }
 
-  public deprecated class VideoFragment extends androidx.leanback.app.PlaybackFragment {
-    ctor public VideoFragment();
-    method public android.view.SurfaceView getSurfaceView();
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+  @Deprecated public class VideoFragment extends androidx.leanback.app.PlaybackFragment {
+    ctor @Deprecated public VideoFragment();
+    method @Deprecated public android.view.SurfaceView! getSurfaceView();
+    method @Deprecated public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
-  public deprecated class VideoFragmentGlueHost extends androidx.leanback.app.PlaybackFragmentGlueHost implements androidx.leanback.media.SurfaceHolderGlueHost {
-    ctor public VideoFragmentGlueHost(androidx.leanback.app.VideoFragment);
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+  @Deprecated public class VideoFragmentGlueHost extends androidx.leanback.app.PlaybackFragmentGlueHost implements androidx.leanback.media.SurfaceHolderGlueHost {
+    ctor @Deprecated public VideoFragmentGlueHost(androidx.leanback.app.VideoFragment!);
+    method @Deprecated public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
   public class VideoSupportFragment extends androidx.leanback.app.PlaybackSupportFragment {
     ctor public VideoSupportFragment();
-    method public android.view.SurfaceView getSurfaceView();
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+    method public android.view.SurfaceView! getSurfaceView();
+    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
   public class VideoSupportFragmentGlueHost extends androidx.leanback.app.PlaybackSupportFragmentGlueHost implements androidx.leanback.media.SurfaceHolderGlueHost {
-    ctor public VideoSupportFragmentGlueHost(androidx.leanback.app.VideoSupportFragment);
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+    ctor public VideoSupportFragmentGlueHost(androidx.leanback.app.VideoSupportFragment!);
+    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
 }
@@ -896,9 +992,9 @@
 
   public abstract class CursorMapper {
     ctor public CursorMapper();
-    method protected abstract java.lang.Object bind(android.database.Cursor);
-    method protected abstract void bindColumns(android.database.Cursor);
-    method public java.lang.Object convert(android.database.Cursor);
+    method protected abstract Object! bind(android.database.Cursor!);
+    method protected abstract void bindColumns(android.database.Cursor!);
+    method public Object! convert(android.database.Cursor!);
   }
 
 }
@@ -907,96 +1003,96 @@
 
   public class BoundsRule {
     ctor public BoundsRule();
-    ctor public BoundsRule(androidx.leanback.graphics.BoundsRule);
-    method public void calculateBounds(android.graphics.Rect, android.graphics.Rect);
-    field public androidx.leanback.graphics.BoundsRule.ValueRule bottom;
-    field public androidx.leanback.graphics.BoundsRule.ValueRule left;
-    field public androidx.leanback.graphics.BoundsRule.ValueRule right;
-    field public androidx.leanback.graphics.BoundsRule.ValueRule top;
+    ctor public BoundsRule(androidx.leanback.graphics.BoundsRule!);
+    method public void calculateBounds(android.graphics.Rect!, android.graphics.Rect!);
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! bottom;
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! left;
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! right;
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! top;
   }
 
   public static final class BoundsRule.ValueRule {
-    method public static androidx.leanback.graphics.BoundsRule.ValueRule absoluteValue(int);
+    method public static androidx.leanback.graphics.BoundsRule.ValueRule! absoluteValue(int);
     method public int getAbsoluteValue();
     method public float getFraction();
-    method public static androidx.leanback.graphics.BoundsRule.ValueRule inheritFromParent(float);
-    method public static androidx.leanback.graphics.BoundsRule.ValueRule inheritFromParentWithOffset(float, int);
+    method public static androidx.leanback.graphics.BoundsRule.ValueRule! inheritFromParent(float);
+    method public static androidx.leanback.graphics.BoundsRule.ValueRule! inheritFromParentWithOffset(float, int);
     method public void setAbsoluteValue(int);
     method public void setFraction(float);
   }
 
   public final class ColorFilterCache {
-    method public static androidx.leanback.graphics.ColorFilterCache getColorFilterCache(int);
-    method public android.graphics.ColorFilter getFilterForLevel(float);
+    method public static androidx.leanback.graphics.ColorFilterCache! getColorFilterCache(int);
+    method public android.graphics.ColorFilter! getFilterForLevel(float);
   }
 
   public final class ColorFilterDimmer {
-    method public void applyFilterToView(android.view.View);
-    method public static androidx.leanback.graphics.ColorFilterDimmer create(androidx.leanback.graphics.ColorFilterCache, float, float);
-    method public static androidx.leanback.graphics.ColorFilterDimmer createDefault(android.content.Context);
-    method public android.graphics.ColorFilter getColorFilter();
-    method public android.graphics.Paint getPaint();
+    method public void applyFilterToView(android.view.View!);
+    method public static androidx.leanback.graphics.ColorFilterDimmer! create(androidx.leanback.graphics.ColorFilterCache!, float, float);
+    method public static androidx.leanback.graphics.ColorFilterDimmer! createDefault(android.content.Context!);
+    method public android.graphics.ColorFilter! getColorFilter();
+    method public android.graphics.Paint! getPaint();
     method public void setActiveLevel(float);
   }
 
   public final class ColorOverlayDimmer {
     method public int applyToColor(int);
-    method public static androidx.leanback.graphics.ColorOverlayDimmer createColorOverlayDimmer(int, float, float);
-    method public static androidx.leanback.graphics.ColorOverlayDimmer createDefault(android.content.Context);
-    method public void drawColorOverlay(android.graphics.Canvas, android.view.View, boolean);
+    method public static androidx.leanback.graphics.ColorOverlayDimmer! createColorOverlayDimmer(int, float, float);
+    method public static androidx.leanback.graphics.ColorOverlayDimmer! createDefault(android.content.Context!);
+    method public void drawColorOverlay(android.graphics.Canvas!, android.view.View!, boolean);
     method public int getAlpha();
     method public float getAlphaFloat();
-    method public android.graphics.Paint getPaint();
+    method public android.graphics.Paint! getPaint();
     method public boolean needsDraw();
     method public void setActiveLevel(float);
   }
 
   public class CompositeDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
     ctor public CompositeDrawable();
-    method public void addChildDrawable(android.graphics.drawable.Drawable);
-    method public void draw(android.graphics.Canvas);
-    method public androidx.leanback.graphics.CompositeDrawable.ChildDrawable getChildAt(int);
+    method public void addChildDrawable(android.graphics.drawable.Drawable!);
+    method public void draw(android.graphics.Canvas!);
+    method public androidx.leanback.graphics.CompositeDrawable.ChildDrawable! getChildAt(int);
     method public int getChildCount();
-    method public android.graphics.drawable.Drawable getDrawable(int);
+    method public android.graphics.drawable.Drawable! getDrawable(int);
     method public int getOpacity();
-    method public void invalidateDrawable(android.graphics.drawable.Drawable);
+    method public void invalidateDrawable(android.graphics.drawable.Drawable!);
     method public void removeChild(int);
-    method public void removeDrawable(android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
+    method public void removeDrawable(android.graphics.drawable.Drawable!);
+    method public void scheduleDrawable(android.graphics.drawable.Drawable!, Runnable!, long);
     method public void setAlpha(int);
-    method public void setChildDrawableAt(int, android.graphics.drawable.Drawable);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+    method public void setChildDrawableAt(int, android.graphics.drawable.Drawable!);
+    method public void setColorFilter(android.graphics.ColorFilter!);
+    method public void unscheduleDrawable(android.graphics.drawable.Drawable!, Runnable!);
   }
 
   public static final class CompositeDrawable.ChildDrawable {
-    ctor public CompositeDrawable.ChildDrawable(android.graphics.drawable.Drawable, androidx.leanback.graphics.CompositeDrawable);
-    method public androidx.leanback.graphics.BoundsRule getBoundsRule();
-    method public android.graphics.drawable.Drawable getDrawable();
+    ctor public CompositeDrawable.ChildDrawable(android.graphics.drawable.Drawable!, androidx.leanback.graphics.CompositeDrawable!);
+    method public androidx.leanback.graphics.BoundsRule! getBoundsRule();
+    method public android.graphics.drawable.Drawable! getDrawable();
     method public void recomputeBounds();
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> BOTTOM_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> BOTTOM_FRACTION;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> LEFT_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> LEFT_FRACTION;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> RIGHT_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> RIGHT_FRACTION;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> TOP_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> TOP_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! BOTTOM_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! BOTTOM_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! LEFT_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! LEFT_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! RIGHT_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! RIGHT_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! TOP_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! TOP_FRACTION;
   }
 
   public class FitWidthBitmapDrawable extends android.graphics.drawable.Drawable {
     ctor public FitWidthBitmapDrawable();
-    method public void draw(android.graphics.Canvas);
-    method public android.graphics.Bitmap getBitmap();
+    method public void draw(android.graphics.Canvas!);
+    method public android.graphics.Bitmap! getBitmap();
     method public int getOpacity();
-    method public android.graphics.Rect getSource();
+    method public android.graphics.Rect! getSource();
     method public int getVerticalOffset();
     method public void setAlpha(int);
-    method public void setBitmap(android.graphics.Bitmap);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setSource(android.graphics.Rect);
+    method public void setBitmap(android.graphics.Bitmap!);
+    method public void setColorFilter(android.graphics.ColorFilter!);
+    method public void setSource(android.graphics.Rect!);
     method public void setVerticalOffset(int);
-    field public static final android.util.Property<androidx.leanback.graphics.FitWidthBitmapDrawable, java.lang.Integer> PROPERTY_VERTICAL_OFFSET;
+    field public static final android.util.Property<androidx.leanback.graphics.FitWidthBitmapDrawable,java.lang.Integer>! PROPERTY_VERTICAL_OFFSET;
   }
 
 }
@@ -1004,34 +1100,38 @@
 package androidx.leanback.media {
 
   public class MediaControllerAdapter extends androidx.leanback.media.PlayerAdapter {
-    ctor public MediaControllerAdapter(android.support.v4.media.session.MediaControllerCompat);
-    method public android.graphics.drawable.Drawable getMediaArt(android.content.Context);
-    method public android.support.v4.media.session.MediaControllerCompat getMediaController();
-    method public java.lang.CharSequence getMediaSubtitle();
-    method public java.lang.CharSequence getMediaTitle();
+    ctor public MediaControllerAdapter(android.support.v4.media.session.MediaControllerCompat!);
+    method public android.graphics.drawable.Drawable! getMediaArt(android.content.Context!);
+    method public android.support.v4.media.session.MediaControllerCompat! getMediaController();
+    method public CharSequence! getMediaSubtitle();
+    method public CharSequence! getMediaTitle();
     method public void pause();
     method public void play();
   }
 
-  public abstract deprecated class MediaControllerGlue extends androidx.leanback.media.PlaybackControlGlue {
-    ctor public MediaControllerGlue(android.content.Context, int[], int[]);
-    method public void attachToMediaController(android.support.v4.media.session.MediaControllerCompat);
-    method public void detach();
-    method public int getCurrentPosition();
-    method public int getCurrentSpeedId();
-    method public android.graphics.drawable.Drawable getMediaArt();
-    method public final android.support.v4.media.session.MediaControllerCompat getMediaController();
-    method public int getMediaDuration();
-    method public java.lang.CharSequence getMediaSubtitle();
-    method public java.lang.CharSequence getMediaTitle();
-    method public long getSupportedActions();
-    method public boolean hasValidMedia();
-    method public boolean isMediaPlaying();
+  @Deprecated public abstract class MediaControllerGlue extends androidx.leanback.media.PlaybackControlGlue {
+    ctor @Deprecated public MediaControllerGlue(android.content.Context!, int[]!, int[]!);
+    method @Deprecated public void attachToMediaController(android.support.v4.media.session.MediaControllerCompat!);
+    method @Deprecated public void detach();
+    method @Deprecated public int getCurrentPosition();
+    method @Deprecated public int getCurrentSpeedId();
+    method @Deprecated public android.graphics.drawable.Drawable! getMediaArt();
+    method @Deprecated public final android.support.v4.media.session.MediaControllerCompat! getMediaController();
+    method @Deprecated public int getMediaDuration();
+    method @Deprecated public CharSequence! getMediaSubtitle();
+    method @Deprecated public CharSequence! getMediaTitle();
+    method @Deprecated public long getSupportedActions();
+    method @Deprecated public boolean hasValidMedia();
+    method @Deprecated public boolean isMediaPlaying();
+    method @Deprecated public void next();
+    method @Deprecated public void pause();
+    method @Deprecated public void play(int);
+    method @Deprecated public void previous();
   }
 
   public class MediaPlayerAdapter extends androidx.leanback.media.PlayerAdapter {
-    ctor public MediaPlayerAdapter(android.content.Context);
-    method public final android.media.MediaPlayer getMediaPlayer();
+    ctor public MediaPlayerAdapter(android.content.Context!);
+    method public final android.media.MediaPlayer! getMediaPlayer();
     method public int getProgressUpdatingInterval();
     method protected boolean onError(int, int);
     method protected boolean onInfo(int, int);
@@ -1040,17 +1140,17 @@
     method public void play();
     method public void release();
     method public void reset();
-    method public boolean setDataSource(android.net.Uri);
+    method public boolean setDataSource(android.net.Uri!);
   }
 
-  public class PlaybackBannerControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue {
-    ctor public PlaybackBannerControlGlue(android.content.Context, int[], T);
-    ctor public PlaybackBannerControlGlue(android.content.Context, int[], int[], T);
+  public class PlaybackBannerControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue<T> {
+    ctor public PlaybackBannerControlGlue(android.content.Context!, int[]!, T!);
+    ctor public PlaybackBannerControlGlue(android.content.Context!, int[]!, int[]!, T!);
     method public int[] getFastForwardSpeeds();
     method public int[] getRewindSpeeds();
-    method public void onActionClicked(androidx.leanback.widget.Action);
-    method protected androidx.leanback.widget.PlaybackRowPresenter onCreateRowPresenter();
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
+    method public void onActionClicked(androidx.leanback.widget.Action!);
+    method protected androidx.leanback.widget.PlaybackRowPresenter! onCreateRowPresenter();
+    method public boolean onKey(android.view.View!, int, android.view.KeyEvent!);
     field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
     field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
     field public static final int ACTION_FAST_FORWARD = 128; // 0x80
@@ -1069,38 +1169,38 @@
   }
 
   public abstract class PlaybackBaseControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackGlue implements androidx.leanback.widget.OnActionClickedListener android.view.View.OnKeyListener {
-    ctor public PlaybackBaseControlGlue(android.content.Context, T);
-    method public android.graphics.drawable.Drawable getArt();
+    ctor public PlaybackBaseControlGlue(android.content.Context!, T!);
+    method public android.graphics.drawable.Drawable! getArt();
     method public final long getBufferedPosition();
-    method public androidx.leanback.widget.PlaybackControlsRow getControlsRow();
+    method public androidx.leanback.widget.PlaybackControlsRow! getControlsRow();
     method public long getCurrentPosition();
     method public final long getDuration();
-    method public androidx.leanback.widget.PlaybackRowPresenter getPlaybackRowPresenter();
-    method public final T getPlayerAdapter();
-    method public java.lang.CharSequence getSubtitle();
+    method public androidx.leanback.widget.PlaybackRowPresenter! getPlaybackRowPresenter();
+    method public final T! getPlayerAdapter();
+    method public CharSequence! getSubtitle();
     method public long getSupportedActions();
-    method public java.lang.CharSequence getTitle();
+    method public CharSequence! getTitle();
     method public boolean isControlsOverlayAutoHideEnabled();
     method public final boolean isPlaying();
     method public final boolean isPrepared();
-    method protected static void notifyItemChanged(androidx.leanback.widget.ArrayObjectAdapter, java.lang.Object);
-    method protected void onCreatePrimaryActions(androidx.leanback.widget.ArrayObjectAdapter);
-    method protected abstract androidx.leanback.widget.PlaybackRowPresenter onCreateRowPresenter();
-    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter);
+    method protected static void notifyItemChanged(androidx.leanback.widget.ArrayObjectAdapter!, Object!);
+    method protected void onCreatePrimaryActions(androidx.leanback.widget.ArrayObjectAdapter!);
+    method protected abstract androidx.leanback.widget.PlaybackRowPresenter! onCreateRowPresenter();
+    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter!);
     method protected void onMetadataChanged();
-    method protected void onPlayCompleted();
-    method protected void onPlayStateChanged();
-    method protected void onPreparedStateChanged();
-    method protected void onUpdateBufferedProgress();
-    method protected void onUpdateDuration();
-    method protected void onUpdateProgress();
+    method @CallSuper protected void onPlayCompleted();
+    method @CallSuper protected void onPlayStateChanged();
+    method @CallSuper protected void onPreparedStateChanged();
+    method @CallSuper protected void onUpdateBufferedProgress();
+    method @CallSuper protected void onUpdateDuration();
+    method @CallSuper protected void onUpdateProgress();
     method public final void seekTo(long);
-    method public void setArt(android.graphics.drawable.Drawable);
+    method public void setArt(android.graphics.drawable.Drawable!);
     method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
-    method public void setSubtitle(java.lang.CharSequence);
-    method public void setTitle(java.lang.CharSequence);
+    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow!);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method public void setSubtitle(CharSequence!);
+    method public void setTitle(CharSequence!);
     field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
     field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
     field public static final int ACTION_FAST_FORWARD = 128; // 0x80
@@ -1113,38 +1213,38 @@
   }
 
   public abstract class PlaybackControlGlue extends androidx.leanback.media.PlaybackGlue implements androidx.leanback.widget.OnActionClickedListener android.view.View.OnKeyListener {
-    ctor public PlaybackControlGlue(android.content.Context, int[]);
-    ctor public PlaybackControlGlue(android.content.Context, int[], int[]);
+    ctor public PlaybackControlGlue(android.content.Context!, int[]!);
+    ctor public PlaybackControlGlue(android.content.Context!, int[]!, int[]!);
     method public void enableProgressUpdating(boolean);
-    method public androidx.leanback.widget.PlaybackControlsRow getControlsRow();
-    method public deprecated androidx.leanback.widget.PlaybackControlsRowPresenter getControlsRowPresenter();
+    method public androidx.leanback.widget.PlaybackControlsRow! getControlsRow();
+    method @Deprecated public androidx.leanback.widget.PlaybackControlsRowPresenter! getControlsRowPresenter();
     method public abstract int getCurrentPosition();
     method public abstract int getCurrentSpeedId();
-    method public int[] getFastForwardSpeeds();
-    method public abstract android.graphics.drawable.Drawable getMediaArt();
+    method public int[]! getFastForwardSpeeds();
+    method public abstract android.graphics.drawable.Drawable! getMediaArt();
     method public abstract int getMediaDuration();
-    method public abstract java.lang.CharSequence getMediaSubtitle();
-    method public abstract java.lang.CharSequence getMediaTitle();
-    method public androidx.leanback.widget.PlaybackRowPresenter getPlaybackRowPresenter();
-    method public int[] getRewindSpeeds();
+    method public abstract CharSequence! getMediaSubtitle();
+    method public abstract CharSequence! getMediaTitle();
+    method public androidx.leanback.widget.PlaybackRowPresenter! getPlaybackRowPresenter();
+    method public int[]! getRewindSpeeds();
     method public abstract long getSupportedActions();
     method public int getUpdatePeriod();
     method public abstract boolean hasValidMedia();
     method public boolean isFadingEnabled();
     method public abstract boolean isMediaPlaying();
-    method public void onActionClicked(androidx.leanback.widget.Action);
+    method public void onActionClicked(androidx.leanback.widget.Action!);
     method protected void onCreateControlsRowAndPresenter();
-    method protected void onCreatePrimaryActions(androidx.leanback.widget.SparseArrayObjectAdapter);
-    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter);
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
+    method protected void onCreatePrimaryActions(androidx.leanback.widget.SparseArrayObjectAdapter!);
+    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter!);
+    method public boolean onKey(android.view.View!, int, android.view.KeyEvent!);
     method protected void onMetadataChanged();
     method protected void onStateChanged();
     method public void play(int);
     method public final void play();
-    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow);
-    method public deprecated void setControlsRowPresenter(androidx.leanback.widget.PlaybackControlsRowPresenter);
+    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow!);
+    method @Deprecated public void setControlsRowPresenter(androidx.leanback.widget.PlaybackControlsRowPresenter!);
     method public void setFadingEnabled(boolean);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
     method public void updateProgress();
     field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
     field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
@@ -1164,16 +1264,16 @@
   }
 
   public abstract class PlaybackGlue {
-    ctor public PlaybackGlue(android.content.Context);
-    method public void addPlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback);
-    method public android.content.Context getContext();
-    method public androidx.leanback.media.PlaybackGlueHost getHost();
-    method protected java.util.List<androidx.leanback.media.PlaybackGlue.PlayerCallback> getPlayerCallbacks();
+    ctor public PlaybackGlue(android.content.Context!);
+    method public void addPlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback!);
+    method public android.content.Context! getContext();
+    method public androidx.leanback.media.PlaybackGlueHost! getHost();
+    method protected java.util.List<androidx.leanback.media.PlaybackGlue.PlayerCallback>! getPlayerCallbacks();
     method public boolean isPlaying();
     method public boolean isPrepared();
     method public void next();
-    method protected void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost);
-    method protected void onDetachedFromHost();
+    method @CallSuper protected void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost!);
+    method @CallSuper protected void onDetachedFromHost();
     method protected void onHostPause();
     method protected void onHostResume();
     method protected void onHostStart();
@@ -1182,36 +1282,36 @@
     method public void play();
     method public void playWhenPrepared();
     method public void previous();
-    method public void removePlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback);
-    method public final void setHost(androidx.leanback.media.PlaybackGlueHost);
+    method public void removePlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback!);
+    method public final void setHost(androidx.leanback.media.PlaybackGlueHost!);
   }
 
-  public static abstract class PlaybackGlue.PlayerCallback {
+  public abstract static class PlaybackGlue.PlayerCallback {
     ctor public PlaybackGlue.PlayerCallback();
-    method public void onPlayCompleted(androidx.leanback.media.PlaybackGlue);
-    method public void onPlayStateChanged(androidx.leanback.media.PlaybackGlue);
-    method public void onPreparedStateChanged(androidx.leanback.media.PlaybackGlue);
+    method public void onPlayCompleted(androidx.leanback.media.PlaybackGlue!);
+    method public void onPlayStateChanged(androidx.leanback.media.PlaybackGlue!);
+    method public void onPreparedStateChanged(androidx.leanback.media.PlaybackGlue!);
   }
 
   public abstract class PlaybackGlueHost {
     ctor public PlaybackGlueHost();
-    method public deprecated void fadeOut();
-    method public androidx.leanback.media.PlaybackGlueHost.PlayerCallback getPlayerCallback();
+    method @Deprecated public void fadeOut();
+    method public androidx.leanback.media.PlaybackGlueHost.PlayerCallback! getPlayerCallback();
     method public void hideControlsOverlay(boolean);
     method public boolean isControlsOverlayAutoHideEnabled();
     method public boolean isControlsOverlayVisible();
     method public void notifyPlaybackRowChanged();
     method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public deprecated void setFadingEnabled(boolean);
-    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setPlaybackRow(androidx.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
+    method @Deprecated public void setFadingEnabled(boolean);
+    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method public void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
     method public void showControlsOverlay(boolean);
   }
 
-  public static abstract class PlaybackGlueHost.HostCallback {
+  public abstract static class PlaybackGlueHost.HostCallback {
     ctor public PlaybackGlueHost.HostCallback();
     method public void onHostDestroy();
     method public void onHostPause();
@@ -1223,40 +1323,40 @@
   public static class PlaybackGlueHost.PlayerCallback {
     ctor public PlaybackGlueHost.PlayerCallback();
     method public void onBufferingStateChanged(boolean);
-    method public void onError(int, java.lang.CharSequence);
+    method public void onError(int, CharSequence!);
     method public void onVideoSizeChanged(int, int);
   }
 
-  public class PlaybackTransportControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue {
-    ctor public PlaybackTransportControlGlue(android.content.Context, T);
-    method public final androidx.leanback.widget.PlaybackSeekDataProvider getSeekProvider();
+  public class PlaybackTransportControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue<T> {
+    ctor public PlaybackTransportControlGlue(android.content.Context!, T!);
+    method public final androidx.leanback.widget.PlaybackSeekDataProvider! getSeekProvider();
     method public final boolean isSeekEnabled();
-    method public void onActionClicked(androidx.leanback.widget.Action);
-    method protected androidx.leanback.widget.PlaybackRowPresenter onCreateRowPresenter();
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
+    method public void onActionClicked(androidx.leanback.widget.Action!);
+    method protected androidx.leanback.widget.PlaybackRowPresenter! onCreateRowPresenter();
+    method public boolean onKey(android.view.View!, int, android.view.KeyEvent!);
     method public final void setSeekEnabled(boolean);
-    method public final void setSeekProvider(androidx.leanback.widget.PlaybackSeekDataProvider);
+    method public final void setSeekProvider(androidx.leanback.widget.PlaybackSeekDataProvider!);
   }
 
   public abstract class PlayerAdapter {
     ctor public PlayerAdapter();
     method public void fastForward();
     method public long getBufferedPosition();
-    method public final androidx.leanback.media.PlayerAdapter.Callback getCallback();
+    method public final androidx.leanback.media.PlayerAdapter.Callback! getCallback();
     method public long getCurrentPosition();
     method public long getDuration();
     method public long getSupportedActions();
     method public boolean isPlaying();
     method public boolean isPrepared();
     method public void next();
-    method public void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost);
+    method public void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost!);
     method public void onDetachedFromHost();
     method public abstract void pause();
     method public abstract void play();
     method public void previous();
     method public void rewind();
     method public void seekTo(long);
-    method public final void setCallback(androidx.leanback.media.PlayerAdapter.Callback);
+    method public final void setCallback(androidx.leanback.media.PlayerAdapter.Callback!);
     method public void setProgressUpdatingEnabled(boolean);
     method public void setRepeatAction(int);
     method public void setShuffleAction(int);
@@ -1264,20 +1364,20 @@
 
   public static class PlayerAdapter.Callback {
     ctor public PlayerAdapter.Callback();
-    method public void onBufferedPositionChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onBufferingStateChanged(androidx.leanback.media.PlayerAdapter, boolean);
-    method public void onCurrentPositionChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onDurationChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onError(androidx.leanback.media.PlayerAdapter, int, java.lang.String);
-    method public void onMetadataChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onPlayCompleted(androidx.leanback.media.PlayerAdapter);
-    method public void onPlayStateChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onPreparedStateChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onVideoSizeChanged(androidx.leanback.media.PlayerAdapter, int, int);
+    method public void onBufferedPositionChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onBufferingStateChanged(androidx.leanback.media.PlayerAdapter!, boolean);
+    method public void onCurrentPositionChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onDurationChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onError(androidx.leanback.media.PlayerAdapter!, int, String!);
+    method public void onMetadataChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onPlayCompleted(androidx.leanback.media.PlayerAdapter!);
+    method public void onPlayStateChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onPreparedStateChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onVideoSizeChanged(androidx.leanback.media.PlayerAdapter!, int, int);
   }
 
-  public abstract interface SurfaceHolderGlueHost {
-    method public abstract void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+  public interface SurfaceHolderGlueHost {
+    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
 }
@@ -1285,11 +1385,11 @@
 package androidx.leanback.system {
 
   public class Settings {
-    method public boolean getBoolean(java.lang.String);
-    method public static androidx.leanback.system.Settings getInstance(android.content.Context);
-    method public void setBoolean(java.lang.String, boolean);
-    field public static final java.lang.String OUTLINE_CLIPPING_DISABLED = "OUTLINE_CLIPPING_DISABLED";
-    field public static final java.lang.String PREFER_STATIC_SHADOWS = "PREFER_STATIC_SHADOWS";
+    method public boolean getBoolean(String!);
+    method public static androidx.leanback.system.Settings! getInstance(android.content.Context!);
+    method public void setBoolean(String!, boolean);
+    field public static final String OUTLINE_CLIPPING_DISABLED = "OUTLINE_CLIPPING_DISABLED";
+    field public static final String PREFER_STATIC_SHADOWS = "PREFER_STATIC_SHADOWS";
   }
 
 }
@@ -1298,33 +1398,33 @@
 
   public abstract class AbstractDetailsDescriptionPresenter extends androidx.leanback.widget.Presenter {
     ctor public AbstractDetailsDescriptionPresenter();
-    method protected abstract void onBindDescription(androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder, java.lang.Object);
-    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method protected abstract void onBindDescription(androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder!, Object!);
+    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public final androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
   }
 
   public static class AbstractDetailsDescriptionPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public AbstractDetailsDescriptionPresenter.ViewHolder(android.view.View);
-    method public android.widget.TextView getBody();
-    method public android.widget.TextView getSubtitle();
-    method public android.widget.TextView getTitle();
+    ctor public AbstractDetailsDescriptionPresenter.ViewHolder(android.view.View!);
+    method public android.widget.TextView! getBody();
+    method public android.widget.TextView! getSubtitle();
+    method public android.widget.TextView! getTitle();
   }
 
   public abstract class AbstractMediaItemPresenter extends androidx.leanback.widget.RowPresenter {
     ctor public AbstractMediaItemPresenter();
     ctor public AbstractMediaItemPresenter(int);
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public androidx.leanback.widget.Presenter getActionPresenter();
-    method protected int getMediaPlayState(java.lang.Object);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method public androidx.leanback.widget.Presenter! getActionPresenter();
+    method protected int getMediaPlayState(Object!);
     method public int getThemeId();
     method public boolean hasMediaRowSeparator();
-    method protected abstract void onBindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder, java.lang.Object);
-    method public void onBindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method protected void onBindRowActions(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method protected void onUnbindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method public void onUnbindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method public void setActionPresenter(androidx.leanback.widget.Presenter);
+    method protected abstract void onBindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!, Object!);
+    method public void onBindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method protected void onBindRowActions(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method protected void onUnbindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method public void onUnbindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method public void setActionPresenter(androidx.leanback.widget.Presenter!);
     method public void setBackgroundColor(int);
     method public void setHasMediaRowSeparator(boolean);
     method public void setThemeId(int);
@@ -1334,19 +1434,19 @@
   }
 
   public static class AbstractMediaItemPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public AbstractMediaItemPresenter.ViewHolder(android.view.View);
-    method public android.view.ViewGroup getMediaItemActionsContainer();
-    method public android.view.View getMediaItemDetailsView();
-    method public android.widget.TextView getMediaItemDurationView();
-    method public android.widget.TextView getMediaItemNameView();
-    method public android.widget.TextView getMediaItemNumberView();
-    method public android.widget.ViewFlipper getMediaItemNumberViewFlipper();
-    method public android.view.View getMediaItemPausedView();
-    method public android.view.View getMediaItemPlayingView();
-    method public androidx.leanback.widget.MultiActionsProvider.MultiAction[] getMediaItemRowActions();
-    method public android.view.View getMediaItemRowSeparator();
-    method public android.view.View getSelectorView();
-    method public void notifyActionChanged(androidx.leanback.widget.MultiActionsProvider.MultiAction);
+    ctor public AbstractMediaItemPresenter.ViewHolder(android.view.View!);
+    method public android.view.ViewGroup! getMediaItemActionsContainer();
+    method public android.view.View! getMediaItemDetailsView();
+    method public android.widget.TextView! getMediaItemDurationView();
+    method public android.widget.TextView! getMediaItemNameView();
+    method public android.widget.TextView! getMediaItemNumberView();
+    method public android.widget.ViewFlipper! getMediaItemNumberViewFlipper();
+    method public android.view.View! getMediaItemPausedView();
+    method public android.view.View! getMediaItemPlayingView();
+    method public androidx.leanback.widget.MultiActionsProvider.MultiAction[]! getMediaItemRowActions();
+    method public android.view.View! getMediaItemRowSeparator();
+    method public android.view.View! getSelectorView();
+    method public void notifyActionChanged(androidx.leanback.widget.MultiActionsProvider.MultiAction!);
     method public void notifyDetailsChanged();
     method public void notifyPlayStateChanged();
     method public void onBindRowActions();
@@ -1354,70 +1454,70 @@
   }
 
   public abstract class AbstractMediaListHeaderPresenter extends androidx.leanback.widget.RowPresenter {
-    ctor public AbstractMediaListHeaderPresenter(android.content.Context, int);
+    ctor public AbstractMediaListHeaderPresenter(android.content.Context!, int);
     ctor public AbstractMediaListHeaderPresenter();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected abstract void onBindMediaListHeaderViewHolder(androidx.leanback.widget.AbstractMediaListHeaderPresenter.ViewHolder, java.lang.Object);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method protected abstract void onBindMediaListHeaderViewHolder(androidx.leanback.widget.AbstractMediaListHeaderPresenter.ViewHolder!, Object!);
     method public void setBackgroundColor(int);
   }
 
   public static class AbstractMediaListHeaderPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public AbstractMediaListHeaderPresenter.ViewHolder(android.view.View);
-    method public android.widget.TextView getHeaderView();
+    ctor public AbstractMediaListHeaderPresenter.ViewHolder(android.view.View!);
+    method public android.widget.TextView! getHeaderView();
   }
 
   public class Action {
     ctor public Action(long);
-    ctor public Action(long, java.lang.CharSequence);
-    ctor public Action(long, java.lang.CharSequence, java.lang.CharSequence);
-    ctor public Action(long, java.lang.CharSequence, java.lang.CharSequence, android.graphics.drawable.Drawable);
+    ctor public Action(long, CharSequence!);
+    ctor public Action(long, CharSequence!, CharSequence!);
+    ctor public Action(long, CharSequence!, CharSequence!, android.graphics.drawable.Drawable!);
     method public final void addKeyCode(int);
-    method public final android.graphics.drawable.Drawable getIcon();
+    method public final android.graphics.drawable.Drawable! getIcon();
     method public final long getId();
-    method public final java.lang.CharSequence getLabel1();
-    method public final java.lang.CharSequence getLabel2();
+    method public final CharSequence! getLabel1();
+    method public final CharSequence! getLabel2();
     method public final void removeKeyCode(int);
     method public final boolean respondsToKeyCode(int);
-    method public final void setIcon(android.graphics.drawable.Drawable);
+    method public final void setIcon(android.graphics.drawable.Drawable!);
     method public final void setId(long);
-    method public final void setLabel1(java.lang.CharSequence);
-    method public final void setLabel2(java.lang.CharSequence);
+    method public final void setLabel1(CharSequence!);
+    method public final void setLabel2(CharSequence!);
     field public static final long NO_ID = -1L; // 0xffffffffffffffffL
   }
 
   public class ArrayObjectAdapter extends androidx.leanback.widget.ObjectAdapter {
-    ctor public ArrayObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public ArrayObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public ArrayObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public ArrayObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public ArrayObjectAdapter();
-    method public void add(java.lang.Object);
-    method public void add(int, java.lang.Object);
-    method public void addAll(int, java.util.Collection);
+    method public void add(Object!);
+    method public void add(int, Object!);
+    method public void addAll(int, java.util.Collection!);
     method public void clear();
-    method public java.lang.Object get(int);
-    method public int indexOf(java.lang.Object);
+    method public Object! get(int);
+    method public int indexOf(Object!);
     method public void move(int, int);
     method public void notifyArrayItemRangeChanged(int, int);
-    method public boolean remove(java.lang.Object);
+    method public boolean remove(Object!);
     method public int removeItems(int, int);
-    method public void replace(int, java.lang.Object);
-    method public void setItems(java.util.List, androidx.leanback.widget.DiffCallback);
+    method public void replace(int, Object!);
+    method public void setItems(java.util.List!, androidx.leanback.widget.DiffCallback!);
     method public int size();
-    method public <E> java.util.List<E> unmodifiableList();
+    method public <E> java.util.List<E>! unmodifiableList();
   }
 
   public class BaseCardView extends android.widget.FrameLayout {
-    ctor public BaseCardView(android.content.Context);
-    ctor public BaseCardView(android.content.Context, android.util.AttributeSet);
-    ctor public BaseCardView(android.content.Context, android.util.AttributeSet, int);
-    method protected androidx.leanback.widget.BaseCardView.LayoutParams generateDefaultLayoutParams();
-    method public androidx.leanback.widget.BaseCardView.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected androidx.leanback.widget.BaseCardView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
+    ctor public BaseCardView(android.content.Context!);
+    ctor public BaseCardView(android.content.Context!, android.util.AttributeSet!);
+    ctor public BaseCardView(android.content.Context!, android.util.AttributeSet!, int);
+    method protected androidx.leanback.widget.BaseCardView.LayoutParams! generateDefaultLayoutParams();
+    method public androidx.leanback.widget.BaseCardView.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
+    method protected androidx.leanback.widget.BaseCardView.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
     method public int getCardType();
-    method public deprecated int getExtraVisibility();
+    method @Deprecated public int getExtraVisibility();
     method public int getInfoVisibility();
     method public boolean isSelectedAnimationDelayed();
     method public void setCardType(int);
-    method public deprecated void setExtraVisibility(int);
+    method @Deprecated public void setExtraVisibility(int);
     method public void setInfoVisibility(int);
     method public void setSelectedAnimationDelayed(boolean);
     field public static final int CARD_REGION_VISIBLE_ACTIVATED = 1; // 0x1
@@ -1430,34 +1530,34 @@
   }
 
   public static class BaseCardView.LayoutParams extends android.widget.FrameLayout.LayoutParams {
-    ctor public BaseCardView.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public BaseCardView.LayoutParams(android.content.Context!, android.util.AttributeSet!);
     ctor public BaseCardView.LayoutParams(int, int);
-    ctor public BaseCardView.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public BaseCardView.LayoutParams(androidx.leanback.widget.BaseCardView.LayoutParams);
+    ctor public BaseCardView.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public BaseCardView.LayoutParams(androidx.leanback.widget.BaseCardView.LayoutParams!);
     field public static final int VIEW_TYPE_EXTRA = 2; // 0x2
     field public static final int VIEW_TYPE_INFO = 1; // 0x1
     field public static final int VIEW_TYPE_MAIN = 0; // 0x0
-    field public int viewType;
+    field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_MAIN, to="MAIN"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_INFO, to="INFO"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_EXTRA, to="EXTRA")}) public int viewType;
   }
 
   public abstract class BaseGridView extends androidx.recyclerview.widget.RecyclerView {
-    method public void addOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener);
+    method public void addOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener!);
     method public void animateIn();
     method public void animateOut();
     method public int getChildDrawingOrder(int, int);
-    method public deprecated int getHorizontalMargin();
+    method @Deprecated public int getHorizontalMargin();
     method public int getHorizontalSpacing();
     method public int getInitialPrefetchItemCount();
     method public int getItemAlignmentOffset();
     method public float getItemAlignmentOffsetPercent();
     method public int getItemAlignmentViewId();
-    method public androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener getOnUnhandledKeyListener();
+    method public androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener! getOnUnhandledKeyListener();
     method public final int getSaveChildrenLimitNumber();
     method public final int getSaveChildrenPolicy();
     method public int getSelectedPosition();
-    method public deprecated int getVerticalMargin();
+    method @Deprecated public int getVerticalMargin();
     method public int getVerticalSpacing();
-    method public void getViewSelectedOffsets(android.view.View, int[]);
+    method public void getViewSelectedOffsets(android.view.View!, int[]!);
     method public int getWindowAlignment();
     method public int getWindowAlignmentOffset();
     method public float getWindowAlignmentOffsetPercent();
@@ -1469,41 +1569,41 @@
     method public boolean isScrollEnabled();
     method public boolean isWindowAlignmentPreferKeyLineOverHighEdge();
     method public boolean isWindowAlignmentPreferKeyLineOverLowEdge();
-    method public boolean onRequestFocusInDescendants(int, android.graphics.Rect);
-    method public void removeOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener);
+    method public boolean onRequestFocusInDescendants(int, android.graphics.Rect!);
+    method public void removeOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener!);
     method public void setAnimateChildLayout(boolean);
     method public void setChildrenVisibility(int);
     method public void setFocusDrawingOrderEnabled(boolean);
     method public final void setFocusSearchDisabled(boolean);
     method public void setGravity(int);
     method public void setHasOverlappingRendering(boolean);
-    method public deprecated void setHorizontalMargin(int);
+    method @Deprecated public void setHorizontalMargin(int);
     method public void setHorizontalSpacing(int);
     method public void setInitialPrefetchItemCount(int);
     method public void setItemAlignmentOffset(int);
     method public void setItemAlignmentOffsetPercent(float);
     method public void setItemAlignmentOffsetWithPadding(boolean);
     method public void setItemAlignmentViewId(int);
-    method public deprecated void setItemMargin(int);
+    method @Deprecated public void setItemMargin(int);
     method public void setItemSpacing(int);
     method public void setLayoutEnabled(boolean);
-    method public void setOnChildLaidOutListener(androidx.leanback.widget.OnChildLaidOutListener);
-    method public void setOnChildSelectedListener(androidx.leanback.widget.OnChildSelectedListener);
-    method public void setOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener);
-    method public void setOnKeyInterceptListener(androidx.leanback.widget.BaseGridView.OnKeyInterceptListener);
-    method public void setOnMotionInterceptListener(androidx.leanback.widget.BaseGridView.OnMotionInterceptListener);
-    method public void setOnTouchInterceptListener(androidx.leanback.widget.BaseGridView.OnTouchInterceptListener);
-    method public void setOnUnhandledKeyListener(androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener);
+    method public void setOnChildLaidOutListener(androidx.leanback.widget.OnChildLaidOutListener!);
+    method public void setOnChildSelectedListener(androidx.leanback.widget.OnChildSelectedListener!);
+    method public void setOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener!);
+    method public void setOnKeyInterceptListener(androidx.leanback.widget.BaseGridView.OnKeyInterceptListener!);
+    method public void setOnMotionInterceptListener(androidx.leanback.widget.BaseGridView.OnMotionInterceptListener!);
+    method public void setOnTouchInterceptListener(androidx.leanback.widget.BaseGridView.OnTouchInterceptListener!);
+    method public void setOnUnhandledKeyListener(androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener!);
     method public void setPruneChild(boolean);
     method public final void setSaveChildrenLimitNumber(int);
     method public final void setSaveChildrenPolicy(int);
     method public void setScrollEnabled(boolean);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, int);
-    method public void setSelectedPosition(int, androidx.leanback.widget.ViewHolderTask);
+    method public void setSelectedPosition(int, androidx.leanback.widget.ViewHolderTask!);
     method public void setSelectedPositionSmooth(int);
-    method public void setSelectedPositionSmooth(int, androidx.leanback.widget.ViewHolderTask);
-    method public deprecated void setVerticalMargin(int);
+    method public void setSelectedPositionSmooth(int, androidx.leanback.widget.ViewHolderTask!);
+    method @Deprecated public void setVerticalMargin(int);
     method public void setVerticalSpacing(int);
     method public void setWindowAlignment(int);
     method public void setWindowAlignmentOffset(int);
@@ -1522,165 +1622,171 @@
     field public static final float WINDOW_ALIGN_OFFSET_PERCENT_DISABLED = -1.0f;
   }
 
-  public static abstract interface BaseGridView.OnKeyInterceptListener {
-    method public abstract boolean onInterceptKeyEvent(android.view.KeyEvent);
+  public static interface BaseGridView.OnKeyInterceptListener {
+    method public boolean onInterceptKeyEvent(android.view.KeyEvent!);
   }
 
-  public static abstract interface BaseGridView.OnMotionInterceptListener {
-    method public abstract boolean onInterceptMotionEvent(android.view.MotionEvent);
+  public static interface BaseGridView.OnMotionInterceptListener {
+    method public boolean onInterceptMotionEvent(android.view.MotionEvent!);
   }
 
-  public static abstract interface BaseGridView.OnTouchInterceptListener {
-    method public abstract boolean onInterceptTouchEvent(android.view.MotionEvent);
+  public static interface BaseGridView.OnTouchInterceptListener {
+    method public boolean onInterceptTouchEvent(android.view.MotionEvent!);
   }
 
-  public static abstract interface BaseGridView.OnUnhandledKeyListener {
-    method public abstract boolean onUnhandledKey(android.view.KeyEvent);
+  public static interface BaseGridView.OnUnhandledKeyListener {
+    method public boolean onUnhandledKey(android.view.KeyEvent!);
   }
 
-  public abstract interface BaseOnItemViewClickedListener<T> {
-    method public abstract void onItemClicked(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object, androidx.leanback.widget.RowPresenter.ViewHolder, T);
+  public interface BaseOnItemViewClickedListener<T> {
+    method public void onItemClicked(androidx.leanback.widget.Presenter.ViewHolder!, Object!, androidx.leanback.widget.RowPresenter.ViewHolder!, T!);
   }
 
-  public abstract interface BaseOnItemViewSelectedListener<T> {
-    method public abstract void onItemSelected(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object, androidx.leanback.widget.RowPresenter.ViewHolder, T);
+  public interface BaseOnItemViewSelectedListener<T> {
+    method public void onItemSelected(androidx.leanback.widget.Presenter.ViewHolder!, Object!, androidx.leanback.widget.RowPresenter.ViewHolder!, T!);
   }
 
   public class BrowseFrameLayout extends android.widget.FrameLayout {
-    ctor public BrowseFrameLayout(android.content.Context);
-    ctor public BrowseFrameLayout(android.content.Context, android.util.AttributeSet);
-    ctor public BrowseFrameLayout(android.content.Context, android.util.AttributeSet, int);
-    method public androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener getOnChildFocusListener();
-    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener getOnFocusSearchListener();
-    method public void setOnChildFocusListener(androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener);
-    method public void setOnDispatchKeyListener(android.view.View.OnKeyListener);
-    method public void setOnFocusSearchListener(androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener);
+    ctor public BrowseFrameLayout(android.content.Context!);
+    ctor public BrowseFrameLayout(android.content.Context!, android.util.AttributeSet!);
+    ctor public BrowseFrameLayout(android.content.Context!, android.util.AttributeSet!, int);
+    method public androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener! getOnChildFocusListener();
+    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener! getOnFocusSearchListener();
+    method public void setOnChildFocusListener(androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener!);
+    method public void setOnDispatchKeyListener(android.view.View.OnKeyListener!);
+    method public void setOnFocusSearchListener(androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener!);
   }
 
-  public static abstract interface BrowseFrameLayout.OnChildFocusListener {
-    method public abstract void onRequestChildFocus(android.view.View, android.view.View);
-    method public abstract boolean onRequestFocusInDescendants(int, android.graphics.Rect);
+  public static interface BrowseFrameLayout.OnChildFocusListener {
+    method public void onRequestChildFocus(android.view.View!, android.view.View!);
+    method public boolean onRequestFocusInDescendants(int, android.graphics.Rect!);
   }
 
-  public static abstract interface BrowseFrameLayout.OnFocusSearchListener {
-    method public abstract android.view.View onFocusSearch(android.view.View, int);
+  public static interface BrowseFrameLayout.OnFocusSearchListener {
+    method public android.view.View! onFocusSearch(android.view.View!, int);
   }
 
   public final class ClassPresenterSelector extends androidx.leanback.widget.PresenterSelector {
     ctor public ClassPresenterSelector();
-    method public androidx.leanback.widget.ClassPresenterSelector addClassPresenter(java.lang.Class<?>, androidx.leanback.widget.Presenter);
-    method public androidx.leanback.widget.ClassPresenterSelector addClassPresenterSelector(java.lang.Class<?>, androidx.leanback.widget.PresenterSelector);
-    method public androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
+    method public androidx.leanback.widget.ClassPresenterSelector! addClassPresenter(Class<?>!, androidx.leanback.widget.Presenter!);
+    method public androidx.leanback.widget.ClassPresenterSelector! addClassPresenterSelector(Class<?>!, androidx.leanback.widget.PresenterSelector!);
+    method public androidx.leanback.widget.Presenter! getPresenter(Object!);
   }
 
   public class ControlButtonPresenterSelector extends androidx.leanback.widget.PresenterSelector {
     ctor public ControlButtonPresenterSelector();
-    method public androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public androidx.leanback.widget.Presenter getPrimaryPresenter();
-    method public androidx.leanback.widget.Presenter getSecondaryPresenter();
+    method public androidx.leanback.widget.Presenter! getPresenter(Object!);
+    method public androidx.leanback.widget.Presenter! getPrimaryPresenter();
+    method public androidx.leanback.widget.Presenter! getSecondaryPresenter();
   }
 
   public class CursorObjectAdapter extends androidx.leanback.widget.ObjectAdapter {
-    ctor public CursorObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public CursorObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public CursorObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public CursorObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public CursorObjectAdapter();
-    method public void changeCursor(android.database.Cursor);
+    method public void changeCursor(android.database.Cursor!);
     method public void close();
-    method public java.lang.Object get(int);
-    method public final android.database.Cursor getCursor();
-    method public final androidx.leanback.database.CursorMapper getMapper();
+    method public Object! get(int);
+    method public final android.database.Cursor! getCursor();
+    method public final androidx.leanback.database.CursorMapper! getMapper();
     method protected final void invalidateCache(int);
     method protected final void invalidateCache(int, int);
     method public boolean isClosed();
     method protected void onCursorChanged();
     method protected void onMapperChanged();
-    method public final void setMapper(androidx.leanback.database.CursorMapper);
+    method public final void setMapper(androidx.leanback.database.CursorMapper!);
     method public int size();
-    method public android.database.Cursor swapCursor(android.database.Cursor);
+    method public android.database.Cursor! swapCursor(android.database.Cursor!);
   }
 
   public class DetailsOverviewLogoPresenter extends androidx.leanback.widget.Presenter {
     ctor public DetailsOverviewLogoPresenter();
-    method public boolean isBoundToImage(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder, androidx.leanback.widget.DetailsOverviewRow);
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public android.view.View onCreateView(android.view.ViewGroup);
-    method public androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void setContext(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter);
+    method public boolean isBoundToImage(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder!, androidx.leanback.widget.DetailsOverviewRow!);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public android.view.View! onCreateView(android.view.ViewGroup!);
+    method public androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void setContext(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!);
   }
 
   public static class DetailsOverviewLogoPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public DetailsOverviewLogoPresenter.ViewHolder(android.view.View);
-    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter getParentPresenter();
-    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder getParentViewHolder();
+    ctor public DetailsOverviewLogoPresenter.ViewHolder(android.view.View!);
+    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter! getParentPresenter();
+    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder! getParentViewHolder();
     method public boolean isSizeFromDrawableIntrinsic();
     method public void setSizeFromDrawableIntrinsic(boolean);
-    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter mParentPresenter;
-    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder mParentViewHolder;
+    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter! mParentPresenter;
+    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder! mParentViewHolder;
   }
 
   public class DetailsOverviewRow extends androidx.leanback.widget.Row {
-    ctor public DetailsOverviewRow(java.lang.Object);
-    method public final deprecated void addAction(androidx.leanback.widget.Action);
-    method public final deprecated void addAction(int, androidx.leanback.widget.Action);
-    method public androidx.leanback.widget.Action getActionForKeyCode(int);
-    method public final deprecated java.util.List<androidx.leanback.widget.Action> getActions();
-    method public final androidx.leanback.widget.ObjectAdapter getActionsAdapter();
-    method public final android.graphics.drawable.Drawable getImageDrawable();
-    method public final java.lang.Object getItem();
+    ctor public DetailsOverviewRow(Object!);
+    method @Deprecated public final void addAction(androidx.leanback.widget.Action!);
+    method @Deprecated public final void addAction(int, androidx.leanback.widget.Action!);
+    method public androidx.leanback.widget.Action! getActionForKeyCode(int);
+    method @Deprecated public final java.util.List<androidx.leanback.widget.Action>! getActions();
+    method public final androidx.leanback.widget.ObjectAdapter! getActionsAdapter();
+    method public final android.graphics.drawable.Drawable! getImageDrawable();
+    method public final Object! getItem();
     method public boolean isImageScaleUpAllowed();
-    method public final deprecated boolean removeAction(androidx.leanback.widget.Action);
-    method public final void setActionsAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public final void setImageBitmap(android.content.Context, android.graphics.Bitmap);
-    method public final void setImageDrawable(android.graphics.drawable.Drawable);
+    method @Deprecated public final boolean removeAction(androidx.leanback.widget.Action!);
+    method public final void setActionsAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public final void setImageBitmap(android.content.Context!, android.graphics.Bitmap!);
+    method public final void setImageDrawable(android.graphics.drawable.Drawable!);
     method public void setImageScaleUpAllowed(boolean);
-    method public final void setItem(java.lang.Object);
+    method public final void setItem(Object!);
   }
 
   public static class DetailsOverviewRow.Listener {
     ctor public DetailsOverviewRow.Listener();
-    method public void onActionsAdapterChanged(androidx.leanback.widget.DetailsOverviewRow);
-    method public void onImageDrawableChanged(androidx.leanback.widget.DetailsOverviewRow);
-    method public void onItemChanged(androidx.leanback.widget.DetailsOverviewRow);
+    method public void onActionsAdapterChanged(androidx.leanback.widget.DetailsOverviewRow!);
+    method public void onImageDrawableChanged(androidx.leanback.widget.DetailsOverviewRow!);
+    method public void onItemChanged(androidx.leanback.widget.DetailsOverviewRow!);
   }
 
-  public deprecated class DetailsOverviewRowPresenter extends androidx.leanback.widget.RowPresenter {
-    ctor public DetailsOverviewRowPresenter(androidx.leanback.widget.Presenter);
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public int getBackgroundColor();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public boolean isStyleLarge();
-    method public final boolean isUsingDefaultSelectEffect();
-    method public void setBackgroundColor(int);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public final void setSharedElementEnterTransition(android.app.Activity, java.lang.String, long);
-    method public final void setSharedElementEnterTransition(android.app.Activity, java.lang.String);
-    method public void setStyleLarge(boolean);
+  @Deprecated public class DetailsOverviewRowPresenter extends androidx.leanback.widget.RowPresenter {
+    ctor @Deprecated public DetailsOverviewRowPresenter(androidx.leanback.widget.Presenter!);
+    method @Deprecated protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method @Deprecated @ColorInt public int getBackgroundColor();
+    method @Deprecated public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
+    method @Deprecated public boolean isStyleLarge();
+    method @Deprecated public final boolean isUsingDefaultSelectEffect();
+    method @Deprecated protected void onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!, Object!);
+    method @Deprecated protected void onRowViewAttachedToWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated protected void onRowViewDetachedFromWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated protected void onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method @Deprecated protected void onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated protected void onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated public void setBackgroundColor(@ColorInt int);
+    method @Deprecated public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method @Deprecated public final void setSharedElementEnterTransition(android.app.Activity!, String!, long);
+    method @Deprecated public final void setSharedElementEnterTransition(android.app.Activity!, String!);
+    method @Deprecated public void setStyleLarge(boolean);
   }
 
-  public final class DetailsOverviewRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public DetailsOverviewRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.Presenter);
-    field public final androidx.leanback.widget.Presenter.ViewHolder mDetailsDescriptionViewHolder;
+  @Deprecated public final class DetailsOverviewRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
+    ctor @Deprecated public DetailsOverviewRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.Presenter!);
+    field @Deprecated public final androidx.leanback.widget.Presenter.ViewHolder! mDetailsDescriptionViewHolder;
   }
 
   public class DetailsParallax extends androidx.leanback.widget.RecyclerViewParallax {
     ctor public DetailsParallax();
-    method public androidx.leanback.widget.Parallax.IntProperty getOverviewRowBottom();
-    method public androidx.leanback.widget.Parallax.IntProperty getOverviewRowTop();
+    method public androidx.leanback.widget.Parallax.IntProperty! getOverviewRowBottom();
+    method public androidx.leanback.widget.Parallax.IntProperty! getOverviewRowTop();
   }
 
   public abstract class DiffCallback<Value> {
     ctor public DiffCallback();
     method public abstract boolean areContentsTheSame(Value, Value);
     method public abstract boolean areItemsTheSame(Value, Value);
-    method public java.lang.Object getChangePayload(Value, Value);
+    method public Object! getChangePayload(Value, Value);
   }
 
   public class DividerPresenter extends androidx.leanback.widget.Presenter {
     ctor public DividerPresenter();
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
   }
 
   public class DividerRow extends androidx.leanback.widget.Row {
@@ -1688,15 +1794,15 @@
     method public final boolean isRenderedAsRowView();
   }
 
-  public abstract interface FacetProvider {
-    method public abstract java.lang.Object getFacet(java.lang.Class<?>);
+  public interface FacetProvider {
+    method public Object! getFacet(Class<?>!);
   }
 
-  public abstract interface FacetProviderAdapter {
-    method public abstract androidx.leanback.widget.FacetProvider getFacetProvider(int);
+  public interface FacetProviderAdapter {
+    method public androidx.leanback.widget.FacetProvider! getFacetProvider(int);
   }
 
-  public abstract interface FocusHighlight {
+  public interface FocusHighlight {
     field public static final int ZOOM_FACTOR_LARGE = 3; // 0x3
     field public static final int ZOOM_FACTOR_MEDIUM = 2; // 0x2
     field public static final int ZOOM_FACTOR_NONE = 0; // 0x0
@@ -1705,43 +1811,43 @@
   }
 
   public class FocusHighlightHelper {
-    ctor public deprecated FocusHighlightHelper();
-    method public static void setupBrowseItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter, int, boolean);
-    method public static deprecated void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView);
-    method public static deprecated void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView, boolean);
-    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter);
-    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter, boolean);
+    ctor @Deprecated public FocusHighlightHelper();
+    method public static void setupBrowseItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter!, int, boolean);
+    method @Deprecated public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView!);
+    method @Deprecated public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView!, boolean);
+    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter!);
+    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter!, boolean);
   }
 
-  public abstract interface FragmentAnimationProvider {
-    method public abstract void onImeAppearing(java.util.List<android.animation.Animator>);
-    method public abstract void onImeDisappearing(java.util.List<android.animation.Animator>);
+  public interface FragmentAnimationProvider {
+    method public void onImeAppearing(java.util.List<android.animation.Animator>);
+    method public void onImeDisappearing(java.util.List<android.animation.Animator>);
   }
 
   public class FullWidthDetailsOverviewRowPresenter extends androidx.leanback.widget.RowPresenter {
-    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter);
-    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter, androidx.leanback.widget.DetailsOverviewLogoPresenter);
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
+    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter!);
+    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter!, androidx.leanback.widget.DetailsOverviewLogoPresenter!);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
     method public final int getActionsBackgroundColor();
     method public final int getAlignmentMode();
     method public final int getBackgroundColor();
     method public final int getInitialState();
     method protected int getLayoutResourceId();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
+    method public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
     method public final boolean isParticipatingEntranceTransition();
     method public final boolean isUsingDefaultSelectEffect();
-    method public final void notifyOnBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder);
-    method protected void onLayoutLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, boolean);
-    method protected void onLayoutOverviewFrame(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, boolean);
-    method protected void onStateChanged(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int);
+    method public final void notifyOnBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!);
+    method protected void onLayoutLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, boolean);
+    method protected void onLayoutOverviewFrame(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, boolean);
+    method protected void onStateChanged(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int);
     method public final void setActionsBackgroundColor(int);
     method public final void setAlignmentMode(int);
     method public final void setBackgroundColor(int);
     method public final void setInitialState(int);
-    method public final void setListener(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.Listener);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
+    method public final void setListener(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.Listener!);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
     method public final void setParticipatingEntranceTransition(boolean);
-    method public final void setState(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int);
+    method public final void setState(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int);
     field public static final int ALIGN_MODE_MIDDLE = 1; // 0x1
     field public static final int ALIGN_MODE_START = 0; // 0x0
     field public static final int STATE_FULL = 1; // 0x1
@@ -1750,21 +1856,21 @@
     field protected int mInitialState;
   }
 
-  public static abstract class FullWidthDetailsOverviewRowPresenter.Listener {
+  public abstract static class FullWidthDetailsOverviewRowPresenter.Listener {
     ctor public FullWidthDetailsOverviewRowPresenter.Listener();
-    method public void onBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder);
+    method public void onBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!);
   }
 
   public class FullWidthDetailsOverviewRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public FullWidthDetailsOverviewRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.Presenter, androidx.leanback.widget.DetailsOverviewLogoPresenter);
-    method protected androidx.leanback.widget.DetailsOverviewRow.Listener createRowListener();
-    method public final android.view.ViewGroup getActionsRow();
-    method public final android.view.ViewGroup getDetailsDescriptionFrame();
-    method public final androidx.leanback.widget.Presenter.ViewHolder getDetailsDescriptionViewHolder();
-    method public final androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder getLogoViewHolder();
-    method public final android.view.ViewGroup getOverviewView();
+    ctor public FullWidthDetailsOverviewRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.Presenter!, androidx.leanback.widget.DetailsOverviewLogoPresenter!);
+    method protected androidx.leanback.widget.DetailsOverviewRow.Listener! createRowListener();
+    method public final android.view.ViewGroup! getActionsRow();
+    method public final android.view.ViewGroup! getDetailsDescriptionFrame();
+    method public final androidx.leanback.widget.Presenter.ViewHolder! getDetailsDescriptionViewHolder();
+    method public final androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder! getLogoViewHolder();
+    method public final android.view.ViewGroup! getOverviewView();
     method public final int getState();
-    field protected final androidx.leanback.widget.DetailsOverviewRow.Listener mRowListener;
+    field protected final androidx.leanback.widget.DetailsOverviewRow.Listener! mRowListener;
   }
 
   public class FullWidthDetailsOverviewRowPresenter.ViewHolder.DetailsOverviewRowListener extends androidx.leanback.widget.DetailsOverviewRow.Listener {
@@ -1775,18 +1881,18 @@
     ctor public FullWidthDetailsOverviewSharedElementHelper();
     method public boolean getAutoStartSharedElementTransition();
     method public void setAutoStartSharedElementTransition(boolean);
-    method public void setSharedElementEnterTransition(android.app.Activity, java.lang.String);
-    method public void setSharedElementEnterTransition(android.app.Activity, java.lang.String, long);
+    method public void setSharedElementEnterTransition(android.app.Activity!, String!);
+    method public void setSharedElementEnterTransition(android.app.Activity!, String!, long);
     method public void startPostponedEnterTransition();
   }
 
   public class GuidanceStylist implements androidx.leanback.widget.FragmentAnimationProvider {
     ctor public GuidanceStylist();
-    method public android.widget.TextView getBreadcrumbView();
-    method public android.widget.TextView getDescriptionView();
-    method public android.widget.ImageView getIconView();
-    method public android.widget.TextView getTitleView();
-    method public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup, androidx.leanback.widget.GuidanceStylist.Guidance);
+    method public android.widget.TextView! getBreadcrumbView();
+    method public android.widget.TextView! getDescriptionView();
+    method public android.widget.ImageView! getIconView();
+    method public android.widget.TextView! getTitleView();
+    method public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, androidx.leanback.widget.GuidanceStylist.Guidance!);
     method public void onDestroyView();
     method public void onImeAppearing(java.util.List<android.animation.Animator>);
     method public void onImeDisappearing(java.util.List<android.animation.Animator>);
@@ -1794,27 +1900,27 @@
   }
 
   public static class GuidanceStylist.Guidance {
-    ctor public GuidanceStylist.Guidance(java.lang.String, java.lang.String, java.lang.String, android.graphics.drawable.Drawable);
-    method public java.lang.String getBreadcrumb();
-    method public java.lang.String getDescription();
-    method public android.graphics.drawable.Drawable getIconDrawable();
-    method public java.lang.String getTitle();
+    ctor public GuidanceStylist.Guidance(String!, String!, String!, android.graphics.drawable.Drawable!);
+    method public String! getBreadcrumb();
+    method public String! getDescription();
+    method public android.graphics.drawable.Drawable! getIconDrawable();
+    method public String! getTitle();
   }
 
   public class GuidedAction extends androidx.leanback.widget.Action {
     ctor protected GuidedAction();
-    method public java.lang.String[] getAutofillHints();
+    method public String[]! getAutofillHints();
     method public int getCheckSetId();
-    method public java.lang.CharSequence getDescription();
+    method public CharSequence! getDescription();
     method public int getDescriptionEditInputType();
     method public int getDescriptionInputType();
-    method public java.lang.CharSequence getEditDescription();
+    method public CharSequence! getEditDescription();
     method public int getEditInputType();
-    method public java.lang.CharSequence getEditTitle();
+    method public CharSequence! getEditTitle();
     method public int getInputType();
-    method public android.content.Intent getIntent();
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getSubActions();
-    method public java.lang.CharSequence getTitle();
+    method public android.content.Intent! getIntent();
+    method public java.util.List<androidx.leanback.widget.GuidedAction>! getSubActions();
+    method public CharSequence! getTitle();
     method public boolean hasEditableActivatorView();
     method public boolean hasMultilineDescription();
     method public boolean hasNext();
@@ -1828,17 +1934,17 @@
     method public boolean isEditable();
     method public boolean isEnabled();
     method public boolean isFocusable();
-    method public void onRestoreInstanceState(android.os.Bundle, java.lang.String);
-    method public void onSaveInstanceState(android.os.Bundle, java.lang.String);
+    method public void onRestoreInstanceState(android.os.Bundle!, String!);
+    method public void onSaveInstanceState(android.os.Bundle!, String!);
     method public void setChecked(boolean);
-    method public void setDescription(java.lang.CharSequence);
-    method public void setEditDescription(java.lang.CharSequence);
-    method public void setEditTitle(java.lang.CharSequence);
+    method public void setDescription(CharSequence!);
+    method public void setEditDescription(CharSequence!);
+    method public void setEditTitle(CharSequence!);
     method public void setEnabled(boolean);
     method public void setFocusable(boolean);
-    method public void setIntent(android.content.Intent);
-    method public void setSubActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setTitle(java.lang.CharSequence);
+    method public void setIntent(android.content.Intent!);
+    method public void setSubActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method public void setTitle(CharSequence!);
     field public static final long ACTION_ID_CANCEL = -5L; // 0xfffffffffffffffbL
     field public static final long ACTION_ID_CONTINUE = -7L; // 0xfffffffffffffff9L
     field public static final long ACTION_ID_CURRENT = -3L; // 0xfffffffffffffffdL
@@ -1852,80 +1958,80 @@
     field public static final int NO_CHECK_SET = 0; // 0x0
   }
 
-  public static class GuidedAction.Builder extends androidx.leanback.widget.GuidedAction.BuilderBase {
-    ctor public deprecated GuidedAction.Builder();
-    ctor public GuidedAction.Builder(android.content.Context);
-    method public androidx.leanback.widget.GuidedAction build();
+  public static class GuidedAction.Builder extends androidx.leanback.widget.GuidedAction.BuilderBase<androidx.leanback.widget.GuidedAction.Builder> {
+    ctor @Deprecated public GuidedAction.Builder();
+    ctor public GuidedAction.Builder(android.content.Context!);
+    method public androidx.leanback.widget.GuidedAction! build();
   }
 
-  public static abstract class GuidedAction.BuilderBase<B extends androidx.leanback.widget.GuidedAction.BuilderBase> {
-    ctor public GuidedAction.BuilderBase(android.content.Context);
-    method protected final void applyValues(androidx.leanback.widget.GuidedAction);
-    method public B autoSaveRestoreEnabled(boolean);
-    method public B autofillHints(java.lang.String...);
-    method public B checkSetId(int);
-    method public B checked(boolean);
-    method public B clickAction(long);
-    method public B description(java.lang.CharSequence);
-    method public B description(int);
-    method public B descriptionEditInputType(int);
-    method public B descriptionEditable(boolean);
-    method public B descriptionInputType(int);
-    method public B editDescription(java.lang.CharSequence);
-    method public B editDescription(int);
-    method public B editInputType(int);
-    method public B editTitle(java.lang.CharSequence);
-    method public B editTitle(int);
-    method public B editable(boolean);
-    method public B enabled(boolean);
-    method public B focusable(boolean);
-    method public android.content.Context getContext();
-    method public B hasEditableActivatorView(boolean);
-    method public B hasNext(boolean);
-    method public B icon(android.graphics.drawable.Drawable);
-    method public B icon(int);
-    method public deprecated B iconResourceId(int, android.content.Context);
-    method public B id(long);
-    method public B infoOnly(boolean);
-    method public B inputType(int);
-    method public B intent(android.content.Intent);
-    method public B multilineDescription(boolean);
-    method public B subActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public B title(java.lang.CharSequence);
-    method public B title(int);
+  public abstract static class GuidedAction.BuilderBase<B extends androidx.leanback.widget.GuidedAction.BuilderBase> {
+    ctor public GuidedAction.BuilderBase(android.content.Context!);
+    method protected final void applyValues(androidx.leanback.widget.GuidedAction!);
+    method public B! autoSaveRestoreEnabled(boolean);
+    method public B! autofillHints(java.lang.String...!);
+    method public B! checkSetId(int);
+    method public B! checked(boolean);
+    method public B! clickAction(long);
+    method public B! description(CharSequence!);
+    method public B! description(@StringRes int);
+    method public B! descriptionEditInputType(int);
+    method public B! descriptionEditable(boolean);
+    method public B! descriptionInputType(int);
+    method public B! editDescription(CharSequence!);
+    method public B! editDescription(@StringRes int);
+    method public B! editInputType(int);
+    method public B! editTitle(CharSequence!);
+    method public B! editTitle(@StringRes int);
+    method public B! editable(boolean);
+    method public B! enabled(boolean);
+    method public B! focusable(boolean);
+    method public android.content.Context! getContext();
+    method public B! hasEditableActivatorView(boolean);
+    method public B! hasNext(boolean);
+    method public B! icon(android.graphics.drawable.Drawable!);
+    method public B! icon(@DrawableRes int);
+    method @Deprecated public B! iconResourceId(@DrawableRes int, android.content.Context!);
+    method public B! id(long);
+    method public B! infoOnly(boolean);
+    method public B! inputType(int);
+    method public B! intent(android.content.Intent!);
+    method public B! multilineDescription(boolean);
+    method public B! subActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method public B! title(CharSequence!);
+    method public B! title(@StringRes int);
   }
 
-  public abstract interface GuidedActionAutofillSupport {
-    method public abstract void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener);
+  public interface GuidedActionAutofillSupport {
+    method public void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener!);
   }
 
-  public static abstract interface GuidedActionAutofillSupport.OnAutofillListener {
-    method public abstract void onAutofill(android.view.View);
+  public static interface GuidedActionAutofillSupport.OnAutofillListener {
+    method public void onAutofill(android.view.View!);
   }
 
-  public class GuidedActionDiffCallback extends androidx.leanback.widget.DiffCallback {
+  public class GuidedActionDiffCallback extends androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction> {
     ctor public GuidedActionDiffCallback();
     method public boolean areContentsTheSame(androidx.leanback.widget.GuidedAction, androidx.leanback.widget.GuidedAction);
     method public boolean areItemsTheSame(androidx.leanback.widget.GuidedAction, androidx.leanback.widget.GuidedAction);
-    method public static androidx.leanback.widget.GuidedActionDiffCallback getInstance();
+    method public static androidx.leanback.widget.GuidedActionDiffCallback! getInstance();
   }
 
   public class GuidedActionEditText extends android.widget.EditText implements androidx.leanback.widget.GuidedActionAutofillSupport androidx.leanback.widget.ImeKeyMonitor {
-    ctor public GuidedActionEditText(android.content.Context);
-    ctor public GuidedActionEditText(android.content.Context, android.util.AttributeSet);
-    ctor public GuidedActionEditText(android.content.Context, android.util.AttributeSet, int);
-    method public void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener);
-    method public void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener);
+    ctor public GuidedActionEditText(android.content.Context!);
+    ctor public GuidedActionEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public GuidedActionEditText(android.content.Context!, android.util.AttributeSet!, int);
+    method public void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener!);
+    method public void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener!);
   }
 
   public class GuidedActionsStylist implements androidx.leanback.widget.FragmentAnimationProvider {
     ctor public GuidedActionsStylist();
     method public void collapseAction(boolean);
-    method public void expandAction(androidx.leanback.widget.GuidedAction, boolean);
-    method public androidx.leanback.widget.VerticalGridView getActionsGridView();
-    method public androidx.leanback.widget.GuidedAction getExpandedAction();
-    method public int getItemViewType(androidx.leanback.widget.GuidedAction);
-    method public androidx.leanback.widget.VerticalGridView getSubActionsGridView();
+    method public void expandAction(androidx.leanback.widget.GuidedAction!, boolean);
+    method public androidx.leanback.widget.VerticalGridView! getActionsGridView();
+    method public androidx.leanback.widget.GuidedAction! getExpandedAction();
+    method public int getItemViewType(androidx.leanback.widget.GuidedAction!);
+    method public androidx.leanback.widget.VerticalGridView! getSubActionsGridView();
     method public final boolean isBackKeyToCollapseActivatorView();
     method public final boolean isBackKeyToCollapseSubActions();
     method public boolean isButtonActions();
@@ -1933,53 +2039,53 @@
     method public boolean isExpanded();
     method public boolean isInExpandTransition();
     method public boolean isSubActionsExpanded();
-    method public void onAnimateItemChecked(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemFocused(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemPressed(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemPressedCancelled(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method public void onBindActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onBindCheckMarkView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onBindChevronView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onBindViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup);
-    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
+    method public void onAnimateItemChecked(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean);
+    method public void onAnimateItemFocused(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean);
+    method public void onAnimateItemPressed(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean);
+    method public void onAnimateItemPressedCancelled(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
+    method public void onBindActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onBindCheckMarkView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onBindChevronView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onBindViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder! onCreateViewHolder(android.view.ViewGroup!, int);
     method public void onDestroyView();
-    method protected deprecated void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction, boolean);
-    method protected void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean, boolean);
+    method @Deprecated protected void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!, boolean);
+    method @CallSuper protected void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean, boolean);
     method public void onImeAppearing(java.util.List<android.animation.Animator>);
     method public void onImeDisappearing(java.util.List<android.animation.Animator>);
     method public int onProvideItemLayoutId();
     method public int onProvideItemLayoutId(int);
     method public int onProvideLayoutId();
-    method public boolean onUpdateActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onUpdateExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method public void openInEditMode(androidx.leanback.widget.GuidedAction);
+    method public boolean onUpdateActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onUpdateExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
+    method public void openInEditMode(androidx.leanback.widget.GuidedAction!);
     method public void setAsButtonActions();
     method public final void setBackKeyToCollapseActivatorView(boolean);
     method public final void setBackKeyToCollapseSubActions(boolean);
-    method public deprecated void setEditingMode(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction, boolean);
-    method public deprecated void setExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method protected void setupImeOptions(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public deprecated void startExpandedTransition(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
+    method @Deprecated public void setEditingMode(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!, boolean);
+    method @Deprecated public void setExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
+    method protected void setupImeOptions(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void startExpandedTransition(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
     field public static final int VIEW_TYPE_DATE_PICKER = 1; // 0x1
     field public static final int VIEW_TYPE_DEFAULT = 0; // 0x0
   }
 
   public static class GuidedActionsStylist.ViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder implements androidx.leanback.widget.FacetProvider {
-    ctor public GuidedActionsStylist.ViewHolder(android.view.View);
-    ctor public GuidedActionsStylist.ViewHolder(android.view.View, boolean);
-    method public androidx.leanback.widget.GuidedAction getAction();
-    method public android.widget.ImageView getCheckmarkView();
-    method public android.widget.ImageView getChevronView();
-    method public android.view.View getContentView();
-    method public android.widget.TextView getDescriptionView();
-    method public android.widget.EditText getEditableDescriptionView();
-    method public android.widget.EditText getEditableTitleView();
-    method public android.view.View getEditingView();
-    method public java.lang.Object getFacet(java.lang.Class<?>);
-    method public android.widget.ImageView getIconView();
-    method public android.widget.TextView getTitleView();
+    ctor public GuidedActionsStylist.ViewHolder(android.view.View!);
+    ctor public GuidedActionsStylist.ViewHolder(android.view.View!, boolean);
+    method public androidx.leanback.widget.GuidedAction! getAction();
+    method public android.widget.ImageView! getCheckmarkView();
+    method public android.widget.ImageView! getChevronView();
+    method public android.view.View! getContentView();
+    method public android.widget.TextView! getDescriptionView();
+    method public android.widget.EditText! getEditableDescriptionView();
+    method public android.widget.EditText! getEditableTitleView();
+    method public android.view.View! getEditingView();
+    method public Object! getFacet(Class<?>!);
+    method public android.widget.ImageView! getIconView();
+    method public android.widget.TextView! getTitleView();
     method public boolean isInEditing();
     method public boolean isInEditingActivatorView();
     method public boolean isInEditingDescription();
@@ -1991,48 +2097,48 @@
   public class GuidedDatePickerAction extends androidx.leanback.widget.GuidedAction {
     ctor public GuidedDatePickerAction();
     method public long getDate();
-    method public java.lang.String getDatePickerFormat();
+    method public String! getDatePickerFormat();
     method public long getMaxDate();
     method public long getMinDate();
     method public void setDate(long);
   }
 
-  public static final class GuidedDatePickerAction.Builder extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase {
-    ctor public GuidedDatePickerAction.Builder(android.content.Context);
-    method public androidx.leanback.widget.GuidedDatePickerAction build();
+  public static final class GuidedDatePickerAction.Builder extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase<androidx.leanback.widget.GuidedDatePickerAction.Builder> {
+    ctor public GuidedDatePickerAction.Builder(android.content.Context!);
+    method public androidx.leanback.widget.GuidedDatePickerAction! build();
   }
 
-  public static abstract class GuidedDatePickerAction.BuilderBase<B extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase> extends androidx.leanback.widget.GuidedAction.BuilderBase {
-    ctor public GuidedDatePickerAction.BuilderBase(android.content.Context);
-    method protected final void applyDatePickerValues(androidx.leanback.widget.GuidedDatePickerAction);
-    method public B date(long);
-    method public B datePickerFormat(java.lang.String);
-    method public B maxDate(long);
-    method public B minDate(long);
+  public abstract static class GuidedDatePickerAction.BuilderBase<B extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase> extends androidx.leanback.widget.GuidedAction.BuilderBase<B> {
+    ctor public GuidedDatePickerAction.BuilderBase(android.content.Context!);
+    method protected final void applyDatePickerValues(androidx.leanback.widget.GuidedDatePickerAction!);
+    method public B! date(long);
+    method public B! datePickerFormat(String!);
+    method public B! maxDate(long);
+    method public B! minDate(long);
   }
 
   public class HeaderItem {
-    ctor public HeaderItem(long, java.lang.String);
-    ctor public HeaderItem(java.lang.String);
-    method public java.lang.CharSequence getContentDescription();
-    method public java.lang.CharSequence getDescription();
+    ctor public HeaderItem(long, String!);
+    ctor public HeaderItem(String!);
+    method public CharSequence! getContentDescription();
+    method public CharSequence! getDescription();
     method public final long getId();
-    method public final java.lang.String getName();
-    method public void setContentDescription(java.lang.CharSequence);
-    method public void setDescription(java.lang.CharSequence);
+    method public final String! getName();
+    method public void setContentDescription(CharSequence!);
+    method public void setDescription(CharSequence!);
   }
 
   public class HorizontalGridView extends androidx.leanback.widget.BaseGridView {
-    ctor public HorizontalGridView(android.content.Context);
-    ctor public HorizontalGridView(android.content.Context, android.util.AttributeSet);
-    ctor public HorizontalGridView(android.content.Context, android.util.AttributeSet, int);
+    ctor public HorizontalGridView(android.content.Context!);
+    ctor public HorizontalGridView(android.content.Context!, android.util.AttributeSet!);
+    ctor public HorizontalGridView(android.content.Context!, android.util.AttributeSet!, int);
     method public final boolean getFadingLeftEdge();
     method public final int getFadingLeftEdgeLength();
     method public final int getFadingLeftEdgeOffset();
     method public final boolean getFadingRightEdge();
     method public final int getFadingRightEdgeLength();
     method public final int getFadingRightEdgeOffset();
-    method protected void initAttributes(android.content.Context, android.util.AttributeSet);
+    method protected void initAttributes(android.content.Context!, android.util.AttributeSet!);
     method public final void setFadingLeftEdge(boolean);
     method public final void setFadingLeftEdgeLength(int);
     method public final void setFadingLeftEdgeOffset(int);
@@ -2045,31 +2151,31 @@
 
   public final class HorizontalHoverCardSwitcher extends androidx.leanback.widget.PresenterSwitcher {
     ctor public HorizontalHoverCardSwitcher();
-    method protected void insertView(android.view.View);
-    method public void select(androidx.leanback.widget.HorizontalGridView, android.view.View, java.lang.Object);
+    method protected void insertView(android.view.View!);
+    method public void select(androidx.leanback.widget.HorizontalGridView!, android.view.View!, Object!);
   }
 
   public class ImageCardView extends androidx.leanback.widget.BaseCardView {
-    ctor public deprecated ImageCardView(android.content.Context, int);
-    ctor public ImageCardView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ImageCardView(android.content.Context);
-    ctor public ImageCardView(android.content.Context, android.util.AttributeSet);
-    method public android.graphics.drawable.Drawable getBadgeImage();
-    method public java.lang.CharSequence getContentText();
-    method public android.graphics.drawable.Drawable getInfoAreaBackground();
-    method public android.graphics.drawable.Drawable getMainImage();
-    method public final android.widget.ImageView getMainImageView();
-    method public java.lang.CharSequence getTitleText();
-    method public void setBadgeImage(android.graphics.drawable.Drawable);
-    method public void setContentText(java.lang.CharSequence);
-    method public void setInfoAreaBackground(android.graphics.drawable.Drawable);
-    method public void setInfoAreaBackgroundColor(int);
-    method public void setMainImage(android.graphics.drawable.Drawable);
-    method public void setMainImage(android.graphics.drawable.Drawable, boolean);
+    ctor @Deprecated public ImageCardView(android.content.Context!, int);
+    ctor public ImageCardView(android.content.Context!, android.util.AttributeSet!, int);
+    ctor public ImageCardView(android.content.Context!);
+    ctor public ImageCardView(android.content.Context!, android.util.AttributeSet!);
+    method public android.graphics.drawable.Drawable! getBadgeImage();
+    method public CharSequence! getContentText();
+    method public android.graphics.drawable.Drawable! getInfoAreaBackground();
+    method public android.graphics.drawable.Drawable! getMainImage();
+    method public final android.widget.ImageView! getMainImageView();
+    method public CharSequence! getTitleText();
+    method public void setBadgeImage(android.graphics.drawable.Drawable!);
+    method public void setContentText(CharSequence!);
+    method public void setInfoAreaBackground(android.graphics.drawable.Drawable!);
+    method public void setInfoAreaBackgroundColor(@ColorInt int);
+    method public void setMainImage(android.graphics.drawable.Drawable!);
+    method public void setMainImage(android.graphics.drawable.Drawable!, boolean);
     method public void setMainImageAdjustViewBounds(boolean);
     method public void setMainImageDimensions(int, int);
-    method public void setMainImageScaleType(android.widget.ImageView.ScaleType);
-    method public void setTitleText(java.lang.CharSequence);
+    method public void setMainImageScaleType(android.widget.ImageView.ScaleType!);
+    method public void setTitleText(CharSequence!);
     field public static final int CARD_TYPE_FLAG_CONTENT = 2; // 0x2
     field public static final int CARD_TYPE_FLAG_ICON_LEFT = 8; // 0x8
     field public static final int CARD_TYPE_FLAG_ICON_RIGHT = 4; // 0x4
@@ -2077,19 +2183,19 @@
     field public static final int CARD_TYPE_FLAG_TITLE = 1; // 0x1
   }
 
-  public abstract interface ImeKeyMonitor {
-    method public abstract void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener);
+  public interface ImeKeyMonitor {
+    method public void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener!);
   }
 
-  public static abstract interface ImeKeyMonitor.ImeKeyListener {
-    method public abstract boolean onKeyPreIme(android.widget.EditText, int, android.view.KeyEvent);
+  public static interface ImeKeyMonitor.ImeKeyListener {
+    method public boolean onKeyPreIme(android.widget.EditText!, int, android.view.KeyEvent!);
   }
 
   public final class ItemAlignmentFacet {
     ctor public ItemAlignmentFacet();
-    method public androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[] getAlignmentDefs();
+    method public androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[]! getAlignmentDefs();
     method public boolean isMultiAlignment();
-    method public void setAlignmentDefs(androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[]);
+    method public void setAlignmentDefs(androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[]!);
     field public static final float ITEM_ALIGN_OFFSET_PERCENT_DISABLED = -1.0f;
   }
 
@@ -2110,113 +2216,113 @@
   }
 
   public class ItemBridgeAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter implements androidx.leanback.widget.FacetProviderAdapter {
-    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter, androidx.leanback.widget.PresenterSelector);
-    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter);
+    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter!, androidx.leanback.widget.PresenterSelector!);
+    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter!);
     ctor public ItemBridgeAdapter();
     method public void clear();
-    method public androidx.leanback.widget.FacetProvider getFacetProvider(int);
+    method public androidx.leanback.widget.FacetProvider! getFacetProvider(int);
     method public int getItemCount();
-    method public java.util.ArrayList<androidx.leanback.widget.Presenter> getPresenterMapper();
-    method public androidx.leanback.widget.ItemBridgeAdapter.Wrapper getWrapper();
-    method protected void onAddPresenter(androidx.leanback.widget.Presenter, int);
-    method protected void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method protected void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder, int);
-    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder, int, java.util.List);
-    method protected void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final androidx.recyclerview.widget.RecyclerView.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
-    method protected void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final boolean onFailedToRecycleView(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method protected void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final void onViewAttachedToWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public final void onViewDetachedFromWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public final void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setAdapterListener(androidx.leanback.widget.ItemBridgeAdapter.AdapterListener);
-    method public void setPresenter(androidx.leanback.widget.PresenterSelector);
-    method public void setPresenterMapper(java.util.ArrayList<androidx.leanback.widget.Presenter>);
-    method public void setWrapper(androidx.leanback.widget.ItemBridgeAdapter.Wrapper);
+    method public java.util.ArrayList<androidx.leanback.widget.Presenter>! getPresenterMapper();
+    method public androidx.leanback.widget.ItemBridgeAdapter.Wrapper! getWrapper();
+    method protected void onAddPresenter(androidx.leanback.widget.Presenter!, int);
+    method protected void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method protected void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder!, int);
+    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder!, int, java.util.List!);
+    method protected void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final androidx.recyclerview.widget.RecyclerView.ViewHolder! onCreateViewHolder(android.view.ViewGroup!, int);
+    method protected void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final boolean onFailedToRecycleView(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method protected void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final void onViewAttachedToWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method public final void onViewDetachedFromWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method public final void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setAdapterListener(androidx.leanback.widget.ItemBridgeAdapter.AdapterListener!);
+    method public void setPresenter(androidx.leanback.widget.PresenterSelector!);
+    method public void setPresenterMapper(java.util.ArrayList<androidx.leanback.widget.Presenter>!);
+    method public void setWrapper(androidx.leanback.widget.ItemBridgeAdapter.Wrapper!);
   }
 
   public static class ItemBridgeAdapter.AdapterListener {
     ctor public ItemBridgeAdapter.AdapterListener();
-    method public void onAddPresenter(androidx.leanback.widget.Presenter, int);
-    method public void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder, java.util.List);
-    method public void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
+    method public void onAddPresenter(androidx.leanback.widget.Presenter!, int);
+    method public void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!, java.util.List!);
+    method public void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
   }
 
   public class ItemBridgeAdapter.ViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder implements androidx.leanback.widget.FacetProvider {
-    method public final java.lang.Object getExtraObject();
-    method public java.lang.Object getFacet(java.lang.Class<?>);
-    method public final java.lang.Object getItem();
-    method public final androidx.leanback.widget.Presenter getPresenter();
-    method public final androidx.leanback.widget.Presenter.ViewHolder getViewHolder();
-    method public void setExtraObject(java.lang.Object);
+    method public final Object! getExtraObject();
+    method public Object! getFacet(Class<?>!);
+    method public final Object! getItem();
+    method public final androidx.leanback.widget.Presenter! getPresenter();
+    method public final androidx.leanback.widget.Presenter.ViewHolder! getViewHolder();
+    method public void setExtraObject(Object!);
   }
 
-  public static abstract class ItemBridgeAdapter.Wrapper {
+  public abstract static class ItemBridgeAdapter.Wrapper {
     ctor public ItemBridgeAdapter.Wrapper();
-    method public abstract android.view.View createWrapper(android.view.View);
-    method public abstract void wrap(android.view.View, android.view.View);
+    method public abstract android.view.View! createWrapper(android.view.View!);
+    method public abstract void wrap(android.view.View!, android.view.View!);
   }
 
   public class ItemBridgeAdapterShadowOverlayWrapper extends androidx.leanback.widget.ItemBridgeAdapter.Wrapper {
-    ctor public ItemBridgeAdapterShadowOverlayWrapper(androidx.leanback.widget.ShadowOverlayHelper);
-    method public android.view.View createWrapper(android.view.View);
-    method public void wrap(android.view.View, android.view.View);
+    ctor public ItemBridgeAdapterShadowOverlayWrapper(androidx.leanback.widget.ShadowOverlayHelper!);
+    method public android.view.View! createWrapper(android.view.View!);
+    method public void wrap(android.view.View!, android.view.View!);
   }
 
   public class ListRow extends androidx.leanback.widget.Row {
-    ctor public ListRow(androidx.leanback.widget.HeaderItem, androidx.leanback.widget.ObjectAdapter);
-    ctor public ListRow(long, androidx.leanback.widget.HeaderItem, androidx.leanback.widget.ObjectAdapter);
-    ctor public ListRow(androidx.leanback.widget.ObjectAdapter);
-    method public final androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public java.lang.CharSequence getContentDescription();
-    method public void setContentDescription(java.lang.CharSequence);
+    ctor public ListRow(androidx.leanback.widget.HeaderItem!, androidx.leanback.widget.ObjectAdapter!);
+    ctor public ListRow(long, androidx.leanback.widget.HeaderItem!, androidx.leanback.widget.ObjectAdapter!);
+    ctor public ListRow(androidx.leanback.widget.ObjectAdapter!);
+    method public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public CharSequence! getContentDescription();
+    method public void setContentDescription(CharSequence!);
   }
 
   public final class ListRowHoverCardView extends android.widget.LinearLayout {
-    ctor public ListRowHoverCardView(android.content.Context);
-    ctor public ListRowHoverCardView(android.content.Context, android.util.AttributeSet);
-    ctor public ListRowHoverCardView(android.content.Context, android.util.AttributeSet, int);
-    method public java.lang.CharSequence getDescription();
-    method public java.lang.CharSequence getTitle();
-    method public void setDescription(java.lang.CharSequence);
-    method public void setTitle(java.lang.CharSequence);
+    ctor public ListRowHoverCardView(android.content.Context!);
+    ctor public ListRowHoverCardView(android.content.Context!, android.util.AttributeSet!);
+    ctor public ListRowHoverCardView(android.content.Context!, android.util.AttributeSet!, int);
+    method public CharSequence! getDescription();
+    method public CharSequence! getTitle();
+    method public void setDescription(CharSequence!);
+    method public void setTitle(CharSequence!);
   }
 
   public class ListRowPresenter extends androidx.leanback.widget.RowPresenter {
     ctor public ListRowPresenter();
     ctor public ListRowPresenter(int);
     ctor public ListRowPresenter(int, boolean);
-    method protected void applySelectLevelToChild(androidx.leanback.widget.ListRowPresenter.ViewHolder, android.view.View);
+    method protected void applySelectLevelToChild(androidx.leanback.widget.ListRowPresenter.ViewHolder!, android.view.View!);
     method public final boolean areChildRoundedCornersEnabled();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected androidx.leanback.widget.ShadowOverlayHelper.Options createShadowOverlayOptions();
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method protected androidx.leanback.widget.ShadowOverlayHelper.Options! createShadowOverlayOptions();
     method public final void enableChildRoundedCorners(boolean);
     method public int getExpandedRowHeight();
     method public final int getFocusZoomFactor();
-    method public final androidx.leanback.widget.PresenterSelector getHoverCardPresenterSelector();
-    method public int getRecycledPoolSize(androidx.leanback.widget.Presenter);
+    method public final androidx.leanback.widget.PresenterSelector! getHoverCardPresenterSelector();
+    method public int getRecycledPoolSize(androidx.leanback.widget.Presenter!);
     method public int getRowHeight();
     method public final boolean getShadowEnabled();
-    method public final deprecated int getZoomFactor();
+    method @Deprecated public final int getZoomFactor();
     method public final boolean isFocusDimmerUsed();
     method public final boolean isKeepChildForeground();
     method public boolean isUsingDefaultListSelectEffect();
     method public final boolean isUsingDefaultSelectEffect();
     method public boolean isUsingDefaultShadow();
-    method public boolean isUsingOutlineClipping(android.content.Context);
-    method public boolean isUsingZOrder(android.content.Context);
+    method public boolean isUsingOutlineClipping(android.content.Context!);
+    method public boolean isUsingZOrder(android.content.Context!);
     method public void setExpandedRowHeight(int);
-    method public final void setHoverCardPresenterSelector(androidx.leanback.widget.PresenterSelector);
+    method public final void setHoverCardPresenterSelector(androidx.leanback.widget.PresenterSelector!);
     method public final void setKeepChildForeground(boolean);
     method public void setNumRows(int);
-    method public void setRecycledPoolSize(androidx.leanback.widget.Presenter, int);
+    method public void setRecycledPoolSize(androidx.leanback.widget.Presenter!, int);
     method public void setRowHeight(int);
     method public final void setShadowEnabled(boolean);
   }
@@ -2224,379 +2330,379 @@
   public static class ListRowPresenter.SelectItemViewHolderTask extends androidx.leanback.widget.Presenter.ViewHolderTask {
     ctor public ListRowPresenter.SelectItemViewHolderTask(int);
     method public int getItemPosition();
-    method public androidx.leanback.widget.Presenter.ViewHolderTask getItemTask();
+    method public androidx.leanback.widget.Presenter.ViewHolderTask! getItemTask();
     method public boolean isSmoothScroll();
     method public void setItemPosition(int);
-    method public void setItemTask(androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setItemTask(androidx.leanback.widget.Presenter.ViewHolderTask!);
     method public void setSmoothScroll(boolean);
   }
 
   public static class ListRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public ListRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.HorizontalGridView, androidx.leanback.widget.ListRowPresenter);
-    method public final androidx.leanback.widget.ItemBridgeAdapter getBridgeAdapter();
-    method public final androidx.leanback.widget.HorizontalGridView getGridView();
-    method public androidx.leanback.widget.Presenter.ViewHolder getItemViewHolder(int);
-    method public final androidx.leanback.widget.ListRowPresenter getListRowPresenter();
+    ctor public ListRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.HorizontalGridView!, androidx.leanback.widget.ListRowPresenter!);
+    method public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method public final androidx.leanback.widget.HorizontalGridView! getGridView();
+    method public androidx.leanback.widget.Presenter.ViewHolder! getItemViewHolder(int);
+    method public final androidx.leanback.widget.ListRowPresenter! getListRowPresenter();
     method public int getSelectedPosition();
   }
 
   public final class ListRowView extends android.widget.LinearLayout {
-    ctor public ListRowView(android.content.Context);
-    ctor public ListRowView(android.content.Context, android.util.AttributeSet);
-    ctor public ListRowView(android.content.Context, android.util.AttributeSet, int);
-    method public androidx.leanback.widget.HorizontalGridView getGridView();
+    ctor public ListRowView(android.content.Context!);
+    ctor public ListRowView(android.content.Context!, android.util.AttributeSet!);
+    ctor public ListRowView(android.content.Context!, android.util.AttributeSet!, int);
+    method public androidx.leanback.widget.HorizontalGridView! getGridView();
   }
 
-  public abstract interface MultiActionsProvider {
-    method public abstract androidx.leanback.widget.MultiActionsProvider.MultiAction[] getActions();
+  public interface MultiActionsProvider {
+    method public androidx.leanback.widget.MultiActionsProvider.MultiAction[]! getActions();
   }
 
   public static class MultiActionsProvider.MultiAction {
     ctor public MultiActionsProvider.MultiAction(long);
-    method public android.graphics.drawable.Drawable getCurrentDrawable();
-    method public android.graphics.drawable.Drawable[] getDrawables();
+    method public android.graphics.drawable.Drawable! getCurrentDrawable();
+    method public android.graphics.drawable.Drawable[]! getDrawables();
     method public long getId();
     method public int getIndex();
     method public void incrementIndex();
-    method public void setDrawables(android.graphics.drawable.Drawable[]);
+    method public void setDrawables(android.graphics.drawable.Drawable[]!);
     method public void setIndex(int);
   }
 
   public abstract class ObjectAdapter {
-    ctor public ObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public ObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public ObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public ObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public ObjectAdapter();
-    method public abstract java.lang.Object get(int);
+    method public abstract Object! get(int);
     method public long getId(int);
-    method public final androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public final androidx.leanback.widget.PresenterSelector getPresenterSelector();
+    method public final androidx.leanback.widget.Presenter! getPresenter(Object!);
+    method public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
     method public final boolean hasStableIds();
     method public boolean isImmediateNotifySupported();
     method protected final void notifyChanged();
     method protected final void notifyItemMoved(int, int);
     method public final void notifyItemRangeChanged(int, int);
-    method public final void notifyItemRangeChanged(int, int, java.lang.Object);
+    method public final void notifyItemRangeChanged(int, int, Object!);
     method protected final void notifyItemRangeInserted(int, int);
     method protected final void notifyItemRangeRemoved(int, int);
     method protected void onHasStableIdsChanged();
     method protected void onPresenterSelectorChanged();
-    method public final void registerObserver(androidx.leanback.widget.ObjectAdapter.DataObserver);
+    method public final void registerObserver(androidx.leanback.widget.ObjectAdapter.DataObserver!);
     method public final void setHasStableIds(boolean);
-    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector);
+    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
     method public abstract int size();
     method public final void unregisterAllObservers();
-    method public final void unregisterObserver(androidx.leanback.widget.ObjectAdapter.DataObserver);
+    method public final void unregisterObserver(androidx.leanback.widget.ObjectAdapter.DataObserver!);
     field public static final int NO_ID = -1; // 0xffffffff
   }
 
-  public static abstract class ObjectAdapter.DataObserver {
+  public abstract static class ObjectAdapter.DataObserver {
     ctor public ObjectAdapter.DataObserver();
     method public void onChanged();
     method public void onItemMoved(int, int);
     method public void onItemRangeChanged(int, int);
-    method public void onItemRangeChanged(int, int, java.lang.Object);
+    method public void onItemRangeChanged(int, int, Object!);
     method public void onItemRangeInserted(int, int);
     method public void onItemRangeRemoved(int, int);
   }
 
-  public abstract interface OnActionClickedListener {
-    method public abstract void onActionClicked(androidx.leanback.widget.Action);
+  public interface OnActionClickedListener {
+    method public void onActionClicked(androidx.leanback.widget.Action!);
   }
 
-  public abstract interface OnChildLaidOutListener {
-    method public abstract void onChildLaidOut(android.view.ViewGroup, android.view.View, int, long);
+  public interface OnChildLaidOutListener {
+    method public void onChildLaidOut(android.view.ViewGroup!, android.view.View!, int, long);
   }
 
-  public abstract deprecated interface OnChildSelectedListener {
-    method public abstract void onChildSelected(android.view.ViewGroup, android.view.View, int, long);
+  @Deprecated public interface OnChildSelectedListener {
+    method @Deprecated public void onChildSelected(android.view.ViewGroup!, android.view.View!, int, long);
   }
 
   public abstract class OnChildViewHolderSelectedListener {
     ctor public OnChildViewHolderSelectedListener();
-    method public void onChildViewHolderSelected(androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.ViewHolder, int, int);
-    method public void onChildViewHolderSelectedAndPositioned(androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.ViewHolder, int, int);
+    method public void onChildViewHolderSelected(androidx.recyclerview.widget.RecyclerView!, androidx.recyclerview.widget.RecyclerView.ViewHolder!, int, int);
+    method public void onChildViewHolderSelectedAndPositioned(androidx.recyclerview.widget.RecyclerView!, androidx.recyclerview.widget.RecyclerView.ViewHolder!, int, int);
   }
 
-  public abstract interface OnItemViewClickedListener implements androidx.leanback.widget.BaseOnItemViewClickedListener {
+  public interface OnItemViewClickedListener extends androidx.leanback.widget.BaseOnItemViewClickedListener<androidx.leanback.widget.Row> {
   }
 
-  public abstract interface OnItemViewSelectedListener implements androidx.leanback.widget.BaseOnItemViewSelectedListener {
+  public interface OnItemViewSelectedListener extends androidx.leanback.widget.BaseOnItemViewSelectedListener<androidx.leanback.widget.Row> {
   }
 
   public class PageRow extends androidx.leanback.widget.Row {
-    ctor public PageRow(androidx.leanback.widget.HeaderItem);
+    ctor public PageRow(androidx.leanback.widget.HeaderItem!);
     method public final boolean isRenderedAsRowView();
   }
 
   public abstract class Parallax<PropertyT extends android.util.Property> {
     ctor public Parallax();
-    method public androidx.leanback.widget.ParallaxEffect addEffect(androidx.leanback.widget.Parallax.PropertyMarkerValue...);
-    method public final PropertyT addProperty(java.lang.String);
-    method public abstract PropertyT createProperty(java.lang.String, int);
-    method public java.util.List<androidx.leanback.widget.ParallaxEffect> getEffects();
+    method public androidx.leanback.widget.ParallaxEffect! addEffect(androidx.leanback.widget.Parallax.PropertyMarkerValue...!);
+    method public final PropertyT! addProperty(String!);
+    method public abstract PropertyT! createProperty(String!, int);
+    method public java.util.List<androidx.leanback.widget.ParallaxEffect>! getEffects();
     method public abstract float getMaxValue();
-    method public final java.util.List<PropertyT> getProperties();
+    method public final java.util.List<PropertyT>! getProperties();
     method public void removeAllEffects();
-    method public void removeEffect(androidx.leanback.widget.ParallaxEffect);
-    method public void updateValues();
+    method public void removeEffect(androidx.leanback.widget.ParallaxEffect!);
+    method @CallSuper public void updateValues();
   }
 
-  public static class Parallax.FloatProperty extends android.util.Property {
-    ctor public Parallax.FloatProperty(java.lang.String, int);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue at(float, float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atAbsolute(float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atFraction(float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMax();
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMin();
-    method public final java.lang.Float get(androidx.leanback.widget.Parallax);
+  public static class Parallax.FloatProperty extends android.util.Property<androidx.leanback.widget.Parallax,java.lang.Float> {
+    ctor public Parallax.FloatProperty(String!, int);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! at(float, float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atAbsolute(float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atFraction(float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMax();
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMin();
+    method public final Float! get(androidx.leanback.widget.Parallax!);
     method public final int getIndex();
-    method public final float getValue(androidx.leanback.widget.Parallax);
-    method public final void set(androidx.leanback.widget.Parallax, java.lang.Float);
-    method public final void setValue(androidx.leanback.widget.Parallax, float);
+    method public final float getValue(androidx.leanback.widget.Parallax!);
+    method public final void set(androidx.leanback.widget.Parallax!, Float!);
+    method public final void setValue(androidx.leanback.widget.Parallax!, float);
     field public static final float UNKNOWN_AFTER = 3.4028235E38f;
     field public static final float UNKNOWN_BEFORE = -3.4028235E38f;
   }
 
-  public static class Parallax.IntProperty extends android.util.Property {
-    ctor public Parallax.IntProperty(java.lang.String, int);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue at(int, float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atAbsolute(int);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atFraction(float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMax();
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMin();
-    method public final java.lang.Integer get(androidx.leanback.widget.Parallax);
+  public static class Parallax.IntProperty extends android.util.Property<androidx.leanback.widget.Parallax,java.lang.Integer> {
+    ctor public Parallax.IntProperty(String!, int);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! at(int, float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atAbsolute(int);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atFraction(float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMax();
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMin();
+    method public final Integer! get(androidx.leanback.widget.Parallax!);
     method public final int getIndex();
-    method public final int getValue(androidx.leanback.widget.Parallax);
-    method public final void set(androidx.leanback.widget.Parallax, java.lang.Integer);
-    method public final void setValue(androidx.leanback.widget.Parallax, int);
+    method public final int getValue(androidx.leanback.widget.Parallax!);
+    method public final void set(androidx.leanback.widget.Parallax!, Integer!);
+    method public final void setValue(androidx.leanback.widget.Parallax!, int);
     field public static final int UNKNOWN_AFTER = 2147483647; // 0x7fffffff
     field public static final int UNKNOWN_BEFORE = -2147483648; // 0x80000000
   }
 
   public static class Parallax.PropertyMarkerValue<PropertyT> {
-    ctor public Parallax.PropertyMarkerValue(PropertyT);
-    method public PropertyT getProperty();
+    ctor public Parallax.PropertyMarkerValue(PropertyT!);
+    method public PropertyT! getProperty();
   }
 
   public abstract class ParallaxEffect {
-    method public final void addTarget(androidx.leanback.widget.ParallaxTarget);
-    method public final java.util.List<androidx.leanback.widget.Parallax.PropertyMarkerValue> getPropertyRanges();
-    method public final java.util.List<androidx.leanback.widget.ParallaxTarget> getTargets();
-    method public final void performMapping(androidx.leanback.widget.Parallax);
-    method public final void removeTarget(androidx.leanback.widget.ParallaxTarget);
-    method public final void setPropertyRanges(androidx.leanback.widget.Parallax.PropertyMarkerValue...);
-    method public final androidx.leanback.widget.ParallaxEffect target(androidx.leanback.widget.ParallaxTarget);
-    method public final androidx.leanback.widget.ParallaxEffect target(java.lang.Object, android.animation.PropertyValuesHolder);
-    method public final <T, V extends java.lang.Number> androidx.leanback.widget.ParallaxEffect target(T, android.util.Property<T, V>);
+    method public final void addTarget(androidx.leanback.widget.ParallaxTarget!);
+    method public final java.util.List<androidx.leanback.widget.Parallax.PropertyMarkerValue>! getPropertyRanges();
+    method public final java.util.List<androidx.leanback.widget.ParallaxTarget>! getTargets();
+    method public final void performMapping(androidx.leanback.widget.Parallax!);
+    method public final void removeTarget(androidx.leanback.widget.ParallaxTarget!);
+    method public final void setPropertyRanges(androidx.leanback.widget.Parallax.PropertyMarkerValue...!);
+    method public final androidx.leanback.widget.ParallaxEffect! target(androidx.leanback.widget.ParallaxTarget!);
+    method public final androidx.leanback.widget.ParallaxEffect! target(Object!, android.animation.PropertyValuesHolder!);
+    method public final <T, V extends java.lang.Number> androidx.leanback.widget.ParallaxEffect! target(T!, android.util.Property<T,V>!);
   }
 
   public abstract class ParallaxTarget {
     ctor public ParallaxTarget();
-    method public void directUpdate(java.lang.Number);
+    method public void directUpdate(Number!);
     method public boolean isDirectMapping();
     method public void update(float);
   }
 
-  public static final class ParallaxTarget.DirectPropertyTarget<T, V extends java.lang.Number> extends androidx.leanback.widget.ParallaxTarget {
-    ctor public ParallaxTarget.DirectPropertyTarget(java.lang.Object, android.util.Property<T, V>);
+  public static final class ParallaxTarget.DirectPropertyTarget<T extends java.lang.Object, V extends java.lang.Number> extends androidx.leanback.widget.ParallaxTarget {
+    ctor public ParallaxTarget.DirectPropertyTarget(Object!, android.util.Property<T,V>!);
   }
 
   public static final class ParallaxTarget.PropertyValuesHolderTarget extends androidx.leanback.widget.ParallaxTarget {
-    ctor public ParallaxTarget.PropertyValuesHolderTarget(java.lang.Object, android.animation.PropertyValuesHolder);
+    ctor public ParallaxTarget.PropertyValuesHolderTarget(Object!, android.animation.PropertyValuesHolder!);
   }
 
   public class PlaybackControlsRow extends androidx.leanback.widget.Row {
-    ctor public PlaybackControlsRow(java.lang.Object);
+    ctor public PlaybackControlsRow(Object!);
     ctor public PlaybackControlsRow();
-    method public androidx.leanback.widget.Action getActionForKeyCode(int);
-    method public androidx.leanback.widget.Action getActionForKeyCode(androidx.leanback.widget.ObjectAdapter, int);
+    method public androidx.leanback.widget.Action! getActionForKeyCode(int);
+    method public androidx.leanback.widget.Action! getActionForKeyCode(androidx.leanback.widget.ObjectAdapter!, int);
     method public long getBufferedPosition();
-    method public deprecated int getBufferedProgress();
-    method public deprecated long getBufferedProgressLong();
+    method @Deprecated public int getBufferedProgress();
+    method @Deprecated public long getBufferedProgressLong();
     method public long getCurrentPosition();
-    method public deprecated int getCurrentTime();
-    method public deprecated long getCurrentTimeLong();
+    method @Deprecated public int getCurrentTime();
+    method @Deprecated public long getCurrentTimeLong();
     method public long getDuration();
-    method public final android.graphics.drawable.Drawable getImageDrawable();
-    method public final java.lang.Object getItem();
-    method public final androidx.leanback.widget.ObjectAdapter getPrimaryActionsAdapter();
-    method public final androidx.leanback.widget.ObjectAdapter getSecondaryActionsAdapter();
-    method public deprecated int getTotalTime();
-    method public deprecated long getTotalTimeLong();
+    method public final android.graphics.drawable.Drawable! getImageDrawable();
+    method public final Object! getItem();
+    method public final androidx.leanback.widget.ObjectAdapter! getPrimaryActionsAdapter();
+    method public final androidx.leanback.widget.ObjectAdapter! getSecondaryActionsAdapter();
+    method @Deprecated public int getTotalTime();
+    method @Deprecated public long getTotalTimeLong();
     method public void setBufferedPosition(long);
-    method public deprecated void setBufferedProgress(int);
-    method public deprecated void setBufferedProgressLong(long);
+    method @Deprecated public void setBufferedProgress(int);
+    method @Deprecated public void setBufferedProgressLong(long);
     method public void setCurrentPosition(long);
-    method public deprecated void setCurrentTime(int);
-    method public deprecated void setCurrentTimeLong(long);
+    method @Deprecated public void setCurrentTime(int);
+    method @Deprecated public void setCurrentTimeLong(long);
     method public void setDuration(long);
-    method public final void setImageBitmap(android.content.Context, android.graphics.Bitmap);
-    method public final void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setOnPlaybackProgressChangedListener(androidx.leanback.widget.PlaybackControlsRow.OnPlaybackProgressCallback);
-    method public final void setPrimaryActionsAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public final void setSecondaryActionsAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public deprecated void setTotalTime(int);
-    method public deprecated void setTotalTimeLong(long);
+    method public final void setImageBitmap(android.content.Context!, android.graphics.Bitmap!);
+    method public final void setImageDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnPlaybackProgressChangedListener(androidx.leanback.widget.PlaybackControlsRow.OnPlaybackProgressCallback!);
+    method public final void setPrimaryActionsAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public final void setSecondaryActionsAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setTotalTime(int);
+    method @Deprecated public void setTotalTimeLong(long);
   }
 
   public static class PlaybackControlsRow.ClosedCaptioningAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context);
-    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context!);
+    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context!, int);
     field public static final int INDEX_OFF = 0; // 0x0
     field public static final int INDEX_ON = 1; // 0x1
-    field public static final deprecated int OFF = 0; // 0x0
-    field public static final deprecated int ON = 1; // 0x1
+    field @Deprecated public static final int OFF = 0; // 0x0
+    field @Deprecated public static final int ON = 1; // 0x1
   }
 
   public static class PlaybackControlsRow.FastForwardAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context);
-    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context!);
+    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context!, int);
   }
 
   public static class PlaybackControlsRow.HighQualityAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context);
-    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context!);
+    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context!, int);
     field public static final int INDEX_OFF = 0; // 0x0
     field public static final int INDEX_ON = 1; // 0x1
-    field public static final deprecated int OFF = 0; // 0x0
-    field public static final deprecated int ON = 1; // 0x1
+    field @Deprecated public static final int OFF = 0; // 0x0
+    field @Deprecated public static final int ON = 1; // 0x1
   }
 
   public static class PlaybackControlsRow.MoreActions extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.MoreActions(android.content.Context);
+    ctor public PlaybackControlsRow.MoreActions(android.content.Context!);
   }
 
-  public static abstract class PlaybackControlsRow.MultiAction extends androidx.leanback.widget.Action {
+  public abstract static class PlaybackControlsRow.MultiAction extends androidx.leanback.widget.Action {
     ctor public PlaybackControlsRow.MultiAction(int);
     method public int getActionCount();
-    method public android.graphics.drawable.Drawable getDrawable(int);
+    method public android.graphics.drawable.Drawable! getDrawable(int);
     method public int getIndex();
-    method public java.lang.String getLabel(int);
-    method public java.lang.String getSecondaryLabel(int);
+    method public String! getLabel(int);
+    method public String! getSecondaryLabel(int);
     method public void nextIndex();
-    method public void setDrawables(android.graphics.drawable.Drawable[]);
+    method public void setDrawables(android.graphics.drawable.Drawable[]!);
     method public void setIndex(int);
-    method public void setLabels(java.lang.String[]);
-    method public void setSecondaryLabels(java.lang.String[]);
+    method public void setLabels(String[]!);
+    method public void setSecondaryLabels(String[]!);
   }
 
   public static class PlaybackControlsRow.OnPlaybackProgressCallback {
     ctor public PlaybackControlsRow.OnPlaybackProgressCallback();
-    method public void onBufferedPositionChanged(androidx.leanback.widget.PlaybackControlsRow, long);
-    method public void onCurrentPositionChanged(androidx.leanback.widget.PlaybackControlsRow, long);
-    method public void onDurationChanged(androidx.leanback.widget.PlaybackControlsRow, long);
+    method public void onBufferedPositionChanged(androidx.leanback.widget.PlaybackControlsRow!, long);
+    method public void onCurrentPositionChanged(androidx.leanback.widget.PlaybackControlsRow!, long);
+    method public void onDurationChanged(androidx.leanback.widget.PlaybackControlsRow!, long);
   }
 
   public static class PlaybackControlsRow.PictureInPictureAction extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.PictureInPictureAction(android.content.Context);
+    ctor public PlaybackControlsRow.PictureInPictureAction(android.content.Context!);
   }
 
   public static class PlaybackControlsRow.PlayPauseAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.PlayPauseAction(android.content.Context);
+    ctor public PlaybackControlsRow.PlayPauseAction(android.content.Context!);
     field public static final int INDEX_PAUSE = 1; // 0x1
     field public static final int INDEX_PLAY = 0; // 0x0
-    field public static final deprecated int PAUSE = 1; // 0x1
-    field public static final deprecated int PLAY = 0; // 0x0
+    field @Deprecated public static final int PAUSE = 1; // 0x1
+    field @Deprecated public static final int PLAY = 0; // 0x0
   }
 
   public static class PlaybackControlsRow.RepeatAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context);
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context, int);
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context, int, int);
-    field public static final deprecated int ALL = 1; // 0x1
+    ctor public PlaybackControlsRow.RepeatAction(android.content.Context!);
+    ctor public PlaybackControlsRow.RepeatAction(android.content.Context!, int);
+    ctor public PlaybackControlsRow.RepeatAction(android.content.Context!, int, int);
+    field @Deprecated public static final int ALL = 1; // 0x1
     field public static final int INDEX_ALL = 1; // 0x1
     field public static final int INDEX_NONE = 0; // 0x0
     field public static final int INDEX_ONE = 2; // 0x2
-    field public static final deprecated int NONE = 0; // 0x0
-    field public static final deprecated int  // 0x2
+    field @Deprecated public static final int NONE = 0; // 0x0
+    field @Deprecated public static final int  // 0x2
   }
 
   public static class PlaybackControlsRow.RewindAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.RewindAction(android.content.Context);
-    ctor public PlaybackControlsRow.RewindAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.RewindAction(android.content.Context!);
+    ctor public PlaybackControlsRow.RewindAction(android.content.Context!, int);
   }
 
   public static class PlaybackControlsRow.ShuffleAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context);
-    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context!);
+    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context!, int);
     field public static final int INDEX_OFF = 0; // 0x0
     field public static final int INDEX_ON = 1; // 0x1
-    field public static final deprecated int OFF = 0; // 0x0
-    field public static final deprecated int ON = 1; // 0x1
+    field @Deprecated public static final int OFF = 0; // 0x0
+    field @Deprecated public static final int ON = 1; // 0x1
   }
 
   public static class PlaybackControlsRow.SkipNextAction extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.SkipNextAction(android.content.Context);
+    ctor public PlaybackControlsRow.SkipNextAction(android.content.Context!);
   }
 
   public static class PlaybackControlsRow.SkipPreviousAction extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.SkipPreviousAction(android.content.Context);
+    ctor public PlaybackControlsRow.SkipPreviousAction(android.content.Context!);
   }
 
-  public static abstract class PlaybackControlsRow.ThumbsAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ThumbsAction(int, android.content.Context, int, int);
+  public abstract static class PlaybackControlsRow.ThumbsAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
+    ctor public PlaybackControlsRow.ThumbsAction(int, android.content.Context!, int, int);
     field public static final int INDEX_OUTLINE = 1; // 0x1
     field public static final int INDEX_SOLID = 0; // 0x0
-    field public static final deprecated int OUTLINE = 1; // 0x1
-    field public static final deprecated int SOLID = 0; // 0x0
+    field @Deprecated public static final int OUTLINE = 1; // 0x1
+    field @Deprecated public static final int SOLID = 0; // 0x0
   }
 
   public static class PlaybackControlsRow.ThumbsDownAction extends androidx.leanback.widget.PlaybackControlsRow.ThumbsAction {
-    ctor public PlaybackControlsRow.ThumbsDownAction(android.content.Context);
+    ctor public PlaybackControlsRow.ThumbsDownAction(android.content.Context!);
   }
 
   public static class PlaybackControlsRow.ThumbsUpAction extends androidx.leanback.widget.PlaybackControlsRow.ThumbsAction {
-    ctor public PlaybackControlsRow.ThumbsUpAction(android.content.Context);
+    ctor public PlaybackControlsRow.ThumbsUpAction(android.content.Context!);
   }
 
   public class PlaybackControlsRowPresenter extends androidx.leanback.widget.PlaybackRowPresenter {
-    ctor public PlaybackControlsRowPresenter(androidx.leanback.widget.Presenter);
+    ctor public PlaybackControlsRowPresenter(androidx.leanback.widget.Presenter!);
     ctor public PlaybackControlsRowPresenter();
     method public boolean areSecondaryActionsHidden();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public int getBackgroundColor();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public int getProgressColor();
-    method public void setBackgroundColor(int);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public void setProgressColor(int);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method @ColorInt public int getBackgroundColor();
+    method public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
+    method @ColorInt public int getProgressColor();
+    method public void setBackgroundColor(@ColorInt int);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method public void setProgressColor(@ColorInt int);
     method public void setSecondaryActionsHidden(boolean);
-    method public void showBottomSpace(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder, boolean);
-    method public void showPrimaryActions(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder);
+    method public void showBottomSpace(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder!, boolean);
+    method public void showPrimaryActions(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder!);
   }
 
   public class PlaybackControlsRowPresenter.ViewHolder extends androidx.leanback.widget.PlaybackRowPresenter.ViewHolder {
-    field public final androidx.leanback.widget.Presenter.ViewHolder mDescriptionViewHolder;
+    field public final androidx.leanback.widget.Presenter.ViewHolder! mDescriptionViewHolder;
   }
 
   public abstract class PlaybackRowPresenter extends androidx.leanback.widget.RowPresenter {
     ctor public PlaybackRowPresenter();
-    method public void onReappear(androidx.leanback.widget.RowPresenter.ViewHolder);
+    method public void onReappear(androidx.leanback.widget.RowPresenter.ViewHolder!);
   }
 
   public static class PlaybackRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public PlaybackRowPresenter.ViewHolder(android.view.View);
+    ctor public PlaybackRowPresenter.ViewHolder(android.view.View!);
   }
 
   public class PlaybackSeekDataProvider {
     ctor public PlaybackSeekDataProvider();
-    method public long[] getSeekPositions();
-    method public void getThumbnail(int, androidx.leanback.widget.PlaybackSeekDataProvider.ResultCallback);
+    method public long[]! getSeekPositions();
+    method public void getThumbnail(int, androidx.leanback.widget.PlaybackSeekDataProvider.ResultCallback!);
     method public void reset();
   }
 
   public static class PlaybackSeekDataProvider.ResultCallback {
     ctor public PlaybackSeekDataProvider.ResultCallback();
-    method public void onThumbnailLoaded(android.graphics.Bitmap, int);
+    method public void onThumbnailLoaded(android.graphics.Bitmap!, int);
   }
 
-  public abstract interface PlaybackSeekUi {
-    method public abstract void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+  public interface PlaybackSeekUi {
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
   }
 
   public static class PlaybackSeekUi.Client {
     ctor public PlaybackSeekUi.Client();
-    method public androidx.leanback.widget.PlaybackSeekDataProvider getPlaybackSeekDataProvider();
+    method public androidx.leanback.widget.PlaybackSeekDataProvider! getPlaybackSeekDataProvider();
     method public boolean isSeekEnabled();
     method public void onSeekFinished(boolean);
     method public void onSeekPositionChanged(long);
@@ -2605,158 +2711,158 @@
 
   public class PlaybackTransportRowPresenter extends androidx.leanback.widget.PlaybackRowPresenter {
     ctor public PlaybackTransportRowPresenter();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
     method public float getDefaultSeekIncrement();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public int getProgressColor();
-    method public int getSecondaryProgressColor();
-    method protected void onProgressBarClicked(androidx.leanback.widget.PlaybackTransportRowPresenter.ViewHolder);
+    method public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
+    method @ColorInt public int getProgressColor();
+    method @ColorInt public int getSecondaryProgressColor();
+    method protected void onProgressBarClicked(androidx.leanback.widget.PlaybackTransportRowPresenter.ViewHolder!);
     method public void setDefaultSeekIncrement(float);
-    method public void setDescriptionPresenter(androidx.leanback.widget.Presenter);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public void setProgressColor(int);
-    method public void setSecondaryProgressColor(int);
+    method public void setDescriptionPresenter(androidx.leanback.widget.Presenter!);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method public void setProgressColor(@ColorInt int);
+    method public void setSecondaryProgressColor(@ColorInt int);
   }
 
   public class PlaybackTransportRowPresenter.ViewHolder extends androidx.leanback.widget.PlaybackRowPresenter.ViewHolder implements androidx.leanback.widget.PlaybackSeekUi {
-    ctor public PlaybackTransportRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.Presenter);
-    method public final android.widget.TextView getCurrentPositionView();
-    method public final androidx.leanback.widget.Presenter.ViewHolder getDescriptionViewHolder();
-    method public final android.widget.TextView getDurationView();
+    ctor public PlaybackTransportRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.Presenter!);
+    method public final android.widget.TextView! getCurrentPositionView();
+    method public final androidx.leanback.widget.Presenter.ViewHolder! getDescriptionViewHolder();
+    method public final android.widget.TextView! getDurationView();
     method protected void onSetCurrentPositionLabel(long);
     method protected void onSetDurationLabel(long);
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
   }
 
   public abstract class Presenter implements androidx.leanback.widget.FacetProvider {
     ctor public Presenter();
-    method protected static void cancelAnimationsRecursive(android.view.View);
-    method public final java.lang.Object getFacet(java.lang.Class<?>);
-    method public abstract void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object, java.util.List<java.lang.Object>);
-    method public abstract androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public abstract void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public final void setFacet(java.lang.Class<?>, java.lang.Object);
-    method public void setOnClickListener(androidx.leanback.widget.Presenter.ViewHolder, android.view.View.OnClickListener);
+    method protected static void cancelAnimationsRecursive(android.view.View!);
+    method public final Object! getFacet(Class<?>!);
+    method public abstract void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!, java.util.List<java.lang.Object>!);
+    method public abstract androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public abstract void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public final void setFacet(Class<?>!, Object!);
+    method public void setOnClickListener(androidx.leanback.widget.Presenter.ViewHolder!, android.view.View.OnClickListener!);
   }
 
   public static class Presenter.ViewHolder implements androidx.leanback.widget.FacetProvider {
-    ctor public Presenter.ViewHolder(android.view.View);
-    method public final java.lang.Object getFacet(java.lang.Class<?>);
-    method public final void setFacet(java.lang.Class<?>, java.lang.Object);
-    field public final android.view.View view;
+    ctor public Presenter.ViewHolder(android.view.View!);
+    method public final Object! getFacet(Class<?>!);
+    method public final void setFacet(Class<?>!, Object!);
+    field public final android.view.View! view;
   }
 
-  public static abstract class Presenter.ViewHolderTask {
+  public abstract static class Presenter.ViewHolderTask {
     ctor public Presenter.ViewHolderTask();
-    method public void run(androidx.leanback.widget.Presenter.ViewHolder);
+    method public void run(androidx.leanback.widget.Presenter.ViewHolder!);
   }
 
   public abstract class PresenterSelector {
     ctor public PresenterSelector();
-    method public abstract androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public androidx.leanback.widget.Presenter[] getPresenters();
+    method public abstract androidx.leanback.widget.Presenter! getPresenter(Object!);
+    method public androidx.leanback.widget.Presenter[]! getPresenters();
   }
 
   public abstract class PresenterSwitcher {
     ctor public PresenterSwitcher();
     method public void clear();
-    method public final android.view.ViewGroup getParentViewGroup();
-    method public void init(android.view.ViewGroup, androidx.leanback.widget.PresenterSelector);
-    method protected abstract void insertView(android.view.View);
-    method protected void onViewSelected(android.view.View);
-    method public void select(java.lang.Object);
-    method protected void showView(android.view.View, boolean);
+    method public final android.view.ViewGroup! getParentViewGroup();
+    method public void init(android.view.ViewGroup!, androidx.leanback.widget.PresenterSelector!);
+    method protected abstract void insertView(android.view.View!);
+    method protected void onViewSelected(android.view.View!);
+    method public void select(Object!);
+    method protected void showView(android.view.View!, boolean);
     method public void unselect();
   }
 
-  public class RecyclerViewParallax extends androidx.leanback.widget.Parallax {
+  public class RecyclerViewParallax extends androidx.leanback.widget.Parallax<androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty> {
     ctor public RecyclerViewParallax();
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty createProperty(java.lang.String, int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! createProperty(String!, int);
     method public float getMaxValue();
-    method public androidx.recyclerview.widget.RecyclerView getRecyclerView();
-    method public void setRecyclerView(androidx.recyclerview.widget.RecyclerView);
+    method public androidx.recyclerview.widget.RecyclerView! getRecyclerView();
+    method public void setRecyclerView(androidx.recyclerview.widget.RecyclerView!);
   }
 
   public static final class RecyclerViewParallax.ChildPositionProperty extends androidx.leanback.widget.Parallax.IntProperty {
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty adapterPosition(int);
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty fraction(float);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! adapterPosition(int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! fraction(float);
     method public int getAdapterPosition();
     method public float getFraction();
     method public int getOffset();
     method public int getViewId();
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty offset(int);
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty viewId(int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! offset(int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! viewId(int);
   }
 
   public class Row {
-    ctor public Row(long, androidx.leanback.widget.HeaderItem);
-    ctor public Row(androidx.leanback.widget.HeaderItem);
+    ctor public Row(long, androidx.leanback.widget.HeaderItem!);
+    ctor public Row(androidx.leanback.widget.HeaderItem!);
     ctor public Row();
-    method public final androidx.leanback.widget.HeaderItem getHeaderItem();
+    method public final androidx.leanback.widget.HeaderItem! getHeaderItem();
     method public final long getId();
     method public boolean isRenderedAsRowView();
-    method public final void setHeaderItem(androidx.leanback.widget.HeaderItem);
+    method public final void setHeaderItem(androidx.leanback.widget.HeaderItem!);
     method public final void setId(long);
   }
 
   public class RowHeaderPresenter extends androidx.leanback.widget.Presenter {
     ctor public RowHeaderPresenter();
-    method protected static float getFontDescent(android.widget.TextView, android.graphics.Paint);
-    method public int getSpaceUnderBaseline(androidx.leanback.widget.RowHeaderPresenter.ViewHolder);
+    method protected static float getFontDescent(android.widget.TextView!, android.graphics.Paint!);
+    method public int getSpaceUnderBaseline(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!);
     method public boolean isNullItemVisibilityGone();
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method protected void onSelectLevelChanged(androidx.leanback.widget.RowHeaderPresenter.ViewHolder);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method protected void onSelectLevelChanged(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
     method public void setNullItemVisibilityGone(boolean);
-    method public final void setSelectLevel(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, float);
+    method public final void setSelectLevel(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, float);
   }
 
   public static class RowHeaderPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public RowHeaderPresenter.ViewHolder(android.view.View);
+    ctor public RowHeaderPresenter.ViewHolder(android.view.View!);
     method public final float getSelectLevel();
   }
 
   public final class RowHeaderView extends android.widget.TextView {
-    ctor public RowHeaderView(android.content.Context);
-    ctor public RowHeaderView(android.content.Context, android.util.AttributeSet);
-    ctor public RowHeaderView(android.content.Context, android.util.AttributeSet, int);
+    ctor public RowHeaderView(android.content.Context!);
+    ctor public RowHeaderView(android.content.Context!, android.util.AttributeSet!);
+    ctor public RowHeaderView(android.content.Context!, android.util.AttributeSet!, int);
   }
 
   public abstract class RowPresenter extends androidx.leanback.widget.Presenter {
     ctor public RowPresenter();
-    method protected abstract androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected void dispatchItemSelectedListener(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public void freeze(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public final androidx.leanback.widget.RowHeaderPresenter getHeaderPresenter();
-    method public final androidx.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method protected abstract androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method protected void dispatchItemSelectedListener(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method public void freeze(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method public final androidx.leanback.widget.RowHeaderPresenter! getHeaderPresenter();
+    method public final androidx.leanback.widget.RowPresenter.ViewHolder! getRowViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
     method public final boolean getSelectEffectEnabled();
-    method public final float getSelectLevel(androidx.leanback.widget.Presenter.ViewHolder);
+    method public final float getSelectLevel(androidx.leanback.widget.Presenter.ViewHolder!);
     method public final int getSyncActivatePolicy();
-    method protected void initializeRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder);
+    method protected void initializeRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!);
     method protected boolean isClippingChildren();
     method public boolean isUsingDefaultSelectEffect();
-    method protected void onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder, java.lang.Object);
-    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method protected void onRowViewAttachedToWindow(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onRowViewDetachedFromWindow(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onRowViewExpanded(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method protected void onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method protected void onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method public final void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public final void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public final void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void setEntranceTransitionState(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public final void setHeaderPresenter(androidx.leanback.widget.RowHeaderPresenter);
-    method public final void setRowViewExpanded(androidx.leanback.widget.Presenter.ViewHolder, boolean);
-    method public final void setRowViewSelected(androidx.leanback.widget.Presenter.ViewHolder, boolean);
+    method protected void onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!, Object!);
+    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public final androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method protected void onRowViewAttachedToWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method protected void onRowViewDetachedFromWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method protected void onRowViewExpanded(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method protected void onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method protected void onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method protected void onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method public final void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public final void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public final void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void setEntranceTransitionState(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method public final void setHeaderPresenter(androidx.leanback.widget.RowHeaderPresenter!);
+    method public final void setRowViewExpanded(androidx.leanback.widget.Presenter.ViewHolder!, boolean);
+    method public final void setRowViewSelected(androidx.leanback.widget.Presenter.ViewHolder!, boolean);
     method public final void setSelectEffectEnabled(boolean);
-    method public final void setSelectLevel(androidx.leanback.widget.Presenter.ViewHolder, float);
+    method public final void setSelectLevel(androidx.leanback.widget.Presenter.ViewHolder!, float);
     method public final void setSyncActivatePolicy(int);
     field public static final int SYNC_ACTIVATED_CUSTOM = 0; // 0x0
     field public static final int SYNC_ACTIVATED_TO_EXPANDED = 1; // 0x1
@@ -2765,137 +2871,142 @@
   }
 
   public static class RowPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public RowPresenter.ViewHolder(android.view.View);
-    method public final androidx.leanback.widget.RowHeaderPresenter.ViewHolder getHeaderViewHolder();
-    method public final androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public final androidx.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public android.view.View.OnKeyListener getOnKeyListener();
-    method public final androidx.leanback.widget.Row getRow();
-    method public final java.lang.Object getRowObject();
+    ctor public RowPresenter.ViewHolder(android.view.View!);
+    method public final androidx.leanback.widget.RowHeaderPresenter.ViewHolder! getHeaderViewHolder();
+    method public final androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method public final androidx.leanback.widget.BaseOnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method public android.view.View.OnKeyListener! getOnKeyListener();
+    method public final androidx.leanback.widget.Row! getRow();
+    method public final Object! getRowObject();
     method public final float getSelectLevel();
-    method public java.lang.Object getSelectedItem();
-    method public androidx.leanback.widget.Presenter.ViewHolder getSelectedItemViewHolder();
+    method public Object! getSelectedItem();
+    method public androidx.leanback.widget.Presenter.ViewHolder! getSelectedItemViewHolder();
     method public final boolean isExpanded();
     method public final boolean isSelected();
     method public final void setActivated(boolean);
-    method public final void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setOnKeyListener(android.view.View.OnKeyListener);
-    method public final void syncActivatedStatus(android.view.View);
-    field protected final androidx.leanback.graphics.ColorOverlayDimmer mColorDimmer;
+    method public final void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method public void setOnKeyListener(android.view.View.OnKeyListener!);
+    method public final void syncActivatedStatus(android.view.View!);
+    field protected final androidx.leanback.graphics.ColorOverlayDimmer! mColorDimmer;
   }
 
   public class SearchBar extends android.widget.RelativeLayout {
-    ctor public SearchBar(android.content.Context);
-    ctor public SearchBar(android.content.Context, android.util.AttributeSet);
-    ctor public SearchBar(android.content.Context, android.util.AttributeSet, int);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public java.lang.CharSequence getHint();
-    method public java.lang.String getTitle();
+    ctor public SearchBar(android.content.Context!);
+    ctor public SearchBar(android.content.Context!, android.util.AttributeSet!);
+    ctor public SearchBar(android.content.Context!, android.util.AttributeSet!, int);
+    method public void displayCompletions(java.util.List<java.lang.String>!);
+    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]!);
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public CharSequence! getHint();
+    method public String! getTitle();
     method public boolean isRecognizing();
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setPermissionListener(androidx.leanback.widget.SearchBar.SearchBarPermissionListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchBarListener(androidx.leanback.widget.SearchBar.SearchBarListener);
-    method public void setSearchQuery(java.lang.String);
-    method public deprecated void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback);
-    method public void setSpeechRecognizer(android.speech.SpeechRecognizer);
-    method public void setTitle(java.lang.String);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setPermissionListener(androidx.leanback.widget.SearchBar.SearchBarPermissionListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchBarListener(androidx.leanback.widget.SearchBar.SearchBarListener!);
+    method public void setSearchQuery(String!);
+    method @Deprecated public void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback!);
+    method public void setSpeechRecognizer(android.speech.SpeechRecognizer!);
+    method public void setTitle(String!);
     method public void startRecognition();
     method public void stopRecognition();
   }
 
-  public static abstract interface SearchBar.SearchBarListener {
-    method public abstract void onKeyboardDismiss(java.lang.String);
-    method public abstract void onSearchQueryChange(java.lang.String);
-    method public abstract void onSearchQuerySubmit(java.lang.String);
+  public static interface SearchBar.SearchBarListener {
+    method public void onKeyboardDismiss(String!);
+    method public void onSearchQueryChange(String!);
+    method public void onSearchQuerySubmit(String!);
   }
 
-  public static abstract interface SearchBar.SearchBarPermissionListener {
-    method public abstract void requestAudioPermission();
+  public static interface SearchBar.SearchBarPermissionListener {
+    method public void requestAudioPermission();
   }
 
   public class SearchEditText extends android.widget.EditText {
-    ctor public SearchEditText(android.content.Context);
-    ctor public SearchEditText(android.content.Context, android.util.AttributeSet);
-    ctor public SearchEditText(android.content.Context, android.util.AttributeSet, int);
-    method public void setOnKeyboardDismissListener(androidx.leanback.widget.SearchEditText.OnKeyboardDismissListener);
+    ctor public SearchEditText(android.content.Context!);
+    ctor public SearchEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public SearchEditText(android.content.Context!, android.util.AttributeSet!, int);
+    method public static boolean isLayoutRtl(android.view.View!);
+    method public void reset();
+    method public void setFinalRecognizedText(CharSequence!);
+    method public void setOnKeyboardDismissListener(androidx.leanback.widget.SearchEditText.OnKeyboardDismissListener!);
+    method public void updateRecognizedText(String!, String!);
+    method public void updateRecognizedText(String!, java.util.List<java.lang.Float>!);
   }
 
-  public static abstract interface SearchEditText.OnKeyboardDismissListener {
-    method public abstract void onKeyboardDismiss();
+  public static interface SearchEditText.OnKeyboardDismissListener {
+    method public void onKeyboardDismiss();
   }
 
   public class SearchOrbView extends android.widget.FrameLayout implements android.view.View.OnClickListener {
-    ctor public SearchOrbView(android.content.Context);
-    ctor public SearchOrbView(android.content.Context, android.util.AttributeSet);
-    ctor public SearchOrbView(android.content.Context, android.util.AttributeSet, int);
+    ctor public SearchOrbView(android.content.Context!);
+    ctor public SearchOrbView(android.content.Context!, android.util.AttributeSet!);
+    ctor public SearchOrbView(android.content.Context!, android.util.AttributeSet!, int);
     method public void enableOrbColorAnimation(boolean);
-    method public int getOrbColor();
-    method public androidx.leanback.widget.SearchOrbView.Colors getOrbColors();
-    method public android.graphics.drawable.Drawable getOrbIcon();
-    method public void onClick(android.view.View);
-    method public void setOnOrbClickedListener(android.view.View.OnClickListener);
+    method @ColorInt public int getOrbColor();
+    method public androidx.leanback.widget.SearchOrbView.Colors! getOrbColors();
+    method public android.graphics.drawable.Drawable! getOrbIcon();
+    method public void onClick(android.view.View!);
+    method public void setOnOrbClickedListener(android.view.View.OnClickListener!);
     method public void setOrbColor(int);
-    method public deprecated void setOrbColor(int, int);
-    method public void setOrbColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setOrbIcon(android.graphics.drawable.Drawable);
+    method @Deprecated public void setOrbColor(@ColorInt int, @ColorInt int);
+    method public void setOrbColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setOrbIcon(android.graphics.drawable.Drawable!);
   }
 
   public static class SearchOrbView.Colors {
-    ctor public SearchOrbView.Colors(int);
-    ctor public SearchOrbView.Colors(int, int);
-    ctor public SearchOrbView.Colors(int, int, int);
+    ctor public SearchOrbView.Colors(@ColorInt int);
+    ctor public SearchOrbView.Colors(@ColorInt int, @ColorInt int);
+    ctor public SearchOrbView.Colors(@ColorInt int, @ColorInt int, @ColorInt int);
     method public static int getBrightColor(int);
-    field public int brightColor;
-    field public int color;
-    field public int iconColor;
+    field @ColorInt public int brightColor;
+    field @ColorInt public int color;
+    field @ColorInt public int iconColor;
   }
 
   public class SectionRow extends androidx.leanback.widget.Row {
-    ctor public SectionRow(androidx.leanback.widget.HeaderItem);
-    ctor public SectionRow(long, java.lang.String);
-    ctor public SectionRow(java.lang.String);
+    ctor public SectionRow(androidx.leanback.widget.HeaderItem!);
+    ctor public SectionRow(long, String!);
+    ctor public SectionRow(String!);
     method public final boolean isRenderedAsRowView();
   }
 
   public class ShadowOverlayContainer extends android.widget.FrameLayout {
-    ctor public ShadowOverlayContainer(android.content.Context);
-    ctor public ShadowOverlayContainer(android.content.Context, android.util.AttributeSet);
-    ctor public ShadowOverlayContainer(android.content.Context, android.util.AttributeSet, int);
+    ctor public ShadowOverlayContainer(android.content.Context!);
+    ctor public ShadowOverlayContainer(android.content.Context!, android.util.AttributeSet!);
+    ctor public ShadowOverlayContainer(android.content.Context!, android.util.AttributeSet!, int);
     method public int getShadowType();
-    method public android.view.View getWrappedView();
-    method public deprecated void initialize(boolean, boolean);
-    method public deprecated void initialize(boolean, boolean, boolean);
-    method public static void prepareParentForShadow(android.view.ViewGroup);
-    method public void setOverlayColor(int);
+    method public android.view.View! getWrappedView();
+    method @Deprecated public void initialize(boolean, boolean);
+    method @Deprecated public void initialize(boolean, boolean, boolean);
+    method public static void prepareParentForShadow(android.view.ViewGroup!);
+    method public void setOverlayColor(@ColorInt int);
     method public void setShadowFocusLevel(float);
     method public static boolean supportsDynamicShadow();
     method public static boolean supportsShadow();
     method public void useDynamicShadow();
     method public void useDynamicShadow(float, float);
     method public void useStaticShadow();
-    method public void wrap(android.view.View);
+    method public void wrap(android.view.View!);
     field public static final int SHADOW_DYNAMIC = 3; // 0x3
     field public static final int SHADOW_NONE = 1; // 0x1
     field public static final int SHADOW_STATIC = 2; // 0x2
   }
 
   public final class ShadowOverlayHelper {
-    method public androidx.leanback.widget.ShadowOverlayContainer createShadowOverlayContainer(android.content.Context);
+    method public androidx.leanback.widget.ShadowOverlayContainer! createShadowOverlayContainer(android.content.Context!);
     method public int getShadowType();
     method public boolean needsOverlay();
     method public boolean needsRoundedCorner();
     method public boolean needsWrapper();
-    method public void onViewCreated(android.view.View);
-    method public void prepareParentForShadow(android.view.ViewGroup);
-    method public static void setNoneWrapperOverlayColor(android.view.View, int);
-    method public static void setNoneWrapperShadowFocusLevel(android.view.View, float);
-    method public void setOverlayColor(android.view.View, int);
-    method public void setShadowFocusLevel(android.view.View, float);
+    method public void onViewCreated(android.view.View!);
+    method public void prepareParentForShadow(android.view.ViewGroup!);
+    method public static void setNoneWrapperOverlayColor(android.view.View!, int);
+    method public static void setNoneWrapperShadowFocusLevel(android.view.View!, float);
+    method public void setOverlayColor(android.view.View!, int);
+    method public void setShadowFocusLevel(android.view.View!, float);
     method public static boolean supportsDynamicShadow();
     method public static boolean supportsForeground();
     method public static boolean supportsRoundedCorner();
@@ -2907,104 +3018,104 @@
 
   public static final class ShadowOverlayHelper.Builder {
     ctor public ShadowOverlayHelper.Builder();
-    method public androidx.leanback.widget.ShadowOverlayHelper build(android.content.Context);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder keepForegroundDrawable(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder needsOverlay(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder needsRoundedCorner(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder needsShadow(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder options(androidx.leanback.widget.ShadowOverlayHelper.Options);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder preferZOrder(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper! build(android.content.Context!);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! keepForegroundDrawable(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! needsOverlay(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! needsRoundedCorner(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! needsShadow(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! options(androidx.leanback.widget.ShadowOverlayHelper.Options!);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! preferZOrder(boolean);
   }
 
   public static final class ShadowOverlayHelper.Options {
     ctor public ShadowOverlayHelper.Options();
-    method public androidx.leanback.widget.ShadowOverlayHelper.Options dynamicShadowZ(float, float);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Options! dynamicShadowZ(float, float);
     method public float getDynamicShadowFocusedZ();
     method public float getDynamicShadowUnfocusedZ();
     method public int getRoundedCornerRadius();
-    method public androidx.leanback.widget.ShadowOverlayHelper.Options roundedCornerRadius(int);
-    field public static final androidx.leanback.widget.ShadowOverlayHelper.Options DEFAULT;
+    method public androidx.leanback.widget.ShadowOverlayHelper.Options! roundedCornerRadius(int);
+    field public static final androidx.leanback.widget.ShadowOverlayHelper.Options! DEFAULT;
   }
 
   public final class SinglePresenterSelector extends androidx.leanback.widget.PresenterSelector {
-    ctor public SinglePresenterSelector(androidx.leanback.widget.Presenter);
-    method public androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
+    ctor public SinglePresenterSelector(androidx.leanback.widget.Presenter!);
+    method public androidx.leanback.widget.Presenter! getPresenter(Object!);
   }
 
   public class SparseArrayObjectAdapter extends androidx.leanback.widget.ObjectAdapter {
-    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public SparseArrayObjectAdapter();
     method public void clear(int);
     method public void clear();
-    method public java.lang.Object get(int);
-    method public int indexOf(java.lang.Object);
+    method public Object! get(int);
+    method public int indexOf(Object!);
     method public int indexOf(int);
-    method public java.lang.Object lookup(int);
+    method public Object! lookup(int);
     method public void notifyArrayItemRangeChanged(int, int);
-    method public void set(int, java.lang.Object);
+    method public void set(int, Object!);
     method public int size();
   }
 
   public class SpeechOrbView extends androidx.leanback.widget.SearchOrbView {
-    ctor public SpeechOrbView(android.content.Context);
-    ctor public SpeechOrbView(android.content.Context, android.util.AttributeSet);
-    ctor public SpeechOrbView(android.content.Context, android.util.AttributeSet, int);
-    method public void setListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setNotListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors);
+    ctor public SpeechOrbView(android.content.Context!);
+    ctor public SpeechOrbView(android.content.Context!, android.util.AttributeSet!);
+    ctor public SpeechOrbView(android.content.Context!, android.util.AttributeSet!, int);
+    method public void setListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setNotListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors!);
     method public void setSoundLevel(int);
     method public void showListening();
     method public void showNotListening();
   }
 
-  public abstract deprecated interface SpeechRecognitionCallback {
-    method public abstract void recognizeSpeech();
+  @Deprecated public interface SpeechRecognitionCallback {
+    method @Deprecated public void recognizeSpeech();
   }
 
   public class TitleHelper {
-    ctor public TitleHelper(android.view.ViewGroup, android.view.View);
-    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener getOnFocusSearchListener();
-    method public android.view.ViewGroup getSceneRoot();
-    method public android.view.View getTitleView();
+    ctor public TitleHelper(android.view.ViewGroup!, android.view.View!);
+    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener! getOnFocusSearchListener();
+    method public android.view.ViewGroup! getSceneRoot();
+    method public android.view.View! getTitleView();
     method public void showTitle(boolean);
   }
 
   public class TitleView extends android.widget.FrameLayout implements androidx.leanback.widget.TitleViewAdapter.Provider {
-    ctor public TitleView(android.content.Context);
-    ctor public TitleView(android.content.Context, android.util.AttributeSet);
-    ctor public TitleView(android.content.Context, android.util.AttributeSet, int);
+    ctor public TitleView(android.content.Context!);
+    ctor public TitleView(android.content.Context!, android.util.AttributeSet!);
+    ctor public TitleView(android.content.Context!, android.util.AttributeSet!, int);
     method public void enableAnimation(boolean);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public android.view.View getSearchAffordanceView();
-    method public java.lang.CharSequence getTitle();
-    method public androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method public android.view.View! getSearchAffordanceView();
+    method public CharSequence! getTitle();
+    method public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnSearchClickedListener(android.view.View.OnClickListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setTitle(CharSequence!);
     method public void updateComponentsVisibility(int);
   }
 
   public abstract class TitleViewAdapter {
     ctor public TitleViewAdapter();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public abstract android.view.View getSearchAffordanceView();
-    method public java.lang.CharSequence getTitle();
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method public abstract android.view.View! getSearchAffordanceView();
+    method public CharSequence! getTitle();
     method public void setAnimationEnabled(boolean);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnSearchClickedListener(android.view.View.OnClickListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setTitle(CharSequence!);
     method public void updateComponentsVisibility(int);
     field public static final int BRANDING_VIEW_VISIBLE = 2; // 0x2
     field public static final int FULL_VIEW_VISIBLE = 6; // 0x6
     field public static final int SEARCH_VIEW_VISIBLE = 4; // 0x4
   }
 
-  public static abstract interface TitleViewAdapter.Provider {
-    method public abstract androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
+  public static interface TitleViewAdapter.Provider {
+    method public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
   }
 
   public class VerticalGridPresenter extends androidx.leanback.widget.Presenter {
@@ -3012,46 +3123,46 @@
     ctor public VerticalGridPresenter(int);
     ctor public VerticalGridPresenter(int, boolean);
     method public final boolean areChildRoundedCornersEnabled();
-    method protected androidx.leanback.widget.VerticalGridPresenter.ViewHolder createGridViewHolder(android.view.ViewGroup);
-    method protected androidx.leanback.widget.ShadowOverlayHelper.Options createShadowOverlayOptions();
+    method protected androidx.leanback.widget.VerticalGridPresenter.ViewHolder! createGridViewHolder(android.view.ViewGroup!);
+    method protected androidx.leanback.widget.ShadowOverlayHelper.Options! createShadowOverlayOptions();
     method public final void enableChildRoundedCorners(boolean);
     method public final int getFocusZoomFactor();
     method public final boolean getKeepChildForeground();
     method public int getNumberOfColumns();
-    method public final androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public final androidx.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
+    method public final androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method public final androidx.leanback.widget.OnItemViewSelectedListener! getOnItemViewSelectedListener();
     method public final boolean getShadowEnabled();
-    method protected void initializeGridViewHolder(androidx.leanback.widget.VerticalGridPresenter.ViewHolder);
+    method protected void initializeGridViewHolder(androidx.leanback.widget.VerticalGridPresenter.ViewHolder!);
     method public final boolean isFocusDimmerUsed();
     method public boolean isUsingDefaultShadow();
-    method public boolean isUsingZOrder(android.content.Context);
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final androidx.leanback.widget.VerticalGridPresenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void setEntranceTransitionState(androidx.leanback.widget.VerticalGridPresenter.ViewHolder, boolean);
+    method public boolean isUsingZOrder(android.content.Context!);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public final androidx.leanback.widget.VerticalGridPresenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void setEntranceTransitionState(androidx.leanback.widget.VerticalGridPresenter.ViewHolder!, boolean);
     method public final void setKeepChildForeground(boolean);
     method public void setNumberOfColumns(int);
-    method public final void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
+    method public final void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
     method public final void setShadowEnabled(boolean);
   }
 
   public static class VerticalGridPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public VerticalGridPresenter.ViewHolder(androidx.leanback.widget.VerticalGridView);
-    method public androidx.leanback.widget.VerticalGridView getGridView();
+    ctor public VerticalGridPresenter.ViewHolder(androidx.leanback.widget.VerticalGridView!);
+    method public androidx.leanback.widget.VerticalGridView! getGridView();
   }
 
   public class VerticalGridView extends androidx.leanback.widget.BaseGridView {
-    ctor public VerticalGridView(android.content.Context);
-    ctor public VerticalGridView(android.content.Context, android.util.AttributeSet);
-    ctor public VerticalGridView(android.content.Context, android.util.AttributeSet, int);
-    method protected void initAttributes(android.content.Context, android.util.AttributeSet);
+    ctor public VerticalGridView(android.content.Context!);
+    ctor public VerticalGridView(android.content.Context!, android.util.AttributeSet!);
+    ctor public VerticalGridView(android.content.Context!, android.util.AttributeSet!, int);
+    method protected void initAttributes(android.content.Context!, android.util.AttributeSet!);
     method public void setColumnWidth(int);
     method public void setNumColumns(int);
   }
 
-  public abstract interface ViewHolderTask {
-    method public abstract void run(androidx.recyclerview.widget.RecyclerView.ViewHolder);
+  public interface ViewHolderTask {
+    method public void run(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
   }
 
 }
@@ -3059,86 +3170,86 @@
 package androidx.leanback.widget.picker {
 
   public class DatePicker extends androidx.leanback.widget.picker.Picker {
-    ctor public DatePicker(android.content.Context, android.util.AttributeSet);
-    ctor public DatePicker(android.content.Context, android.util.AttributeSet, int);
+    ctor public DatePicker(android.content.Context!, android.util.AttributeSet!);
+    ctor public DatePicker(android.content.Context!, android.util.AttributeSet!, int);
     method public long getDate();
-    method public java.lang.String getDatePickerFormat();
+    method public String! getDatePickerFormat();
     method public long getMaxDate();
     method public long getMinDate();
     method public final void onColumnValueChanged(int, int);
     method public void setDate(long);
     method public void setDate(int, int, int, boolean);
-    method public void setDatePickerFormat(java.lang.String);
+    method public void setDatePickerFormat(String!);
     method public void setMaxDate(long);
     method public void setMinDate(long);
   }
 
   public class Picker extends android.widget.FrameLayout {
-    ctor public Picker(android.content.Context, android.util.AttributeSet);
-    ctor public Picker(android.content.Context, android.util.AttributeSet, int);
-    method public void addOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener);
+    ctor public Picker(android.content.Context!, android.util.AttributeSet!);
+    ctor public Picker(android.content.Context!, android.util.AttributeSet!, int);
+    method public void addOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener!);
     method public float getActivatedVisibleItemCount();
-    method public androidx.leanback.widget.picker.PickerColumn getColumnAt(int);
+    method public androidx.leanback.widget.picker.PickerColumn! getColumnAt(int);
     method public int getColumnsCount();
     method protected int getPickerItemHeightPixels();
-    method public final int getPickerItemLayoutId();
-    method public final int getPickerItemTextViewId();
+    method @LayoutRes public final int getPickerItemLayoutId();
+    method @IdRes public final int getPickerItemTextViewId();
     method public int getSelectedColumn();
-    method public final deprecated java.lang.CharSequence getSeparator();
-    method public final java.util.List<java.lang.CharSequence> getSeparators();
+    method @Deprecated public final CharSequence! getSeparator();
+    method public final java.util.List<java.lang.CharSequence>! getSeparators();
     method public float getVisibleItemCount();
     method public void onColumnValueChanged(int, int);
-    method public void removeOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener);
+    method public void removeOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener!);
     method public void setActivatedVisibleItemCount(float);
-    method public void setColumnAt(int, androidx.leanback.widget.picker.PickerColumn);
+    method public void setColumnAt(int, androidx.leanback.widget.picker.PickerColumn!);
     method public void setColumnValue(int, int, boolean);
-    method public void setColumns(java.util.List<androidx.leanback.widget.picker.PickerColumn>);
-    method public final void setPickerItemLayoutId(int);
-    method public final void setPickerItemTextViewId(int);
+    method public void setColumns(java.util.List<androidx.leanback.widget.picker.PickerColumn>!);
+    method public final void setPickerItemLayoutId(@LayoutRes int);
+    method public final void setPickerItemTextViewId(@IdRes int);
     method public void setSelectedColumn(int);
-    method public final void setSeparator(java.lang.CharSequence);
-    method public final void setSeparators(java.util.List<java.lang.CharSequence>);
+    method public final void setSeparator(CharSequence!);
+    method public final void setSeparators(java.util.List<java.lang.CharSequence>!);
     method public void setVisibleItemCount(float);
   }
 
-  public static abstract interface Picker.PickerValueListener {
-    method public abstract void onValueChanged(androidx.leanback.widget.picker.Picker, int);
+  public static interface Picker.PickerValueListener {
+    method public void onValueChanged(androidx.leanback.widget.picker.Picker!, int);
   }
 
   public class PickerColumn {
     ctor public PickerColumn();
     method public int getCount();
     method public int getCurrentValue();
-    method public java.lang.CharSequence getLabelFor(int);
-    method public java.lang.String getLabelFormat();
+    method public CharSequence! getLabelFor(int);
+    method public String! getLabelFormat();
     method public int getMaxValue();
     method public int getMinValue();
-    method public java.lang.CharSequence[] getStaticLabels();
+    method public CharSequence[]! getStaticLabels();
     method public void setCurrentValue(int);
-    method public void setLabelFormat(java.lang.String);
+    method public void setLabelFormat(String!);
     method public void setMaxValue(int);
     method public void setMinValue(int);
-    method public void setStaticLabels(java.lang.CharSequence[]);
+    method public void setStaticLabels(CharSequence[]!);
   }
 
   public class PinPicker extends androidx.leanback.widget.picker.Picker {
-    ctor public PinPicker(android.content.Context, android.util.AttributeSet);
-    ctor public PinPicker(android.content.Context, android.util.AttributeSet, int);
-    method public java.lang.String getPin();
+    ctor public PinPicker(android.content.Context!, android.util.AttributeSet!);
+    ctor public PinPicker(android.content.Context!, android.util.AttributeSet!, int);
+    method public String! getPin();
     method public void resetPin();
     method public void setNumberOfColumns(int);
   }
 
   public class TimePicker extends androidx.leanback.widget.picker.Picker {
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet);
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet, int);
+    ctor public TimePicker(android.content.Context!, android.util.AttributeSet!);
+    ctor public TimePicker(android.content.Context!, android.util.AttributeSet!, int);
     method public int getHour();
     method public int getMinute();
     method public boolean is24Hour();
     method public boolean isPm();
-    method public void setHour(int);
+    method public void setHour(@IntRange(from=0, to=23) int);
     method public void setIs24Hour(boolean);
-    method public void setMinute(int);
+    method public void setMinute(@IntRange(from=0, to=59) int);
   }
 
 }
diff --git a/leanback/api/current.txt b/leanback/api/current.txt
index 04b1936..9cb40ec 100644
--- a/leanback/api/current.txt
+++ b/leanback/api/current.txt
@@ -1,220 +1,229 @@
+// Signature format: 2.0
 package androidx.leanback.app {
 
   public final class BackgroundManager {
-    method public void attach(android.view.Window);
-    method public void attachToView(android.view.View);
+    method public void attach(android.view.Window!);
+    method public void attachToView(android.view.View!);
     method public void clearDrawable();
-    method public int getColor();
-    method public deprecated android.graphics.drawable.Drawable getDefaultDimLayer();
-    method public deprecated android.graphics.drawable.Drawable getDimLayer();
-    method public android.graphics.drawable.Drawable getDrawable();
-    method public static androidx.leanback.app.BackgroundManager getInstance(android.app.Activity);
+    method @ColorInt public int getColor();
+    method @Deprecated public android.graphics.drawable.Drawable! getDefaultDimLayer();
+    method @Deprecated public android.graphics.drawable.Drawable! getDimLayer();
+    method public android.graphics.drawable.Drawable! getDrawable();
+    method public static androidx.leanback.app.BackgroundManager! getInstance(android.app.Activity!);
     method public boolean isAttached();
     method public boolean isAutoReleaseOnStop();
     method public void release();
     method public void setAutoReleaseOnStop(boolean);
-    method public void setBitmap(android.graphics.Bitmap);
-    method public void setColor(int);
-    method public deprecated void setDimLayer(android.graphics.drawable.Drawable);
-    method public void setDrawable(android.graphics.drawable.Drawable);
+    method public void setBitmap(android.graphics.Bitmap!);
+    method public void setColor(@ColorInt int);
+    method @Deprecated public void setDimLayer(android.graphics.drawable.Drawable!);
+    method public void setDrawable(android.graphics.drawable.Drawable!);
     method public void setThemeDrawableResourceId(int);
   }
 
-  public deprecated class BaseFragment extends androidx.leanback.app.BrandedFragment {
-    method protected java.lang.Object createEntranceTransition();
-    method public final androidx.leanback.app.ProgressBarManager getProgressBarManager();
-    method protected void onEntranceTransitionEnd();
-    method protected void onEntranceTransitionPrepare();
-    method protected void onEntranceTransitionStart();
-    method public void prepareEntranceTransition();
-    method protected void runEntranceTransition(java.lang.Object);
-    method public void startEntranceTransition();
+  @Deprecated public class BaseFragment extends androidx.leanback.app.BrandedFragment {
+    method @Deprecated protected Object! createEntranceTransition();
+    method @Deprecated public final androidx.leanback.app.ProgressBarManager! getProgressBarManager();
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated protected void onEntranceTransitionEnd();
+    method @Deprecated protected void onEntranceTransitionPrepare();
+    method @Deprecated protected void onEntranceTransitionStart();
+    method @Deprecated public void prepareEntranceTransition();
+    method @Deprecated protected void runEntranceTransition(Object!);
+    method @Deprecated public void startEntranceTransition();
   }
 
   public class BaseSupportFragment extends androidx.leanback.app.BrandedSupportFragment {
-    method protected java.lang.Object createEntranceTransition();
-    method public final androidx.leanback.app.ProgressBarManager getProgressBarManager();
+    method protected Object! createEntranceTransition();
+    method public final androidx.leanback.app.ProgressBarManager! getProgressBarManager();
     method protected void onEntranceTransitionEnd();
     method protected void onEntranceTransitionPrepare();
     method protected void onEntranceTransitionStart();
     method public void prepareEntranceTransition();
-    method protected void runEntranceTransition(java.lang.Object);
+    method protected void runEntranceTransition(Object!);
     method public void startEntranceTransition();
   }
 
-  public deprecated class BrandedFragment extends android.app.Fragment {
-    ctor public BrandedFragment();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public int getSearchAffordanceColor();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public java.lang.CharSequence getTitle();
-    method public android.view.View getTitleView();
-    method public androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void installTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public final boolean isShowingTitle();
-    method public android.view.View onInflateTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColor(int);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitleView(android.view.View);
-    method public void showTitle(boolean);
-    method public void showTitle(int);
+  @Deprecated public class BrandedFragment extends android.app.Fragment {
+    ctor @Deprecated public BrandedFragment();
+    method @Deprecated public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method @Deprecated public int getSearchAffordanceColor();
+    method @Deprecated public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method @Deprecated public CharSequence! getTitle();
+    method @Deprecated public android.view.View! getTitleView();
+    method @Deprecated public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
+    method @Deprecated public void installTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public final boolean isShowingTitle();
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public android.view.View! onInflateTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onPause();
+    method @Deprecated public void onResume();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onStart();
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setOnSearchClickedListener(android.view.View.OnClickListener!);
+    method @Deprecated public void setSearchAffordanceColor(int);
+    method @Deprecated public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method @Deprecated public void setTitle(CharSequence!);
+    method @Deprecated public void setTitleView(android.view.View!);
+    method @Deprecated public void showTitle(boolean);
+    method @Deprecated public void showTitle(int);
   }
 
   public class BrandedSupportFragment extends androidx.fragment.app.Fragment {
     ctor public BrandedSupportFragment();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
     method public int getSearchAffordanceColor();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public java.lang.CharSequence getTitle();
-    method public android.view.View getTitleView();
-    method public androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void installTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
+    method public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method public CharSequence! getTitle();
+    method public android.view.View! getTitleView();
+    method public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
+    method public void installTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
     method public final boolean isShowingTitle();
-    method public android.view.View onInflateTitleView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
+    method public android.view.View! onInflateTitleView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnSearchClickedListener(android.view.View.OnClickListener!);
     method public void setSearchAffordanceColor(int);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
-    method public void setTitleView(android.view.View);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setTitle(CharSequence!);
+    method public void setTitleView(android.view.View!);
     method public void showTitle(boolean);
     method public void showTitle(int);
   }
 
-  public deprecated class BrowseFragment extends androidx.leanback.app.BaseFragment {
-    ctor public BrowseFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, int);
-    method public void enableMainFragmentScaling(boolean);
-    method public deprecated void enableRowScaling(boolean);
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBrandColor();
-    method public androidx.leanback.app.HeadersFragment getHeadersFragment();
-    method public int getHeadersState();
-    method public android.app.Fragment getMainFragment();
-    method public final androidx.leanback.app.BrowseFragment.MainFragmentAdapterRegistry getMainFragmentRegistry();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.app.RowsFragment getRowsFragment();
-    method public int getSelectedPosition();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getSelectedRowViewHolder();
-    method public final boolean isHeadersTransitionOnBackEnabled();
-    method public boolean isInHeadersTransition();
-    method public boolean isShowingHeaders();
-    method public androidx.leanback.app.HeadersFragment onCreateHeadersFragment();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setBrandColor(int);
-    method public void setBrowseTransitionListener(androidx.leanback.app.BrowseFragment.BrowseTransitionListener);
-    method public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector);
-    method public void setHeadersState(int);
-    method public final void setHeadersTransitionOnBackEnabled(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
-    method public void startHeadersTransition(boolean);
-    field public static final int HEADERS_DISABLED = 3; // 0x3
-    field public static final int HEADERS_ENABLED = 1; // 0x1
-    field public static final int HEADERS_HIDDEN = 2; // 0x2
+  @Deprecated public class BrowseFragment extends androidx.leanback.app.BaseFragment {
+    method @Deprecated public static android.os.Bundle! createArgs(android.os.Bundle!, String!, int);
+    method @Deprecated public void enableMainFragmentScaling(boolean);
+    method @Deprecated public void enableRowScaling(boolean);
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated @ColorInt public int getBrandColor();
+    method @Deprecated public androidx.leanback.app.HeadersFragment! getHeadersFragment();
+    method @Deprecated public int getHeadersState();
+    method @Deprecated public android.app.Fragment! getMainFragment();
+    method @Deprecated public final androidx.leanback.app.BrowseFragment.MainFragmentAdapterRegistry! getMainFragmentRegistry();
+    method @Deprecated public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public androidx.leanback.widget.OnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method @Deprecated public androidx.leanback.app.RowsFragment! getRowsFragment();
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! getSelectedRowViewHolder();
+    method @Deprecated public final boolean isHeadersTransitionOnBackEnabled();
+    method @Deprecated public boolean isInHeadersTransition();
+    method @Deprecated public boolean isShowingHeaders();
+    method @Deprecated public androidx.leanback.app.HeadersFragment! onCreateHeadersFragment();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroy();
+    method @Deprecated public void onStop();
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setBrandColor(@ColorInt int);
+    method @Deprecated public void setBrowseTransitionListener(androidx.leanback.app.BrowseFragment.BrowseTransitionListener!);
+    method @Deprecated public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method @Deprecated public void setHeadersState(int);
+    method @Deprecated public final void setHeadersTransitionOnBackEnabled(boolean);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
+    method @Deprecated public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method @Deprecated public void startHeadersTransition(boolean);
+    field @Deprecated public static final int HEADERS_DISABLED = 3; // 0x3
+    field @Deprecated public static final int HEADERS_ENABLED = 1; // 0x1
+    field @Deprecated public static final int HEADERS_HIDDEN = 2; // 0x2
   }
 
-  public static deprecated class BrowseFragment.BrowseTransitionListener {
-    ctor public BrowseFragment.BrowseTransitionListener();
-    method public void onHeadersTransitionStart(boolean);
-    method public void onHeadersTransitionStop(boolean);
+  @Deprecated public static class BrowseFragment.BrowseTransitionListener {
+    ctor @Deprecated public BrowseFragment.BrowseTransitionListener();
+    method @Deprecated public void onHeadersTransitionStart(boolean);
+    method @Deprecated public void onHeadersTransitionStop(boolean);
   }
 
-  public static abstract deprecated class BrowseFragment.FragmentFactory<T extends android.app.Fragment> {
-    ctor public BrowseFragment.FragmentFactory();
-    method public abstract T createFragment(java.lang.Object);
+  @Deprecated public abstract static class BrowseFragment.FragmentFactory<T extends android.app.Fragment> {
+    ctor @Deprecated public BrowseFragment.FragmentFactory();
+    method @Deprecated public abstract T! createFragment(Object!);
   }
 
-  public static abstract deprecated interface BrowseFragment.FragmentHost {
-    method public abstract void notifyDataReady(androidx.leanback.app.BrowseFragment.MainFragmentAdapter);
-    method public abstract void notifyViewCreated(androidx.leanback.app.BrowseFragment.MainFragmentAdapter);
-    method public abstract void showTitleView(boolean);
+  @Deprecated public static interface BrowseFragment.FragmentHost {
+    method @Deprecated public void notifyDataReady(androidx.leanback.app.BrowseFragment.MainFragmentAdapter!);
+    method @Deprecated public void notifyViewCreated(androidx.leanback.app.BrowseFragment.MainFragmentAdapter!);
+    method @Deprecated public void showTitleView(boolean);
   }
 
-  public static deprecated class BrowseFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseFragment.FragmentFactory {
-    ctor public BrowseFragment.ListRowFragmentFactory();
-    method public androidx.leanback.app.RowsFragment createFragment(java.lang.Object);
+  @Deprecated public static class BrowseFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseFragment.FragmentFactory<androidx.leanback.app.RowsFragment> {
+    ctor @Deprecated public BrowseFragment.ListRowFragmentFactory();
+    method @Deprecated public androidx.leanback.app.RowsFragment! createFragment(Object!);
   }
 
-  public static deprecated class BrowseFragment.MainFragmentAdapter<T extends android.app.Fragment> {
-    ctor public BrowseFragment.MainFragmentAdapter(T);
-    method public final T getFragment();
-    method public final androidx.leanback.app.BrowseFragment.FragmentHost getFragmentHost();
-    method public boolean isScalingEnabled();
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public boolean onTransitionPrepare();
-    method public void onTransitionStart();
-    method public void setAlignment(int);
-    method public void setEntranceTransitionState(boolean);
-    method public void setExpand(boolean);
-    method public void setScalingEnabled(boolean);
+  @Deprecated public static class BrowseFragment.MainFragmentAdapter<T extends android.app.Fragment> {
+    ctor @Deprecated public BrowseFragment.MainFragmentAdapter(T!);
+    method @Deprecated public final T! getFragment();
+    method @Deprecated public final androidx.leanback.app.BrowseFragment.FragmentHost! getFragmentHost();
+    method @Deprecated public boolean isScalingEnabled();
+    method @Deprecated public boolean isScrolling();
+    method @Deprecated public void onTransitionEnd();
+    method @Deprecated public boolean onTransitionPrepare();
+    method @Deprecated public void onTransitionStart();
+    method @Deprecated public void setAlignment(int);
+    method @Deprecated public void setEntranceTransitionState(boolean);
+    method @Deprecated public void setExpand(boolean);
+    method @Deprecated public void setScalingEnabled(boolean);
   }
 
-  public static abstract deprecated interface BrowseFragment.MainFragmentAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseFragment.MainFragmentAdapter getMainFragmentAdapter();
+  @Deprecated public static interface BrowseFragment.MainFragmentAdapterProvider {
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentAdapter! getMainFragmentAdapter();
   }
 
-  public static final deprecated class BrowseFragment.MainFragmentAdapterRegistry {
-    ctor public BrowseFragment.MainFragmentAdapterRegistry();
-    method public android.app.Fragment createFragment(java.lang.Object);
-    method public void registerFragment(java.lang.Class, androidx.leanback.app.BrowseFragment.FragmentFactory);
+  @Deprecated public static final class BrowseFragment.MainFragmentAdapterRegistry {
+    ctor @Deprecated public BrowseFragment.MainFragmentAdapterRegistry();
+    method @Deprecated public android.app.Fragment! createFragment(Object!);
+    method @Deprecated public void registerFragment(Class!, androidx.leanback.app.BrowseFragment.FragmentFactory!);
   }
 
-  public static deprecated class BrowseFragment.MainFragmentRowsAdapter<T extends android.app.Fragment> {
-    ctor public BrowseFragment.MainFragmentRowsAdapter(T);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public final T getFragment();
-    method public int getSelectedPosition();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
-    method public void setSelectedPosition(int, boolean);
+  @Deprecated public static class BrowseFragment.MainFragmentRowsAdapter<T extends android.app.Fragment> {
+    ctor @Deprecated public BrowseFragment.MainFragmentRowsAdapter(T!);
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method @Deprecated public final T! getFragment();
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method @Deprecated public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract deprecated interface BrowseFragment.MainFragmentRowsAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
+  @Deprecated public static interface BrowseFragment.MainFragmentRowsAdapterProvider {
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
   }
 
   public class BrowseSupportFragment extends androidx.leanback.app.BaseSupportFragment {
-    ctor public BrowseSupportFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, int);
+    method public static android.os.Bundle! createArgs(android.os.Bundle!, String!, int);
     method public void enableMainFragmentScaling(boolean);
-    method public deprecated void enableRowScaling(boolean);
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBrandColor();
+    method @Deprecated public void enableRowScaling(boolean);
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @ColorInt public int getBrandColor();
     method public int getHeadersState();
-    method public androidx.leanback.app.HeadersSupportFragment getHeadersSupportFragment();
-    method public androidx.fragment.app.Fragment getMainFragment();
-    method public final androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapterRegistry getMainFragmentRegistry();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.app.RowsSupportFragment getRowsSupportFragment();
+    method public androidx.leanback.app.HeadersSupportFragment! getHeadersSupportFragment();
+    method public androidx.fragment.app.Fragment! getMainFragment();
+    method public final androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapterRegistry! getMainFragmentRegistry();
+    method public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method public androidx.leanback.widget.OnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method public androidx.leanback.app.RowsSupportFragment! getRowsSupportFragment();
     method public int getSelectedPosition();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getSelectedRowViewHolder();
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! getSelectedRowViewHolder();
     method public final boolean isHeadersTransitionOnBackEnabled();
     method public boolean isInHeadersTransition();
     method public boolean isShowingHeaders();
-    method public androidx.leanback.app.HeadersSupportFragment onCreateHeadersSupportFragment();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setBrandColor(int);
-    method public void setBrowseTransitionListener(androidx.leanback.app.BrowseSupportFragment.BrowseTransitionListener);
-    method public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector);
+    method public androidx.leanback.app.HeadersSupportFragment! onCreateHeadersSupportFragment();
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setBrandColor(@ColorInt int);
+    method public void setBrowseTransitionListener(androidx.leanback.app.BrowseSupportFragment.BrowseTransitionListener!);
+    method public void setHeaderPresenterSelector(androidx.leanback.widget.PresenterSelector!);
     method public void setHeadersState(int);
     method public final void setHeadersTransitionOnBackEnabled(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, boolean);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
     method public void startHeadersTransition(boolean);
     field public static final int HEADERS_DISABLED = 3; // 0x3
     field public static final int HEADERS_ENABLED = 1; // 0x1
@@ -227,26 +236,26 @@
     method public void onHeadersTransitionStop(boolean);
   }
 
-  public static abstract class BrowseSupportFragment.FragmentFactory<T extends androidx.fragment.app.Fragment> {
+  public abstract static class BrowseSupportFragment.FragmentFactory<T extends androidx.fragment.app.Fragment> {
     ctor public BrowseSupportFragment.FragmentFactory();
-    method public abstract T createFragment(java.lang.Object);
+    method public abstract T! createFragment(Object!);
   }
 
-  public static abstract interface BrowseSupportFragment.FragmentHost {
-    method public abstract void notifyDataReady(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter);
-    method public abstract void notifyViewCreated(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter);
-    method public abstract void showTitleView(boolean);
+  public static interface BrowseSupportFragment.FragmentHost {
+    method public void notifyDataReady(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter!);
+    method public void notifyViewCreated(androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter!);
+    method public void showTitleView(boolean);
   }
 
-  public static class BrowseSupportFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseSupportFragment.FragmentFactory {
+  public static class BrowseSupportFragment.ListRowFragmentFactory extends androidx.leanback.app.BrowseSupportFragment.FragmentFactory<androidx.leanback.app.RowsSupportFragment> {
     ctor public BrowseSupportFragment.ListRowFragmentFactory();
-    method public androidx.leanback.app.RowsSupportFragment createFragment(java.lang.Object);
+    method public androidx.leanback.app.RowsSupportFragment! createFragment(Object!);
   }
 
   public static class BrowseSupportFragment.MainFragmentAdapter<T extends androidx.fragment.app.Fragment> {
-    ctor public BrowseSupportFragment.MainFragmentAdapter(T);
-    method public final T getFragment();
-    method public final androidx.leanback.app.BrowseSupportFragment.FragmentHost getFragmentHost();
+    ctor public BrowseSupportFragment.MainFragmentAdapter(T!);
+    method public final T! getFragment();
+    method public final androidx.leanback.app.BrowseSupportFragment.FragmentHost! getFragmentHost();
     method public boolean isScalingEnabled();
     method public boolean isScrolling();
     method public void onTransitionEnd();
@@ -258,228 +267,234 @@
     method public void setScalingEnabled(boolean);
   }
 
-  public static abstract interface BrowseSupportFragment.MainFragmentAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter getMainFragmentAdapter();
+  public static interface BrowseSupportFragment.MainFragmentAdapterProvider {
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter! getMainFragmentAdapter();
   }
 
   public static final class BrowseSupportFragment.MainFragmentAdapterRegistry {
     ctor public BrowseSupportFragment.MainFragmentAdapterRegistry();
-    method public androidx.fragment.app.Fragment createFragment(java.lang.Object);
-    method public void registerFragment(java.lang.Class, androidx.leanback.app.BrowseSupportFragment.FragmentFactory);
+    method public androidx.fragment.app.Fragment! createFragment(Object!);
+    method public void registerFragment(Class!, androidx.leanback.app.BrowseSupportFragment.FragmentFactory!);
   }
 
   public static class BrowseSupportFragment.MainFragmentRowsAdapter<T extends androidx.fragment.app.Fragment> {
-    ctor public BrowseSupportFragment.MainFragmentRowsAdapter(T);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public final T getFragment();
+    ctor public BrowseSupportFragment.MainFragmentRowsAdapter(T!);
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method public final T! getFragment();
     method public int getSelectedPosition();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
     method public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract interface BrowseSupportFragment.MainFragmentRowsAdapterProvider {
-    method public abstract androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
+  public static interface BrowseSupportFragment.MainFragmentRowsAdapterProvider {
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
   }
 
-  public deprecated class DetailsFragment extends androidx.leanback.app.BaseFragment {
-    ctor public DetailsFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.DetailsParallax getParallax();
-    method public androidx.leanback.app.RowsFragment getRowsFragment();
-    method protected deprecated android.view.View inflateTitle(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, int, int);
-    method protected void onSetRowStatus(androidx.leanback.widget.RowPresenter, androidx.leanback.widget.RowPresenter.ViewHolder, int, int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter);
-    method protected void setupPresenter(androidx.leanback.widget.Presenter);
+  @Deprecated public class DetailsFragment extends androidx.leanback.app.BaseFragment {
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public androidx.leanback.widget.DetailsParallax! getParallax();
+    method @Deprecated public androidx.leanback.app.RowsFragment! getRowsFragment();
+    method @Deprecated protected android.view.View! inflateTitle(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, int, int);
+    method @Deprecated protected void onSetRowStatus(androidx.leanback.widget.RowPresenter!, androidx.leanback.widget.RowPresenter.ViewHolder!, int, int, int);
+    method @Deprecated public void onStop();
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
+    method @Deprecated protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!);
+    method @Deprecated protected void setupPresenter(androidx.leanback.widget.Presenter!);
   }
 
-  public deprecated class DetailsFragmentBackgroundController {
-    ctor public DetailsFragmentBackgroundController(androidx.leanback.app.DetailsFragment);
-    method public boolean canNavigateToVideoFragment();
-    method public void enableParallax();
-    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget);
-    method public final android.app.Fragment findOrCreateVideoFragment();
-    method public final android.graphics.drawable.Drawable getBottomDrawable();
-    method public final android.graphics.Bitmap getCoverBitmap();
-    method public final android.graphics.drawable.Drawable getCoverDrawable();
-    method public final int getParallaxDrawableMaxOffset();
-    method public final androidx.leanback.media.PlaybackGlue getPlaybackGlue();
-    method public final int getSolidColor();
-    method public androidx.leanback.media.PlaybackGlueHost onCreateGlueHost();
-    method public android.app.Fragment onCreateVideoFragment();
-    method public final void setCoverBitmap(android.graphics.Bitmap);
-    method public final void setParallaxDrawableMaxOffset(int);
-    method public final void setSolidColor(int);
-    method public void setupVideoPlayback(androidx.leanback.media.PlaybackGlue);
-    method public final void switchToRows();
-    method public final void switchToVideo();
+  @Deprecated public class DetailsFragmentBackgroundController {
+    ctor @Deprecated public DetailsFragmentBackgroundController(androidx.leanback.app.DetailsFragment!);
+    method @Deprecated public boolean canNavigateToVideoFragment();
+    method @Deprecated public void enableParallax();
+    method @Deprecated public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget?);
+    method @Deprecated public final android.app.Fragment! findOrCreateVideoFragment();
+    method @Deprecated public final android.graphics.drawable.Drawable! getBottomDrawable();
+    method @Deprecated public final android.graphics.Bitmap! getCoverBitmap();
+    method @Deprecated public final android.graphics.drawable.Drawable! getCoverDrawable();
+    method @Deprecated public final int getParallaxDrawableMaxOffset();
+    method @Deprecated public final androidx.leanback.media.PlaybackGlue! getPlaybackGlue();
+    method @Deprecated @ColorInt public final int getSolidColor();
+    method @Deprecated public androidx.leanback.media.PlaybackGlueHost! onCreateGlueHost();
+    method @Deprecated public android.app.Fragment! onCreateVideoFragment();
+    method @Deprecated public final void setCoverBitmap(android.graphics.Bitmap!);
+    method @Deprecated public final void setParallaxDrawableMaxOffset(int);
+    method @Deprecated public final void setSolidColor(@ColorInt int);
+    method @Deprecated public void setupVideoPlayback(androidx.leanback.media.PlaybackGlue);
+    method @Deprecated public final void switchToRows();
+    method @Deprecated public final void switchToVideo();
   }
 
   public class DetailsSupportFragment extends androidx.leanback.app.BaseSupportFragment {
-    ctor public DetailsSupportFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.DetailsParallax getParallax();
-    method public androidx.leanback.app.RowsSupportFragment getRowsSupportFragment();
-    method protected deprecated android.view.View inflateTitle(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, int, int);
-    method protected void onSetRowStatus(androidx.leanback.widget.RowPresenter, androidx.leanback.widget.RowPresenter.ViewHolder, int, int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method public androidx.leanback.widget.DetailsParallax! getParallax();
+    method public androidx.leanback.app.RowsSupportFragment! getRowsSupportFragment();
+    method @Deprecated protected android.view.View! inflateTitle(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method protected void onSetDetailsOverviewRowStatus(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, int, int);
+    method protected void onSetRowStatus(androidx.leanback.widget.RowPresenter!, androidx.leanback.widget.RowPresenter.ViewHolder!, int, int, int);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, boolean);
-    method protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter);
-    method protected void setupPresenter(androidx.leanback.widget.Presenter);
+    method protected void setupDetailsOverviewRowPresenter(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!);
+    method protected void setupPresenter(androidx.leanback.widget.Presenter!);
   }
 
   public class DetailsSupportFragmentBackgroundController {
-    ctor public DetailsSupportFragmentBackgroundController(androidx.leanback.app.DetailsSupportFragment);
+    ctor public DetailsSupportFragmentBackgroundController(androidx.leanback.app.DetailsSupportFragment!);
     method public boolean canNavigateToVideoSupportFragment();
     method public void enableParallax();
-    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget);
-    method public final androidx.fragment.app.Fragment findOrCreateVideoSupportFragment();
-    method public final android.graphics.drawable.Drawable getBottomDrawable();
-    method public final android.graphics.Bitmap getCoverBitmap();
-    method public final android.graphics.drawable.Drawable getCoverDrawable();
+    method public void enableParallax(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, androidx.leanback.widget.ParallaxTarget.PropertyValuesHolderTarget?);
+    method public final androidx.fragment.app.Fragment! findOrCreateVideoSupportFragment();
+    method public final android.graphics.drawable.Drawable! getBottomDrawable();
+    method public final android.graphics.Bitmap! getCoverBitmap();
+    method public final android.graphics.drawable.Drawable! getCoverDrawable();
     method public final int getParallaxDrawableMaxOffset();
-    method public final androidx.leanback.media.PlaybackGlue getPlaybackGlue();
-    method public final int getSolidColor();
-    method public androidx.leanback.media.PlaybackGlueHost onCreateGlueHost();
-    method public androidx.fragment.app.Fragment onCreateVideoSupportFragment();
-    method public final void setCoverBitmap(android.graphics.Bitmap);
+    method public final androidx.leanback.media.PlaybackGlue! getPlaybackGlue();
+    method @ColorInt public final int getSolidColor();
+    method public androidx.leanback.media.PlaybackGlueHost! onCreateGlueHost();
+    method public androidx.fragment.app.Fragment! onCreateVideoSupportFragment();
+    method public final void setCoverBitmap(android.graphics.Bitmap!);
     method public final void setParallaxDrawableMaxOffset(int);
-    method public final void setSolidColor(int);
+    method public final void setSolidColor(@ColorInt int);
     method public void setupVideoPlayback(androidx.leanback.media.PlaybackGlue);
     method public final void switchToRows();
     method public final void switchToVideo();
   }
 
-  public deprecated class ErrorFragment extends androidx.leanback.app.BrandedFragment {
-    ctor public ErrorFragment();
-    method public android.graphics.drawable.Drawable getBackgroundDrawable();
-    method public android.view.View.OnClickListener getButtonClickListener();
-    method public java.lang.String getButtonText();
-    method public android.graphics.drawable.Drawable getImageDrawable();
-    method public java.lang.CharSequence getMessage();
-    method public boolean isBackgroundTranslucent();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setButtonClickListener(android.view.View.OnClickListener);
-    method public void setButtonText(java.lang.String);
-    method public void setDefaultBackground(boolean);
-    method public void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setMessage(java.lang.CharSequence);
+  @Deprecated public class ErrorFragment extends androidx.leanback.app.BrandedFragment {
+    ctor @Deprecated public ErrorFragment();
+    method @Deprecated public android.graphics.drawable.Drawable! getBackgroundDrawable();
+    method @Deprecated public android.view.View.OnClickListener! getButtonClickListener();
+    method @Deprecated public String! getButtonText();
+    method @Deprecated public android.graphics.drawable.Drawable! getImageDrawable();
+    method @Deprecated public CharSequence! getMessage();
+    method @Deprecated public boolean isBackgroundTranslucent();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setButtonClickListener(android.view.View.OnClickListener!);
+    method @Deprecated public void setButtonText(String!);
+    method @Deprecated public void setDefaultBackground(boolean);
+    method @Deprecated public void setImageDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setMessage(CharSequence!);
   }
 
   public class ErrorSupportFragment extends androidx.leanback.app.BrandedSupportFragment {
     ctor public ErrorSupportFragment();
-    method public android.graphics.drawable.Drawable getBackgroundDrawable();
-    method public android.view.View.OnClickListener getButtonClickListener();
-    method public java.lang.String getButtonText();
-    method public android.graphics.drawable.Drawable getImageDrawable();
-    method public java.lang.CharSequence getMessage();
+    method public android.graphics.drawable.Drawable! getBackgroundDrawable();
+    method public android.view.View.OnClickListener! getButtonClickListener();
+    method public String! getButtonText();
+    method public android.graphics.drawable.Drawable! getImageDrawable();
+    method public CharSequence! getMessage();
     method public boolean isBackgroundTranslucent();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setButtonClickListener(android.view.View.OnClickListener);
-    method public void setButtonText(java.lang.String);
+    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
+    method public void setButtonClickListener(android.view.View.OnClickListener!);
+    method public void setButtonText(String!);
     method public void setDefaultBackground(boolean);
-    method public void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setMessage(java.lang.CharSequence);
+    method public void setImageDrawable(android.graphics.drawable.Drawable!);
+    method public void setMessage(CharSequence!);
   }
 
-  public deprecated class GuidedStepFragment extends android.app.Fragment {
-    ctor public GuidedStepFragment();
-    method public static int add(android.app.FragmentManager, androidx.leanback.app.GuidedStepFragment);
-    method public static int add(android.app.FragmentManager, androidx.leanback.app.GuidedStepFragment, int);
-    method public static int addAsRoot(android.app.Activity, androidx.leanback.app.GuidedStepFragment, int);
-    method public void collapseAction(boolean);
-    method public void collapseSubActions();
-    method public void expandAction(androidx.leanback.widget.GuidedAction, boolean);
-    method public void expandSubActions(androidx.leanback.widget.GuidedAction);
-    method public androidx.leanback.widget.GuidedAction findActionById(long);
-    method public int findActionPositionById(long);
-    method public androidx.leanback.widget.GuidedAction findButtonActionById(long);
-    method public int findButtonActionPositionById(long);
-    method public void finishGuidedStepFragments();
-    method public android.view.View getActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getActions();
-    method public android.view.View getButtonActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getButtonActions();
-    method public static androidx.leanback.app.GuidedStepFragment getCurrentGuidedStepFragment(android.app.FragmentManager);
-    method public androidx.leanback.widget.GuidanceStylist getGuidanceStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedActionsStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedButtonActionsStylist();
-    method public int getSelectedActionPosition();
-    method public int getSelectedButtonActionPosition();
-    method public int getUiStyle();
-    method public boolean isExpanded();
-    method public boolean isFocusOutEndAllowed();
-    method public boolean isFocusOutStartAllowed();
-    method public boolean isSubActionsExpanded();
-    method public void notifyActionChanged(int);
-    method public void notifyButtonActionChanged(int);
-    method protected void onAddSharedElementTransition(android.app.FragmentTransaction, androidx.leanback.app.GuidedStepFragment);
-    method public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateActionsStylist();
-    method public android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateButtonActionsStylist();
-    method public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle);
-    method public androidx.leanback.widget.GuidanceStylist onCreateGuidanceStylist();
-    method public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction);
-    method public deprecated void onGuidedActionEdited(androidx.leanback.widget.GuidedAction);
-    method public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction);
-    method protected void onProvideFragmentTransitions();
-    method public int onProvideTheme();
-    method public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void openInEditMode(androidx.leanback.widget.GuidedAction);
-    method public void popBackStackToGuidedStepFragment(java.lang.Class, int);
-    method public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>);
-    method public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setSelectedActionPosition(int);
-    method public void setSelectedButtonActionPosition(int);
-    method public void setUiStyle(int);
-    field public static final java.lang.String EXTRA_UI_STYLE = "uiStyle";
-    field public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
-    field public static final deprecated int UI_STYLE_DEFAULT = 0; // 0x0
-    field public static final int UI_STYLE_ENTRANCE = 1; // 0x1
-    field public static final int UI_STYLE_REPLACE = 0; // 0x0
+  @Deprecated public class GuidedStepFragment extends android.app.Fragment {
+    ctor @Deprecated public GuidedStepFragment();
+    method @Deprecated public static int add(android.app.FragmentManager!, androidx.leanback.app.GuidedStepFragment!);
+    method @Deprecated public static int add(android.app.FragmentManager!, androidx.leanback.app.GuidedStepFragment!, int);
+    method @Deprecated public static int addAsRoot(android.app.Activity!, androidx.leanback.app.GuidedStepFragment!, int);
+    method @Deprecated public void collapseAction(boolean);
+    method @Deprecated public void collapseSubActions();
+    method @Deprecated public void expandAction(androidx.leanback.widget.GuidedAction!, boolean);
+    method @Deprecated public void expandSubActions(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public androidx.leanback.widget.GuidedAction! findActionById(long);
+    method @Deprecated public int findActionPositionById(long);
+    method @Deprecated public androidx.leanback.widget.GuidedAction! findButtonActionById(long);
+    method @Deprecated public int findButtonActionPositionById(long);
+    method @Deprecated public void finishGuidedStepFragments();
+    method @Deprecated public android.view.View! getActionItemView(int);
+    method @Deprecated public java.util.List<androidx.leanback.widget.GuidedAction>! getActions();
+    method @Deprecated public android.view.View! getButtonActionItemView(int);
+    method @Deprecated public java.util.List<androidx.leanback.widget.GuidedAction>! getButtonActions();
+    method @Deprecated public static androidx.leanback.app.GuidedStepFragment! getCurrentGuidedStepFragment(android.app.FragmentManager!);
+    method @Deprecated public androidx.leanback.widget.GuidanceStylist! getGuidanceStylist();
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! getGuidedActionsStylist();
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! getGuidedButtonActionsStylist();
+    method @Deprecated public int getSelectedActionPosition();
+    method @Deprecated public int getSelectedButtonActionPosition();
+    method @Deprecated public int getUiStyle();
+    method @Deprecated public boolean isExpanded();
+    method @Deprecated public boolean isFocusOutEndAllowed();
+    method @Deprecated public boolean isFocusOutStartAllowed();
+    method @Deprecated public boolean isSubActionsExpanded();
+    method @Deprecated public void notifyActionChanged(int);
+    method @Deprecated public void notifyButtonActionChanged(int);
+    method @Deprecated protected void onAddSharedElementTransition(android.app.FragmentTransaction!, androidx.leanback.app.GuidedStepFragment!);
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! onCreateActionsStylist();
+    method @Deprecated public android.view.View! onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method @Deprecated public androidx.leanback.widget.GuidedActionsStylist! onCreateButtonActionsStylist();
+    method @Deprecated public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle!);
+    method @Deprecated public androidx.leanback.widget.GuidanceStylist! onCreateGuidanceStylist();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionEdited(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated protected void onProvideFragmentTransitions();
+    method @Deprecated public int onProvideTheme();
+    method @Deprecated public void onResume();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void openInEditMode(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void popBackStackToGuidedStepFragment(Class!, int);
+    method @Deprecated public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method @Deprecated public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>!);
+    method @Deprecated public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method @Deprecated public void setSelectedActionPosition(int);
+    method @Deprecated public void setSelectedButtonActionPosition(int);
+    method @Deprecated public void setUiStyle(int);
+    field @Deprecated public static final String EXTRA_UI_STYLE = "uiStyle";
+    field @Deprecated public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
+    field @Deprecated public static final int UI_STYLE_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int UI_STYLE_ENTRANCE = 1; // 0x1
+    field @Deprecated public static final int UI_STYLE_REPLACE = 0; // 0x0
   }
 
   public class GuidedStepSupportFragment extends androidx.fragment.app.Fragment {
     ctor public GuidedStepSupportFragment();
-    method public static int add(androidx.fragment.app.FragmentManager, androidx.leanback.app.GuidedStepSupportFragment);
-    method public static int add(androidx.fragment.app.FragmentManager, androidx.leanback.app.GuidedStepSupportFragment, int);
-    method public static int addAsRoot(androidx.fragment.app.FragmentActivity, androidx.leanback.app.GuidedStepSupportFragment, int);
+    method public static int add(androidx.fragment.app.FragmentManager!, androidx.leanback.app.GuidedStepSupportFragment!);
+    method public static int add(androidx.fragment.app.FragmentManager!, androidx.leanback.app.GuidedStepSupportFragment!, int);
+    method public static int addAsRoot(androidx.fragment.app.FragmentActivity!, androidx.leanback.app.GuidedStepSupportFragment!, int);
     method public void collapseAction(boolean);
     method public void collapseSubActions();
-    method public void expandAction(androidx.leanback.widget.GuidedAction, boolean);
-    method public void expandSubActions(androidx.leanback.widget.GuidedAction);
-    method public androidx.leanback.widget.GuidedAction findActionById(long);
+    method public void expandAction(androidx.leanback.widget.GuidedAction!, boolean);
+    method public void expandSubActions(androidx.leanback.widget.GuidedAction!);
+    method public androidx.leanback.widget.GuidedAction! findActionById(long);
     method public int findActionPositionById(long);
-    method public androidx.leanback.widget.GuidedAction findButtonActionById(long);
+    method public androidx.leanback.widget.GuidedAction! findButtonActionById(long);
     method public int findButtonActionPositionById(long);
     method public void finishGuidedStepSupportFragments();
-    method public android.view.View getActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getActions();
-    method public android.view.View getButtonActionItemView(int);
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getButtonActions();
-    method public static androidx.leanback.app.GuidedStepSupportFragment getCurrentGuidedStepSupportFragment(androidx.fragment.app.FragmentManager);
-    method public androidx.leanback.widget.GuidanceStylist getGuidanceStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedActionsStylist();
-    method public androidx.leanback.widget.GuidedActionsStylist getGuidedButtonActionsStylist();
+    method public android.view.View! getActionItemView(int);
+    method public java.util.List<androidx.leanback.widget.GuidedAction>! getActions();
+    method public android.view.View! getButtonActionItemView(int);
+    method public java.util.List<androidx.leanback.widget.GuidedAction>! getButtonActions();
+    method public static androidx.leanback.app.GuidedStepSupportFragment! getCurrentGuidedStepSupportFragment(androidx.fragment.app.FragmentManager!);
+    method public androidx.leanback.widget.GuidanceStylist! getGuidanceStylist();
+    method public androidx.leanback.widget.GuidedActionsStylist! getGuidedActionsStylist();
+    method public androidx.leanback.widget.GuidedActionsStylist! getGuidedButtonActionsStylist();
     method public int getSelectedActionPosition();
     method public int getSelectedButtonActionPosition();
     method public int getUiStyle();
@@ -489,216 +504,266 @@
     method public boolean isSubActionsExpanded();
     method public void notifyActionChanged(int);
     method public void notifyButtonActionChanged(int);
-    method protected void onAddSharedElementTransition(androidx.fragment.app.FragmentTransaction, androidx.leanback.app.GuidedStepSupportFragment);
-    method public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateActionsStylist();
-    method public android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    method public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle);
-    method public androidx.leanback.widget.GuidedActionsStylist onCreateButtonActionsStylist();
-    method public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle);
-    method public androidx.leanback.widget.GuidanceStylist onCreateGuidanceStylist();
-    method public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction);
-    method public deprecated void onGuidedActionEdited(androidx.leanback.widget.GuidedAction);
-    method public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction);
-    method public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction);
+    method protected void onAddSharedElementTransition(androidx.fragment.app.FragmentTransaction!, androidx.leanback.app.GuidedStepSupportFragment!);
+    method public void onCreateActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method public androidx.leanback.widget.GuidedActionsStylist! onCreateActionsStylist();
+    method public android.view.View! onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method public void onCreateButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>, android.os.Bundle!);
+    method public androidx.leanback.widget.GuidedActionsStylist! onCreateButtonActionsStylist();
+    method public androidx.leanback.widget.GuidanceStylist.Guidance onCreateGuidance(android.os.Bundle!);
+    method public androidx.leanback.widget.GuidanceStylist! onCreateGuidanceStylist();
+    method public void onGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method public void onGuidedActionEditCanceled(androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void onGuidedActionEdited(androidx.leanback.widget.GuidedAction!);
+    method public long onGuidedActionEditedAndProceed(androidx.leanback.widget.GuidedAction!);
+    method public void onGuidedActionFocused(androidx.leanback.widget.GuidedAction!);
     method protected void onProvideFragmentTransitions();
     method public int onProvideTheme();
-    method public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction);
-    method public void openInEditMode(androidx.leanback.widget.GuidedAction);
-    method public void popBackStackToGuidedStepSupportFragment(java.lang.Class, int);
-    method public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>);
-    method public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>);
+    method public boolean onSubGuidedActionClicked(androidx.leanback.widget.GuidedAction!);
+    method public void openInEditMode(androidx.leanback.widget.GuidedAction!);
+    method public void popBackStackToGuidedStepSupportFragment(Class!, int);
+    method public void setActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method public void setActionsDiffCallback(androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction>!);
+    method public void setButtonActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
     method public void setSelectedActionPosition(int);
     method public void setSelectedButtonActionPosition(int);
     method public void setUiStyle(int);
-    field public static final java.lang.String EXTRA_UI_STYLE = "uiStyle";
+    field public static final String EXTRA_UI_STYLE = "uiStyle";
     field public static final int UI_STYLE_ACTIVITY_ROOT = 2; // 0x2
-    field public static final deprecated int UI_STYLE_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int UI_STYLE_DEFAULT = 0; // 0x0
     field public static final int UI_STYLE_ENTRANCE = 1; // 0x1
     field public static final int UI_STYLE_REPLACE = 0; // 0x0
   }
 
-  public deprecated class HeadersFragment extends android.app.Fragment {
-    ctor public HeadersFragment();
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public void onTransitionStart();
-    method public void setOnHeaderClickedListener(androidx.leanback.app.HeadersFragment.OnHeaderClickedListener);
-    method public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersFragment.OnHeaderViewSelectedListener);
+  @Deprecated public class HeadersFragment extends android.app.Fragment {
+    ctor @Deprecated public HeadersFragment();
+    method @Deprecated public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method @Deprecated public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
+    method @Deprecated public boolean isScrolling();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onTransitionEnd();
+    method @Deprecated public boolean onTransitionPrepare();
+    method @Deprecated public void onTransitionStart();
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setAlignment(int);
+    method @Deprecated public void setOnHeaderClickedListener(androidx.leanback.app.HeadersFragment.OnHeaderClickedListener!);
+    method @Deprecated public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersFragment.OnHeaderViewSelectedListener!);
+    method @Deprecated public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract deprecated interface HeadersFragment.OnHeaderClickedListener {
-    method public abstract void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  @Deprecated public static interface HeadersFragment.OnHeaderClickedListener {
+    method @Deprecated public void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
-  public static abstract deprecated interface HeadersFragment.OnHeaderViewSelectedListener {
-    method public abstract void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  @Deprecated public static interface HeadersFragment.OnHeaderViewSelectedListener {
+    method @Deprecated public void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
   public class HeadersSupportFragment extends androidx.fragment.app.Fragment {
     ctor public HeadersSupportFragment();
+    method public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method public int getSelectedPosition();
+    method public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
     method public boolean isScrolling();
     method public void onTransitionEnd();
+    method public boolean onTransitionPrepare();
     method public void onTransitionStart();
-    method public void setOnHeaderClickedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderClickedListener);
-    method public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener);
+    method public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setAlignment(int);
+    method public void setOnHeaderClickedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderClickedListener!);
+    method public void setOnHeaderViewSelectedListener(androidx.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener!);
+    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method public void setSelectedPosition(int);
+    method public void setSelectedPosition(int, boolean);
   }
 
-  public static abstract interface HeadersSupportFragment.OnHeaderClickedListener {
-    method public abstract void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  public static interface HeadersSupportFragment.OnHeaderClickedListener {
+    method public void onHeaderClicked(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
-  public static abstract interface HeadersSupportFragment.OnHeaderViewSelectedListener {
-    method public abstract void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, androidx.leanback.widget.Row);
+  public static interface HeadersSupportFragment.OnHeaderViewSelectedListener {
+    method public void onHeaderSelected(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, androidx.leanback.widget.Row!);
   }
 
-  public abstract deprecated class OnboardingFragment extends android.app.Fragment {
-    ctor public OnboardingFragment();
-    method public final int getArrowBackgroundColor();
-    method public final int getArrowColor();
-    method protected final int getCurrentPageIndex();
-    method public final int getDescriptionViewTextColor();
-    method public final int getDotBackgroundColor();
-    method public final int getIconResourceId();
-    method public final int getLogoResourceId();
-    method protected abstract int getPageCount();
-    method protected abstract java.lang.CharSequence getPageDescription(int);
-    method protected abstract java.lang.CharSequence getPageTitle(int);
-    method public final java.lang.CharSequence getStartButtonText();
-    method public final int getTitleViewTextColor();
-    method protected final boolean isLogoAnimationFinished();
-    method protected void moveToNextPage();
-    method protected void moveToPreviousPage();
-    method protected abstract android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected abstract android.view.View onCreateContentView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateDescriptionAnimator();
-    method protected android.animation.Animator onCreateEnterAnimation();
-    method protected abstract android.view.View onCreateForegroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateLogoAnimation();
-    method protected android.animation.Animator onCreateTitleAnimator();
-    method protected void onFinishFragment();
-    method protected void onLogoAnimationFinished();
-    method protected void onPageChanged(int, int);
-    method public int onProvideTheme();
-    method public void setArrowBackgroundColor(int);
-    method public void setArrowColor(int);
-    method public void setDescriptionViewTextColor(int);
-    method public void setDotBackgroundColor(int);
-    method public final void setIconResouceId(int);
-    method public final void setLogoResourceId(int);
-    method public void setStartButtonText(java.lang.CharSequence);
-    method public void setTitleViewTextColor(int);
-    method protected final void startEnterAnimation(boolean);
+  @Deprecated public abstract class OnboardingFragment extends android.app.Fragment {
+    ctor @Deprecated public OnboardingFragment();
+    method @Deprecated @ColorInt public final int getArrowBackgroundColor();
+    method @Deprecated @ColorInt public final int getArrowColor();
+    method @Deprecated protected final int getCurrentPageIndex();
+    method @Deprecated @ColorInt public final int getDescriptionViewTextColor();
+    method @Deprecated @ColorInt public final int getDotBackgroundColor();
+    method @Deprecated public final int getIconResourceId();
+    method @Deprecated public final int getLogoResourceId();
+    method @Deprecated protected abstract int getPageCount();
+    method @Deprecated protected abstract CharSequence! getPageDescription(int);
+    method @Deprecated protected abstract CharSequence! getPageTitle(int);
+    method @Deprecated public final CharSequence! getStartButtonText();
+    method @Deprecated @ColorInt public final int getTitleViewTextColor();
+    method @Deprecated protected final boolean isLogoAnimationFinished();
+    method @Deprecated protected void moveToNextPage();
+    method @Deprecated protected void moveToPreviousPage();
+    method @Deprecated protected abstract android.view.View? onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method @Deprecated protected abstract android.view.View? onCreateContentView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method @Deprecated protected android.animation.Animator! onCreateDescriptionAnimator();
+    method @Deprecated protected android.animation.Animator? onCreateEnterAnimation();
+    method @Deprecated protected abstract android.view.View? onCreateForegroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method @Deprecated protected android.animation.Animator? onCreateLogoAnimation();
+    method @Deprecated protected android.animation.Animator! onCreateTitleAnimator();
+    method @Deprecated public android.view.View? onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated protected void onFinishFragment();
+    method @Deprecated protected void onLogoAnimationFinished();
+    method @Deprecated protected void onPageChanged(int, int);
+    method @Deprecated public int onProvideTheme();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public void setArrowBackgroundColor(@ColorInt int);
+    method @Deprecated public void setArrowColor(@ColorInt int);
+    method @Deprecated public void setDescriptionViewTextColor(@ColorInt int);
+    method @Deprecated public void setDotBackgroundColor(@ColorInt int);
+    method @Deprecated public final void setIconResouceId(int);
+    method @Deprecated public final void setLogoResourceId(int);
+    method @Deprecated public void setStartButtonText(CharSequence!);
+    method @Deprecated public void setTitleViewTextColor(@ColorInt int);
+    method @Deprecated protected final void startEnterAnimation(boolean);
   }
 
   public abstract class OnboardingSupportFragment extends androidx.fragment.app.Fragment {
     ctor public OnboardingSupportFragment();
-    method public final int getArrowBackgroundColor();
-    method public final int getArrowColor();
+    method @ColorInt public final int getArrowBackgroundColor();
+    method @ColorInt public final int getArrowColor();
     method protected final int getCurrentPageIndex();
-    method public final int getDescriptionViewTextColor();
-    method public final int getDotBackgroundColor();
+    method @ColorInt public final int getDescriptionViewTextColor();
+    method @ColorInt public final int getDotBackgroundColor();
     method public final int getIconResourceId();
     method public final int getLogoResourceId();
     method protected abstract int getPageCount();
-    method protected abstract java.lang.CharSequence getPageDescription(int);
-    method protected abstract java.lang.CharSequence getPageTitle(int);
-    method public final java.lang.CharSequence getStartButtonText();
-    method public final int getTitleViewTextColor();
+    method protected abstract CharSequence! getPageDescription(int);
+    method protected abstract CharSequence! getPageTitle(int);
+    method public final CharSequence! getStartButtonText();
+    method @ColorInt public final int getTitleViewTextColor();
     method protected final boolean isLogoAnimationFinished();
     method protected void moveToNextPage();
     method protected void moveToPreviousPage();
-    method protected abstract android.view.View onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected abstract android.view.View onCreateContentView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateDescriptionAnimator();
-    method protected android.animation.Animator onCreateEnterAnimation();
-    method protected abstract android.view.View onCreateForegroundView(android.view.LayoutInflater, android.view.ViewGroup);
-    method protected android.animation.Animator onCreateLogoAnimation();
-    method protected android.animation.Animator onCreateTitleAnimator();
+    method protected abstract android.view.View? onCreateBackgroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method protected abstract android.view.View? onCreateContentView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method protected android.animation.Animator! onCreateDescriptionAnimator();
+    method protected android.animation.Animator? onCreateEnterAnimation();
+    method protected abstract android.view.View? onCreateForegroundView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method protected android.animation.Animator? onCreateLogoAnimation();
+    method protected android.animation.Animator! onCreateTitleAnimator();
     method protected void onFinishFragment();
     method protected void onLogoAnimationFinished();
     method protected void onPageChanged(int, int);
     method public int onProvideTheme();
-    method public void setArrowBackgroundColor(int);
-    method public void setArrowColor(int);
-    method public void setDescriptionViewTextColor(int);
-    method public void setDotBackgroundColor(int);
+    method public void setArrowBackgroundColor(@ColorInt int);
+    method public void setArrowColor(@ColorInt int);
+    method public void setDescriptionViewTextColor(@ColorInt int);
+    method public void setDotBackgroundColor(@ColorInt int);
     method public final void setIconResouceId(int);
     method public final void setLogoResourceId(int);
-    method public void setStartButtonText(java.lang.CharSequence);
-    method public void setTitleViewTextColor(int);
+    method public void setStartButtonText(CharSequence!);
+    method public void setTitleViewTextColor(@ColorInt int);
     method protected final void startEnterAnimation(boolean);
   }
 
-  public deprecated class PlaybackFragment extends android.app.Fragment {
-    ctor public PlaybackFragment();
-    method public deprecated void fadeOut();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public int getBackgroundType();
-    method public androidx.leanback.app.ProgressBarManager getProgressBarManager();
-    method public void hideControlsOverlay(boolean);
-    method public boolean isControlsOverlayAutoHideEnabled();
-    method public boolean isControlsOverlayVisible();
-    method public deprecated boolean isFadingEnabled();
-    method public void notifyPlaybackRowChanged();
-    method protected void onBufferingStateChanged(boolean);
-    method protected void onError(int, java.lang.CharSequence);
-    method protected void onVideoSizeChanged(int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setBackgroundType(int);
-    method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public deprecated void setFadingEnabled(boolean);
-    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setPlaybackRow(androidx.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
-    method public void setSelectedPosition(int);
-    method public void setSelectedPosition(int, boolean);
-    method public void showControlsOverlay(boolean);
-    method public void tickle();
-    field public static final int BG_DARK = 1; // 0x1
-    field public static final int BG_LIGHT = 2; // 0x2
-    field public static final int BG_NONE = 0; // 0x0
+  @Deprecated public class PlaybackFragment extends android.app.Fragment {
+    ctor @Deprecated public PlaybackFragment();
+    method @Deprecated public void fadeOut();
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public int getBackgroundType();
+    method @Deprecated public androidx.leanback.app.ProgressBarManager! getProgressBarManager();
+    method @Deprecated public void hideControlsOverlay(boolean);
+    method @Deprecated public boolean isControlsOverlayAutoHideEnabled();
+    method @Deprecated public boolean isControlsOverlayVisible();
+    method @Deprecated public boolean isFadingEnabled();
+    method @Deprecated public void notifyPlaybackRowChanged();
+    method @Deprecated protected void onBufferingStateChanged(boolean);
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroy();
+    method @Deprecated public void onDestroyView();
+    method @Deprecated protected void onError(int, CharSequence!);
+    method @Deprecated public void onPause();
+    method @Deprecated public void onResume();
+    method @Deprecated public void onStart();
+    method @Deprecated public void onStop();
+    method @Deprecated protected void onVideoSizeChanged(int, int);
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setBackgroundType(int);
+    method @Deprecated public void setControlsOverlayAutoHideEnabled(boolean);
+    method @Deprecated public void setFadingEnabled(boolean);
+    method @Deprecated public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method @Deprecated public final void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method @Deprecated public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method @Deprecated public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method @Deprecated public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
+    method @Deprecated public void showControlsOverlay(boolean);
+    method @Deprecated public void tickle();
+    field @Deprecated public static final int BG_DARK = 1; // 0x1
+    field @Deprecated public static final int BG_LIGHT = 2; // 0x2
+    field @Deprecated public static final int BG_NONE = 0; // 0x0
   }
 
-  public deprecated class PlaybackFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
-    ctor public PlaybackFragmentGlueHost(androidx.leanback.app.PlaybackFragment);
-    method public void fadeOut();
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+  @Deprecated public class PlaybackFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
+    ctor @Deprecated public PlaybackFragmentGlueHost(androidx.leanback.app.PlaybackFragment!);
+    method @Deprecated public void fadeOut();
+    method @Deprecated public androidx.leanback.media.PlaybackGlueHost.PlayerCallback! getPlayerCallback();
+    method @Deprecated public void hideControlsOverlay(boolean);
+    method @Deprecated public boolean isControlsOverlayAutoHideEnabled();
+    method @Deprecated public boolean isControlsOverlayVisible();
+    method @Deprecated public void notifyPlaybackRowChanged();
+    method @Deprecated public void setControlsOverlayAutoHideEnabled(boolean);
+    method @Deprecated public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method @Deprecated public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method @Deprecated public void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method @Deprecated public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method @Deprecated public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method @Deprecated public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
+    method @Deprecated public void showControlsOverlay(boolean);
   }
 
   public class PlaybackSupportFragment extends androidx.fragment.app.Fragment {
     ctor public PlaybackSupportFragment();
-    method public deprecated void fadeOut();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
+    method @Deprecated public void fadeOut();
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
     method public int getBackgroundType();
-    method public androidx.leanback.app.ProgressBarManager getProgressBarManager();
+    method public androidx.leanback.app.ProgressBarManager! getProgressBarManager();
     method public void hideControlsOverlay(boolean);
     method public boolean isControlsOverlayAutoHideEnabled();
     method public boolean isControlsOverlayVisible();
-    method public deprecated boolean isFadingEnabled();
+    method @Deprecated public boolean isFadingEnabled();
     method public void notifyPlaybackRowChanged();
     method protected void onBufferingStateChanged(boolean);
-    method protected void onError(int, java.lang.CharSequence);
+    method protected void onError(int, CharSequence!);
     method protected void onVideoSizeChanged(int, int);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
     method public void setBackgroundType(int);
     method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public deprecated void setFadingEnabled(boolean);
-    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setPlaybackRow(androidx.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+    method @Deprecated public void setFadingEnabled(boolean);
+    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method public final void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method public void setOnPlaybackItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, boolean);
     method public void showControlsOverlay(boolean);
@@ -709,9 +774,9 @@
   }
 
   public class PlaybackSupportFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
-    ctor public PlaybackSupportFragmentGlueHost(androidx.leanback.app.PlaybackSupportFragment);
+    ctor public PlaybackSupportFragmentGlueHost(androidx.leanback.app.PlaybackSupportFragment!);
     method public void fadeOut();
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
   }
 
   public final class ProgressBarManager {
@@ -721,173 +786,204 @@
     method public long getInitialDelay();
     method public void hide();
     method public void setInitialDelay(long);
-    method public void setProgressBarView(android.view.View);
-    method public void setRootView(android.view.ViewGroup);
+    method public void setProgressBarView(android.view.View!);
+    method public void setRootView(android.view.ViewGroup!);
     method public void show();
   }
 
-  public deprecated class RowsFragment extends android.app.Fragment implements androidx.leanback.app.BrowseFragment.MainFragmentAdapterProvider androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapterProvider {
-    ctor public RowsFragment();
-    method public deprecated void enableRowScaling(boolean);
-    method protected androidx.leanback.widget.VerticalGridView findGridViewFromRoot(android.view.View);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public androidx.leanback.app.BrowseFragment.MainFragmentAdapter getMainFragmentAdapter();
-    method public androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(int);
-    method public boolean isScrolling();
-    method public void onTransitionEnd();
-    method public boolean onTransitionPrepare();
-    method public void setAlignment(int);
-    method public void setEntranceTransitionState(boolean);
-    method public void setExpand(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+  @Deprecated public class RowsFragment extends android.app.Fragment implements androidx.leanback.app.BrowseFragment.MainFragmentAdapterProvider androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapterProvider {
+    ctor @Deprecated public RowsFragment();
+    method @Deprecated public void enableRowScaling(boolean);
+    method @Deprecated protected androidx.leanback.widget.VerticalGridView! findGridViewFromRoot(android.view.View!);
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method @Deprecated public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentAdapter! getMainFragmentAdapter();
+    method @Deprecated public androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
+    method @Deprecated public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public androidx.leanback.widget.BaseOnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method @Deprecated public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method @Deprecated public androidx.leanback.widget.RowPresenter.ViewHolder! getRowViewHolder(int);
+    method @Deprecated public int getSelectedPosition();
+    method @Deprecated public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
+    method @Deprecated public boolean isScrolling();
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroyView();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle!);
+    method @Deprecated public void onTransitionEnd();
+    method @Deprecated public boolean onTransitionPrepare();
+    method @Deprecated public void onTransitionStart();
+    method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
+    method @Deprecated public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setAlignment(int);
+    method @Deprecated public void setEntranceTransitionState(boolean);
+    method @Deprecated public void setExpand(boolean);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method @Deprecated public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method @Deprecated public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method @Deprecated public void setSelectedPosition(int);
+    method @Deprecated public void setSelectedPosition(int, boolean);
   }
 
-  public static class RowsFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentAdapter {
-    ctor public RowsFragment.MainFragmentAdapter(androidx.leanback.app.RowsFragment);
+  @Deprecated public static class RowsFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentAdapter<androidx.leanback.app.RowsFragment> {
+    ctor @Deprecated public RowsFragment.MainFragmentAdapter(androidx.leanback.app.RowsFragment!);
   }
 
-  public static deprecated class RowsFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter {
-    ctor public RowsFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsFragment);
+  @Deprecated public static class RowsFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseFragment.MainFragmentRowsAdapter<androidx.leanback.app.RowsFragment> {
+    ctor @Deprecated public RowsFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsFragment!);
   }
 
   public class RowsSupportFragment extends androidx.fragment.app.Fragment implements androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapterProvider androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapterProvider {
     ctor public RowsSupportFragment();
-    method public deprecated void enableRowScaling(boolean);
-    method protected androidx.leanback.widget.VerticalGridView findGridViewFromRoot(android.view.View);
-    method public androidx.leanback.widget.RowPresenter.ViewHolder findRowViewHolderByPosition(int);
-    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter getMainFragmentAdapter();
-    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter getMainFragmentRowsAdapter();
-    method public androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public androidx.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public androidx.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(int);
+    method @Deprecated public void enableRowScaling(boolean);
+    method protected androidx.leanback.widget.VerticalGridView! findGridViewFromRoot(android.view.View!);
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! findRowViewHolderByPosition(int);
+    method public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter! getMainFragmentAdapter();
+    method public androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter! getMainFragmentRowsAdapter();
+    method public androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method public androidx.leanback.widget.BaseOnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
+    method public androidx.leanback.widget.RowPresenter.ViewHolder! getRowViewHolder(int);
+    method public int getSelectedPosition();
+    method public final androidx.leanback.widget.VerticalGridView! getVerticalGridView();
     method public boolean isScrolling();
     method public void onTransitionEnd();
     method public boolean onTransitionPrepare();
+    method public void onTransitionStart();
+    method public final void setAdapter(androidx.leanback.widget.ObjectAdapter!);
     method public void setAlignment(int);
     method public void setEntranceTransitionState(boolean);
     method public void setExpand(boolean);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
+    method public void setSelectedPosition(int, boolean, androidx.leanback.widget.Presenter.ViewHolderTask!);
+    method public void setSelectedPosition(int);
+    method public void setSelectedPosition(int, boolean);
   }
 
-  public static class RowsSupportFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter {
-    ctor public RowsSupportFragment.MainFragmentAdapter(androidx.leanback.app.RowsSupportFragment);
+  public static class RowsSupportFragment.MainFragmentAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentAdapter<androidx.leanback.app.RowsSupportFragment> {
+    ctor public RowsSupportFragment.MainFragmentAdapter(androidx.leanback.app.RowsSupportFragment!);
   }
 
-  public static class RowsSupportFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter {
-    ctor public RowsSupportFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsSupportFragment);
+  public static class RowsSupportFragment.MainFragmentRowsAdapter extends androidx.leanback.app.BrowseSupportFragment.MainFragmentRowsAdapter<androidx.leanback.app.RowsSupportFragment> {
+    ctor public RowsSupportFragment.MainFragmentRowsAdapter(androidx.leanback.app.RowsSupportFragment!);
   }
 
-  public deprecated class SearchFragment extends android.app.Fragment {
-    ctor public SearchFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String);
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, java.lang.String);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public android.content.Intent getRecognizerIntent();
-    method public androidx.leanback.app.RowsFragment getRowsFragment();
-    method public java.lang.String getTitle();
-    method public static androidx.leanback.app.SearchFragment newInstance(java.lang.String);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchQuery(java.lang.String, boolean);
-    method public void setSearchQuery(android.content.Intent, boolean);
-    method public void setSearchResultProvider(androidx.leanback.app.SearchFragment.SearchResultProvider);
-    method public deprecated void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback);
-    method public void setTitle(java.lang.String);
-    method public void startRecognition();
+  @Deprecated public class SearchFragment extends android.app.Fragment {
+    ctor @Deprecated public SearchFragment();
+    method @Deprecated public static android.os.Bundle! createArgs(android.os.Bundle!, String!);
+    method @Deprecated public static android.os.Bundle! createArgs(android.os.Bundle!, String!, String!);
+    method @Deprecated public void displayCompletions(java.util.List<java.lang.String>!);
+    method @Deprecated public void displayCompletions(android.view.inputmethod.CompletionInfo[]!);
+    method @Deprecated public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method @Deprecated public android.content.Intent! getRecognizerIntent();
+    method @Deprecated public androidx.leanback.app.RowsFragment! getRowsFragment();
+    method @Deprecated public String! getTitle();
+    method @Deprecated public static androidx.leanback.app.SearchFragment! newInstance(String!);
+    method @Deprecated public void onCreate(android.os.Bundle!);
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void onDestroy();
+    method @Deprecated public void onPause();
+    method @Deprecated public void onRequestPermissionsResult(int, String[]!, int[]!);
+    method @Deprecated public void onResume();
+    method @Deprecated public void onStart();
+    method @Deprecated public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method @Deprecated public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors!);
+    method @Deprecated public void setSearchQuery(String!, boolean);
+    method @Deprecated public void setSearchQuery(android.content.Intent!, boolean);
+    method @Deprecated public void setSearchResultProvider(androidx.leanback.app.SearchFragment.SearchResultProvider!);
+    method @Deprecated public void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback!);
+    method @Deprecated public void setTitle(String!);
+    method @Deprecated public void startRecognition();
   }
 
-  public static abstract interface SearchFragment.SearchResultProvider {
-    method public abstract androidx.leanback.widget.ObjectAdapter getResultsAdapter();
-    method public abstract boolean onQueryTextChange(java.lang.String);
-    method public abstract boolean onQueryTextSubmit(java.lang.String);
+  @Deprecated public static interface SearchFragment.SearchResultProvider {
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getResultsAdapter();
+    method @Deprecated public boolean onQueryTextChange(String!);
+    method @Deprecated public boolean onQueryTextSubmit(String!);
   }
 
   public class SearchSupportFragment extends androidx.fragment.app.Fragment {
     ctor public SearchSupportFragment();
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String);
-    method public static android.os.Bundle createArgs(android.os.Bundle, java.lang.String, java.lang.String);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public android.content.Intent getRecognizerIntent();
-    method public androidx.leanback.app.RowsSupportFragment getRowsSupportFragment();
-    method public java.lang.String getTitle();
-    method public static androidx.leanback.app.SearchSupportFragment newInstance(java.lang.String);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchQuery(java.lang.String, boolean);
-    method public void setSearchQuery(android.content.Intent, boolean);
-    method public void setSearchResultProvider(androidx.leanback.app.SearchSupportFragment.SearchResultProvider);
-    method public deprecated void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback);
-    method public void setTitle(java.lang.String);
+    method public static android.os.Bundle! createArgs(android.os.Bundle!, String!);
+    method public static android.os.Bundle! createArgs(android.os.Bundle!, String!, String!);
+    method public void displayCompletions(java.util.List<java.lang.String>!);
+    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]!);
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public android.content.Intent! getRecognizerIntent();
+    method public androidx.leanback.app.RowsSupportFragment! getRowsSupportFragment();
+    method public String! getTitle();
+    method public static androidx.leanback.app.SearchSupportFragment! newInstance(String!);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchQuery(String!, boolean);
+    method public void setSearchQuery(android.content.Intent!, boolean);
+    method public void setSearchResultProvider(androidx.leanback.app.SearchSupportFragment.SearchResultProvider!);
+    method @Deprecated public void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback!);
+    method public void setTitle(String!);
     method public void startRecognition();
   }
 
-  public static abstract interface SearchSupportFragment.SearchResultProvider {
-    method public abstract androidx.leanback.widget.ObjectAdapter getResultsAdapter();
-    method public abstract boolean onQueryTextChange(java.lang.String);
-    method public abstract boolean onQueryTextSubmit(java.lang.String);
+  public static interface SearchSupportFragment.SearchResultProvider {
+    method public androidx.leanback.widget.ObjectAdapter! getResultsAdapter();
+    method public boolean onQueryTextChange(String!);
+    method public boolean onQueryTextSubmit(String!);
   }
 
-  public deprecated class VerticalGridFragment extends androidx.leanback.app.BaseFragment {
-    ctor public VerticalGridFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.VerticalGridPresenter getGridPresenter();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
-    method public void setSelectedPosition(int);
+  @Deprecated public class VerticalGridFragment extends androidx.leanback.app.BaseFragment {
+    method @Deprecated public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method @Deprecated public androidx.leanback.widget.VerticalGridPresenter! getGridPresenter();
+    method @Deprecated public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method @Deprecated public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, android.os.Bundle!);
+    method @Deprecated public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter!);
+    method @Deprecated public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method @Deprecated public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
+    method @Deprecated public void setSelectedPosition(int);
   }
 
   public class VerticalGridSupportFragment extends androidx.leanback.app.BaseSupportFragment {
-    ctor public VerticalGridSupportFragment();
-    method public androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public androidx.leanback.widget.VerticalGridPresenter getGridPresenter();
-    method public androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter);
-    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
+    method public androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public androidx.leanback.widget.VerticalGridPresenter! getGridPresenter();
+    method public androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setGridPresenter(androidx.leanback.widget.VerticalGridPresenter!);
+    method public void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
     method public void setSelectedPosition(int);
   }
 
-  public deprecated class VideoFragment extends androidx.leanback.app.PlaybackFragment {
-    ctor public VideoFragment();
-    method public android.view.SurfaceView getSurfaceView();
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+  @Deprecated public class VideoFragment extends androidx.leanback.app.PlaybackFragment {
+    ctor @Deprecated public VideoFragment();
+    method @Deprecated public android.view.SurfaceView! getSurfaceView();
+    method @Deprecated public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
-  public deprecated class VideoFragmentGlueHost extends androidx.leanback.app.PlaybackFragmentGlueHost implements androidx.leanback.media.SurfaceHolderGlueHost {
-    ctor public VideoFragmentGlueHost(androidx.leanback.app.VideoFragment);
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+  @Deprecated public class VideoFragmentGlueHost extends androidx.leanback.app.PlaybackFragmentGlueHost implements androidx.leanback.media.SurfaceHolderGlueHost {
+    ctor @Deprecated public VideoFragmentGlueHost(androidx.leanback.app.VideoFragment!);
+    method @Deprecated public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
   public class VideoSupportFragment extends androidx.leanback.app.PlaybackSupportFragment {
     ctor public VideoSupportFragment();
-    method public android.view.SurfaceView getSurfaceView();
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+    method public android.view.SurfaceView! getSurfaceView();
+    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
   public class VideoSupportFragmentGlueHost extends androidx.leanback.app.PlaybackSupportFragmentGlueHost implements androidx.leanback.media.SurfaceHolderGlueHost {
-    ctor public VideoSupportFragmentGlueHost(androidx.leanback.app.VideoSupportFragment);
-    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+    ctor public VideoSupportFragmentGlueHost(androidx.leanback.app.VideoSupportFragment!);
+    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
 }
@@ -896,9 +992,9 @@
 
   public abstract class CursorMapper {
     ctor public CursorMapper();
-    method protected abstract java.lang.Object bind(android.database.Cursor);
-    method protected abstract void bindColumns(android.database.Cursor);
-    method public java.lang.Object convert(android.database.Cursor);
+    method protected abstract Object! bind(android.database.Cursor!);
+    method protected abstract void bindColumns(android.database.Cursor!);
+    method public Object! convert(android.database.Cursor!);
   }
 
 }
@@ -907,96 +1003,96 @@
 
   public class BoundsRule {
     ctor public BoundsRule();
-    ctor public BoundsRule(androidx.leanback.graphics.BoundsRule);
-    method public void calculateBounds(android.graphics.Rect, android.graphics.Rect);
-    field public androidx.leanback.graphics.BoundsRule.ValueRule bottom;
-    field public androidx.leanback.graphics.BoundsRule.ValueRule left;
-    field public androidx.leanback.graphics.BoundsRule.ValueRule right;
-    field public androidx.leanback.graphics.BoundsRule.ValueRule top;
+    ctor public BoundsRule(androidx.leanback.graphics.BoundsRule!);
+    method public void calculateBounds(android.graphics.Rect!, android.graphics.Rect!);
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! bottom;
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! left;
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! right;
+    field public androidx.leanback.graphics.BoundsRule.ValueRule! top;
   }
 
   public static final class BoundsRule.ValueRule {
-    method public static androidx.leanback.graphics.BoundsRule.ValueRule absoluteValue(int);
+    method public static androidx.leanback.graphics.BoundsRule.ValueRule! absoluteValue(int);
     method public int getAbsoluteValue();
     method public float getFraction();
-    method public static androidx.leanback.graphics.BoundsRule.ValueRule inheritFromParent(float);
-    method public static androidx.leanback.graphics.BoundsRule.ValueRule inheritFromParentWithOffset(float, int);
+    method public static androidx.leanback.graphics.BoundsRule.ValueRule! inheritFromParent(float);
+    method public static androidx.leanback.graphics.BoundsRule.ValueRule! inheritFromParentWithOffset(float, int);
     method public void setAbsoluteValue(int);
     method public void setFraction(float);
   }
 
   public final class ColorFilterCache {
-    method public static androidx.leanback.graphics.ColorFilterCache getColorFilterCache(int);
-    method public android.graphics.ColorFilter getFilterForLevel(float);
+    method public static androidx.leanback.graphics.ColorFilterCache! getColorFilterCache(int);
+    method public android.graphics.ColorFilter! getFilterForLevel(float);
   }
 
   public final class ColorFilterDimmer {
-    method public void applyFilterToView(android.view.View);
-    method public static androidx.leanback.graphics.ColorFilterDimmer create(androidx.leanback.graphics.ColorFilterCache, float, float);
-    method public static androidx.leanback.graphics.ColorFilterDimmer createDefault(android.content.Context);
-    method public android.graphics.ColorFilter getColorFilter();
-    method public android.graphics.Paint getPaint();
+    method public void applyFilterToView(android.view.View!);
+    method public static androidx.leanback.graphics.ColorFilterDimmer! create(androidx.leanback.graphics.ColorFilterCache!, float, float);
+    method public static androidx.leanback.graphics.ColorFilterDimmer! createDefault(android.content.Context!);
+    method public android.graphics.ColorFilter! getColorFilter();
+    method public android.graphics.Paint! getPaint();
     method public void setActiveLevel(float);
   }
 
   public final class ColorOverlayDimmer {
     method public int applyToColor(int);
-    method public static androidx.leanback.graphics.ColorOverlayDimmer createColorOverlayDimmer(int, float, float);
-    method public static androidx.leanback.graphics.ColorOverlayDimmer createDefault(android.content.Context);
-    method public void drawColorOverlay(android.graphics.Canvas, android.view.View, boolean);
+    method public static androidx.leanback.graphics.ColorOverlayDimmer! createColorOverlayDimmer(int, float, float);
+    method public static androidx.leanback.graphics.ColorOverlayDimmer! createDefault(android.content.Context!);
+    method public void drawColorOverlay(android.graphics.Canvas!, android.view.View!, boolean);
     method public int getAlpha();
     method public float getAlphaFloat();
-    method public android.graphics.Paint getPaint();
+    method public android.graphics.Paint! getPaint();
     method public boolean needsDraw();
     method public void setActiveLevel(float);
   }
 
   public class CompositeDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
     ctor public CompositeDrawable();
-    method public void addChildDrawable(android.graphics.drawable.Drawable);
-    method public void draw(android.graphics.Canvas);
-    method public androidx.leanback.graphics.CompositeDrawable.ChildDrawable getChildAt(int);
+    method public void addChildDrawable(android.graphics.drawable.Drawable!);
+    method public void draw(android.graphics.Canvas!);
+    method public androidx.leanback.graphics.CompositeDrawable.ChildDrawable! getChildAt(int);
     method public int getChildCount();
-    method public android.graphics.drawable.Drawable getDrawable(int);
+    method public android.graphics.drawable.Drawable! getDrawable(int);
     method public int getOpacity();
-    method public void invalidateDrawable(android.graphics.drawable.Drawable);
+    method public void invalidateDrawable(android.graphics.drawable.Drawable!);
     method public void removeChild(int);
-    method public void removeDrawable(android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
+    method public void removeDrawable(android.graphics.drawable.Drawable!);
+    method public void scheduleDrawable(android.graphics.drawable.Drawable!, Runnable!, long);
     method public void setAlpha(int);
-    method public void setChildDrawableAt(int, android.graphics.drawable.Drawable);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+    method public void setChildDrawableAt(int, android.graphics.drawable.Drawable!);
+    method public void setColorFilter(android.graphics.ColorFilter!);
+    method public void unscheduleDrawable(android.graphics.drawable.Drawable!, Runnable!);
   }
 
   public static final class CompositeDrawable.ChildDrawable {
-    ctor public CompositeDrawable.ChildDrawable(android.graphics.drawable.Drawable, androidx.leanback.graphics.CompositeDrawable);
-    method public androidx.leanback.graphics.BoundsRule getBoundsRule();
-    method public android.graphics.drawable.Drawable getDrawable();
+    ctor public CompositeDrawable.ChildDrawable(android.graphics.drawable.Drawable!, androidx.leanback.graphics.CompositeDrawable!);
+    method public androidx.leanback.graphics.BoundsRule! getBoundsRule();
+    method public android.graphics.drawable.Drawable! getDrawable();
     method public void recomputeBounds();
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> BOTTOM_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> BOTTOM_FRACTION;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> LEFT_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> LEFT_FRACTION;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> RIGHT_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> RIGHT_FRACTION;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Integer> TOP_ABSOLUTE;
-    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable, java.lang.Float> TOP_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! BOTTOM_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! BOTTOM_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! LEFT_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! LEFT_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! RIGHT_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! RIGHT_FRACTION;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Integer>! TOP_ABSOLUTE;
+    field public static final android.util.Property<androidx.leanback.graphics.CompositeDrawable.ChildDrawable,java.lang.Float>! TOP_FRACTION;
   }
 
   public class FitWidthBitmapDrawable extends android.graphics.drawable.Drawable {
     ctor public FitWidthBitmapDrawable();
-    method public void draw(android.graphics.Canvas);
-    method public android.graphics.Bitmap getBitmap();
+    method public void draw(android.graphics.Canvas!);
+    method public android.graphics.Bitmap! getBitmap();
     method public int getOpacity();
-    method public android.graphics.Rect getSource();
+    method public android.graphics.Rect! getSource();
     method public int getVerticalOffset();
     method public void setAlpha(int);
-    method public void setBitmap(android.graphics.Bitmap);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setSource(android.graphics.Rect);
+    method public void setBitmap(android.graphics.Bitmap!);
+    method public void setColorFilter(android.graphics.ColorFilter!);
+    method public void setSource(android.graphics.Rect!);
     method public void setVerticalOffset(int);
-    field public static final android.util.Property<androidx.leanback.graphics.FitWidthBitmapDrawable, java.lang.Integer> PROPERTY_VERTICAL_OFFSET;
+    field public static final android.util.Property<androidx.leanback.graphics.FitWidthBitmapDrawable,java.lang.Integer>! PROPERTY_VERTICAL_OFFSET;
   }
 
 }
@@ -1004,34 +1100,38 @@
 package androidx.leanback.media {
 
   public class MediaControllerAdapter extends androidx.leanback.media.PlayerAdapter {
-    ctor public MediaControllerAdapter(android.support.v4.media.session.MediaControllerCompat);
-    method public android.graphics.drawable.Drawable getMediaArt(android.content.Context);
-    method public android.support.v4.media.session.MediaControllerCompat getMediaController();
-    method public java.lang.CharSequence getMediaSubtitle();
-    method public java.lang.CharSequence getMediaTitle();
+    ctor public MediaControllerAdapter(android.support.v4.media.session.MediaControllerCompat!);
+    method public android.graphics.drawable.Drawable! getMediaArt(android.content.Context!);
+    method public android.support.v4.media.session.MediaControllerCompat! getMediaController();
+    method public CharSequence! getMediaSubtitle();
+    method public CharSequence! getMediaTitle();
     method public void pause();
     method public void play();
   }
 
-  public abstract deprecated class MediaControllerGlue extends androidx.leanback.media.PlaybackControlGlue {
-    ctor public MediaControllerGlue(android.content.Context, int[], int[]);
-    method public void attachToMediaController(android.support.v4.media.session.MediaControllerCompat);
-    method public void detach();
-    method public int getCurrentPosition();
-    method public int getCurrentSpeedId();
-    method public android.graphics.drawable.Drawable getMediaArt();
-    method public final android.support.v4.media.session.MediaControllerCompat getMediaController();
-    method public int getMediaDuration();
-    method public java.lang.CharSequence getMediaSubtitle();
-    method public java.lang.CharSequence getMediaTitle();
-    method public long getSupportedActions();
-    method public boolean hasValidMedia();
-    method public boolean isMediaPlaying();
+  @Deprecated public abstract class MediaControllerGlue extends androidx.leanback.media.PlaybackControlGlue {
+    ctor @Deprecated public MediaControllerGlue(android.content.Context!, int[]!, int[]!);
+    method @Deprecated public void attachToMediaController(android.support.v4.media.session.MediaControllerCompat!);
+    method @Deprecated public void detach();
+    method @Deprecated public int getCurrentPosition();
+    method @Deprecated public int getCurrentSpeedId();
+    method @Deprecated public android.graphics.drawable.Drawable! getMediaArt();
+    method @Deprecated public final android.support.v4.media.session.MediaControllerCompat! getMediaController();
+    method @Deprecated public int getMediaDuration();
+    method @Deprecated public CharSequence! getMediaSubtitle();
+    method @Deprecated public CharSequence! getMediaTitle();
+    method @Deprecated public long getSupportedActions();
+    method @Deprecated public boolean hasValidMedia();
+    method @Deprecated public boolean isMediaPlaying();
+    method @Deprecated public void next();
+    method @Deprecated public void pause();
+    method @Deprecated public void play(int);
+    method @Deprecated public void previous();
   }
 
   public class MediaPlayerAdapter extends androidx.leanback.media.PlayerAdapter {
-    ctor public MediaPlayerAdapter(android.content.Context);
-    method public final android.media.MediaPlayer getMediaPlayer();
+    ctor public MediaPlayerAdapter(android.content.Context!);
+    method public final android.media.MediaPlayer! getMediaPlayer();
     method public int getProgressUpdatingInterval();
     method protected boolean onError(int, int);
     method protected boolean onInfo(int, int);
@@ -1040,17 +1140,17 @@
     method public void play();
     method public void release();
     method public void reset();
-    method public boolean setDataSource(android.net.Uri);
+    method public boolean setDataSource(android.net.Uri!);
   }
 
-  public class PlaybackBannerControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue {
-    ctor public PlaybackBannerControlGlue(android.content.Context, int[], T);
-    ctor public PlaybackBannerControlGlue(android.content.Context, int[], int[], T);
+  public class PlaybackBannerControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue<T> {
+    ctor public PlaybackBannerControlGlue(android.content.Context!, int[]!, T!);
+    ctor public PlaybackBannerControlGlue(android.content.Context!, int[]!, int[]!, T!);
     method public int[] getFastForwardSpeeds();
     method public int[] getRewindSpeeds();
-    method public void onActionClicked(androidx.leanback.widget.Action);
-    method protected androidx.leanback.widget.PlaybackRowPresenter onCreateRowPresenter();
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
+    method public void onActionClicked(androidx.leanback.widget.Action!);
+    method protected androidx.leanback.widget.PlaybackRowPresenter! onCreateRowPresenter();
+    method public boolean onKey(android.view.View!, int, android.view.KeyEvent!);
     field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
     field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
     field public static final int ACTION_FAST_FORWARD = 128; // 0x80
@@ -1069,38 +1169,38 @@
   }
 
   public abstract class PlaybackBaseControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackGlue implements androidx.leanback.widget.OnActionClickedListener android.view.View.OnKeyListener {
-    ctor public PlaybackBaseControlGlue(android.content.Context, T);
-    method public android.graphics.drawable.Drawable getArt();
+    ctor public PlaybackBaseControlGlue(android.content.Context!, T!);
+    method public android.graphics.drawable.Drawable! getArt();
     method public final long getBufferedPosition();
-    method public androidx.leanback.widget.PlaybackControlsRow getControlsRow();
+    method public androidx.leanback.widget.PlaybackControlsRow! getControlsRow();
     method public long getCurrentPosition();
     method public final long getDuration();
-    method public androidx.leanback.widget.PlaybackRowPresenter getPlaybackRowPresenter();
-    method public final T getPlayerAdapter();
-    method public java.lang.CharSequence getSubtitle();
+    method public androidx.leanback.widget.PlaybackRowPresenter! getPlaybackRowPresenter();
+    method public final T! getPlayerAdapter();
+    method public CharSequence! getSubtitle();
     method public long getSupportedActions();
-    method public java.lang.CharSequence getTitle();
+    method public CharSequence! getTitle();
     method public boolean isControlsOverlayAutoHideEnabled();
     method public final boolean isPlaying();
     method public final boolean isPrepared();
-    method protected static void notifyItemChanged(androidx.leanback.widget.ArrayObjectAdapter, java.lang.Object);
-    method protected void onCreatePrimaryActions(androidx.leanback.widget.ArrayObjectAdapter);
-    method protected abstract androidx.leanback.widget.PlaybackRowPresenter onCreateRowPresenter();
-    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter);
+    method protected static void notifyItemChanged(androidx.leanback.widget.ArrayObjectAdapter!, Object!);
+    method protected void onCreatePrimaryActions(androidx.leanback.widget.ArrayObjectAdapter!);
+    method protected abstract androidx.leanback.widget.PlaybackRowPresenter! onCreateRowPresenter();
+    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter!);
     method protected void onMetadataChanged();
-    method protected void onPlayCompleted();
-    method protected void onPlayStateChanged();
-    method protected void onPreparedStateChanged();
-    method protected void onUpdateBufferedProgress();
-    method protected void onUpdateDuration();
-    method protected void onUpdateProgress();
+    method @CallSuper protected void onPlayCompleted();
+    method @CallSuper protected void onPlayStateChanged();
+    method @CallSuper protected void onPreparedStateChanged();
+    method @CallSuper protected void onUpdateBufferedProgress();
+    method @CallSuper protected void onUpdateDuration();
+    method @CallSuper protected void onUpdateProgress();
     method public final void seekTo(long);
-    method public void setArt(android.graphics.drawable.Drawable);
+    method public void setArt(android.graphics.drawable.Drawable!);
     method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
-    method public void setSubtitle(java.lang.CharSequence);
-    method public void setTitle(java.lang.CharSequence);
+    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow!);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
+    method public void setSubtitle(CharSequence!);
+    method public void setTitle(CharSequence!);
     field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
     field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
     field public static final int ACTION_FAST_FORWARD = 128; // 0x80
@@ -1113,38 +1213,38 @@
   }
 
   public abstract class PlaybackControlGlue extends androidx.leanback.media.PlaybackGlue implements androidx.leanback.widget.OnActionClickedListener android.view.View.OnKeyListener {
-    ctor public PlaybackControlGlue(android.content.Context, int[]);
-    ctor public PlaybackControlGlue(android.content.Context, int[], int[]);
+    ctor public PlaybackControlGlue(android.content.Context!, int[]!);
+    ctor public PlaybackControlGlue(android.content.Context!, int[]!, int[]!);
     method public void enableProgressUpdating(boolean);
-    method public androidx.leanback.widget.PlaybackControlsRow getControlsRow();
-    method public deprecated androidx.leanback.widget.PlaybackControlsRowPresenter getControlsRowPresenter();
+    method public androidx.leanback.widget.PlaybackControlsRow! getControlsRow();
+    method @Deprecated public androidx.leanback.widget.PlaybackControlsRowPresenter! getControlsRowPresenter();
     method public abstract int getCurrentPosition();
     method public abstract int getCurrentSpeedId();
-    method public int[] getFastForwardSpeeds();
-    method public abstract android.graphics.drawable.Drawable getMediaArt();
+    method public int[]! getFastForwardSpeeds();
+    method public abstract android.graphics.drawable.Drawable! getMediaArt();
     method public abstract int getMediaDuration();
-    method public abstract java.lang.CharSequence getMediaSubtitle();
-    method public abstract java.lang.CharSequence getMediaTitle();
-    method public androidx.leanback.widget.PlaybackRowPresenter getPlaybackRowPresenter();
-    method public int[] getRewindSpeeds();
+    method public abstract CharSequence! getMediaSubtitle();
+    method public abstract CharSequence! getMediaTitle();
+    method public androidx.leanback.widget.PlaybackRowPresenter! getPlaybackRowPresenter();
+    method public int[]! getRewindSpeeds();
     method public abstract long getSupportedActions();
     method public int getUpdatePeriod();
     method public abstract boolean hasValidMedia();
     method public boolean isFadingEnabled();
     method public abstract boolean isMediaPlaying();
-    method public void onActionClicked(androidx.leanback.widget.Action);
+    method public void onActionClicked(androidx.leanback.widget.Action!);
     method protected void onCreateControlsRowAndPresenter();
-    method protected void onCreatePrimaryActions(androidx.leanback.widget.SparseArrayObjectAdapter);
-    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter);
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
+    method protected void onCreatePrimaryActions(androidx.leanback.widget.SparseArrayObjectAdapter!);
+    method protected void onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter!);
+    method public boolean onKey(android.view.View!, int, android.view.KeyEvent!);
     method protected void onMetadataChanged();
     method protected void onStateChanged();
     method public void play(int);
     method public final void play();
-    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow);
-    method public deprecated void setControlsRowPresenter(androidx.leanback.widget.PlaybackControlsRowPresenter);
+    method public void setControlsRow(androidx.leanback.widget.PlaybackControlsRow!);
+    method @Deprecated public void setControlsRowPresenter(androidx.leanback.widget.PlaybackControlsRowPresenter!);
     method public void setFadingEnabled(boolean);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
     method public void updateProgress();
     field public static final int ACTION_CUSTOM_LEFT_FIRST = 1; // 0x1
     field public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096; // 0x1000
@@ -1164,16 +1264,16 @@
   }
 
   public abstract class PlaybackGlue {
-    ctor public PlaybackGlue(android.content.Context);
-    method public void addPlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback);
-    method public android.content.Context getContext();
-    method public androidx.leanback.media.PlaybackGlueHost getHost();
-    method protected java.util.List<androidx.leanback.media.PlaybackGlue.PlayerCallback> getPlayerCallbacks();
+    ctor public PlaybackGlue(android.content.Context!);
+    method public void addPlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback!);
+    method public android.content.Context! getContext();
+    method public androidx.leanback.media.PlaybackGlueHost! getHost();
+    method protected java.util.List<androidx.leanback.media.PlaybackGlue.PlayerCallback>! getPlayerCallbacks();
     method public boolean isPlaying();
     method public boolean isPrepared();
     method public void next();
-    method protected void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost);
-    method protected void onDetachedFromHost();
+    method @CallSuper protected void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost!);
+    method @CallSuper protected void onDetachedFromHost();
     method protected void onHostPause();
     method protected void onHostResume();
     method protected void onHostStart();
@@ -1182,36 +1282,36 @@
     method public void play();
     method public void playWhenPrepared();
     method public void previous();
-    method public void removePlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback);
-    method public final void setHost(androidx.leanback.media.PlaybackGlueHost);
+    method public void removePlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback!);
+    method public final void setHost(androidx.leanback.media.PlaybackGlueHost!);
   }
 
-  public static abstract class PlaybackGlue.PlayerCallback {
+  public abstract static class PlaybackGlue.PlayerCallback {
     ctor public PlaybackGlue.PlayerCallback();
-    method public void onPlayCompleted(androidx.leanback.media.PlaybackGlue);
-    method public void onPlayStateChanged(androidx.leanback.media.PlaybackGlue);
-    method public void onPreparedStateChanged(androidx.leanback.media.PlaybackGlue);
+    method public void onPlayCompleted(androidx.leanback.media.PlaybackGlue!);
+    method public void onPlayStateChanged(androidx.leanback.media.PlaybackGlue!);
+    method public void onPreparedStateChanged(androidx.leanback.media.PlaybackGlue!);
   }
 
   public abstract class PlaybackGlueHost {
     ctor public PlaybackGlueHost();
-    method public deprecated void fadeOut();
-    method public androidx.leanback.media.PlaybackGlueHost.PlayerCallback getPlayerCallback();
+    method @Deprecated public void fadeOut();
+    method public androidx.leanback.media.PlaybackGlueHost.PlayerCallback! getPlayerCallback();
     method public void hideControlsOverlay(boolean);
     method public boolean isControlsOverlayAutoHideEnabled();
     method public boolean isControlsOverlayVisible();
     method public void notifyPlaybackRowChanged();
     method public void setControlsOverlayAutoHideEnabled(boolean);
-    method public deprecated void setFadingEnabled(boolean);
-    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public void setOnKeyInterceptListener(android.view.View.OnKeyListener);
-    method public void setPlaybackRow(androidx.leanback.widget.Row);
-    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter);
+    method @Deprecated public void setFadingEnabled(boolean);
+    method public void setHostCallback(androidx.leanback.media.PlaybackGlueHost.HostCallback!);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method public void setOnKeyInterceptListener(android.view.View.OnKeyListener!);
+    method public void setPlaybackRow(androidx.leanback.widget.Row!);
+    method public void setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter!);
     method public void showControlsOverlay(boolean);
   }
 
-  public static abstract class PlaybackGlueHost.HostCallback {
+  public abstract static class PlaybackGlueHost.HostCallback {
     ctor public PlaybackGlueHost.HostCallback();
     method public void onHostDestroy();
     method public void onHostPause();
@@ -1223,40 +1323,40 @@
   public static class PlaybackGlueHost.PlayerCallback {
     ctor public PlaybackGlueHost.PlayerCallback();
     method public void onBufferingStateChanged(boolean);
-    method public void onError(int, java.lang.CharSequence);
+    method public void onError(int, CharSequence!);
     method public void onVideoSizeChanged(int, int);
   }
 
-  public class PlaybackTransportControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue {
-    ctor public PlaybackTransportControlGlue(android.content.Context, T);
-    method public final androidx.leanback.widget.PlaybackSeekDataProvider getSeekProvider();
+  public class PlaybackTransportControlGlue<T extends androidx.leanback.media.PlayerAdapter> extends androidx.leanback.media.PlaybackBaseControlGlue<T> {
+    ctor public PlaybackTransportControlGlue(android.content.Context!, T!);
+    method public final androidx.leanback.widget.PlaybackSeekDataProvider! getSeekProvider();
     method public final boolean isSeekEnabled();
-    method public void onActionClicked(androidx.leanback.widget.Action);
-    method protected androidx.leanback.widget.PlaybackRowPresenter onCreateRowPresenter();
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
+    method public void onActionClicked(androidx.leanback.widget.Action!);
+    method protected androidx.leanback.widget.PlaybackRowPresenter! onCreateRowPresenter();
+    method public boolean onKey(android.view.View!, int, android.view.KeyEvent!);
     method public final void setSeekEnabled(boolean);
-    method public final void setSeekProvider(androidx.leanback.widget.PlaybackSeekDataProvider);
+    method public final void setSeekProvider(androidx.leanback.widget.PlaybackSeekDataProvider!);
   }
 
   public abstract class PlayerAdapter {
     ctor public PlayerAdapter();
     method public void fastForward();
     method public long getBufferedPosition();
-    method public final androidx.leanback.media.PlayerAdapter.Callback getCallback();
+    method public final androidx.leanback.media.PlayerAdapter.Callback! getCallback();
     method public long getCurrentPosition();
     method public long getDuration();
     method public long getSupportedActions();
     method public boolean isPlaying();
     method public boolean isPrepared();
     method public void next();
-    method public void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost);
+    method public void onAttachedToHost(androidx.leanback.media.PlaybackGlueHost!);
     method public void onDetachedFromHost();
     method public abstract void pause();
     method public abstract void play();
     method public void previous();
     method public void rewind();
     method public void seekTo(long);
-    method public final void setCallback(androidx.leanback.media.PlayerAdapter.Callback);
+    method public final void setCallback(androidx.leanback.media.PlayerAdapter.Callback!);
     method public void setProgressUpdatingEnabled(boolean);
     method public void setRepeatAction(int);
     method public void setShuffleAction(int);
@@ -1264,20 +1364,20 @@
 
   public static class PlayerAdapter.Callback {
     ctor public PlayerAdapter.Callback();
-    method public void onBufferedPositionChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onBufferingStateChanged(androidx.leanback.media.PlayerAdapter, boolean);
-    method public void onCurrentPositionChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onDurationChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onError(androidx.leanback.media.PlayerAdapter, int, java.lang.String);
-    method public void onMetadataChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onPlayCompleted(androidx.leanback.media.PlayerAdapter);
-    method public void onPlayStateChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onPreparedStateChanged(androidx.leanback.media.PlayerAdapter);
-    method public void onVideoSizeChanged(androidx.leanback.media.PlayerAdapter, int, int);
+    method public void onBufferedPositionChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onBufferingStateChanged(androidx.leanback.media.PlayerAdapter!, boolean);
+    method public void onCurrentPositionChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onDurationChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onError(androidx.leanback.media.PlayerAdapter!, int, String!);
+    method public void onMetadataChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onPlayCompleted(androidx.leanback.media.PlayerAdapter!);
+    method public void onPlayStateChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onPreparedStateChanged(androidx.leanback.media.PlayerAdapter!);
+    method public void onVideoSizeChanged(androidx.leanback.media.PlayerAdapter!, int, int);
   }
 
-  public abstract interface SurfaceHolderGlueHost {
-    method public abstract void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback);
+  public interface SurfaceHolderGlueHost {
+    method public void setSurfaceHolderCallback(android.view.SurfaceHolder.Callback!);
   }
 
 }
@@ -1285,11 +1385,11 @@
 package androidx.leanback.system {
 
   public class Settings {
-    method public boolean getBoolean(java.lang.String);
-    method public static androidx.leanback.system.Settings getInstance(android.content.Context);
-    method public void setBoolean(java.lang.String, boolean);
-    field public static final java.lang.String OUTLINE_CLIPPING_DISABLED = "OUTLINE_CLIPPING_DISABLED";
-    field public static final java.lang.String PREFER_STATIC_SHADOWS = "PREFER_STATIC_SHADOWS";
+    method public boolean getBoolean(String!);
+    method public static androidx.leanback.system.Settings! getInstance(android.content.Context!);
+    method public void setBoolean(String!, boolean);
+    field public static final String OUTLINE_CLIPPING_DISABLED = "OUTLINE_CLIPPING_DISABLED";
+    field public static final String PREFER_STATIC_SHADOWS = "PREFER_STATIC_SHADOWS";
   }
 
 }
@@ -1298,33 +1398,33 @@
 
   public abstract class AbstractDetailsDescriptionPresenter extends androidx.leanback.widget.Presenter {
     ctor public AbstractDetailsDescriptionPresenter();
-    method protected abstract void onBindDescription(androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder, java.lang.Object);
-    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method protected abstract void onBindDescription(androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder!, Object!);
+    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public final androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
   }
 
   public static class AbstractDetailsDescriptionPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public AbstractDetailsDescriptionPresenter.ViewHolder(android.view.View);
-    method public android.widget.TextView getBody();
-    method public android.widget.TextView getSubtitle();
-    method public android.widget.TextView getTitle();
+    ctor public AbstractDetailsDescriptionPresenter.ViewHolder(android.view.View!);
+    method public android.widget.TextView! getBody();
+    method public android.widget.TextView! getSubtitle();
+    method public android.widget.TextView! getTitle();
   }
 
   public abstract class AbstractMediaItemPresenter extends androidx.leanback.widget.RowPresenter {
     ctor public AbstractMediaItemPresenter();
     ctor public AbstractMediaItemPresenter(int);
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public androidx.leanback.widget.Presenter getActionPresenter();
-    method protected int getMediaPlayState(java.lang.Object);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method public androidx.leanback.widget.Presenter! getActionPresenter();
+    method protected int getMediaPlayState(Object!);
     method public int getThemeId();
     method public boolean hasMediaRowSeparator();
-    method protected abstract void onBindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder, java.lang.Object);
-    method public void onBindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method protected void onBindRowActions(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method protected void onUnbindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method public void onUnbindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder);
-    method public void setActionPresenter(androidx.leanback.widget.Presenter);
+    method protected abstract void onBindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!, Object!);
+    method public void onBindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method protected void onBindRowActions(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method protected void onUnbindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method public void onUnbindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder!);
+    method public void setActionPresenter(androidx.leanback.widget.Presenter!);
     method public void setBackgroundColor(int);
     method public void setHasMediaRowSeparator(boolean);
     method public void setThemeId(int);
@@ -1334,19 +1434,19 @@
   }
 
   public static class AbstractMediaItemPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public AbstractMediaItemPresenter.ViewHolder(android.view.View);
-    method public android.view.ViewGroup getMediaItemActionsContainer();
-    method public android.view.View getMediaItemDetailsView();
-    method public android.widget.TextView getMediaItemDurationView();
-    method public android.widget.TextView getMediaItemNameView();
-    method public android.widget.TextView getMediaItemNumberView();
-    method public android.widget.ViewFlipper getMediaItemNumberViewFlipper();
-    method public android.view.View getMediaItemPausedView();
-    method public android.view.View getMediaItemPlayingView();
-    method public androidx.leanback.widget.MultiActionsProvider.MultiAction[] getMediaItemRowActions();
-    method public android.view.View getMediaItemRowSeparator();
-    method public android.view.View getSelectorView();
-    method public void notifyActionChanged(androidx.leanback.widget.MultiActionsProvider.MultiAction);
+    ctor public AbstractMediaItemPresenter.ViewHolder(android.view.View!);
+    method public android.view.ViewGroup! getMediaItemActionsContainer();
+    method public android.view.View! getMediaItemDetailsView();
+    method public android.widget.TextView! getMediaItemDurationView();
+    method public android.widget.TextView! getMediaItemNameView();
+    method public android.widget.TextView! getMediaItemNumberView();
+    method public android.widget.ViewFlipper! getMediaItemNumberViewFlipper();
+    method public android.view.View! getMediaItemPausedView();
+    method public android.view.View! getMediaItemPlayingView();
+    method public androidx.leanback.widget.MultiActionsProvider.MultiAction[]! getMediaItemRowActions();
+    method public android.view.View! getMediaItemRowSeparator();
+    method public android.view.View! getSelectorView();
+    method public void notifyActionChanged(androidx.leanback.widget.MultiActionsProvider.MultiAction!);
     method public void notifyDetailsChanged();
     method public void notifyPlayStateChanged();
     method public void onBindRowActions();
@@ -1354,70 +1454,70 @@
   }
 
   public abstract class AbstractMediaListHeaderPresenter extends androidx.leanback.widget.RowPresenter {
-    ctor public AbstractMediaListHeaderPresenter(android.content.Context, int);
+    ctor public AbstractMediaListHeaderPresenter(android.content.Context!, int);
     ctor public AbstractMediaListHeaderPresenter();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected abstract void onBindMediaListHeaderViewHolder(androidx.leanback.widget.AbstractMediaListHeaderPresenter.ViewHolder, java.lang.Object);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method protected abstract void onBindMediaListHeaderViewHolder(androidx.leanback.widget.AbstractMediaListHeaderPresenter.ViewHolder!, Object!);
     method public void setBackgroundColor(int);
   }
 
   public static class AbstractMediaListHeaderPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public AbstractMediaListHeaderPresenter.ViewHolder(android.view.View);
-    method public android.widget.TextView getHeaderView();
+    ctor public AbstractMediaListHeaderPresenter.ViewHolder(android.view.View!);
+    method public android.widget.TextView! getHeaderView();
   }
 
   public class Action {
     ctor public Action(long);
-    ctor public Action(long, java.lang.CharSequence);
-    ctor public Action(long, java.lang.CharSequence, java.lang.CharSequence);
-    ctor public Action(long, java.lang.CharSequence, java.lang.CharSequence, android.graphics.drawable.Drawable);
+    ctor public Action(long, CharSequence!);
+    ctor public Action(long, CharSequence!, CharSequence!);
+    ctor public Action(long, CharSequence!, CharSequence!, android.graphics.drawable.Drawable!);
     method public final void addKeyCode(int);
-    method public final android.graphics.drawable.Drawable getIcon();
+    method public final android.graphics.drawable.Drawable! getIcon();
     method public final long getId();
-    method public final java.lang.CharSequence getLabel1();
-    method public final java.lang.CharSequence getLabel2();
+    method public final CharSequence! getLabel1();
+    method public final CharSequence! getLabel2();
     method public final void removeKeyCode(int);
     method public final boolean respondsToKeyCode(int);
-    method public final void setIcon(android.graphics.drawable.Drawable);
+    method public final void setIcon(android.graphics.drawable.Drawable!);
     method public final void setId(long);
-    method public final void setLabel1(java.lang.CharSequence);
-    method public final void setLabel2(java.lang.CharSequence);
+    method public final void setLabel1(CharSequence!);
+    method public final void setLabel2(CharSequence!);
     field public static final long NO_ID = -1L; // 0xffffffffffffffffL
   }
 
   public class ArrayObjectAdapter extends androidx.leanback.widget.ObjectAdapter {
-    ctor public ArrayObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public ArrayObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public ArrayObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public ArrayObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public ArrayObjectAdapter();
-    method public void add(java.lang.Object);
-    method public void add(int, java.lang.Object);
-    method public void addAll(int, java.util.Collection);
+    method public void add(Object!);
+    method public void add(int, Object!);
+    method public void addAll(int, java.util.Collection!);
     method public void clear();
-    method public java.lang.Object get(int);
-    method public int indexOf(java.lang.Object);
+    method public Object! get(int);
+    method public int indexOf(Object!);
     method public void move(int, int);
     method public void notifyArrayItemRangeChanged(int, int);
-    method public boolean remove(java.lang.Object);
+    method public boolean remove(Object!);
     method public int removeItems(int, int);
-    method public void replace(int, java.lang.Object);
-    method public void setItems(java.util.List, androidx.leanback.widget.DiffCallback);
+    method public void replace(int, Object!);
+    method public void setItems(java.util.List!, androidx.leanback.widget.DiffCallback!);
     method public int size();
-    method public <E> java.util.List<E> unmodifiableList();
+    method public <E> java.util.List<E>! unmodifiableList();
   }
 
   public class BaseCardView extends android.widget.FrameLayout {
-    ctor public BaseCardView(android.content.Context);
-    ctor public BaseCardView(android.content.Context, android.util.AttributeSet);
-    ctor public BaseCardView(android.content.Context, android.util.AttributeSet, int);
-    method protected androidx.leanback.widget.BaseCardView.LayoutParams generateDefaultLayoutParams();
-    method public androidx.leanback.widget.BaseCardView.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected androidx.leanback.widget.BaseCardView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
+    ctor public BaseCardView(android.content.Context!);
+    ctor public BaseCardView(android.content.Context!, android.util.AttributeSet!);
+    ctor public BaseCardView(android.content.Context!, android.util.AttributeSet!, int);
+    method protected androidx.leanback.widget.BaseCardView.LayoutParams! generateDefaultLayoutParams();
+    method public androidx.leanback.widget.BaseCardView.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
+    method protected androidx.leanback.widget.BaseCardView.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
     method public int getCardType();
-    method public deprecated int getExtraVisibility();
+    method @Deprecated public int getExtraVisibility();
     method public int getInfoVisibility();
     method public boolean isSelectedAnimationDelayed();
     method public void setCardType(int);
-    method public deprecated void setExtraVisibility(int);
+    method @Deprecated public void setExtraVisibility(int);
     method public void setInfoVisibility(int);
     method public void setSelectedAnimationDelayed(boolean);
     field public static final int CARD_REGION_VISIBLE_ACTIVATED = 1; // 0x1
@@ -1430,34 +1530,34 @@
   }
 
   public static class BaseCardView.LayoutParams extends android.widget.FrameLayout.LayoutParams {
-    ctor public BaseCardView.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public BaseCardView.LayoutParams(android.content.Context!, android.util.AttributeSet!);
     ctor public BaseCardView.LayoutParams(int, int);
-    ctor public BaseCardView.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public BaseCardView.LayoutParams(androidx.leanback.widget.BaseCardView.LayoutParams);
+    ctor public BaseCardView.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public BaseCardView.LayoutParams(androidx.leanback.widget.BaseCardView.LayoutParams!);
     field public static final int VIEW_TYPE_EXTRA = 2; // 0x2
     field public static final int VIEW_TYPE_INFO = 1; // 0x1
     field public static final int VIEW_TYPE_MAIN = 0; // 0x0
-    field public int viewType;
+    field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_MAIN, to="MAIN"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_INFO, to="INFO"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_EXTRA, to="EXTRA")}) public int viewType;
   }
 
   public abstract class BaseGridView extends androidx.recyclerview.widget.RecyclerView {
-    method public void addOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener);
+    method public void addOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener!);
     method public void animateIn();
     method public void animateOut();
     method public int getChildDrawingOrder(int, int);
-    method public deprecated int getHorizontalMargin();
+    method @Deprecated public int getHorizontalMargin();
     method public int getHorizontalSpacing();
     method public int getInitialPrefetchItemCount();
     method public int getItemAlignmentOffset();
     method public float getItemAlignmentOffsetPercent();
     method public int getItemAlignmentViewId();
-    method public androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener getOnUnhandledKeyListener();
+    method public androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener! getOnUnhandledKeyListener();
     method public final int getSaveChildrenLimitNumber();
     method public final int getSaveChildrenPolicy();
     method public int getSelectedPosition();
-    method public deprecated int getVerticalMargin();
+    method @Deprecated public int getVerticalMargin();
     method public int getVerticalSpacing();
-    method public void getViewSelectedOffsets(android.view.View, int[]);
+    method public void getViewSelectedOffsets(android.view.View!, int[]!);
     method public int getWindowAlignment();
     method public int getWindowAlignmentOffset();
     method public float getWindowAlignmentOffsetPercent();
@@ -1469,41 +1569,41 @@
     method public boolean isScrollEnabled();
     method public boolean isWindowAlignmentPreferKeyLineOverHighEdge();
     method public boolean isWindowAlignmentPreferKeyLineOverLowEdge();
-    method public boolean onRequestFocusInDescendants(int, android.graphics.Rect);
-    method public void removeOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener);
+    method public boolean onRequestFocusInDescendants(int, android.graphics.Rect!);
+    method public void removeOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener!);
     method public void setAnimateChildLayout(boolean);
     method public void setChildrenVisibility(int);
     method public void setFocusDrawingOrderEnabled(boolean);
     method public final void setFocusSearchDisabled(boolean);
     method public void setGravity(int);
     method public void setHasOverlappingRendering(boolean);
-    method public deprecated void setHorizontalMargin(int);
+    method @Deprecated public void setHorizontalMargin(int);
     method public void setHorizontalSpacing(int);
     method public void setInitialPrefetchItemCount(int);
     method public void setItemAlignmentOffset(int);
     method public void setItemAlignmentOffsetPercent(float);
     method public void setItemAlignmentOffsetWithPadding(boolean);
     method public void setItemAlignmentViewId(int);
-    method public deprecated void setItemMargin(int);
+    method @Deprecated public void setItemMargin(int);
     method public void setItemSpacing(int);
     method public void setLayoutEnabled(boolean);
-    method public void setOnChildLaidOutListener(androidx.leanback.widget.OnChildLaidOutListener);
-    method public void setOnChildSelectedListener(androidx.leanback.widget.OnChildSelectedListener);
-    method public void setOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener);
-    method public void setOnKeyInterceptListener(androidx.leanback.widget.BaseGridView.OnKeyInterceptListener);
-    method public void setOnMotionInterceptListener(androidx.leanback.widget.BaseGridView.OnMotionInterceptListener);
-    method public void setOnTouchInterceptListener(androidx.leanback.widget.BaseGridView.OnTouchInterceptListener);
-    method public void setOnUnhandledKeyListener(androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener);
+    method public void setOnChildLaidOutListener(androidx.leanback.widget.OnChildLaidOutListener!);
+    method public void setOnChildSelectedListener(androidx.leanback.widget.OnChildSelectedListener!);
+    method public void setOnChildViewHolderSelectedListener(androidx.leanback.widget.OnChildViewHolderSelectedListener!);
+    method public void setOnKeyInterceptListener(androidx.leanback.widget.BaseGridView.OnKeyInterceptListener!);
+    method public void setOnMotionInterceptListener(androidx.leanback.widget.BaseGridView.OnMotionInterceptListener!);
+    method public void setOnTouchInterceptListener(androidx.leanback.widget.BaseGridView.OnTouchInterceptListener!);
+    method public void setOnUnhandledKeyListener(androidx.leanback.widget.BaseGridView.OnUnhandledKeyListener!);
     method public void setPruneChild(boolean);
     method public final void setSaveChildrenLimitNumber(int);
     method public final void setSaveChildrenPolicy(int);
     method public void setScrollEnabled(boolean);
     method public void setSelectedPosition(int);
     method public void setSelectedPosition(int, int);
-    method public void setSelectedPosition(int, androidx.leanback.widget.ViewHolderTask);
+    method public void setSelectedPosition(int, androidx.leanback.widget.ViewHolderTask!);
     method public void setSelectedPositionSmooth(int);
-    method public void setSelectedPositionSmooth(int, androidx.leanback.widget.ViewHolderTask);
-    method public deprecated void setVerticalMargin(int);
+    method public void setSelectedPositionSmooth(int, androidx.leanback.widget.ViewHolderTask!);
+    method @Deprecated public void setVerticalMargin(int);
     method public void setVerticalSpacing(int);
     method public void setWindowAlignment(int);
     method public void setWindowAlignmentOffset(int);
@@ -1522,165 +1622,171 @@
     field public static final float WINDOW_ALIGN_OFFSET_PERCENT_DISABLED = -1.0f;
   }
 
-  public static abstract interface BaseGridView.OnKeyInterceptListener {
-    method public abstract boolean onInterceptKeyEvent(android.view.KeyEvent);
+  public static interface BaseGridView.OnKeyInterceptListener {
+    method public boolean onInterceptKeyEvent(android.view.KeyEvent!);
   }
 
-  public static abstract interface BaseGridView.OnMotionInterceptListener {
-    method public abstract boolean onInterceptMotionEvent(android.view.MotionEvent);
+  public static interface BaseGridView.OnMotionInterceptListener {
+    method public boolean onInterceptMotionEvent(android.view.MotionEvent!);
   }
 
-  public static abstract interface BaseGridView.OnTouchInterceptListener {
-    method public abstract boolean onInterceptTouchEvent(android.view.MotionEvent);
+  public static interface BaseGridView.OnTouchInterceptListener {
+    method public boolean onInterceptTouchEvent(android.view.MotionEvent!);
   }
 
-  public static abstract interface BaseGridView.OnUnhandledKeyListener {
-    method public abstract boolean onUnhandledKey(android.view.KeyEvent);
+  public static interface BaseGridView.OnUnhandledKeyListener {
+    method public boolean onUnhandledKey(android.view.KeyEvent!);
   }
 
-  public abstract interface BaseOnItemViewClickedListener<T> {
-    method public abstract void onItemClicked(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object, androidx.leanback.widget.RowPresenter.ViewHolder, T);
+  public interface BaseOnItemViewClickedListener<T> {
+    method public void onItemClicked(androidx.leanback.widget.Presenter.ViewHolder!, Object!, androidx.leanback.widget.RowPresenter.ViewHolder!, T!);
   }
 
-  public abstract interface BaseOnItemViewSelectedListener<T> {
-    method public abstract void onItemSelected(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object, androidx.leanback.widget.RowPresenter.ViewHolder, T);
+  public interface BaseOnItemViewSelectedListener<T> {
+    method public void onItemSelected(androidx.leanback.widget.Presenter.ViewHolder!, Object!, androidx.leanback.widget.RowPresenter.ViewHolder!, T!);
   }
 
   public class BrowseFrameLayout extends android.widget.FrameLayout {
-    ctor public BrowseFrameLayout(android.content.Context);
-    ctor public BrowseFrameLayout(android.content.Context, android.util.AttributeSet);
-    ctor public BrowseFrameLayout(android.content.Context, android.util.AttributeSet, int);
-    method public androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener getOnChildFocusListener();
-    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener getOnFocusSearchListener();
-    method public void setOnChildFocusListener(androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener);
-    method public void setOnDispatchKeyListener(android.view.View.OnKeyListener);
-    method public void setOnFocusSearchListener(androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener);
+    ctor public BrowseFrameLayout(android.content.Context!);
+    ctor public BrowseFrameLayout(android.content.Context!, android.util.AttributeSet!);
+    ctor public BrowseFrameLayout(android.content.Context!, android.util.AttributeSet!, int);
+    method public androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener! getOnChildFocusListener();
+    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener! getOnFocusSearchListener();
+    method public void setOnChildFocusListener(androidx.leanback.widget.BrowseFrameLayout.OnChildFocusListener!);
+    method public void setOnDispatchKeyListener(android.view.View.OnKeyListener!);
+    method public void setOnFocusSearchListener(androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener!);
   }
 
-  public static abstract interface BrowseFrameLayout.OnChildFocusListener {
-    method public abstract void onRequestChildFocus(android.view.View, android.view.View);
-    method public abstract boolean onRequestFocusInDescendants(int, android.graphics.Rect);
+  public static interface BrowseFrameLayout.OnChildFocusListener {
+    method public void onRequestChildFocus(android.view.View!, android.view.View!);
+    method public boolean onRequestFocusInDescendants(int, android.graphics.Rect!);
   }
 
-  public static abstract interface BrowseFrameLayout.OnFocusSearchListener {
-    method public abstract android.view.View onFocusSearch(android.view.View, int);
+  public static interface BrowseFrameLayout.OnFocusSearchListener {
+    method public android.view.View! onFocusSearch(android.view.View!, int);
   }
 
   public final class ClassPresenterSelector extends androidx.leanback.widget.PresenterSelector {
     ctor public ClassPresenterSelector();
-    method public androidx.leanback.widget.ClassPresenterSelector addClassPresenter(java.lang.Class<?>, androidx.leanback.widget.Presenter);
-    method public androidx.leanback.widget.ClassPresenterSelector addClassPresenterSelector(java.lang.Class<?>, androidx.leanback.widget.PresenterSelector);
-    method public androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
+    method public androidx.leanback.widget.ClassPresenterSelector! addClassPresenter(Class<?>!, androidx.leanback.widget.Presenter!);
+    method public androidx.leanback.widget.ClassPresenterSelector! addClassPresenterSelector(Class<?>!, androidx.leanback.widget.PresenterSelector!);
+    method public androidx.leanback.widget.Presenter! getPresenter(Object!);
   }
 
   public class ControlButtonPresenterSelector extends androidx.leanback.widget.PresenterSelector {
     ctor public ControlButtonPresenterSelector();
-    method public androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public androidx.leanback.widget.Presenter getPrimaryPresenter();
-    method public androidx.leanback.widget.Presenter getSecondaryPresenter();
+    method public androidx.leanback.widget.Presenter! getPresenter(Object!);
+    method public androidx.leanback.widget.Presenter! getPrimaryPresenter();
+    method public androidx.leanback.widget.Presenter! getSecondaryPresenter();
   }
 
   public class CursorObjectAdapter extends androidx.leanback.widget.ObjectAdapter {
-    ctor public CursorObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public CursorObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public CursorObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public CursorObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public CursorObjectAdapter();
-    method public void changeCursor(android.database.Cursor);
+    method public void changeCursor(android.database.Cursor!);
     method public void close();
-    method public java.lang.Object get(int);
-    method public final android.database.Cursor getCursor();
-    method public final androidx.leanback.database.CursorMapper getMapper();
+    method public Object! get(int);
+    method public final android.database.Cursor! getCursor();
+    method public final androidx.leanback.database.CursorMapper! getMapper();
     method protected final void invalidateCache(int);
     method protected final void invalidateCache(int, int);
     method public boolean isClosed();
     method protected void onCursorChanged();
     method protected void onMapperChanged();
-    method public final void setMapper(androidx.leanback.database.CursorMapper);
+    method public final void setMapper(androidx.leanback.database.CursorMapper!);
     method public int size();
-    method public android.database.Cursor swapCursor(android.database.Cursor);
+    method public android.database.Cursor! swapCursor(android.database.Cursor!);
   }
 
   public class DetailsOverviewLogoPresenter extends androidx.leanback.widget.Presenter {
     ctor public DetailsOverviewLogoPresenter();
-    method public boolean isBoundToImage(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder, androidx.leanback.widget.DetailsOverviewRow);
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public android.view.View onCreateView(android.view.ViewGroup);
-    method public androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void setContext(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter);
+    method public boolean isBoundToImage(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder!, androidx.leanback.widget.DetailsOverviewRow!);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public android.view.View! onCreateView(android.view.ViewGroup!);
+    method public androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void setContext(androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter!);
   }
 
   public static class DetailsOverviewLogoPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public DetailsOverviewLogoPresenter.ViewHolder(android.view.View);
-    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter getParentPresenter();
-    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder getParentViewHolder();
+    ctor public DetailsOverviewLogoPresenter.ViewHolder(android.view.View!);
+    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter! getParentPresenter();
+    method public androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder! getParentViewHolder();
     method public boolean isSizeFromDrawableIntrinsic();
     method public void setSizeFromDrawableIntrinsic(boolean);
-    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter mParentPresenter;
-    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder mParentViewHolder;
+    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter! mParentPresenter;
+    field protected androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder! mParentViewHolder;
   }
 
   public class DetailsOverviewRow extends androidx.leanback.widget.Row {
-    ctor public DetailsOverviewRow(java.lang.Object);
-    method public final deprecated void addAction(androidx.leanback.widget.Action);
-    method public final deprecated void addAction(int, androidx.leanback.widget.Action);
-    method public androidx.leanback.widget.Action getActionForKeyCode(int);
-    method public final deprecated java.util.List<androidx.leanback.widget.Action> getActions();
-    method public final androidx.leanback.widget.ObjectAdapter getActionsAdapter();
-    method public final android.graphics.drawable.Drawable getImageDrawable();
-    method public final java.lang.Object getItem();
+    ctor public DetailsOverviewRow(Object!);
+    method @Deprecated public final void addAction(androidx.leanback.widget.Action!);
+    method @Deprecated public final void addAction(int, androidx.leanback.widget.Action!);
+    method public androidx.leanback.widget.Action! getActionForKeyCode(int);
+    method @Deprecated public final java.util.List<androidx.leanback.widget.Action>! getActions();
+    method public final androidx.leanback.widget.ObjectAdapter! getActionsAdapter();
+    method public final android.graphics.drawable.Drawable! getImageDrawable();
+    method public final Object! getItem();
     method public boolean isImageScaleUpAllowed();
-    method public final deprecated boolean removeAction(androidx.leanback.widget.Action);
-    method public final void setActionsAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public final void setImageBitmap(android.content.Context, android.graphics.Bitmap);
-    method public final void setImageDrawable(android.graphics.drawable.Drawable);
+    method @Deprecated public final boolean removeAction(androidx.leanback.widget.Action!);
+    method public final void setActionsAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public final void setImageBitmap(android.content.Context!, android.graphics.Bitmap!);
+    method public final void setImageDrawable(android.graphics.drawable.Drawable!);
     method public void setImageScaleUpAllowed(boolean);
-    method public final void setItem(java.lang.Object);
+    method public final void setItem(Object!);
   }
 
   public static class DetailsOverviewRow.Listener {
     ctor public DetailsOverviewRow.Listener();
-    method public void onActionsAdapterChanged(androidx.leanback.widget.DetailsOverviewRow);
-    method public void onImageDrawableChanged(androidx.leanback.widget.DetailsOverviewRow);
-    method public void onItemChanged(androidx.leanback.widget.DetailsOverviewRow);
+    method public void onActionsAdapterChanged(androidx.leanback.widget.DetailsOverviewRow!);
+    method public void onImageDrawableChanged(androidx.leanback.widget.DetailsOverviewRow!);
+    method public void onItemChanged(androidx.leanback.widget.DetailsOverviewRow!);
   }
 
-  public deprecated class DetailsOverviewRowPresenter extends androidx.leanback.widget.RowPresenter {
-    ctor public DetailsOverviewRowPresenter(androidx.leanback.widget.Presenter);
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public int getBackgroundColor();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public boolean isStyleLarge();
-    method public final boolean isUsingDefaultSelectEffect();
-    method public void setBackgroundColor(int);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public final void setSharedElementEnterTransition(android.app.Activity, java.lang.String, long);
-    method public final void setSharedElementEnterTransition(android.app.Activity, java.lang.String);
-    method public void setStyleLarge(boolean);
+  @Deprecated public class DetailsOverviewRowPresenter extends androidx.leanback.widget.RowPresenter {
+    ctor @Deprecated public DetailsOverviewRowPresenter(androidx.leanback.widget.Presenter!);
+    method @Deprecated protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method @Deprecated @ColorInt public int getBackgroundColor();
+    method @Deprecated public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
+    method @Deprecated public boolean isStyleLarge();
+    method @Deprecated public final boolean isUsingDefaultSelectEffect();
+    method @Deprecated protected void onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!, Object!);
+    method @Deprecated protected void onRowViewAttachedToWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated protected void onRowViewDetachedFromWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated protected void onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method @Deprecated protected void onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated protected void onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method @Deprecated public void setBackgroundColor(@ColorInt int);
+    method @Deprecated public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method @Deprecated public final void setSharedElementEnterTransition(android.app.Activity!, String!, long);
+    method @Deprecated public final void setSharedElementEnterTransition(android.app.Activity!, String!);
+    method @Deprecated public void setStyleLarge(boolean);
   }
 
-  public final class DetailsOverviewRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public DetailsOverviewRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.Presenter);
-    field public final androidx.leanback.widget.Presenter.ViewHolder mDetailsDescriptionViewHolder;
+  @Deprecated public final class DetailsOverviewRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
+    ctor @Deprecated public DetailsOverviewRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.Presenter!);
+    field @Deprecated public final androidx.leanback.widget.Presenter.ViewHolder! mDetailsDescriptionViewHolder;
   }
 
   public class DetailsParallax extends androidx.leanback.widget.RecyclerViewParallax {
     ctor public DetailsParallax();
-    method public androidx.leanback.widget.Parallax.IntProperty getOverviewRowBottom();
-    method public androidx.leanback.widget.Parallax.IntProperty getOverviewRowTop();
+    method public androidx.leanback.widget.Parallax.IntProperty! getOverviewRowBottom();
+    method public androidx.leanback.widget.Parallax.IntProperty! getOverviewRowTop();
   }
 
   public abstract class DiffCallback<Value> {
     ctor public DiffCallback();
     method public abstract boolean areContentsTheSame(Value, Value);
     method public abstract boolean areItemsTheSame(Value, Value);
-    method public java.lang.Object getChangePayload(Value, Value);
+    method public Object! getChangePayload(Value, Value);
   }
 
   public class DividerPresenter extends androidx.leanback.widget.Presenter {
     ctor public DividerPresenter();
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
   }
 
   public class DividerRow extends androidx.leanback.widget.Row {
@@ -1688,15 +1794,15 @@
     method public final boolean isRenderedAsRowView();
   }
 
-  public abstract interface FacetProvider {
-    method public abstract java.lang.Object getFacet(java.lang.Class<?>);
+  public interface FacetProvider {
+    method public Object! getFacet(Class<?>!);
   }
 
-  public abstract interface FacetProviderAdapter {
-    method public abstract androidx.leanback.widget.FacetProvider getFacetProvider(int);
+  public interface FacetProviderAdapter {
+    method public androidx.leanback.widget.FacetProvider! getFacetProvider(int);
   }
 
-  public abstract interface FocusHighlight {
+  public interface FocusHighlight {
     field public static final int ZOOM_FACTOR_LARGE = 3; // 0x3
     field public static final int ZOOM_FACTOR_MEDIUM = 2; // 0x2
     field public static final int ZOOM_FACTOR_NONE = 0; // 0x0
@@ -1705,43 +1811,43 @@
   }
 
   public class FocusHighlightHelper {
-    ctor public deprecated FocusHighlightHelper();
-    method public static void setupBrowseItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter, int, boolean);
-    method public static deprecated void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView);
-    method public static deprecated void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView, boolean);
-    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter);
-    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter, boolean);
+    ctor @Deprecated public FocusHighlightHelper();
+    method public static void setupBrowseItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter!, int, boolean);
+    method @Deprecated public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView!);
+    method @Deprecated public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.VerticalGridView!, boolean);
+    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter!);
+    method public static void setupHeaderItemFocusHighlight(androidx.leanback.widget.ItemBridgeAdapter!, boolean);
   }
 
-  public abstract interface FragmentAnimationProvider {
-    method public abstract void onImeAppearing(java.util.List<android.animation.Animator>);
-    method public abstract void onImeDisappearing(java.util.List<android.animation.Animator>);
+  public interface FragmentAnimationProvider {
+    method public void onImeAppearing(java.util.List<android.animation.Animator>);
+    method public void onImeDisappearing(java.util.List<android.animation.Animator>);
   }
 
   public class FullWidthDetailsOverviewRowPresenter extends androidx.leanback.widget.RowPresenter {
-    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter);
-    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter, androidx.leanback.widget.DetailsOverviewLogoPresenter);
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
+    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter!);
+    ctor public FullWidthDetailsOverviewRowPresenter(androidx.leanback.widget.Presenter!, androidx.leanback.widget.DetailsOverviewLogoPresenter!);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
     method public final int getActionsBackgroundColor();
     method public final int getAlignmentMode();
     method public final int getBackgroundColor();
     method public final int getInitialState();
     method protected int getLayoutResourceId();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
+    method public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
     method public final boolean isParticipatingEntranceTransition();
     method public final boolean isUsingDefaultSelectEffect();
-    method public final void notifyOnBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder);
-    method protected void onLayoutLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, boolean);
-    method protected void onLayoutOverviewFrame(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int, boolean);
-    method protected void onStateChanged(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int);
+    method public final void notifyOnBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!);
+    method protected void onLayoutLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, boolean);
+    method protected void onLayoutOverviewFrame(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int, boolean);
+    method protected void onStateChanged(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int);
     method public final void setActionsBackgroundColor(int);
     method public final void setAlignmentMode(int);
     method public final void setBackgroundColor(int);
     method public final void setInitialState(int);
-    method public final void setListener(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.Listener);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
+    method public final void setListener(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.Listener!);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
     method public final void setParticipatingEntranceTransition(boolean);
-    method public final void setState(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder, int);
+    method public final void setState(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!, int);
     field public static final int ALIGN_MODE_MIDDLE = 1; // 0x1
     field public static final int ALIGN_MODE_START = 0; // 0x0
     field public static final int STATE_FULL = 1; // 0x1
@@ -1750,21 +1856,21 @@
     field protected int mInitialState;
   }
 
-  public static abstract class FullWidthDetailsOverviewRowPresenter.Listener {
+  public abstract static class FullWidthDetailsOverviewRowPresenter.Listener {
     ctor public FullWidthDetailsOverviewRowPresenter.Listener();
-    method public void onBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder);
+    method public void onBindLogo(androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder!);
   }
 
   public class FullWidthDetailsOverviewRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public FullWidthDetailsOverviewRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.Presenter, androidx.leanback.widget.DetailsOverviewLogoPresenter);
-    method protected androidx.leanback.widget.DetailsOverviewRow.Listener createRowListener();
-    method public final android.view.ViewGroup getActionsRow();
-    method public final android.view.ViewGroup getDetailsDescriptionFrame();
-    method public final androidx.leanback.widget.Presenter.ViewHolder getDetailsDescriptionViewHolder();
-    method public final androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder getLogoViewHolder();
-    method public final android.view.ViewGroup getOverviewView();
+    ctor public FullWidthDetailsOverviewRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.Presenter!, androidx.leanback.widget.DetailsOverviewLogoPresenter!);
+    method protected androidx.leanback.widget.DetailsOverviewRow.Listener! createRowListener();
+    method public final android.view.ViewGroup! getActionsRow();
+    method public final android.view.ViewGroup! getDetailsDescriptionFrame();
+    method public final androidx.leanback.widget.Presenter.ViewHolder! getDetailsDescriptionViewHolder();
+    method public final androidx.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder! getLogoViewHolder();
+    method public final android.view.ViewGroup! getOverviewView();
     method public final int getState();
-    field protected final androidx.leanback.widget.DetailsOverviewRow.Listener mRowListener;
+    field protected final androidx.leanback.widget.DetailsOverviewRow.Listener! mRowListener;
   }
 
   public class FullWidthDetailsOverviewRowPresenter.ViewHolder.DetailsOverviewRowListener extends androidx.leanback.widget.DetailsOverviewRow.Listener {
@@ -1775,18 +1881,18 @@
     ctor public FullWidthDetailsOverviewSharedElementHelper();
     method public boolean getAutoStartSharedElementTransition();
     method public void setAutoStartSharedElementTransition(boolean);
-    method public void setSharedElementEnterTransition(android.app.Activity, java.lang.String);
-    method public void setSharedElementEnterTransition(android.app.Activity, java.lang.String, long);
+    method public void setSharedElementEnterTransition(android.app.Activity!, String!);
+    method public void setSharedElementEnterTransition(android.app.Activity!, String!, long);
     method public void startPostponedEnterTransition();
   }
 
   public class GuidanceStylist implements androidx.leanback.widget.FragmentAnimationProvider {
     ctor public GuidanceStylist();
-    method public android.widget.TextView getBreadcrumbView();
-    method public android.widget.TextView getDescriptionView();
-    method public android.widget.ImageView getIconView();
-    method public android.widget.TextView getTitleView();
-    method public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup, androidx.leanback.widget.GuidanceStylist.Guidance);
+    method public android.widget.TextView! getBreadcrumbView();
+    method public android.widget.TextView! getDescriptionView();
+    method public android.widget.ImageView! getIconView();
+    method public android.widget.TextView! getTitleView();
+    method public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!, androidx.leanback.widget.GuidanceStylist.Guidance!);
     method public void onDestroyView();
     method public void onImeAppearing(java.util.List<android.animation.Animator>);
     method public void onImeDisappearing(java.util.List<android.animation.Animator>);
@@ -1794,27 +1900,27 @@
   }
 
   public static class GuidanceStylist.Guidance {
-    ctor public GuidanceStylist.Guidance(java.lang.String, java.lang.String, java.lang.String, android.graphics.drawable.Drawable);
-    method public java.lang.String getBreadcrumb();
-    method public java.lang.String getDescription();
-    method public android.graphics.drawable.Drawable getIconDrawable();
-    method public java.lang.String getTitle();
+    ctor public GuidanceStylist.Guidance(String!, String!, String!, android.graphics.drawable.Drawable!);
+    method public String! getBreadcrumb();
+    method public String! getDescription();
+    method public android.graphics.drawable.Drawable! getIconDrawable();
+    method public String! getTitle();
   }
 
   public class GuidedAction extends androidx.leanback.widget.Action {
     ctor protected GuidedAction();
-    method public java.lang.String[] getAutofillHints();
+    method public String[]! getAutofillHints();
     method public int getCheckSetId();
-    method public java.lang.CharSequence getDescription();
+    method public CharSequence! getDescription();
     method public int getDescriptionEditInputType();
     method public int getDescriptionInputType();
-    method public java.lang.CharSequence getEditDescription();
+    method public CharSequence! getEditDescription();
     method public int getEditInputType();
-    method public java.lang.CharSequence getEditTitle();
+    method public CharSequence! getEditTitle();
     method public int getInputType();
-    method public android.content.Intent getIntent();
-    method public java.util.List<androidx.leanback.widget.GuidedAction> getSubActions();
-    method public java.lang.CharSequence getTitle();
+    method public android.content.Intent! getIntent();
+    method public java.util.List<androidx.leanback.widget.GuidedAction>! getSubActions();
+    method public CharSequence! getTitle();
     method public boolean hasEditableActivatorView();
     method public boolean hasMultilineDescription();
     method public boolean hasNext();
@@ -1828,17 +1934,17 @@
     method public boolean isEditable();
     method public boolean isEnabled();
     method public boolean isFocusable();
-    method public void onRestoreInstanceState(android.os.Bundle, java.lang.String);
-    method public void onSaveInstanceState(android.os.Bundle, java.lang.String);
+    method public void onRestoreInstanceState(android.os.Bundle!, String!);
+    method public void onSaveInstanceState(android.os.Bundle!, String!);
     method public void setChecked(boolean);
-    method public void setDescription(java.lang.CharSequence);
-    method public void setEditDescription(java.lang.CharSequence);
-    method public void setEditTitle(java.lang.CharSequence);
+    method public void setDescription(CharSequence!);
+    method public void setEditDescription(CharSequence!);
+    method public void setEditTitle(CharSequence!);
     method public void setEnabled(boolean);
     method public void setFocusable(boolean);
-    method public void setIntent(android.content.Intent);
-    method public void setSubActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public void setTitle(java.lang.CharSequence);
+    method public void setIntent(android.content.Intent!);
+    method public void setSubActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method public void setTitle(CharSequence!);
     field public static final long ACTION_ID_CANCEL = -5L; // 0xfffffffffffffffbL
     field public static final long ACTION_ID_CONTINUE = -7L; // 0xfffffffffffffff9L
     field public static final long ACTION_ID_CURRENT = -3L; // 0xfffffffffffffffdL
@@ -1852,80 +1958,80 @@
     field public static final int NO_CHECK_SET = 0; // 0x0
   }
 
-  public static class GuidedAction.Builder extends androidx.leanback.widget.GuidedAction.BuilderBase {
-    ctor public deprecated GuidedAction.Builder();
-    ctor public GuidedAction.Builder(android.content.Context);
-    method public androidx.leanback.widget.GuidedAction build();
+  public static class GuidedAction.Builder extends androidx.leanback.widget.GuidedAction.BuilderBase<androidx.leanback.widget.GuidedAction.Builder> {
+    ctor @Deprecated public GuidedAction.Builder();
+    ctor public GuidedAction.Builder(android.content.Context!);
+    method public androidx.leanback.widget.GuidedAction! build();
   }
 
-  public static abstract class GuidedAction.BuilderBase<B extends androidx.leanback.widget.GuidedAction.BuilderBase> {
-    ctor public GuidedAction.BuilderBase(android.content.Context);
-    method protected final void applyValues(androidx.leanback.widget.GuidedAction);
-    method public B autoSaveRestoreEnabled(boolean);
-    method public B autofillHints(java.lang.String...);
-    method public B checkSetId(int);
-    method public B checked(boolean);
-    method public B clickAction(long);
-    method public B description(java.lang.CharSequence);
-    method public B description(int);
-    method public B descriptionEditInputType(int);
-    method public B descriptionEditable(boolean);
-    method public B descriptionInputType(int);
-    method public B editDescription(java.lang.CharSequence);
-    method public B editDescription(int);
-    method public B editInputType(int);
-    method public B editTitle(java.lang.CharSequence);
-    method public B editTitle(int);
-    method public B editable(boolean);
-    method public B enabled(boolean);
-    method public B focusable(boolean);
-    method public android.content.Context getContext();
-    method public B hasEditableActivatorView(boolean);
-    method public B hasNext(boolean);
-    method public B icon(android.graphics.drawable.Drawable);
-    method public B icon(int);
-    method public deprecated B iconResourceId(int, android.content.Context);
-    method public B id(long);
-    method public B infoOnly(boolean);
-    method public B inputType(int);
-    method public B intent(android.content.Intent);
-    method public B multilineDescription(boolean);
-    method public B subActions(java.util.List<androidx.leanback.widget.GuidedAction>);
-    method public B title(java.lang.CharSequence);
-    method public B title(int);
+  public abstract static class GuidedAction.BuilderBase<B extends androidx.leanback.widget.GuidedAction.BuilderBase> {
+    ctor public GuidedAction.BuilderBase(android.content.Context!);
+    method protected final void applyValues(androidx.leanback.widget.GuidedAction!);
+    method public B! autoSaveRestoreEnabled(boolean);
+    method public B! autofillHints(java.lang.String...!);
+    method public B! checkSetId(int);
+    method public B! checked(boolean);
+    method public B! clickAction(long);
+    method public B! description(CharSequence!);
+    method public B! description(@StringRes int);
+    method public B! descriptionEditInputType(int);
+    method public B! descriptionEditable(boolean);
+    method public B! descriptionInputType(int);
+    method public B! editDescription(CharSequence!);
+    method public B! editDescription(@StringRes int);
+    method public B! editInputType(int);
+    method public B! editTitle(CharSequence!);
+    method public B! editTitle(@StringRes int);
+    method public B! editable(boolean);
+    method public B! enabled(boolean);
+    method public B! focusable(boolean);
+    method public android.content.Context! getContext();
+    method public B! hasEditableActivatorView(boolean);
+    method public B! hasNext(boolean);
+    method public B! icon(android.graphics.drawable.Drawable!);
+    method public B! icon(@DrawableRes int);
+    method @Deprecated public B! iconResourceId(@DrawableRes int, android.content.Context!);
+    method public B! id(long);
+    method public B! infoOnly(boolean);
+    method public B! inputType(int);
+    method public B! intent(android.content.Intent!);
+    method public B! multilineDescription(boolean);
+    method public B! subActions(java.util.List<androidx.leanback.widget.GuidedAction>!);
+    method public B! title(CharSequence!);
+    method public B! title(@StringRes int);
   }
 
-  public abstract interface GuidedActionAutofillSupport {
-    method public abstract void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener);
+  public interface GuidedActionAutofillSupport {
+    method public void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener!);
   }
 
-  public static abstract interface GuidedActionAutofillSupport.OnAutofillListener {
-    method public abstract void onAutofill(android.view.View);
+  public static interface GuidedActionAutofillSupport.OnAutofillListener {
+    method public void onAutofill(android.view.View!);
   }
 
-  public class GuidedActionDiffCallback extends androidx.leanback.widget.DiffCallback {
+  public class GuidedActionDiffCallback extends androidx.leanback.widget.DiffCallback<androidx.leanback.widget.GuidedAction> {
     ctor public GuidedActionDiffCallback();
     method public boolean areContentsTheSame(androidx.leanback.widget.GuidedAction, androidx.leanback.widget.GuidedAction);
     method public boolean areItemsTheSame(androidx.leanback.widget.GuidedAction, androidx.leanback.widget.GuidedAction);
-    method public static androidx.leanback.widget.GuidedActionDiffCallback getInstance();
+    method public static androidx.leanback.widget.GuidedActionDiffCallback! getInstance();
   }
 
   public class GuidedActionEditText extends android.widget.EditText implements androidx.leanback.widget.GuidedActionAutofillSupport androidx.leanback.widget.ImeKeyMonitor {
-    ctor public GuidedActionEditText(android.content.Context);
-    ctor public GuidedActionEditText(android.content.Context, android.util.AttributeSet);
-    ctor public GuidedActionEditText(android.content.Context, android.util.AttributeSet, int);
-    method public void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener);
-    method public void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener);
+    ctor public GuidedActionEditText(android.content.Context!);
+    ctor public GuidedActionEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public GuidedActionEditText(android.content.Context!, android.util.AttributeSet!, int);
+    method public void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener!);
+    method public void setOnAutofillListener(androidx.leanback.widget.GuidedActionAutofillSupport.OnAutofillListener!);
   }
 
   public class GuidedActionsStylist implements androidx.leanback.widget.FragmentAnimationProvider {
     ctor public GuidedActionsStylist();
     method public void collapseAction(boolean);
-    method public void expandAction(androidx.leanback.widget.GuidedAction, boolean);
-    method public androidx.leanback.widget.VerticalGridView getActionsGridView();
-    method public androidx.leanback.widget.GuidedAction getExpandedAction();
-    method public int getItemViewType(androidx.leanback.widget.GuidedAction);
-    method public androidx.leanback.widget.VerticalGridView getSubActionsGridView();
+    method public void expandAction(androidx.leanback.widget.GuidedAction!, boolean);
+    method public androidx.leanback.widget.VerticalGridView! getActionsGridView();
+    method public androidx.leanback.widget.GuidedAction! getExpandedAction();
+    method public int getItemViewType(androidx.leanback.widget.GuidedAction!);
+    method public androidx.leanback.widget.VerticalGridView! getSubActionsGridView();
     method public final boolean isBackKeyToCollapseActivatorView();
     method public final boolean isBackKeyToCollapseSubActions();
     method public boolean isButtonActions();
@@ -1933,53 +2039,53 @@
     method public boolean isExpanded();
     method public boolean isInExpandTransition();
     method public boolean isSubActionsExpanded();
-    method public void onAnimateItemChecked(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemFocused(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemPressed(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean);
-    method public void onAnimateItemPressedCancelled(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method public void onBindActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onBindCheckMarkView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onBindChevronView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onBindViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup);
-    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
+    method public void onAnimateItemChecked(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean);
+    method public void onAnimateItemFocused(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean);
+    method public void onAnimateItemPressed(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean);
+    method public void onAnimateItemPressedCancelled(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
+    method public void onBindActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onBindCheckMarkView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onBindChevronView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onBindViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public android.view.View! onCreateView(android.view.LayoutInflater!, android.view.ViewGroup!);
+    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public androidx.leanback.widget.GuidedActionsStylist.ViewHolder! onCreateViewHolder(android.view.ViewGroup!, int);
     method public void onDestroyView();
-    method protected deprecated void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction, boolean);
-    method protected void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, boolean, boolean);
+    method @Deprecated protected void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!, boolean);
+    method @CallSuper protected void onEditingModeChange(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, boolean, boolean);
     method public void onImeAppearing(java.util.List<android.animation.Animator>);
     method public void onImeDisappearing(java.util.List<android.animation.Animator>);
     method public int onProvideItemLayoutId();
     method public int onProvideItemLayoutId(int);
     method public int onProvideLayoutId();
-    method public boolean onUpdateActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public void onUpdateExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method public void openInEditMode(androidx.leanback.widget.GuidedAction);
+    method public boolean onUpdateActivatorView(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method public void onUpdateExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
+    method public void openInEditMode(androidx.leanback.widget.GuidedAction!);
     method public void setAsButtonActions();
     method public final void setBackKeyToCollapseActivatorView(boolean);
     method public final void setBackKeyToCollapseSubActions(boolean);
-    method public deprecated void setEditingMode(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction, boolean);
-    method public deprecated void setExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
-    method protected void setupImeOptions(androidx.leanback.widget.GuidedActionsStylist.ViewHolder, androidx.leanback.widget.GuidedAction);
-    method public deprecated void startExpandedTransition(androidx.leanback.widget.GuidedActionsStylist.ViewHolder);
+    method @Deprecated public void setEditingMode(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!, boolean);
+    method @Deprecated public void setExpandedViewHolder(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
+    method protected void setupImeOptions(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!, androidx.leanback.widget.GuidedAction!);
+    method @Deprecated public void startExpandedTransition(androidx.leanback.widget.GuidedActionsStylist.ViewHolder!);
     field public static final int VIEW_TYPE_DATE_PICKER = 1; // 0x1
     field public static final int VIEW_TYPE_DEFAULT = 0; // 0x0
   }
 
   public static class GuidedActionsStylist.ViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder implements androidx.leanback.widget.FacetProvider {
-    ctor public GuidedActionsStylist.ViewHolder(android.view.View);
-    ctor public GuidedActionsStylist.ViewHolder(android.view.View, boolean);
-    method public androidx.leanback.widget.GuidedAction getAction();
-    method public android.widget.ImageView getCheckmarkView();
-    method public android.widget.ImageView getChevronView();
-    method public android.view.View getContentView();
-    method public android.widget.TextView getDescriptionView();
-    method public android.widget.EditText getEditableDescriptionView();
-    method public android.widget.EditText getEditableTitleView();
-    method public android.view.View getEditingView();
-    method public java.lang.Object getFacet(java.lang.Class<?>);
-    method public android.widget.ImageView getIconView();
-    method public android.widget.TextView getTitleView();
+    ctor public GuidedActionsStylist.ViewHolder(android.view.View!);
+    ctor public GuidedActionsStylist.ViewHolder(android.view.View!, boolean);
+    method public androidx.leanback.widget.GuidedAction! getAction();
+    method public android.widget.ImageView! getCheckmarkView();
+    method public android.widget.ImageView! getChevronView();
+    method public android.view.View! getContentView();
+    method public android.widget.TextView! getDescriptionView();
+    method public android.widget.EditText! getEditableDescriptionView();
+    method public android.widget.EditText! getEditableTitleView();
+    method public android.view.View! getEditingView();
+    method public Object! getFacet(Class<?>!);
+    method public android.widget.ImageView! getIconView();
+    method public android.widget.TextView! getTitleView();
     method public boolean isInEditing();
     method public boolean isInEditingActivatorView();
     method public boolean isInEditingDescription();
@@ -1991,48 +2097,48 @@
   public class GuidedDatePickerAction extends androidx.leanback.widget.GuidedAction {
     ctor public GuidedDatePickerAction();
     method public long getDate();
-    method public java.lang.String getDatePickerFormat();
+    method public String! getDatePickerFormat();
     method public long getMaxDate();
     method public long getMinDate();
     method public void setDate(long);
   }
 
-  public static final class GuidedDatePickerAction.Builder extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase {
-    ctor public GuidedDatePickerAction.Builder(android.content.Context);
-    method public androidx.leanback.widget.GuidedDatePickerAction build();
+  public static final class GuidedDatePickerAction.Builder extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase<androidx.leanback.widget.GuidedDatePickerAction.Builder> {
+    ctor public GuidedDatePickerAction.Builder(android.content.Context!);
+    method public androidx.leanback.widget.GuidedDatePickerAction! build();
   }
 
-  public static abstract class GuidedDatePickerAction.BuilderBase<B extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase> extends androidx.leanback.widget.GuidedAction.BuilderBase {
-    ctor public GuidedDatePickerAction.BuilderBase(android.content.Context);
-    method protected final void applyDatePickerValues(androidx.leanback.widget.GuidedDatePickerAction);
-    method public B date(long);
-    method public B datePickerFormat(java.lang.String);
-    method public B maxDate(long);
-    method public B minDate(long);
+  public abstract static class GuidedDatePickerAction.BuilderBase<B extends androidx.leanback.widget.GuidedDatePickerAction.BuilderBase> extends androidx.leanback.widget.GuidedAction.BuilderBase<B> {
+    ctor public GuidedDatePickerAction.BuilderBase(android.content.Context!);
+    method protected final void applyDatePickerValues(androidx.leanback.widget.GuidedDatePickerAction!);
+    method public B! date(long);
+    method public B! datePickerFormat(String!);
+    method public B! maxDate(long);
+    method public B! minDate(long);
   }
 
   public class HeaderItem {
-    ctor public HeaderItem(long, java.lang.String);
-    ctor public HeaderItem(java.lang.String);
-    method public java.lang.CharSequence getContentDescription();
-    method public java.lang.CharSequence getDescription();
+    ctor public HeaderItem(long, String!);
+    ctor public HeaderItem(String!);
+    method public CharSequence! getContentDescription();
+    method public CharSequence! getDescription();
     method public final long getId();
-    method public final java.lang.String getName();
-    method public void setContentDescription(java.lang.CharSequence);
-    method public void setDescription(java.lang.CharSequence);
+    method public final String! getName();
+    method public void setContentDescription(CharSequence!);
+    method public void setDescription(CharSequence!);
   }
 
   public class HorizontalGridView extends androidx.leanback.widget.BaseGridView {
-    ctor public HorizontalGridView(android.content.Context);
-    ctor public HorizontalGridView(android.content.Context, android.util.AttributeSet);
-    ctor public HorizontalGridView(android.content.Context, android.util.AttributeSet, int);
+    ctor public HorizontalGridView(android.content.Context!);
+    ctor public HorizontalGridView(android.content.Context!, android.util.AttributeSet!);
+    ctor public HorizontalGridView(android.content.Context!, android.util.AttributeSet!, int);
     method public final boolean getFadingLeftEdge();
     method public final int getFadingLeftEdgeLength();
     method public final int getFadingLeftEdgeOffset();
     method public final boolean getFadingRightEdge();
     method public final int getFadingRightEdgeLength();
     method public final int getFadingRightEdgeOffset();
-    method protected void initAttributes(android.content.Context, android.util.AttributeSet);
+    method protected void initAttributes(android.content.Context!, android.util.AttributeSet!);
     method public final void setFadingLeftEdge(boolean);
     method public final void setFadingLeftEdgeLength(int);
     method public final void setFadingLeftEdgeOffset(int);
@@ -2045,31 +2151,31 @@
 
   public final class HorizontalHoverCardSwitcher extends androidx.leanback.widget.PresenterSwitcher {
     ctor public HorizontalHoverCardSwitcher();
-    method protected void insertView(android.view.View);
-    method public void select(androidx.leanback.widget.HorizontalGridView, android.view.View, java.lang.Object);
+    method protected void insertView(android.view.View!);
+    method public void select(androidx.leanback.widget.HorizontalGridView!, android.view.View!, Object!);
   }
 
   public class ImageCardView extends androidx.leanback.widget.BaseCardView {
-    ctor public deprecated ImageCardView(android.content.Context, int);
-    ctor public ImageCardView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ImageCardView(android.content.Context);
-    ctor public ImageCardView(android.content.Context, android.util.AttributeSet);
-    method public android.graphics.drawable.Drawable getBadgeImage();
-    method public java.lang.CharSequence getContentText();
-    method public android.graphics.drawable.Drawable getInfoAreaBackground();
-    method public android.graphics.drawable.Drawable getMainImage();
-    method public final android.widget.ImageView getMainImageView();
-    method public java.lang.CharSequence getTitleText();
-    method public void setBadgeImage(android.graphics.drawable.Drawable);
-    method public void setContentText(java.lang.CharSequence);
-    method public void setInfoAreaBackground(android.graphics.drawable.Drawable);
-    method public void setInfoAreaBackgroundColor(int);
-    method public void setMainImage(android.graphics.drawable.Drawable);
-    method public void setMainImage(android.graphics.drawable.Drawable, boolean);
+    ctor @Deprecated public ImageCardView(android.content.Context!, int);
+    ctor public ImageCardView(android.content.Context!, android.util.AttributeSet!, int);
+    ctor public ImageCardView(android.content.Context!);
+    ctor public ImageCardView(android.content.Context!, android.util.AttributeSet!);
+    method public android.graphics.drawable.Drawable! getBadgeImage();
+    method public CharSequence! getContentText();
+    method public android.graphics.drawable.Drawable! getInfoAreaBackground();
+    method public android.graphics.drawable.Drawable! getMainImage();
+    method public final android.widget.ImageView! getMainImageView();
+    method public CharSequence! getTitleText();
+    method public void setBadgeImage(android.graphics.drawable.Drawable!);
+    method public void setContentText(CharSequence!);
+    method public void setInfoAreaBackground(android.graphics.drawable.Drawable!);
+    method public void setInfoAreaBackgroundColor(@ColorInt int);
+    method public void setMainImage(android.graphics.drawable.Drawable!);
+    method public void setMainImage(android.graphics.drawable.Drawable!, boolean);
     method public void setMainImageAdjustViewBounds(boolean);
     method public void setMainImageDimensions(int, int);
-    method public void setMainImageScaleType(android.widget.ImageView.ScaleType);
-    method public void setTitleText(java.lang.CharSequence);
+    method public void setMainImageScaleType(android.widget.ImageView.ScaleType!);
+    method public void setTitleText(CharSequence!);
     field public static final int CARD_TYPE_FLAG_CONTENT = 2; // 0x2
     field public static final int CARD_TYPE_FLAG_ICON_LEFT = 8; // 0x8
     field public static final int CARD_TYPE_FLAG_ICON_RIGHT = 4; // 0x4
@@ -2077,19 +2183,19 @@
     field public static final int CARD_TYPE_FLAG_TITLE = 1; // 0x1
   }
 
-  public abstract interface ImeKeyMonitor {
-    method public abstract void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener);
+  public interface ImeKeyMonitor {
+    method public void setImeKeyListener(androidx.leanback.widget.ImeKeyMonitor.ImeKeyListener!);
   }
 
-  public static abstract interface ImeKeyMonitor.ImeKeyListener {
-    method public abstract boolean onKeyPreIme(android.widget.EditText, int, android.view.KeyEvent);
+  public static interface ImeKeyMonitor.ImeKeyListener {
+    method public boolean onKeyPreIme(android.widget.EditText!, int, android.view.KeyEvent!);
   }
 
   public final class ItemAlignmentFacet {
     ctor public ItemAlignmentFacet();
-    method public androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[] getAlignmentDefs();
+    method public androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[]! getAlignmentDefs();
     method public boolean isMultiAlignment();
-    method public void setAlignmentDefs(androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[]);
+    method public void setAlignmentDefs(androidx.leanback.widget.ItemAlignmentFacet.ItemAlignmentDef[]!);
     field public static final float ITEM_ALIGN_OFFSET_PERCENT_DISABLED = -1.0f;
   }
 
@@ -2110,113 +2216,113 @@
   }
 
   public class ItemBridgeAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter implements androidx.leanback.widget.FacetProviderAdapter {
-    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter, androidx.leanback.widget.PresenterSelector);
-    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter);
+    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter!, androidx.leanback.widget.PresenterSelector!);
+    ctor public ItemBridgeAdapter(androidx.leanback.widget.ObjectAdapter!);
     ctor public ItemBridgeAdapter();
     method public void clear();
-    method public androidx.leanback.widget.FacetProvider getFacetProvider(int);
+    method public androidx.leanback.widget.FacetProvider! getFacetProvider(int);
     method public int getItemCount();
-    method public java.util.ArrayList<androidx.leanback.widget.Presenter> getPresenterMapper();
-    method public androidx.leanback.widget.ItemBridgeAdapter.Wrapper getWrapper();
-    method protected void onAddPresenter(androidx.leanback.widget.Presenter, int);
-    method protected void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method protected void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder, int);
-    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder, int, java.util.List);
-    method protected void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final androidx.recyclerview.widget.RecyclerView.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
-    method protected void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final boolean onFailedToRecycleView(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method protected void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public final void onViewAttachedToWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public final void onViewDetachedFromWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public final void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public void setAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public void setAdapterListener(androidx.leanback.widget.ItemBridgeAdapter.AdapterListener);
-    method public void setPresenter(androidx.leanback.widget.PresenterSelector);
-    method public void setPresenterMapper(java.util.ArrayList<androidx.leanback.widget.Presenter>);
-    method public void setWrapper(androidx.leanback.widget.ItemBridgeAdapter.Wrapper);
+    method public java.util.ArrayList<androidx.leanback.widget.Presenter>! getPresenterMapper();
+    method public androidx.leanback.widget.ItemBridgeAdapter.Wrapper! getWrapper();
+    method protected void onAddPresenter(androidx.leanback.widget.Presenter!, int);
+    method protected void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method protected void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder!, int);
+    method public final void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder!, int, java.util.List!);
+    method protected void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final androidx.recyclerview.widget.RecyclerView.ViewHolder! onCreateViewHolder(android.view.ViewGroup!, int);
+    method protected void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final boolean onFailedToRecycleView(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method protected void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public final void onViewAttachedToWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method public final void onViewDetachedFromWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method public final void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
+    method public void setAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public void setAdapterListener(androidx.leanback.widget.ItemBridgeAdapter.AdapterListener!);
+    method public void setPresenter(androidx.leanback.widget.PresenterSelector!);
+    method public void setPresenterMapper(java.util.ArrayList<androidx.leanback.widget.Presenter>!);
+    method public void setWrapper(androidx.leanback.widget.ItemBridgeAdapter.Wrapper!);
   }
 
   public static class ItemBridgeAdapter.AdapterListener {
     ctor public ItemBridgeAdapter.AdapterListener();
-    method public void onAddPresenter(androidx.leanback.widget.Presenter, int);
-    method public void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder, java.util.List);
-    method public void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
-    method public void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder);
+    method public void onAddPresenter(androidx.leanback.widget.Presenter!, int);
+    method public void onAttachedToWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onBind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!, java.util.List!);
+    method public void onCreate(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onDetachedFromWindow(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
+    method public void onUnbind(androidx.leanback.widget.ItemBridgeAdapter.ViewHolder!);
   }
 
   public class ItemBridgeAdapter.ViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder implements androidx.leanback.widget.FacetProvider {
-    method public final java.lang.Object getExtraObject();
-    method public java.lang.Object getFacet(java.lang.Class<?>);
-    method public final java.lang.Object getItem();
-    method public final androidx.leanback.widget.Presenter getPresenter();
-    method public final androidx.leanback.widget.Presenter.ViewHolder getViewHolder();
-    method public void setExtraObject(java.lang.Object);
+    method public final Object! getExtraObject();
+    method public Object! getFacet(Class<?>!);
+    method public final Object! getItem();
+    method public final androidx.leanback.widget.Presenter! getPresenter();
+    method public final androidx.leanback.widget.Presenter.ViewHolder! getViewHolder();
+    method public void setExtraObject(Object!);
   }
 
-  public static abstract class ItemBridgeAdapter.Wrapper {
+  public abstract static class ItemBridgeAdapter.Wrapper {
     ctor public ItemBridgeAdapter.Wrapper();
-    method public abstract android.view.View createWrapper(android.view.View);
-    method public abstract void wrap(android.view.View, android.view.View);
+    method public abstract android.view.View! createWrapper(android.view.View!);
+    method public abstract void wrap(android.view.View!, android.view.View!);
   }
 
   public class ItemBridgeAdapterShadowOverlayWrapper extends androidx.leanback.widget.ItemBridgeAdapter.Wrapper {
-    ctor public ItemBridgeAdapterShadowOverlayWrapper(androidx.leanback.widget.ShadowOverlayHelper);
-    method public android.view.View createWrapper(android.view.View);
-    method public void wrap(android.view.View, android.view.View);
+    ctor public ItemBridgeAdapterShadowOverlayWrapper(androidx.leanback.widget.ShadowOverlayHelper!);
+    method public android.view.View! createWrapper(android.view.View!);
+    method public void wrap(android.view.View!, android.view.View!);
   }
 
   public class ListRow extends androidx.leanback.widget.Row {
-    ctor public ListRow(androidx.leanback.widget.HeaderItem, androidx.leanback.widget.ObjectAdapter);
-    ctor public ListRow(long, androidx.leanback.widget.HeaderItem, androidx.leanback.widget.ObjectAdapter);
-    ctor public ListRow(androidx.leanback.widget.ObjectAdapter);
-    method public final androidx.leanback.widget.ObjectAdapter getAdapter();
-    method public java.lang.CharSequence getContentDescription();
-    method public void setContentDescription(java.lang.CharSequence);
+    ctor public ListRow(androidx.leanback.widget.HeaderItem!, androidx.leanback.widget.ObjectAdapter!);
+    ctor public ListRow(long, androidx.leanback.widget.HeaderItem!, androidx.leanback.widget.ObjectAdapter!);
+    ctor public ListRow(androidx.leanback.widget.ObjectAdapter!);
+    method public final androidx.leanback.widget.ObjectAdapter! getAdapter();
+    method public CharSequence! getContentDescription();
+    method public void setContentDescription(CharSequence!);
   }
 
   public final class ListRowHoverCardView extends android.widget.LinearLayout {
-    ctor public ListRowHoverCardView(android.content.Context);
-    ctor public ListRowHoverCardView(android.content.Context, android.util.AttributeSet);
-    ctor public ListRowHoverCardView(android.content.Context, android.util.AttributeSet, int);
-    method public java.lang.CharSequence getDescription();
-    method public java.lang.CharSequence getTitle();
-    method public void setDescription(java.lang.CharSequence);
-    method public void setTitle(java.lang.CharSequence);
+    ctor public ListRowHoverCardView(android.content.Context!);
+    ctor public ListRowHoverCardView(android.content.Context!, android.util.AttributeSet!);
+    ctor public ListRowHoverCardView(android.content.Context!, android.util.AttributeSet!, int);
+    method public CharSequence! getDescription();
+    method public CharSequence! getTitle();
+    method public void setDescription(CharSequence!);
+    method public void setTitle(CharSequence!);
   }
 
   public class ListRowPresenter extends androidx.leanback.widget.RowPresenter {
     ctor public ListRowPresenter();
     ctor public ListRowPresenter(int);
     ctor public ListRowPresenter(int, boolean);
-    method protected void applySelectLevelToChild(androidx.leanback.widget.ListRowPresenter.ViewHolder, android.view.View);
+    method protected void applySelectLevelToChild(androidx.leanback.widget.ListRowPresenter.ViewHolder!, android.view.View!);
     method public final boolean areChildRoundedCornersEnabled();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected androidx.leanback.widget.ShadowOverlayHelper.Options createShadowOverlayOptions();
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method protected androidx.leanback.widget.ShadowOverlayHelper.Options! createShadowOverlayOptions();
     method public final void enableChildRoundedCorners(boolean);
     method public int getExpandedRowHeight();
     method public final int getFocusZoomFactor();
-    method public final androidx.leanback.widget.PresenterSelector getHoverCardPresenterSelector();
-    method public int getRecycledPoolSize(androidx.leanback.widget.Presenter);
+    method public final androidx.leanback.widget.PresenterSelector! getHoverCardPresenterSelector();
+    method public int getRecycledPoolSize(androidx.leanback.widget.Presenter!);
     method public int getRowHeight();
     method public final boolean getShadowEnabled();
-    method public final deprecated int getZoomFactor();
+    method @Deprecated public final int getZoomFactor();
     method public final boolean isFocusDimmerUsed();
     method public final boolean isKeepChildForeground();
     method public boolean isUsingDefaultListSelectEffect();
     method public final boolean isUsingDefaultSelectEffect();
     method public boolean isUsingDefaultShadow();
-    method public boolean isUsingOutlineClipping(android.content.Context);
-    method public boolean isUsingZOrder(android.content.Context);
+    method public boolean isUsingOutlineClipping(android.content.Context!);
+    method public boolean isUsingZOrder(android.content.Context!);
     method public void setExpandedRowHeight(int);
-    method public final void setHoverCardPresenterSelector(androidx.leanback.widget.PresenterSelector);
+    method public final void setHoverCardPresenterSelector(androidx.leanback.widget.PresenterSelector!);
     method public final void setKeepChildForeground(boolean);
     method public void setNumRows(int);
-    method public void setRecycledPoolSize(androidx.leanback.widget.Presenter, int);
+    method public void setRecycledPoolSize(androidx.leanback.widget.Presenter!, int);
     method public void setRowHeight(int);
     method public final void setShadowEnabled(boolean);
   }
@@ -2224,379 +2330,379 @@
   public static class ListRowPresenter.SelectItemViewHolderTask extends androidx.leanback.widget.Presenter.ViewHolderTask {
     ctor public ListRowPresenter.SelectItemViewHolderTask(int);
     method public int getItemPosition();
-    method public androidx.leanback.widget.Presenter.ViewHolderTask getItemTask();
+    method public androidx.leanback.widget.Presenter.ViewHolderTask! getItemTask();
     method public boolean isSmoothScroll();
     method public void setItemPosition(int);
-    method public void setItemTask(androidx.leanback.widget.Presenter.ViewHolderTask);
+    method public void setItemTask(androidx.leanback.widget.Presenter.ViewHolderTask!);
     method public void setSmoothScroll(boolean);
   }
 
   public static class ListRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public ListRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.HorizontalGridView, androidx.leanback.widget.ListRowPresenter);
-    method public final androidx.leanback.widget.ItemBridgeAdapter getBridgeAdapter();
-    method public final androidx.leanback.widget.HorizontalGridView getGridView();
-    method public androidx.leanback.widget.Presenter.ViewHolder getItemViewHolder(int);
-    method public final androidx.leanback.widget.ListRowPresenter getListRowPresenter();
+    ctor public ListRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.HorizontalGridView!, androidx.leanback.widget.ListRowPresenter!);
+    method public final androidx.leanback.widget.ItemBridgeAdapter! getBridgeAdapter();
+    method public final androidx.leanback.widget.HorizontalGridView! getGridView();
+    method public androidx.leanback.widget.Presenter.ViewHolder! getItemViewHolder(int);
+    method public final androidx.leanback.widget.ListRowPresenter! getListRowPresenter();
     method public int getSelectedPosition();
   }
 
   public final class ListRowView extends android.widget.LinearLayout {
-    ctor public ListRowView(android.content.Context);
-    ctor public ListRowView(android.content.Context, android.util.AttributeSet);
-    ctor public ListRowView(android.content.Context, android.util.AttributeSet, int);
-    method public androidx.leanback.widget.HorizontalGridView getGridView();
+    ctor public ListRowView(android.content.Context!);
+    ctor public ListRowView(android.content.Context!, android.util.AttributeSet!);
+    ctor public ListRowView(android.content.Context!, android.util.AttributeSet!, int);
+    method public androidx.leanback.widget.HorizontalGridView! getGridView();
   }
 
-  public abstract interface MultiActionsProvider {
-    method public abstract androidx.leanback.widget.MultiActionsProvider.MultiAction[] getActions();
+  public interface MultiActionsProvider {
+    method public androidx.leanback.widget.MultiActionsProvider.MultiAction[]! getActions();
   }
 
   public static class MultiActionsProvider.MultiAction {
     ctor public MultiActionsProvider.MultiAction(long);
-    method public android.graphics.drawable.Drawable getCurrentDrawable();
-    method public android.graphics.drawable.Drawable[] getDrawables();
+    method public android.graphics.drawable.Drawable! getCurrentDrawable();
+    method public android.graphics.drawable.Drawable[]! getDrawables();
     method public long getId();
     method public int getIndex();
     method public void incrementIndex();
-    method public void setDrawables(android.graphics.drawable.Drawable[]);
+    method public void setDrawables(android.graphics.drawable.Drawable[]!);
     method public void setIndex(int);
   }
 
   public abstract class ObjectAdapter {
-    ctor public ObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public ObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public ObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public ObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public ObjectAdapter();
-    method public abstract java.lang.Object get(int);
+    method public abstract Object! get(int);
     method public long getId(int);
-    method public final androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public final androidx.leanback.widget.PresenterSelector getPresenterSelector();
+    method public final androidx.leanback.widget.Presenter! getPresenter(Object!);
+    method public final androidx.leanback.widget.PresenterSelector! getPresenterSelector();
     method public final boolean hasStableIds();
     method public boolean isImmediateNotifySupported();
     method protected final void notifyChanged();
     method protected final void notifyItemMoved(int, int);
     method public final void notifyItemRangeChanged(int, int);
-    method public final void notifyItemRangeChanged(int, int, java.lang.Object);
+    method public final void notifyItemRangeChanged(int, int, Object!);
     method protected final void notifyItemRangeInserted(int, int);
     method protected final void notifyItemRangeRemoved(int, int);
     method protected void onHasStableIdsChanged();
     method protected void onPresenterSelectorChanged();
-    method public final void registerObserver(androidx.leanback.widget.ObjectAdapter.DataObserver);
+    method public final void registerObserver(androidx.leanback.widget.ObjectAdapter.DataObserver!);
     method public final void setHasStableIds(boolean);
-    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector);
+    method public final void setPresenterSelector(androidx.leanback.widget.PresenterSelector!);
     method public abstract int size();
     method public final void unregisterAllObservers();
-    method public final void unregisterObserver(androidx.leanback.widget.ObjectAdapter.DataObserver);
+    method public final void unregisterObserver(androidx.leanback.widget.ObjectAdapter.DataObserver!);
     field public static final int NO_ID = -1; // 0xffffffff
   }
 
-  public static abstract class ObjectAdapter.DataObserver {
+  public abstract static class ObjectAdapter.DataObserver {
     ctor public ObjectAdapter.DataObserver();
     method public void onChanged();
     method public void onItemMoved(int, int);
     method public void onItemRangeChanged(int, int);
-    method public void onItemRangeChanged(int, int, java.lang.Object);
+    method public void onItemRangeChanged(int, int, Object!);
     method public void onItemRangeInserted(int, int);
     method public void onItemRangeRemoved(int, int);
   }
 
-  public abstract interface OnActionClickedListener {
-    method public abstract void onActionClicked(androidx.leanback.widget.Action);
+  public interface OnActionClickedListener {
+    method public void onActionClicked(androidx.leanback.widget.Action!);
   }
 
-  public abstract interface OnChildLaidOutListener {
-    method public abstract void onChildLaidOut(android.view.ViewGroup, android.view.View, int, long);
+  public interface OnChildLaidOutListener {
+    method public void onChildLaidOut(android.view.ViewGroup!, android.view.View!, int, long);
   }
 
-  public abstract deprecated interface OnChildSelectedListener {
-    method public abstract void onChildSelected(android.view.ViewGroup, android.view.View, int, long);
+  @Deprecated public interface OnChildSelectedListener {
+    method @Deprecated public void onChildSelected(android.view.ViewGroup!, android.view.View!, int, long);
   }
 
   public abstract class OnChildViewHolderSelectedListener {
     ctor public OnChildViewHolderSelectedListener();
-    method public void onChildViewHolderSelected(androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.ViewHolder, int, int);
-    method public void onChildViewHolderSelectedAndPositioned(androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.ViewHolder, int, int);
+    method public void onChildViewHolderSelected(androidx.recyclerview.widget.RecyclerView!, androidx.recyclerview.widget.RecyclerView.ViewHolder!, int, int);
+    method public void onChildViewHolderSelectedAndPositioned(androidx.recyclerview.widget.RecyclerView!, androidx.recyclerview.widget.RecyclerView.ViewHolder!, int, int);
   }
 
-  public abstract interface OnItemViewClickedListener implements androidx.leanback.widget.BaseOnItemViewClickedListener {
+  public interface OnItemViewClickedListener extends androidx.leanback.widget.BaseOnItemViewClickedListener<androidx.leanback.widget.Row> {
   }
 
-  public abstract interface OnItemViewSelectedListener implements androidx.leanback.widget.BaseOnItemViewSelectedListener {
+  public interface OnItemViewSelectedListener extends androidx.leanback.widget.BaseOnItemViewSelectedListener<androidx.leanback.widget.Row> {
   }
 
   public class PageRow extends androidx.leanback.widget.Row {
-    ctor public PageRow(androidx.leanback.widget.HeaderItem);
+    ctor public PageRow(androidx.leanback.widget.HeaderItem!);
     method public final boolean isRenderedAsRowView();
   }
 
   public abstract class Parallax<PropertyT extends android.util.Property> {
     ctor public Parallax();
-    method public androidx.leanback.widget.ParallaxEffect addEffect(androidx.leanback.widget.Parallax.PropertyMarkerValue...);
-    method public final PropertyT addProperty(java.lang.String);
-    method public abstract PropertyT createProperty(java.lang.String, int);
-    method public java.util.List<androidx.leanback.widget.ParallaxEffect> getEffects();
+    method public androidx.leanback.widget.ParallaxEffect! addEffect(androidx.leanback.widget.Parallax.PropertyMarkerValue...!);
+    method public final PropertyT! addProperty(String!);
+    method public abstract PropertyT! createProperty(String!, int);
+    method public java.util.List<androidx.leanback.widget.ParallaxEffect>! getEffects();
     method public abstract float getMaxValue();
-    method public final java.util.List<PropertyT> getProperties();
+    method public final java.util.List<PropertyT>! getProperties();
     method public void removeAllEffects();
-    method public void removeEffect(androidx.leanback.widget.ParallaxEffect);
-    method public void updateValues();
+    method public void removeEffect(androidx.leanback.widget.ParallaxEffect!);
+    method @CallSuper public void updateValues();
   }
 
-  public static class Parallax.FloatProperty extends android.util.Property {
-    ctor public Parallax.FloatProperty(java.lang.String, int);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue at(float, float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atAbsolute(float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atFraction(float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMax();
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMin();
-    method public final java.lang.Float get(androidx.leanback.widget.Parallax);
+  public static class Parallax.FloatProperty extends android.util.Property<androidx.leanback.widget.Parallax,java.lang.Float> {
+    ctor public Parallax.FloatProperty(String!, int);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! at(float, float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atAbsolute(float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atFraction(float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMax();
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMin();
+    method public final Float! get(androidx.leanback.widget.Parallax!);
     method public final int getIndex();
-    method public final float getValue(androidx.leanback.widget.Parallax);
-    method public final void set(androidx.leanback.widget.Parallax, java.lang.Float);
-    method public final void setValue(androidx.leanback.widget.Parallax, float);
+    method public final float getValue(androidx.leanback.widget.Parallax!);
+    method public final void set(androidx.leanback.widget.Parallax!, Float!);
+    method public final void setValue(androidx.leanback.widget.Parallax!, float);
     field public static final float UNKNOWN_AFTER = 3.4028235E38f;
     field public static final float UNKNOWN_BEFORE = -3.4028235E38f;
   }
 
-  public static class Parallax.IntProperty extends android.util.Property {
-    ctor public Parallax.IntProperty(java.lang.String, int);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue at(int, float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atAbsolute(int);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atFraction(float);
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMax();
-    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue atMin();
-    method public final java.lang.Integer get(androidx.leanback.widget.Parallax);
+  public static class Parallax.IntProperty extends android.util.Property<androidx.leanback.widget.Parallax,java.lang.Integer> {
+    ctor public Parallax.IntProperty(String!, int);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! at(int, float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atAbsolute(int);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atFraction(float);
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMax();
+    method public final androidx.leanback.widget.Parallax.PropertyMarkerValue! atMin();
+    method public final Integer! get(androidx.leanback.widget.Parallax!);
     method public final int getIndex();
-    method public final int getValue(androidx.leanback.widget.Parallax);
-    method public final void set(androidx.leanback.widget.Parallax, java.lang.Integer);
-    method public final void setValue(androidx.leanback.widget.Parallax, int);
+    method public final int getValue(androidx.leanback.widget.Parallax!);
+    method public final void set(androidx.leanback.widget.Parallax!, Integer!);
+    method public final void setValue(androidx.leanback.widget.Parallax!, int);
     field public static final int UNKNOWN_AFTER = 2147483647; // 0x7fffffff
     field public static final int UNKNOWN_BEFORE = -2147483648; // 0x80000000
   }
 
   public static class Parallax.PropertyMarkerValue<PropertyT> {
-    ctor public Parallax.PropertyMarkerValue(PropertyT);
-    method public PropertyT getProperty();
+    ctor public Parallax.PropertyMarkerValue(PropertyT!);
+    method public PropertyT! getProperty();
   }
 
   public abstract class ParallaxEffect {
-    method public final void addTarget(androidx.leanback.widget.ParallaxTarget);
-    method public final java.util.List<androidx.leanback.widget.Parallax.PropertyMarkerValue> getPropertyRanges();
-    method public final java.util.List<androidx.leanback.widget.ParallaxTarget> getTargets();
-    method public final void performMapping(androidx.leanback.widget.Parallax);
-    method public final void removeTarget(androidx.leanback.widget.ParallaxTarget);
-    method public final void setPropertyRanges(androidx.leanback.widget.Parallax.PropertyMarkerValue...);
-    method public final androidx.leanback.widget.ParallaxEffect target(androidx.leanback.widget.ParallaxTarget);
-    method public final androidx.leanback.widget.ParallaxEffect target(java.lang.Object, android.animation.PropertyValuesHolder);
-    method public final <T, V extends java.lang.Number> androidx.leanback.widget.ParallaxEffect target(T, android.util.Property<T, V>);
+    method public final void addTarget(androidx.leanback.widget.ParallaxTarget!);
+    method public final java.util.List<androidx.leanback.widget.Parallax.PropertyMarkerValue>! getPropertyRanges();
+    method public final java.util.List<androidx.leanback.widget.ParallaxTarget>! getTargets();
+    method public final void performMapping(androidx.leanback.widget.Parallax!);
+    method public final void removeTarget(androidx.leanback.widget.ParallaxTarget!);
+    method public final void setPropertyRanges(androidx.leanback.widget.Parallax.PropertyMarkerValue...!);
+    method public final androidx.leanback.widget.ParallaxEffect! target(androidx.leanback.widget.ParallaxTarget!);
+    method public final androidx.leanback.widget.ParallaxEffect! target(Object!, android.animation.PropertyValuesHolder!);
+    method public final <T, V extends java.lang.Number> androidx.leanback.widget.ParallaxEffect! target(T!, android.util.Property<T,V>!);
   }
 
   public abstract class ParallaxTarget {
     ctor public ParallaxTarget();
-    method public void directUpdate(java.lang.Number);
+    method public void directUpdate(Number!);
     method public boolean isDirectMapping();
     method public void update(float);
   }
 
-  public static final class ParallaxTarget.DirectPropertyTarget<T, V extends java.lang.Number> extends androidx.leanback.widget.ParallaxTarget {
-    ctor public ParallaxTarget.DirectPropertyTarget(java.lang.Object, android.util.Property<T, V>);
+  public static final class ParallaxTarget.DirectPropertyTarget<T extends java.lang.Object, V extends java.lang.Number> extends androidx.leanback.widget.ParallaxTarget {
+    ctor public ParallaxTarget.DirectPropertyTarget(Object!, android.util.Property<T,V>!);
   }
 
   public static final class ParallaxTarget.PropertyValuesHolderTarget extends androidx.leanback.widget.ParallaxTarget {
-    ctor public ParallaxTarget.PropertyValuesHolderTarget(java.lang.Object, android.animation.PropertyValuesHolder);
+    ctor public ParallaxTarget.PropertyValuesHolderTarget(Object!, android.animation.PropertyValuesHolder!);
   }
 
   public class PlaybackControlsRow extends androidx.leanback.widget.Row {
-    ctor public PlaybackControlsRow(java.lang.Object);
+    ctor public PlaybackControlsRow(Object!);
     ctor public PlaybackControlsRow();
-    method public androidx.leanback.widget.Action getActionForKeyCode(int);
-    method public androidx.leanback.widget.Action getActionForKeyCode(androidx.leanback.widget.ObjectAdapter, int);
+    method public androidx.leanback.widget.Action! getActionForKeyCode(int);
+    method public androidx.leanback.widget.Action! getActionForKeyCode(androidx.leanback.widget.ObjectAdapter!, int);
     method public long getBufferedPosition();
-    method public deprecated int getBufferedProgress();
-    method public deprecated long getBufferedProgressLong();
+    method @Deprecated public int getBufferedProgress();
+    method @Deprecated public long getBufferedProgressLong();
     method public long getCurrentPosition();
-    method public deprecated int getCurrentTime();
-    method public deprecated long getCurrentTimeLong();
+    method @Deprecated public int getCurrentTime();
+    method @Deprecated public long getCurrentTimeLong();
     method public long getDuration();
-    method public final android.graphics.drawable.Drawable getImageDrawable();
-    method public final java.lang.Object getItem();
-    method public final androidx.leanback.widget.ObjectAdapter getPrimaryActionsAdapter();
-    method public final androidx.leanback.widget.ObjectAdapter getSecondaryActionsAdapter();
-    method public deprecated int getTotalTime();
-    method public deprecated long getTotalTimeLong();
+    method public final android.graphics.drawable.Drawable! getImageDrawable();
+    method public final Object! getItem();
+    method public final androidx.leanback.widget.ObjectAdapter! getPrimaryActionsAdapter();
+    method public final androidx.leanback.widget.ObjectAdapter! getSecondaryActionsAdapter();
+    method @Deprecated public int getTotalTime();
+    method @Deprecated public long getTotalTimeLong();
     method public void setBufferedPosition(long);
-    method public deprecated void setBufferedProgress(int);
-    method public deprecated void setBufferedProgressLong(long);
+    method @Deprecated public void setBufferedProgress(int);
+    method @Deprecated public void setBufferedProgressLong(long);
     method public void setCurrentPosition(long);
-    method public deprecated void setCurrentTime(int);
-    method public deprecated void setCurrentTimeLong(long);
+    method @Deprecated public void setCurrentTime(int);
+    method @Deprecated public void setCurrentTimeLong(long);
     method public void setDuration(long);
-    method public final void setImageBitmap(android.content.Context, android.graphics.Bitmap);
-    method public final void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setOnPlaybackProgressChangedListener(androidx.leanback.widget.PlaybackControlsRow.OnPlaybackProgressCallback);
-    method public final void setPrimaryActionsAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public final void setSecondaryActionsAdapter(androidx.leanback.widget.ObjectAdapter);
-    method public deprecated void setTotalTime(int);
-    method public deprecated void setTotalTimeLong(long);
+    method public final void setImageBitmap(android.content.Context!, android.graphics.Bitmap!);
+    method public final void setImageDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnPlaybackProgressChangedListener(androidx.leanback.widget.PlaybackControlsRow.OnPlaybackProgressCallback!);
+    method public final void setPrimaryActionsAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method public final void setSecondaryActionsAdapter(androidx.leanback.widget.ObjectAdapter!);
+    method @Deprecated public void setTotalTime(int);
+    method @Deprecated public void setTotalTimeLong(long);
   }
 
   public static class PlaybackControlsRow.ClosedCaptioningAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context);
-    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context!);
+    ctor public PlaybackControlsRow.ClosedCaptioningAction(android.content.Context!, int);
     field public static final int INDEX_OFF = 0; // 0x0
     field public static final int INDEX_ON = 1; // 0x1
-    field public static final deprecated int OFF = 0; // 0x0
-    field public static final deprecated int ON = 1; // 0x1
+    field @Deprecated public static final int OFF = 0; // 0x0
+    field @Deprecated public static final int ON = 1; // 0x1
   }
 
   public static class PlaybackControlsRow.FastForwardAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context);
-    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context!);
+    ctor public PlaybackControlsRow.FastForwardAction(android.content.Context!, int);
   }
 
   public static class PlaybackControlsRow.HighQualityAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context);
-    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context!);
+    ctor public PlaybackControlsRow.HighQualityAction(android.content.Context!, int);
     field public static final int INDEX_OFF = 0; // 0x0
     field public static final int INDEX_ON = 1; // 0x1
-    field public static final deprecated int OFF = 0; // 0x0
-    field public static final deprecated int ON = 1; // 0x1
+    field @Deprecated public static final int OFF = 0; // 0x0
+    field @Deprecated public static final int ON = 1; // 0x1
   }
 
   public static class PlaybackControlsRow.MoreActions extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.MoreActions(android.content.Context);
+    ctor public PlaybackControlsRow.MoreActions(android.content.Context!);
   }
 
-  public static abstract class PlaybackControlsRow.MultiAction extends androidx.leanback.widget.Action {
+  public abstract static class PlaybackControlsRow.MultiAction extends androidx.leanback.widget.Action {
     ctor public PlaybackControlsRow.MultiAction(int);
     method public int getActionCount();
-    method public android.graphics.drawable.Drawable getDrawable(int);
+    method public android.graphics.drawable.Drawable! getDrawable(int);
     method public int getIndex();
-    method public java.lang.String getLabel(int);
-    method public java.lang.String getSecondaryLabel(int);
+    method public String! getLabel(int);
+    method public String! getSecondaryLabel(int);
     method public void nextIndex();
-    method public void setDrawables(android.graphics.drawable.Drawable[]);
+    method public void setDrawables(android.graphics.drawable.Drawable[]!);
     method public void setIndex(int);
-    method public void setLabels(java.lang.String[]);
-    method public void setSecondaryLabels(java.lang.String[]);
+    method public void setLabels(String[]!);
+    method public void setSecondaryLabels(String[]!);
   }
 
   public static class PlaybackControlsRow.OnPlaybackProgressCallback {
     ctor public PlaybackControlsRow.OnPlaybackProgressCallback();
-    method public void onBufferedPositionChanged(androidx.leanback.widget.PlaybackControlsRow, long);
-    method public void onCurrentPositionChanged(androidx.leanback.widget.PlaybackControlsRow, long);
-    method public void onDurationChanged(androidx.leanback.widget.PlaybackControlsRow, long);
+    method public void onBufferedPositionChanged(androidx.leanback.widget.PlaybackControlsRow!, long);
+    method public void onCurrentPositionChanged(androidx.leanback.widget.PlaybackControlsRow!, long);
+    method public void onDurationChanged(androidx.leanback.widget.PlaybackControlsRow!, long);
   }
 
   public static class PlaybackControlsRow.PictureInPictureAction extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.PictureInPictureAction(android.content.Context);
+    ctor public PlaybackControlsRow.PictureInPictureAction(android.content.Context!);
   }
 
   public static class PlaybackControlsRow.PlayPauseAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.PlayPauseAction(android.content.Context);
+    ctor public PlaybackControlsRow.PlayPauseAction(android.content.Context!);
     field public static final int INDEX_PAUSE = 1; // 0x1
     field public static final int INDEX_PLAY = 0; // 0x0
-    field public static final deprecated int PAUSE = 1; // 0x1
-    field public static final deprecated int PLAY = 0; // 0x0
+    field @Deprecated public static final int PAUSE = 1; // 0x1
+    field @Deprecated public static final int PLAY = 0; // 0x0
   }
 
   public static class PlaybackControlsRow.RepeatAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context);
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context, int);
-    ctor public PlaybackControlsRow.RepeatAction(android.content.Context, int, int);
-    field public static final deprecated int ALL = 1; // 0x1
+    ctor public PlaybackControlsRow.RepeatAction(android.content.Context!);
+    ctor public PlaybackControlsRow.RepeatAction(android.content.Context!, int);
+    ctor public PlaybackControlsRow.RepeatAction(android.content.Context!, int, int);
+    field @Deprecated public static final int ALL = 1; // 0x1
     field public static final int INDEX_ALL = 1; // 0x1
     field public static final int INDEX_NONE = 0; // 0x0
     field public static final int INDEX_ONE = 2; // 0x2
-    field public static final deprecated int NONE = 0; // 0x0
-    field public static final deprecated int  // 0x2
+    field @Deprecated public static final int NONE = 0; // 0x0
+    field @Deprecated public static final int  // 0x2
   }
 
   public static class PlaybackControlsRow.RewindAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.RewindAction(android.content.Context);
-    ctor public PlaybackControlsRow.RewindAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.RewindAction(android.content.Context!);
+    ctor public PlaybackControlsRow.RewindAction(android.content.Context!, int);
   }
 
   public static class PlaybackControlsRow.ShuffleAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context);
-    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context, int);
+    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context!);
+    ctor public PlaybackControlsRow.ShuffleAction(android.content.Context!, int);
     field public static final int INDEX_OFF = 0; // 0x0
     field public static final int INDEX_ON = 1; // 0x1
-    field public static final deprecated int OFF = 0; // 0x0
-    field public static final deprecated int ON = 1; // 0x1
+    field @Deprecated public static final int OFF = 0; // 0x0
+    field @Deprecated public static final int ON = 1; // 0x1
   }
 
   public static class PlaybackControlsRow.SkipNextAction extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.SkipNextAction(android.content.Context);
+    ctor public PlaybackControlsRow.SkipNextAction(android.content.Context!);
   }
 
   public static class PlaybackControlsRow.SkipPreviousAction extends androidx.leanback.widget.Action {
-    ctor public PlaybackControlsRow.SkipPreviousAction(android.content.Context);
+    ctor public PlaybackControlsRow.SkipPreviousAction(android.content.Context!);
   }
 
-  public static abstract class PlaybackControlsRow.ThumbsAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
-    ctor public PlaybackControlsRow.ThumbsAction(int, android.content.Context, int, int);
+  public abstract static class PlaybackControlsRow.ThumbsAction extends androidx.leanback.widget.PlaybackControlsRow.MultiAction {
+    ctor public PlaybackControlsRow.ThumbsAction(int, android.content.Context!, int, int);
     field public static final int INDEX_OUTLINE = 1; // 0x1
     field public static final int INDEX_SOLID = 0; // 0x0
-    field public static final deprecated int OUTLINE = 1; // 0x1
-    field public static final deprecated int SOLID = 0; // 0x0
+    field @Deprecated public static final int OUTLINE = 1; // 0x1
+    field @Deprecated public static final int SOLID = 0; // 0x0
   }
 
   public static class PlaybackControlsRow.ThumbsDownAction extends androidx.leanback.widget.PlaybackControlsRow.ThumbsAction {
-    ctor public PlaybackControlsRow.ThumbsDownAction(android.content.Context);
+    ctor public PlaybackControlsRow.ThumbsDownAction(android.content.Context!);
   }
 
   public static class PlaybackControlsRow.ThumbsUpAction extends androidx.leanback.widget.PlaybackControlsRow.ThumbsAction {
-    ctor public PlaybackControlsRow.ThumbsUpAction(android.content.Context);
+    ctor public PlaybackControlsRow.ThumbsUpAction(android.content.Context!);
   }
 
   public class PlaybackControlsRowPresenter extends androidx.leanback.widget.PlaybackRowPresenter {
-    ctor public PlaybackControlsRowPresenter(androidx.leanback.widget.Presenter);
+    ctor public PlaybackControlsRowPresenter(androidx.leanback.widget.Presenter!);
     ctor public PlaybackControlsRowPresenter();
     method public boolean areSecondaryActionsHidden();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method public int getBackgroundColor();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public int getProgressColor();
-    method public void setBackgroundColor(int);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public void setProgressColor(int);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method @ColorInt public int getBackgroundColor();
+    method public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
+    method @ColorInt public int getProgressColor();
+    method public void setBackgroundColor(@ColorInt int);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method public void setProgressColor(@ColorInt int);
     method public void setSecondaryActionsHidden(boolean);
-    method public void showBottomSpace(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder, boolean);
-    method public void showPrimaryActions(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder);
+    method public void showBottomSpace(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder!, boolean);
+    method public void showPrimaryActions(androidx.leanback.widget.PlaybackControlsRowPresenter.ViewHolder!);
   }
 
   public class PlaybackControlsRowPresenter.ViewHolder extends androidx.leanback.widget.PlaybackRowPresenter.ViewHolder {
-    field public final androidx.leanback.widget.Presenter.ViewHolder mDescriptionViewHolder;
+    field public final androidx.leanback.widget.Presenter.ViewHolder! mDescriptionViewHolder;
   }
 
   public abstract class PlaybackRowPresenter extends androidx.leanback.widget.RowPresenter {
     ctor public PlaybackRowPresenter();
-    method public void onReappear(androidx.leanback.widget.RowPresenter.ViewHolder);
+    method public void onReappear(androidx.leanback.widget.RowPresenter.ViewHolder!);
   }
 
   public static class PlaybackRowPresenter.ViewHolder extends androidx.leanback.widget.RowPresenter.ViewHolder {
-    ctor public PlaybackRowPresenter.ViewHolder(android.view.View);
+    ctor public PlaybackRowPresenter.ViewHolder(android.view.View!);
   }
 
   public class PlaybackSeekDataProvider {
     ctor public PlaybackSeekDataProvider();
-    method public long[] getSeekPositions();
-    method public void getThumbnail(int, androidx.leanback.widget.PlaybackSeekDataProvider.ResultCallback);
+    method public long[]! getSeekPositions();
+    method public void getThumbnail(int, androidx.leanback.widget.PlaybackSeekDataProvider.ResultCallback!);
     method public void reset();
   }
 
   public static class PlaybackSeekDataProvider.ResultCallback {
     ctor public PlaybackSeekDataProvider.ResultCallback();
-    method public void onThumbnailLoaded(android.graphics.Bitmap, int);
+    method public void onThumbnailLoaded(android.graphics.Bitmap!, int);
   }
 
-  public abstract interface PlaybackSeekUi {
-    method public abstract void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+  public interface PlaybackSeekUi {
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
   }
 
   public static class PlaybackSeekUi.Client {
     ctor public PlaybackSeekUi.Client();
-    method public androidx.leanback.widget.PlaybackSeekDataProvider getPlaybackSeekDataProvider();
+    method public androidx.leanback.widget.PlaybackSeekDataProvider! getPlaybackSeekDataProvider();
     method public boolean isSeekEnabled();
     method public void onSeekFinished(boolean);
     method public void onSeekPositionChanged(long);
@@ -2605,158 +2711,158 @@
 
   public class PlaybackTransportRowPresenter extends androidx.leanback.widget.PlaybackRowPresenter {
     ctor public PlaybackTransportRowPresenter();
-    method protected androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
+    method protected androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
     method public float getDefaultSeekIncrement();
-    method public androidx.leanback.widget.OnActionClickedListener getOnActionClickedListener();
-    method public int getProgressColor();
-    method public int getSecondaryProgressColor();
-    method protected void onProgressBarClicked(androidx.leanback.widget.PlaybackTransportRowPresenter.ViewHolder);
+    method public androidx.leanback.widget.OnActionClickedListener! getOnActionClickedListener();
+    method @ColorInt public int getProgressColor();
+    method @ColorInt public int getSecondaryProgressColor();
+    method protected void onProgressBarClicked(androidx.leanback.widget.PlaybackTransportRowPresenter.ViewHolder!);
     method public void setDefaultSeekIncrement(float);
-    method public void setDescriptionPresenter(androidx.leanback.widget.Presenter);
-    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener);
-    method public void setProgressColor(int);
-    method public void setSecondaryProgressColor(int);
+    method public void setDescriptionPresenter(androidx.leanback.widget.Presenter!);
+    method public void setOnActionClickedListener(androidx.leanback.widget.OnActionClickedListener!);
+    method public void setProgressColor(@ColorInt int);
+    method public void setSecondaryProgressColor(@ColorInt int);
   }
 
   public class PlaybackTransportRowPresenter.ViewHolder extends androidx.leanback.widget.PlaybackRowPresenter.ViewHolder implements androidx.leanback.widget.PlaybackSeekUi {
-    ctor public PlaybackTransportRowPresenter.ViewHolder(android.view.View, androidx.leanback.widget.Presenter);
-    method public final android.widget.TextView getCurrentPositionView();
-    method public final androidx.leanback.widget.Presenter.ViewHolder getDescriptionViewHolder();
-    method public final android.widget.TextView getDurationView();
+    ctor public PlaybackTransportRowPresenter.ViewHolder(android.view.View!, androidx.leanback.widget.Presenter!);
+    method public final android.widget.TextView! getCurrentPositionView();
+    method public final androidx.leanback.widget.Presenter.ViewHolder! getDescriptionViewHolder();
+    method public final android.widget.TextView! getDurationView();
     method protected void onSetCurrentPositionLabel(long);
     method protected void onSetDurationLabel(long);
-    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client);
+    method public void setPlaybackSeekUiClient(androidx.leanback.widget.PlaybackSeekUi.Client!);
   }
 
   public abstract class Presenter implements androidx.leanback.widget.FacetProvider {
     ctor public Presenter();
-    method protected static void cancelAnimationsRecursive(android.view.View);
-    method public final java.lang.Object getFacet(java.lang.Class<?>);
-    method public abstract void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object, java.util.List<java.lang.Object>);
-    method public abstract androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public abstract void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public final void setFacet(java.lang.Class<?>, java.lang.Object);
-    method public void setOnClickListener(androidx.leanback.widget.Presenter.ViewHolder, android.view.View.OnClickListener);
+    method protected static void cancelAnimationsRecursive(android.view.View!);
+    method public final Object! getFacet(Class<?>!);
+    method public abstract void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!, java.util.List<java.lang.Object>!);
+    method public abstract androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public abstract void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public final void setFacet(Class<?>!, Object!);
+    method public void setOnClickListener(androidx.leanback.widget.Presenter.ViewHolder!, android.view.View.OnClickListener!);
   }
 
   public static class Presenter.ViewHolder implements androidx.leanback.widget.FacetProvider {
-    ctor public Presenter.ViewHolder(android.view.View);
-    method public final java.lang.Object getFacet(java.lang.Class<?>);
-    method public final void setFacet(java.lang.Class<?>, java.lang.Object);
-    field public final android.view.View view;
+    ctor public Presenter.ViewHolder(android.view.View!);
+    method public final Object! getFacet(Class<?>!);
+    method public final void setFacet(Class<?>!, Object!);
+    field public final android.view.View! view;
   }
 
-  public static abstract class Presenter.ViewHolderTask {
+  public abstract static class Presenter.ViewHolderTask {
     ctor public Presenter.ViewHolderTask();
-    method public void run(androidx.leanback.widget.Presenter.ViewHolder);
+    method public void run(androidx.leanback.widget.Presenter.ViewHolder!);
   }
 
   public abstract class PresenterSelector {
     ctor public PresenterSelector();
-    method public abstract androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
-    method public androidx.leanback.widget.Presenter[] getPresenters();
+    method public abstract androidx.leanback.widget.Presenter! getPresenter(Object!);
+    method public androidx.leanback.widget.Presenter[]! getPresenters();
   }
 
   public abstract class PresenterSwitcher {
     ctor public PresenterSwitcher();
     method public void clear();
-    method public final android.view.ViewGroup getParentViewGroup();
-    method public void init(android.view.ViewGroup, androidx.leanback.widget.PresenterSelector);
-    method protected abstract void insertView(android.view.View);
-    method protected void onViewSelected(android.view.View);
-    method public void select(java.lang.Object);
-    method protected void showView(android.view.View, boolean);
+    method public final android.view.ViewGroup! getParentViewGroup();
+    method public void init(android.view.ViewGroup!, androidx.leanback.widget.PresenterSelector!);
+    method protected abstract void insertView(android.view.View!);
+    method protected void onViewSelected(android.view.View!);
+    method public void select(Object!);
+    method protected void showView(android.view.View!, boolean);
     method public void unselect();
   }
 
-  public class RecyclerViewParallax extends androidx.leanback.widget.Parallax {
+  public class RecyclerViewParallax extends androidx.leanback.widget.Parallax<androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty> {
     ctor public RecyclerViewParallax();
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty createProperty(java.lang.String, int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! createProperty(String!, int);
     method public float getMaxValue();
-    method public androidx.recyclerview.widget.RecyclerView getRecyclerView();
-    method public void setRecyclerView(androidx.recyclerview.widget.RecyclerView);
+    method public androidx.recyclerview.widget.RecyclerView! getRecyclerView();
+    method public void setRecyclerView(androidx.recyclerview.widget.RecyclerView!);
   }
 
   public static final class RecyclerViewParallax.ChildPositionProperty extends androidx.leanback.widget.Parallax.IntProperty {
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty adapterPosition(int);
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty fraction(float);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! adapterPosition(int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! fraction(float);
     method public int getAdapterPosition();
     method public float getFraction();
     method public int getOffset();
     method public int getViewId();
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty offset(int);
-    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty viewId(int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! offset(int);
+    method public androidx.leanback.widget.RecyclerViewParallax.ChildPositionProperty! viewId(int);
   }
 
   public class Row {
-    ctor public Row(long, androidx.leanback.widget.HeaderItem);
-    ctor public Row(androidx.leanback.widget.HeaderItem);
+    ctor public Row(long, androidx.leanback.widget.HeaderItem!);
+    ctor public Row(androidx.leanback.widget.HeaderItem!);
     ctor public Row();
-    method public final androidx.leanback.widget.HeaderItem getHeaderItem();
+    method public final androidx.leanback.widget.HeaderItem! getHeaderItem();
     method public final long getId();
     method public boolean isRenderedAsRowView();
-    method public final void setHeaderItem(androidx.leanback.widget.HeaderItem);
+    method public final void setHeaderItem(androidx.leanback.widget.HeaderItem!);
     method public final void setId(long);
   }
 
   public class RowHeaderPresenter extends androidx.leanback.widget.Presenter {
     ctor public RowHeaderPresenter();
-    method protected static float getFontDescent(android.widget.TextView, android.graphics.Paint);
-    method public int getSpaceUnderBaseline(androidx.leanback.widget.RowHeaderPresenter.ViewHolder);
+    method protected static float getFontDescent(android.widget.TextView!, android.graphics.Paint!);
+    method public int getSpaceUnderBaseline(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!);
     method public boolean isNullItemVisibilityGone();
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method protected void onSelectLevelChanged(androidx.leanback.widget.RowHeaderPresenter.ViewHolder);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method protected void onSelectLevelChanged(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
     method public void setNullItemVisibilityGone(boolean);
-    method public final void setSelectLevel(androidx.leanback.widget.RowHeaderPresenter.ViewHolder, float);
+    method public final void setSelectLevel(androidx.leanback.widget.RowHeaderPresenter.ViewHolder!, float);
   }
 
   public static class RowHeaderPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public RowHeaderPresenter.ViewHolder(android.view.View);
+    ctor public RowHeaderPresenter.ViewHolder(android.view.View!);
     method public final float getSelectLevel();
   }
 
   public final class RowHeaderView extends android.widget.TextView {
-    ctor public RowHeaderView(android.content.Context);
-    ctor public RowHeaderView(android.content.Context, android.util.AttributeSet);
-    ctor public RowHeaderView(android.content.Context, android.util.AttributeSet, int);
+    ctor public RowHeaderView(android.content.Context!);
+    ctor public RowHeaderView(android.content.Context!, android.util.AttributeSet!);
+    ctor public RowHeaderView(android.content.Context!, android.util.AttributeSet!, int);
   }
 
   public abstract class RowPresenter extends androidx.leanback.widget.Presenter {
     ctor public RowPresenter();
-    method protected abstract androidx.leanback.widget.RowPresenter.ViewHolder createRowViewHolder(android.view.ViewGroup);
-    method protected void dispatchItemSelectedListener(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public void freeze(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public final androidx.leanback.widget.RowHeaderPresenter getHeaderPresenter();
-    method public final androidx.leanback.widget.RowPresenter.ViewHolder getRowViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
+    method protected abstract androidx.leanback.widget.RowPresenter.ViewHolder! createRowViewHolder(android.view.ViewGroup!);
+    method protected void dispatchItemSelectedListener(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method public void freeze(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method public final androidx.leanback.widget.RowHeaderPresenter! getHeaderPresenter();
+    method public final androidx.leanback.widget.RowPresenter.ViewHolder! getRowViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
     method public final boolean getSelectEffectEnabled();
-    method public final float getSelectLevel(androidx.leanback.widget.Presenter.ViewHolder);
+    method public final float getSelectLevel(androidx.leanback.widget.Presenter.ViewHolder!);
     method public final int getSyncActivatePolicy();
-    method protected void initializeRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder);
+    method protected void initializeRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!);
     method protected boolean isClippingChildren();
     method public boolean isUsingDefaultSelectEffect();
-    method protected void onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder, java.lang.Object);
-    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final androidx.leanback.widget.Presenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method protected void onRowViewAttachedToWindow(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onRowViewDetachedFromWindow(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onRowViewExpanded(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method protected void onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method protected void onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method protected void onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder);
-    method public final void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public final void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public final void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void setEntranceTransitionState(androidx.leanback.widget.RowPresenter.ViewHolder, boolean);
-    method public final void setHeaderPresenter(androidx.leanback.widget.RowHeaderPresenter);
-    method public final void setRowViewExpanded(androidx.leanback.widget.Presenter.ViewHolder, boolean);
-    method public final void setRowViewSelected(androidx.leanback.widget.Presenter.ViewHolder, boolean);
+    method protected void onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!, Object!);
+    method public final void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public final androidx.leanback.widget.Presenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method protected void onRowViewAttachedToWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method protected void onRowViewDetachedFromWindow(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method protected void onRowViewExpanded(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method protected void onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method protected void onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method protected void onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder!);
+    method public final void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public final void onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public final void onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void setEntranceTransitionState(androidx.leanback.widget.RowPresenter.ViewHolder!, boolean);
+    method public final void setHeaderPresenter(androidx.leanback.widget.RowHeaderPresenter!);
+    method public final void setRowViewExpanded(androidx.leanback.widget.Presenter.ViewHolder!, boolean);
+    method public final void setRowViewSelected(androidx.leanback.widget.Presenter.ViewHolder!, boolean);
     method public final void setSelectEffectEnabled(boolean);
-    method public final void setSelectLevel(androidx.leanback.widget.Presenter.ViewHolder, float);
+    method public final void setSelectLevel(androidx.leanback.widget.Presenter.ViewHolder!, float);
     method public final void setSyncActivatePolicy(int);
     field public static final int SYNC_ACTIVATED_CUSTOM = 0; // 0x0
     field public static final int SYNC_ACTIVATED_TO_EXPANDED = 1; // 0x1
@@ -2765,137 +2871,142 @@
   }
 
   public static class RowPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public RowPresenter.ViewHolder(android.view.View);
-    method public final androidx.leanback.widget.RowHeaderPresenter.ViewHolder getHeaderViewHolder();
-    method public final androidx.leanback.widget.BaseOnItemViewClickedListener getOnItemViewClickedListener();
-    method public final androidx.leanback.widget.BaseOnItemViewSelectedListener getOnItemViewSelectedListener();
-    method public android.view.View.OnKeyListener getOnKeyListener();
-    method public final androidx.leanback.widget.Row getRow();
-    method public final java.lang.Object getRowObject();
+    ctor public RowPresenter.ViewHolder(android.view.View!);
+    method public final androidx.leanback.widget.RowHeaderPresenter.ViewHolder! getHeaderViewHolder();
+    method public final androidx.leanback.widget.BaseOnItemViewClickedListener! getOnItemViewClickedListener();
+    method public final androidx.leanback.widget.BaseOnItemViewSelectedListener! getOnItemViewSelectedListener();
+    method public android.view.View.OnKeyListener! getOnKeyListener();
+    method public final androidx.leanback.widget.Row! getRow();
+    method public final Object! getRowObject();
     method public final float getSelectLevel();
-    method public java.lang.Object getSelectedItem();
-    method public androidx.leanback.widget.Presenter.ViewHolder getSelectedItemViewHolder();
+    method public Object! getSelectedItem();
+    method public androidx.leanback.widget.Presenter.ViewHolder! getSelectedItemViewHolder();
     method public final boolean isExpanded();
     method public final boolean isSelected();
     method public final void setActivated(boolean);
-    method public final void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener);
-    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener);
-    method public void setOnKeyListener(android.view.View.OnKeyListener);
-    method public final void syncActivatedStatus(android.view.View);
-    field protected final androidx.leanback.graphics.ColorOverlayDimmer mColorDimmer;
+    method public final void setOnItemViewClickedListener(androidx.leanback.widget.BaseOnItemViewClickedListener!);
+    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.BaseOnItemViewSelectedListener!);
+    method public void setOnKeyListener(android.view.View.OnKeyListener!);
+    method public final void syncActivatedStatus(android.view.View!);
+    field protected final androidx.leanback.graphics.ColorOverlayDimmer! mColorDimmer;
   }
 
   public class SearchBar extends android.widget.RelativeLayout {
-    ctor public SearchBar(android.content.Context);
-    ctor public SearchBar(android.content.Context, android.util.AttributeSet);
-    ctor public SearchBar(android.content.Context, android.util.AttributeSet, int);
-    method public void displayCompletions(java.util.List<java.lang.String>);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public java.lang.CharSequence getHint();
-    method public java.lang.String getTitle();
+    ctor public SearchBar(android.content.Context!);
+    ctor public SearchBar(android.content.Context!, android.util.AttributeSet!);
+    ctor public SearchBar(android.content.Context!, android.util.AttributeSet!, int);
+    method public void displayCompletions(java.util.List<java.lang.String>!);
+    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]!);
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public CharSequence! getHint();
+    method public String! getTitle();
     method public boolean isRecognizing();
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setPermissionListener(androidx.leanback.widget.SearchBar.SearchBarPermissionListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setSearchBarListener(androidx.leanback.widget.SearchBar.SearchBarListener);
-    method public void setSearchQuery(java.lang.String);
-    method public deprecated void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback);
-    method public void setSpeechRecognizer(android.speech.SpeechRecognizer);
-    method public void setTitle(java.lang.String);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setPermissionListener(androidx.leanback.widget.SearchBar.SearchBarPermissionListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchAffordanceColorsInListening(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setSearchBarListener(androidx.leanback.widget.SearchBar.SearchBarListener!);
+    method public void setSearchQuery(String!);
+    method @Deprecated public void setSpeechRecognitionCallback(androidx.leanback.widget.SpeechRecognitionCallback!);
+    method public void setSpeechRecognizer(android.speech.SpeechRecognizer!);
+    method public void setTitle(String!);
     method public void startRecognition();
     method public void stopRecognition();
   }
 
-  public static abstract interface SearchBar.SearchBarListener {
-    method public abstract void onKeyboardDismiss(java.lang.String);
-    method public abstract void onSearchQueryChange(java.lang.String);
-    method public abstract void onSearchQuerySubmit(java.lang.String);
+  public static interface SearchBar.SearchBarListener {
+    method public void onKeyboardDismiss(String!);
+    method public void onSearchQueryChange(String!);
+    method public void onSearchQuerySubmit(String!);
   }
 
-  public static abstract interface SearchBar.SearchBarPermissionListener {
-    method public abstract void requestAudioPermission();
+  public static interface SearchBar.SearchBarPermissionListener {
+    method public void requestAudioPermission();
   }
 
   public class SearchEditText extends android.widget.EditText {
-    ctor public SearchEditText(android.content.Context);
-    ctor public SearchEditText(android.content.Context, android.util.AttributeSet);
-    ctor public SearchEditText(android.content.Context, android.util.AttributeSet, int);
-    method public void setOnKeyboardDismissListener(androidx.leanback.widget.SearchEditText.OnKeyboardDismissListener);
+    ctor public SearchEditText(android.content.Context!);
+    ctor public SearchEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public SearchEditText(android.content.Context!, android.util.AttributeSet!, int);
+    method public static boolean isLayoutRtl(android.view.View!);
+    method public void reset();
+    method public void setFinalRecognizedText(CharSequence!);
+    method public void setOnKeyboardDismissListener(androidx.leanback.widget.SearchEditText.OnKeyboardDismissListener!);
+    method public void updateRecognizedText(String!, String!);
+    method public void updateRecognizedText(String!, java.util.List<java.lang.Float>!);
   }
 
-  public static abstract interface SearchEditText.OnKeyboardDismissListener {
-    method public abstract void onKeyboardDismiss();
+  public static interface SearchEditText.OnKeyboardDismissListener {
+    method public void onKeyboardDismiss();
   }
 
   public class SearchOrbView extends android.widget.FrameLayout implements android.view.View.OnClickListener {
-    ctor public SearchOrbView(android.content.Context);
-    ctor public SearchOrbView(android.content.Context, android.util.AttributeSet);
-    ctor public SearchOrbView(android.content.Context, android.util.AttributeSet, int);
+    ctor public SearchOrbView(android.content.Context!);
+    ctor public SearchOrbView(android.content.Context!, android.util.AttributeSet!);
+    ctor public SearchOrbView(android.content.Context!, android.util.AttributeSet!, int);
     method public void enableOrbColorAnimation(boolean);
-    method public int getOrbColor();
-    method public androidx.leanback.widget.SearchOrbView.Colors getOrbColors();
-    method public android.graphics.drawable.Drawable getOrbIcon();
-    method public void onClick(android.view.View);
-    method public void setOnOrbClickedListener(android.view.View.OnClickListener);
+    method @ColorInt public int getOrbColor();
+    method public androidx.leanback.widget.SearchOrbView.Colors! getOrbColors();
+    method public android.graphics.drawable.Drawable! getOrbIcon();
+    method public void onClick(android.view.View!);
+    method public void setOnOrbClickedListener(android.view.View.OnClickListener!);
     method public void setOrbColor(int);
-    method public deprecated void setOrbColor(int, int);
-    method public void setOrbColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setOrbIcon(android.graphics.drawable.Drawable);
+    method @Deprecated public void setOrbColor(@ColorInt int, @ColorInt int);
+    method public void setOrbColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setOrbIcon(android.graphics.drawable.Drawable!);
   }
 
   public static class SearchOrbView.Colors {
-    ctor public SearchOrbView.Colors(int);
-    ctor public SearchOrbView.Colors(int, int);
-    ctor public SearchOrbView.Colors(int, int, int);
+    ctor public SearchOrbView.Colors(@ColorInt int);
+    ctor public SearchOrbView.Colors(@ColorInt int, @ColorInt int);
+    ctor public SearchOrbView.Colors(@ColorInt int, @ColorInt int, @ColorInt int);
     method public static int getBrightColor(int);
-    field public int brightColor;
-    field public int color;
-    field public int iconColor;
+    field @ColorInt public int brightColor;
+    field @ColorInt public int color;
+    field @ColorInt public int iconColor;
   }
 
   public class SectionRow extends androidx.leanback.widget.Row {
-    ctor public SectionRow(androidx.leanback.widget.HeaderItem);
-    ctor public SectionRow(long, java.lang.String);
-    ctor public SectionRow(java.lang.String);
+    ctor public SectionRow(androidx.leanback.widget.HeaderItem!);
+    ctor public SectionRow(long, String!);
+    ctor public SectionRow(String!);
     method public final boolean isRenderedAsRowView();
   }
 
   public class ShadowOverlayContainer extends android.widget.FrameLayout {
-    ctor public ShadowOverlayContainer(android.content.Context);
-    ctor public ShadowOverlayContainer(android.content.Context, android.util.AttributeSet);
-    ctor public ShadowOverlayContainer(android.content.Context, android.util.AttributeSet, int);
+    ctor public ShadowOverlayContainer(android.content.Context!);
+    ctor public ShadowOverlayContainer(android.content.Context!, android.util.AttributeSet!);
+    ctor public ShadowOverlayContainer(android.content.Context!, android.util.AttributeSet!, int);
     method public int getShadowType();
-    method public android.view.View getWrappedView();
-    method public deprecated void initialize(boolean, boolean);
-    method public deprecated void initialize(boolean, boolean, boolean);
-    method public static void prepareParentForShadow(android.view.ViewGroup);
-    method public void setOverlayColor(int);
+    method public android.view.View! getWrappedView();
+    method @Deprecated public void initialize(boolean, boolean);
+    method @Deprecated public void initialize(boolean, boolean, boolean);
+    method public static void prepareParentForShadow(android.view.ViewGroup!);
+    method public void setOverlayColor(@ColorInt int);
     method public void setShadowFocusLevel(float);
     method public static boolean supportsDynamicShadow();
     method public static boolean supportsShadow();
     method public void useDynamicShadow();
     method public void useDynamicShadow(float, float);
     method public void useStaticShadow();
-    method public void wrap(android.view.View);
+    method public void wrap(android.view.View!);
     field public static final int SHADOW_DYNAMIC = 3; // 0x3
     field public static final int SHADOW_NONE = 1; // 0x1
     field public static final int SHADOW_STATIC = 2; // 0x2
   }
 
   public final class ShadowOverlayHelper {
-    method public androidx.leanback.widget.ShadowOverlayContainer createShadowOverlayContainer(android.content.Context);
+    method public androidx.leanback.widget.ShadowOverlayContainer! createShadowOverlayContainer(android.content.Context!);
     method public int getShadowType();
     method public boolean needsOverlay();
     method public boolean needsRoundedCorner();
     method public boolean needsWrapper();
-    method public void onViewCreated(android.view.View);
-    method public void prepareParentForShadow(android.view.ViewGroup);
-    method public static void setNoneWrapperOverlayColor(android.view.View, int);
-    method public static void setNoneWrapperShadowFocusLevel(android.view.View, float);
-    method public void setOverlayColor(android.view.View, int);
-    method public void setShadowFocusLevel(android.view.View, float);
+    method public void onViewCreated(android.view.View!);
+    method public void prepareParentForShadow(android.view.ViewGroup!);
+    method public static void setNoneWrapperOverlayColor(android.view.View!, int);
+    method public static void setNoneWrapperShadowFocusLevel(android.view.View!, float);
+    method public void setOverlayColor(android.view.View!, int);
+    method public void setShadowFocusLevel(android.view.View!, float);
     method public static boolean supportsDynamicShadow();
     method public static boolean supportsForeground();
     method public static boolean supportsRoundedCorner();
@@ -2907,104 +3018,104 @@
 
   public static final class ShadowOverlayHelper.Builder {
     ctor public ShadowOverlayHelper.Builder();
-    method public androidx.leanback.widget.ShadowOverlayHelper build(android.content.Context);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder keepForegroundDrawable(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder needsOverlay(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder needsRoundedCorner(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder needsShadow(boolean);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder options(androidx.leanback.widget.ShadowOverlayHelper.Options);
-    method public androidx.leanback.widget.ShadowOverlayHelper.Builder preferZOrder(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper! build(android.content.Context!);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! keepForegroundDrawable(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! needsOverlay(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! needsRoundedCorner(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! needsShadow(boolean);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! options(androidx.leanback.widget.ShadowOverlayHelper.Options!);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Builder! preferZOrder(boolean);
   }
 
   public static final class ShadowOverlayHelper.Options {
     ctor public ShadowOverlayHelper.Options();
-    method public androidx.leanback.widget.ShadowOverlayHelper.Options dynamicShadowZ(float, float);
+    method public androidx.leanback.widget.ShadowOverlayHelper.Options! dynamicShadowZ(float, float);
     method public float getDynamicShadowFocusedZ();
     method public float getDynamicShadowUnfocusedZ();
     method public int getRoundedCornerRadius();
-    method public androidx.leanback.widget.ShadowOverlayHelper.Options roundedCornerRadius(int);
-    field public static final androidx.leanback.widget.ShadowOverlayHelper.Options DEFAULT;
+    method public androidx.leanback.widget.ShadowOverlayHelper.Options! roundedCornerRadius(int);
+    field public static final androidx.leanback.widget.ShadowOverlayHelper.Options! DEFAULT;
   }
 
   public final class SinglePresenterSelector extends androidx.leanback.widget.PresenterSelector {
-    ctor public SinglePresenterSelector(androidx.leanback.widget.Presenter);
-    method public androidx.leanback.widget.Presenter getPresenter(java.lang.Object);
+    ctor public SinglePresenterSelector(androidx.leanback.widget.Presenter!);
+    method public androidx.leanback.widget.Presenter! getPresenter(Object!);
   }
 
   public class SparseArrayObjectAdapter extends androidx.leanback.widget.ObjectAdapter {
-    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.PresenterSelector);
-    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.Presenter);
+    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.PresenterSelector!);
+    ctor public SparseArrayObjectAdapter(androidx.leanback.widget.Presenter!);
     ctor public SparseArrayObjectAdapter();
     method public void clear(int);
     method public void clear();
-    method public java.lang.Object get(int);
-    method public int indexOf(java.lang.Object);
+    method public Object! get(int);
+    method public int indexOf(Object!);
     method public int indexOf(int);
-    method public java.lang.Object lookup(int);
+    method public Object! lookup(int);
     method public void notifyArrayItemRangeChanged(int, int);
-    method public void set(int, java.lang.Object);
+    method public void set(int, Object!);
     method public int size();
   }
 
   public class SpeechOrbView extends androidx.leanback.widget.SearchOrbView {
-    ctor public SpeechOrbView(android.content.Context);
-    ctor public SpeechOrbView(android.content.Context, android.util.AttributeSet);
-    ctor public SpeechOrbView(android.content.Context, android.util.AttributeSet, int);
-    method public void setListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setNotListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors);
+    ctor public SpeechOrbView(android.content.Context!);
+    ctor public SpeechOrbView(android.content.Context!, android.util.AttributeSet!);
+    ctor public SpeechOrbView(android.content.Context!, android.util.AttributeSet!, int);
+    method public void setListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setNotListeningOrbColors(androidx.leanback.widget.SearchOrbView.Colors!);
     method public void setSoundLevel(int);
     method public void showListening();
     method public void showNotListening();
   }
 
-  public abstract deprecated interface SpeechRecognitionCallback {
-    method public abstract void recognizeSpeech();
+  @Deprecated public interface SpeechRecognitionCallback {
+    method @Deprecated public void recognizeSpeech();
   }
 
   public class TitleHelper {
-    ctor public TitleHelper(android.view.ViewGroup, android.view.View);
-    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener getOnFocusSearchListener();
-    method public android.view.ViewGroup getSceneRoot();
-    method public android.view.View getTitleView();
+    ctor public TitleHelper(android.view.ViewGroup!, android.view.View!);
+    method public androidx.leanback.widget.BrowseFrameLayout.OnFocusSearchListener! getOnFocusSearchListener();
+    method public android.view.ViewGroup! getSceneRoot();
+    method public android.view.View! getTitleView();
     method public void showTitle(boolean);
   }
 
   public class TitleView extends android.widget.FrameLayout implements androidx.leanback.widget.TitleViewAdapter.Provider {
-    ctor public TitleView(android.content.Context);
-    ctor public TitleView(android.content.Context, android.util.AttributeSet);
-    ctor public TitleView(android.content.Context, android.util.AttributeSet, int);
+    ctor public TitleView(android.content.Context!);
+    ctor public TitleView(android.content.Context!, android.util.AttributeSet!);
+    ctor public TitleView(android.content.Context!, android.util.AttributeSet!, int);
     method public void enableAnimation(boolean);
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public android.view.View getSearchAffordanceView();
-    method public java.lang.CharSequence getTitle();
-    method public androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method public android.view.View! getSearchAffordanceView();
+    method public CharSequence! getTitle();
+    method public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnSearchClickedListener(android.view.View.OnClickListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setTitle(CharSequence!);
     method public void updateComponentsVisibility(int);
   }
 
   public abstract class TitleViewAdapter {
     ctor public TitleViewAdapter();
-    method public android.graphics.drawable.Drawable getBadgeDrawable();
-    method public androidx.leanback.widget.SearchOrbView.Colors getSearchAffordanceColors();
-    method public abstract android.view.View getSearchAffordanceView();
-    method public java.lang.CharSequence getTitle();
+    method public android.graphics.drawable.Drawable! getBadgeDrawable();
+    method public androidx.leanback.widget.SearchOrbView.Colors! getSearchAffordanceColors();
+    method public abstract android.view.View! getSearchAffordanceView();
+    method public CharSequence! getTitle();
     method public void setAnimationEnabled(boolean);
-    method public void setBadgeDrawable(android.graphics.drawable.Drawable);
-    method public void setOnSearchClickedListener(android.view.View.OnClickListener);
-    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors);
-    method public void setTitle(java.lang.CharSequence);
+    method public void setBadgeDrawable(android.graphics.drawable.Drawable!);
+    method public void setOnSearchClickedListener(android.view.View.OnClickListener!);
+    method public void setSearchAffordanceColors(androidx.leanback.widget.SearchOrbView.Colors!);
+    method public void setTitle(CharSequence!);
     method public void updateComponentsVisibility(int);
     field public static final int BRANDING_VIEW_VISIBLE = 2; // 0x2
     field public static final int FULL_VIEW_VISIBLE = 6; // 0x6
     field public static final int SEARCH_VIEW_VISIBLE = 4; // 0x4
   }
 
-  public static abstract interface TitleViewAdapter.Provider {
-    method public abstract androidx.leanback.widget.TitleViewAdapter getTitleViewAdapter();
+  public static interface TitleViewAdapter.Provider {
+    method public androidx.leanback.widget.TitleViewAdapter! getTitleViewAdapter();
   }
 
   public class VerticalGridPresenter extends androidx.leanback.widget.Presenter {
@@ -3012,133 +3123,108 @@
     ctor public VerticalGridPresenter(int);
     ctor public VerticalGridPresenter(int, boolean);
     method public final boolean areChildRoundedCornersEnabled();
-    method protected androidx.leanback.widget.VerticalGridPresenter.ViewHolder createGridViewHolder(android.view.ViewGroup);
-    method protected androidx.leanback.widget.ShadowOverlayHelper.Options createShadowOverlayOptions();
+    method protected androidx.leanback.widget.VerticalGridPresenter.ViewHolder! createGridViewHolder(android.view.ViewGroup!);
+    method protected androidx.leanback.widget.ShadowOverlayHelper.Options! createShadowOverlayOptions();
     method public final void enableChildRoundedCorners(boolean);
     method public final int getFocusZoomFactor();
     method public final boolean getKeepChildForeground();
     method public int getNumberOfColumns();
-    method public final androidx.leanback.widget.OnItemViewClickedListener getOnItemViewClickedListener();
-    method public final androidx.leanback.widget.OnItemViewSelectedListener getOnItemViewSelectedListener();
+    method public final androidx.leanback.widget.OnItemViewClickedListener! getOnItemViewClickedListener();
+    method public final androidx.leanback.widget.OnItemViewSelectedListener! getOnItemViewSelectedListener();
     method public final boolean getShadowEnabled();
-    method protected void initializeGridViewHolder(androidx.leanback.widget.VerticalGridPresenter.ViewHolder);
+    method protected void initializeGridViewHolder(androidx.leanback.widget.VerticalGridPresenter.ViewHolder!);
     method public final boolean isFocusDimmerUsed();
     method public boolean isUsingDefaultShadow();
-    method public boolean isUsingZOrder(android.content.Context);
-    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder, java.lang.Object);
-    method public final androidx.leanback.widget.VerticalGridPresenter.ViewHolder onCreateViewHolder(android.view.ViewGroup);
-    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder);
-    method public void setEntranceTransitionState(androidx.leanback.widget.VerticalGridPresenter.ViewHolder, boolean);
+    method public boolean isUsingZOrder(android.content.Context!);
+    method public void onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!, Object!);
+    method public final androidx.leanback.widget.VerticalGridPresenter.ViewHolder! onCreateViewHolder(android.view.ViewGroup!);
+    method public void onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder!);
+    method public void setEntranceTransitionState(androidx.leanback.widget.VerticalGridPresenter.ViewHolder!, boolean);
     method public final void setKeepChildForeground(boolean);
     method public void setNumberOfColumns(int);
-    method public final void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener);
-    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener);
+    method public final void setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener!);
+    method public final void setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener!);
     method public final void setShadowEnabled(boolean);
   }
 
   public static class VerticalGridPresenter.ViewHolder extends androidx.leanback.widget.Presenter.ViewHolder {
-    ctor public VerticalGridPresenter.ViewHolder(androidx.leanback.widget.VerticalGridView);
-    method public androidx.leanback.widget.VerticalGridView getGridView();
+    ctor public VerticalGridPresenter.ViewHolder(androidx.leanback.widget.VerticalGridView!);
+    method public androidx.leanback.widget.VerticalGridView! getGridView();
   }
 
   public class VerticalGridView extends androidx.leanback.widget.BaseGridView {
-    ctor public VerticalGridView(android.content.Context);
-    ctor public VerticalGridView(android.content.Context, android.util.AttributeSet);
-    ctor public VerticalGridView(android.content.Context, android.util.AttributeSet, int);
-    method protected void initAttributes(android.content.Context, android.util.AttributeSet);
+    ctor public VerticalGridView(android.content.Context!);
+    ctor public VerticalGridView(android.content.Context!, android.util.AttributeSet!);
+    ctor public VerticalGridView(android.content.Context!, android.util.AttributeSet!, int);
+    method protected void initAttributes(android.content.Context!, android.util.AttributeSet!);
     method public void setColumnWidth(int);
     method public void setNumColumns(int);
   }
 
-  public abstract interface ViewHolderTask {
-    method public abstract void run(androidx.recyclerview.widget.RecyclerView.ViewHolder);
+  public interface ViewHolderTask {
+    method public void run(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
   }
 
 }
 
 package androidx.leanback.widget.picker {
 
-  public class DatePicker extends androidx.leanback.widget.picker.Picker {
-    ctor public DatePicker(android.content.Context, android.util.AttributeSet);
-    ctor public DatePicker(android.content.Context, android.util.AttributeSet, int);
-    method public long getDate();
-    method public java.lang.String getDatePickerFormat();
-    method public long getMaxDate();
-    method public long getMinDate();
-    method public final void onColumnValueChanged(int, int);
-    method public void setDate(long);
-    method public void setDate(int, int, int, boolean);
-    method public void setDatePickerFormat(java.lang.String);
-    method public void setMaxDate(long);
-    method public void setMinDate(long);
-  }
-
   public class Picker extends android.widget.FrameLayout {
-    ctor public Picker(android.content.Context, android.util.AttributeSet);
-    ctor public Picker(android.content.Context, android.util.AttributeSet, int);
-    method public void addOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener);
+    ctor public Picker(android.content.Context!, android.util.AttributeSet!, int);
+    method public void addOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener!);
     method public float getActivatedVisibleItemCount();
-    method public androidx.leanback.widget.picker.PickerColumn getColumnAt(int);
+    method public androidx.leanback.widget.picker.PickerColumn! getColumnAt(int);
     method public int getColumnsCount();
     method protected int getPickerItemHeightPixels();
     method public final int getPickerItemLayoutId();
     method public final int getPickerItemTextViewId();
     method public int getSelectedColumn();
-    method public final deprecated java.lang.CharSequence getSeparator();
-    method public final java.util.List<java.lang.CharSequence> getSeparators();
+    method @Deprecated public final CharSequence! getSeparator();
+    method public final java.util.List<java.lang.CharSequence>! getSeparators();
     method public float getVisibleItemCount();
     method public void onColumnValueChanged(int, int);
-    method public void removeOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener);
+    method public void removeOnValueChangedListener(androidx.leanback.widget.picker.Picker.PickerValueListener!);
     method public void setActivatedVisibleItemCount(float);
-    method public void setColumnAt(int, androidx.leanback.widget.picker.PickerColumn);
+    method public void setColumnAt(int, androidx.leanback.widget.picker.PickerColumn!);
     method public void setColumnValue(int, int, boolean);
-    method public void setColumns(java.util.List<androidx.leanback.widget.picker.PickerColumn>);
-    method public final void setPickerItemLayoutId(int);
+    method public void setColumns(java.util.List<androidx.leanback.widget.picker.PickerColumn>!);
     method public final void setPickerItemTextViewId(int);
     method public void setSelectedColumn(int);
-    method public final void setSeparator(java.lang.CharSequence);
-    method public final void setSeparators(java.util.List<java.lang.CharSequence>);
+    method public final void setSeparator(CharSequence!);
+    method public final void setSeparators(java.util.List<java.lang.CharSequence>!);
     method public void setVisibleItemCount(float);
   }
 
-  public static abstract interface Picker.PickerValueListener {
-    method public abstract void onValueChanged(androidx.leanback.widget.picker.Picker, int);
+  public static interface Picker.PickerValueListener {
+    method public void onValueChanged(androidx.leanback.widget.picker.Picker!, int);
   }
 
   public class PickerColumn {
     ctor public PickerColumn();
     method public int getCount();
     method public int getCurrentValue();
-    method public java.lang.CharSequence getLabelFor(int);
-    method public java.lang.String getLabelFormat();
+    method public CharSequence! getLabelFor(int);
+    method public String! getLabelFormat();
     method public int getMaxValue();
     method public int getMinValue();
-    method public java.lang.CharSequence[] getStaticLabels();
+    method public CharSequence[]! getStaticLabels();
     method public void setCurrentValue(int);
-    method public void setLabelFormat(java.lang.String);
+    method public void setLabelFormat(String!);
     method public void setMaxValue(int);
     method public void setMinValue(int);
-    method public void setStaticLabels(java.lang.CharSequence[]);
-  }
-
-  public class PinPicker extends androidx.leanback.widget.picker.Picker {
-    ctor public PinPicker(android.content.Context, android.util.AttributeSet);
-    ctor public PinPicker(android.content.Context, android.util.AttributeSet, int);
-    method public java.lang.String getPin();
-    method public void resetPin();
-    method public void setNumberOfColumns(int);
+    method public void setStaticLabels(CharSequence[]!);
   }
 
   public class TimePicker extends androidx.leanback.widget.picker.Picker {
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet);
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet, int);
+    ctor public TimePicker(android.content.Context!, android.util.AttributeSet!);
+    ctor public TimePicker(android.content.Context!, android.util.AttributeSet!, int);
     method public int getHour();
     method public int getMinute();
     method public boolean is24Hour();
     method public boolean isPm();
-    method public void setHour(int);
+    method public void setHour(@IntRange(from=0, to=23) int);
     method public void setIs24Hour(boolean);
-    method public void setMinute(int);
+    method public void setMinute(@IntRange(from=0, to=59) int);
   }
 
 }
diff --git a/leanback/build.gradle b/leanback/build.gradle
index 5e79067..1d4b834 100644
--- a/leanback/build.gradle
+++ b/leanback/build.gradle
@@ -43,5 +43,4 @@
     description = "Android Support Leanback v17"
     failOnUncheckedWarnings = false
     failOnDeprecationWarnings = false
-    useMetalava = false
 }
diff --git a/media2/build.gradle b/media2/build.gradle
index b1c7a3e..b8e045c 100644
--- a/media2/build.gradle
+++ b/media2/build.gradle
@@ -17,12 +17,6 @@
     api(GUAVA_LISTENABLE_FUTURE)
     implementation(project(":concurrent:concurrent-futures"))
     compileOnly(CHECKER_FRAMEWORK)
-    if (System.getProperties()['idea.platform.prefix'] != null) {
-        // :media2-exoplayer merges the ExoPlayer JAR into its outputs, but Android Studio can't see
-        // the symbols, so depend on the JAR directly.
-        compileOnly fileTree(dir: "media2-exoplayer/src/main/libs",
-                include: ["exoplayer-media2.jar"])
-    }
     // Depend on media2-exoplayer so that the library groupId is set to match media2.
     implementation(project(":media2-exoplayer"))
 
diff --git a/media2/media2-exoplayer/build.gradle b/media2/media2-exoplayer/build.gradle
index 73b0e8e..a80f3e6 100644
--- a/media2/media2-exoplayer/build.gradle
+++ b/media2/media2-exoplayer/build.gradle
@@ -31,19 +31,8 @@
 
 dependencies {
     compileOnly(CHECKER_FRAMEWORK)
-}
 
-// Copy in classes from the prebuilt at the end of the java compilation task.
-afterEvaluate {
-    android.libraryVariants.all { variant ->
-        project.tasks.getByName("compile${variant.name.capitalize()}JavaWithJavac").doLast {
-            copy {
-              from zipTree("${projectDir}/src/main/libs/exoplayer-media2.jar")
-              into("${buildDir}/intermediates/javac/${variant.name}/" +
-                      "compile${variant.name.capitalize()}JavaWithJavac/classes")
-            }
-        }
-    }
+    compile files("src/main/libs/exoplayer-media2.jar")
 }
 
 supportLibrary {
diff --git a/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteButton.java b/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteButton.java
index 9a5c77c..08996da 100644
--- a/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteButton.java
+++ b/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteButton.java
@@ -40,6 +40,7 @@
 import androidx.core.graphics.drawable.DrawableCompat;
 import androidx.fragment.app.FragmentActivity;
 import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
 import androidx.mediarouter.R;
 import androidx.mediarouter.media.MediaRouteSelector;
 import androidx.mediarouter.media.MediaRouter;
@@ -286,7 +287,10 @@
             MediaRouteChooserDialogFragment f =
                     mDialogFactory.onCreateChooserDialogFragment();
             f.setRouteSelector(mSelector);
-            f.show(fm, CHOOSER_FRAGMENT_TAG);
+
+            FragmentTransaction transaction = fm.beginTransaction();
+            transaction.add(f, CHOOSER_FRAGMENT_TAG);
+            transaction.commitAllowingStateLoss();
         } else {
             if (fm.findFragmentByTag(CONTROLLER_FRAGMENT_TAG) != null) {
                 Log.w(TAG, "showDialog(): Route controller dialog already showing!");
@@ -295,7 +299,10 @@
             MediaRouteControllerDialogFragment f =
                     mDialogFactory.onCreateControllerDialogFragment();
             f.setRouteSelector(mSelector);
-            f.show(fm, CONTROLLER_FRAGMENT_TAG);
+
+            FragmentTransaction transaction = fm.beginTransaction();
+            transaction.add(f, CONTROLLER_FRAGMENT_TAG);
+            transaction.commitAllowingStateLoss();
         }
         return true;
     }
diff --git a/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteCastDialog.java b/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteCastDialog.java
index d6c4889..c8f81dd 100644
--- a/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteCastDialog.java
+++ b/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteCastDialog.java
@@ -152,7 +152,8 @@
             }
         }
     };
-    private RecyclerView mRecyclerView;
+    @SuppressWarnings("WeakerAccess") /* synthetic access */
+    RecyclerView mRecyclerView;
     @SuppressWarnings("WeakerAccess") /* synthetic access */
     RecyclerAdapter mAdapter;
     VolumeChangeListener mVolumeChangeListener;
@@ -781,7 +782,8 @@
         private final Drawable mSpeakerIcon;
         private final Drawable mSpeakerGroupIcon;
         private Item mGroupVolumeItem;
-        private boolean mShouldShowGroupVolume = false;
+        private final int mLayoutAnimationDurationMs;
+        private final Interpolator mAccelerateDecelerateInterpolator;
 
         RecyclerAdapter() {
             mItems = new ArrayList<>();
@@ -790,10 +792,16 @@
             mTvIcon = MediaRouterThemeHelper.getTvDrawableIcon(mContext);
             mSpeakerIcon = MediaRouterThemeHelper.getSpeakerDrawableIcon(mContext);
             mSpeakerGroupIcon = MediaRouterThemeHelper.getSpeakerGroupDrawableIcon(mContext);
+
+            Resources res = mContext.getResources();
+            mLayoutAnimationDurationMs = res.getInteger(
+                    R.integer.mr_cast_volume_slider_layout_animation_duration_ms);
+            mAccelerateDecelerateInterpolator = new AccelerateDecelerateInterpolator();
+
             setItems();
         }
 
-        private boolean isGroupVolumeNeeded() {
+        boolean isGroupVolumeNeeded() {
             if (mSelectedRoute instanceof MediaRouter.DynamicGroupInfo) {
                 // When selected route is a dynamic group route, group volume is needed when it has
                 // more than one member.
@@ -808,6 +816,69 @@
             return false;
         }
 
+        void animateLayoutHeight(final View view, int targetHeight) {
+            final int startValue = view.getLayoutParams().height;
+            final int endValue = targetHeight;
+
+            Animation anim = new Animation() {
+                @Override
+                protected void applyTransformation(float interpolatedTime, Transformation t) {
+                    int deltaHeight = (int) ((endValue - startValue) * interpolatedTime);
+                    setLayoutHeight(view, startValue + deltaHeight);
+                }
+            };
+
+            anim.setAnimationListener(new Animation.AnimationListener() {
+                @Override
+                public void onAnimationRepeat(Animation animation) {
+                }
+
+                @Override
+                public void onAnimationStart(Animation animation) {
+                    mIsAnimatingVolumeSliderLayout = true;
+                }
+
+                @Override
+                public void onAnimationEnd(Animation animation) {
+                    mIsAnimatingVolumeSliderLayout = false;
+                    updateViewsIfNeeded();
+                }
+            });
+            anim.setDuration(mLayoutAnimationDurationMs);
+            anim.setInterpolator(mAccelerateDecelerateInterpolator);
+            view.startAnimation(anim);
+        }
+
+        void mayUpdateGroupVolume(MediaRouter.RouteInfo route, boolean selected) {
+            List<MediaRouter.RouteInfo> members = getMemberRoutes();
+            int memberCount = members.size();
+
+            if (route instanceof MediaRouter.RouteGroup) {
+                MediaRouter.RouteGroup routeGroup = (MediaRouter.RouteGroup) route;
+                for (MediaRouter.RouteInfo changedRoute : routeGroup.getMemberRoutes()) {
+                    if (members.contains(changedRoute) != selected) {
+                        memberCount += selected ? 1 : -1;
+                    }
+                }
+            } else {
+                memberCount += selected ? 1 : -1;
+            }
+
+            boolean wasShown = isGroupVolumeNeeded();
+            boolean shouldShow = memberCount >= 2;
+
+            if (wasShown != shouldShow) {
+                RecyclerView.ViewHolder viewHolder =
+                        mRecyclerView.findViewHolderForAdapterPosition(0);
+
+                if (viewHolder instanceof GroupVolumeViewHolder) {
+                    GroupVolumeViewHolder groupVolumeHolder = (GroupVolumeViewHolder) viewHolder;
+                    animateLayoutHeight(groupVolumeHolder.itemView, shouldShow
+                            ? groupVolumeHolder.getExpandedHeight() : 0);
+                }
+            }
+        }
+
         // Create a list of items with mMemberRoutes and add them to mItems
         void setItems() {
             mItems.clear();
@@ -880,7 +951,6 @@
             // Get ungroupable routes which are positioning at groupable routes section.
             // This can happen when dynamically added routes can't be grouped with some of other
             // routes at groupable routes section.
-            mShouldShowGroupVolume = isGroupVolumeNeeded();
             mUngroupableRoutes.clear();
             mUngroupableRoutes.addAll(MediaRouteDialogHelper.getItemsRemoved(mGroupableRoutes,
                     getGroupableRoutes()));
@@ -953,7 +1023,7 @@
 
         @Override
         public int getItemCount() {
-            return mItems.size() + (mShouldShowGroupVolume ? 1 : 0);
+            return mItems.size() + 1;
         }
 
         Drawable getIconDrawable(MediaRouter.RouteInfo route) {
@@ -996,14 +1066,10 @@
         }
 
         public Item getItem(int position) {
-            if (mShouldShowGroupVolume) {
-                if (position == 0) {
-                    return mGroupVolumeItem;
-                } else {
-                    return mItems.get(position - 1);
-                }
+            if (position == 0) {
+                return mGroupVolumeItem;
             } else {
-                return mItems.get(position);
+                return mItems.get(position - 1);
             }
         }
 
@@ -1031,19 +1097,32 @@
 
         private class GroupVolumeViewHolder extends MediaRouteVolumeSliderHolder {
             private final TextView mTextView;
+            private final int mExpandedHeight;
 
             GroupVolumeViewHolder(View itemView) {
                 super(itemView, (ImageButton) itemView.findViewById(R.id.mr_cast_mute_button),
                         (MediaRouteVolumeSlider) itemView.findViewById(R.id.mr_cast_volume_slider));
                 mTextView = itemView.findViewById(R.id.mr_group_volume_route_name);
+
+                Resources res = mContext.getResources();
+                DisplayMetrics metrics = res.getDisplayMetrics();
+                TypedValue value = new TypedValue();
+                res.getValue(R.dimen.mr_dynamic_volume_group_list_item_height, value, true);
+                mExpandedHeight = (int) value.getDimension(metrics);
             }
 
             public void bindGroupVolumeViewHolder(Item item) {
+                setLayoutHeight(itemView, isGroupVolumeNeeded() ? mExpandedHeight : 0);
+
                 MediaRouter.RouteInfo route = (MediaRouter.RouteInfo) item.getData();
 
                 super.bindRouteVolumeSliderHolder(route);
                 mTextView.setText(route.getName());
             }
+
+            public int getExpandedHeight() {
+                return mExpandedHeight;
+            }
         }
 
         private class HeaderViewHolder extends RecyclerView.ViewHolder {
@@ -1072,63 +1151,38 @@
             final float mDisabledAlpha;
             final int mExpandedLayoutHeight;
             final int mCollapsedLayoutHeight;
-            private final int mLayoutAnimationDurationMs;
-            private Interpolator mAccelerateDecelerateInterpolator;
 
-            final View.OnClickListener mCheckBoxClickListener = new View.OnClickListener() {
+            final View.OnClickListener mViewClickListener = new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    // Disable views not to be clicked twice
-                    // They will be enabled when the view is refreshed
-                    mCheckBox.setEnabled(false);
-                    mItemView.setEnabled(false);
-                    if (isSelected(mRoute)) {
-                        mCheckBox.setChecked(false);
-                        mRoute.unselectFromGroup();
-                        animateLayoutHeight(mVolumeSliderLayout, mCollapsedLayoutHeight);
-                    } else {
-                        mCheckBox.setChecked(true);
-                        // show indeterminate progress
-                        mImageView.setVisibility(View.INVISIBLE);
-                        mProgressBar.setVisibility(View.VISIBLE);
+                    // Toggle it's state
+                    boolean selected = !isSelected(mRoute);
+                    boolean isGroup = mRoute instanceof MediaRouter.RouteGroup;
+
+                    if (selected) {
                         mRoute.selectIntoGroup();
-                        animateLayoutHeight(mVolumeSliderLayout, mExpandedLayoutHeight);
+                    } else {
+                        mRoute.unselectFromGroup();
                     }
+                    showSelectingProgress(selected, !isGroup);
+                    if (isGroup) {
+                        MediaRouter.RouteGroup routeGroup = (MediaRouter.RouteGroup) mRoute;
+                        for (MediaRouter.RouteInfo route : routeGroup.getMemberRoutes()) {
+                            if (getMemberRoutes().contains(route) != selected) {
+                                MediaRouteVolumeSliderHolder volumeSliderHolder =
+                                        mVolumeSliderHolderMap.get(route.getId());
+                                if (volumeSliderHolder instanceof RouteViewHolder) {
+                                    RouteViewHolder routeViewHolder =
+                                            (RouteViewHolder) volumeSliderHolder;
+                                    routeViewHolder.showSelectingProgress(selected, true);
+                                }
+                            }
+                        }
+                    }
+                    mayUpdateGroupVolume(mRoute, selected);
                 }
             };
 
-            void animateLayoutHeight(final View view, int targetHeight) {
-                final int startValue = view.getLayoutParams().height;
-                final int endValue = targetHeight;
-                Animation anim = new Animation() {
-                    @Override
-                    protected void applyTransformation(float interpolatedTime, Transformation t) {
-                        int deltaHeight = (int) ((endValue - startValue) * interpolatedTime);
-                        setLayoutHeight(view, startValue + deltaHeight);
-                    }
-                };
-
-                anim.setAnimationListener(new Animation.AnimationListener() {
-                    @Override
-                    public void onAnimationRepeat(Animation animation) {
-                    }
-
-                    @Override
-                    public void onAnimationStart(Animation animation) {
-                        mIsAnimatingVolumeSliderLayout = true;
-                    }
-
-                    @Override
-                    public void onAnimationEnd(Animation animation) {
-                        mIsAnimatingVolumeSliderLayout = false;
-                        updateViewsIfNeeded();
-                    }
-                });
-                anim.setDuration(mLayoutAnimationDurationMs);
-                anim.setInterpolator(mAccelerateDecelerateInterpolator);
-                view.startAnimation(anim);
-            }
-
             RouteViewHolder(View itemView) {
                 super(itemView, (ImageButton) itemView.findViewById(R.id.mr_cast_mute_button),
                         (MediaRouteVolumeSlider) itemView.findViewById(R.id.mr_cast_volume_slider));
@@ -1150,9 +1204,6 @@
                 res.getValue(R.dimen.mr_dynamic_dialog_row_height, value, true);
                 mExpandedLayoutHeight = (int) value.getDimension(metrics);
                 mCollapsedLayoutHeight = 0;
-                mLayoutAnimationDurationMs = res.getInteger(
-                        R.integer.mr_cast_volume_slider_layout_animation_duration_ms);
-                mAccelerateDecelerateInterpolator = new AccelerateDecelerateInterpolator();
             }
 
             boolean isSelected(MediaRouter.RouteInfo route) {
@@ -1200,8 +1251,8 @@
                     mCheckBox.setEnabled(enabled);
                     mMuteButton.setEnabled(enabled);
                     mVolumeSlider.setEnabled(enabled);
-                    mItemView.setOnClickListener(mCheckBoxClickListener);
-                    mCheckBox.setOnClickListener(mCheckBoxClickListener);
+                    mItemView.setOnClickListener(mViewClickListener);
+                    mCheckBox.setOnClickListener(mViewClickListener);
                     setLayoutHeight(mVolumeSliderLayout, selected
                             ? mExpandedLayoutHeight : mCollapsedLayoutHeight);
                     mItemView.setAlpha(enabled ? 1.0f : mDisabledAlpha);
@@ -1213,6 +1264,22 @@
                     mItemView.setAlpha(1.0f);
                 }
             }
+
+            void showSelectingProgress(boolean selected, boolean shouldChangeHeight) {
+                // Disable views not to be clicked twice
+                // They will be enabled when the view is refreshed
+                mCheckBox.setEnabled(false);
+                mItemView.setEnabled(false);
+                mCheckBox.setChecked(selected);
+                if (selected) {
+                    mImageView.setVisibility(View.INVISIBLE);
+                    mProgressBar.setVisibility(View.VISIBLE);
+                }
+                if (shouldChangeHeight) {
+                    animateLayoutHeight(mVolumeSliderLayout, selected
+                            ? mExpandedLayoutHeight : mCollapsedLayoutHeight);
+                }
+            }
         }
 
         private class GroupViewHolder extends RecyclerView.ViewHolder {
diff --git a/mediarouter/src/main/res/layout/mr_cast_group_volume_item.xml b/mediarouter/src/main/res/layout/mr_cast_group_volume_item.xml
index b04b5aa..78f8de0 100644
--- a/mediarouter/src/main/res/layout/mr_cast_group_volume_item.xml
+++ b/mediarouter/src/main/res/layout/mr_cast_group_volume_item.xml
@@ -17,11 +17,12 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
               android:layout_width="match_parent"
-              android:layout_height="wrap_content"
+              android:layout_height="@dimen/mr_dynamic_volume_group_list_item_height"
               android:orientation="vertical">
     <TextView android:id="@+id/mr_group_volume_route_name"
               android:layout_width="match_parent"
-              android:layout_height="wrap_content"
+              android:layout_height="match_parent"
+              android:layout_weight="1"
               android:paddingTop="16dp"
               android:paddingLeft="16dp"
               android:paddingRight="16dp"
diff --git a/mediarouter/src/main/res/values/dimens.xml b/mediarouter/src/main/res/values/dimens.xml
index 2cefb6d..b7a91d7 100644
--- a/mediarouter/src/main/res/values/dimens.xml
+++ b/mediarouter/src/main/res/values/dimens.xml
@@ -48,6 +48,8 @@
 
     <!-- MediaRouteDevicePickerDialog/MediaRouteCastDialog's common dimensions. -->
     <eat-comment />
+    <!-- Height of group volume item in dynamic group -->
+    <dimen name="mr_dynamic_volume_group_list_item_height">80dp</dimen>
     <!-- Height of row. -->
     <dimen name="mr_dynamic_dialog_row_height">48dp</dimen>
 
diff --git a/navigation/fragment/ktx/src/androidTest/java/androidx/navigation/fragment/FragmentTest.kt b/navigation/fragment/ktx/src/androidTest/java/androidx/navigation/fragment/FragmentTest.kt
index b1142f4..00bea58 100644
--- a/navigation/fragment/ktx/src/androidTest/java/androidx/navigation/fragment/FragmentTest.kt
+++ b/navigation/fragment/ktx/src/androidTest/java/androidx/navigation/fragment/FragmentTest.kt
@@ -31,7 +31,7 @@
 class ActivityTest {
     @get:Rule val activityRule = ActivityTestRule<TestActivity>(TestActivity::class.java)
     private val fragmentManager get() = activityRule.activity.supportFragmentManager
-    private val contentFragment get() = fragmentManager.findFragmentById(android.R.id.content)
+    private val contentFragment get() = fragmentManager.findFragmentById(android.R.id.content)!!
 
     @UiThreadTest
     @Test fun findNavController() {
diff --git a/navigation/fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt b/navigation/fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
index a8f3e06..0613516 100644
--- a/navigation/fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
+++ b/navigation/fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
@@ -81,7 +81,7 @@
         val fragment = fragmentManager.findFragmentById(R.id.container)
         assertNotNull("Fragment should be added", fragment)
         assertEquals("Fragment should be the correct type",
-                EmptyFragment::class.java, fragment::class.java)
+                EmptyFragment::class.java, fragment!!::class.java)
         assertEquals("Fragment should be the primary navigation Fragment",
                 fragment, fragmentManager.primaryNavigationFragment)
     }
@@ -101,7 +101,7 @@
         val fragment = fragmentManager.findFragmentById(R.id.container)
         assertNotNull("Fragment should be added", fragment)
         assertEquals("Fragment should be the correct type",
-                EmptyFragment::class.java, fragment::class.java)
+                EmptyFragment::class.java, fragment!!::class.java)
         assertEquals("Fragment should be the primary navigation Fragment",
                 fragment, fragmentManager.primaryNavigationFragment)
 
@@ -113,7 +113,7 @@
         val replacementFragment = fragmentManager.findFragmentById(R.id.container)
         assertNotNull("Replacement Fragment should be added", replacementFragment)
         assertEquals("Replacement Fragment should be the correct type",
-                EmptyFragment::class.java, replacementFragment::class.java)
+                EmptyFragment::class.java, replacementFragment!!::class.java)
         assertEquals("Replacement Fragment should be the primary navigation Fragment",
                 replacementFragment, fragmentManager.primaryNavigationFragment)
     }
@@ -215,7 +215,7 @@
         assertNotEquals("Replacement should be a new instance", fragment,
                 replacementFragment)
         assertEquals("Old instance should be destroyed", Lifecycle.State.DESTROYED,
-                fragment.lifecycle.currentState)
+                fragment!!.lifecycle.currentState)
     }
 
     @UiThreadTest
@@ -249,7 +249,7 @@
         assertNotEquals("Replacement should be a new instance", fragment,
                 replacementFragment)
         assertEquals("Old instance should be destroyed", Lifecycle.State.DESTROYED,
-                fragment.lifecycle.currentState)
+                fragment!!.lifecycle.currentState)
     }
 
     @UiThreadTest
@@ -445,7 +445,7 @@
         var fragment = fragmentManager.findFragmentById(R.id.container)
         assertNotNull("Fragment should be added", fragment)
         assertEquals("Fragment should be the correct type",
-                EmptyFragment::class.java, fragment::class.java)
+                EmptyFragment::class.java, fragment!!::class.java)
         assertEquals("Fragment should be the primary navigation Fragment",
                 fragment, fragmentManager.primaryNavigationFragment)
 
@@ -457,7 +457,7 @@
         var replacementFragment = fragmentManager.findFragmentById(R.id.container)
         assertNotNull("Replacement Fragment should be added", replacementFragment)
         assertEquals("Replacement Fragment should be the correct type",
-                EmptyFragment::class.java, replacementFragment::class.java)
+                EmptyFragment::class.java, replacementFragment!!::class.java)
         assertEquals("Replacement Fragment should be the primary navigation Fragment",
                 replacementFragment, fragmentManager.primaryNavigationFragment)
 
diff --git a/navigation/integration-tests/testapp/src/main/java/androidx/navigation/testapp/NavigationActivity.kt b/navigation/integration-tests/testapp/src/main/java/androidx/navigation/testapp/NavigationActivity.kt
index 4171b9c..03a7fbe 100644
--- a/navigation/integration-tests/testapp/src/main/java/androidx/navigation/testapp/NavigationActivity.kt
+++ b/navigation/integration-tests/testapp/src/main/java/androidx/navigation/testapp/NavigationActivity.kt
@@ -71,7 +71,7 @@
         val bottomNavView = findViewById<BottomNavigationView>(R.id.bottom_nav_view)
         bottomNavView?.setupWithNavController(navController)
 
-        navController.addOnNavigatedListener { _, destination, _ ->
+        navController.addOnDestinationChangedListener { _, destination, _ ->
             val dest: String = try {
                 resources.getResourceName(destination.id)
             } catch (e: Resources.NotFoundException) {
diff --git a/navigation/runtime/api/1.0.0-alpha08.txt b/navigation/runtime/api/1.0.0-alpha08.txt
index a8ec6b9..91b9f286 100644
--- a/navigation/runtime/api/1.0.0-alpha08.txt
+++ b/navigation/runtime/api/1.0.0-alpha08.txt
@@ -37,7 +37,7 @@
 
   public final class NavController {
     ctor public NavController(android.content.Context);
-    method public void addOnNavigatedListener(androidx.navigation.NavController.OnNavigatedListener);
+    method public void addOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener);
     method public androidx.navigation.NavDeepLinkBuilder createDeepLink();
     method public androidx.navigation.NavDestination? getCurrentDestination();
     method public androidx.navigation.NavGraph getGraph();
@@ -54,7 +54,7 @@
     method public boolean navigateUp();
     method public boolean popBackStack();
     method public boolean popBackStack(@IdRes int, boolean);
-    method public void removeOnNavigatedListener(androidx.navigation.NavController.OnNavigatedListener);
+    method public void removeOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener);
     method public void restoreState(android.os.Bundle?);
     method public android.os.Bundle? saveState();
     method public void setGraph(@NavigationRes int);
@@ -64,8 +64,8 @@
     field public static final String KEY_DEEP_LINK_INTENT = "android-support-nav:controller:deepLinkIntent";
   }
 
-  public static interface NavController.OnNavigatedListener {
-    method public void onNavigated(androidx.navigation.NavController, androidx.navigation.NavDestination, android.os.Bundle?);
+  public static interface NavController.OnDestinationChangedListener {
+    method public void onDestinationChanged(androidx.navigation.NavController, androidx.navigation.NavDestination, android.os.Bundle?);
   }
 
   public final class NavDeepLinkBuilder {
diff --git a/navigation/runtime/api/current.txt b/navigation/runtime/api/current.txt
index a8ec6b9..91b9f286 100644
--- a/navigation/runtime/api/current.txt
+++ b/navigation/runtime/api/current.txt
@@ -37,7 +37,7 @@
 
   public final class NavController {
     ctor public NavController(android.content.Context);
-    method public void addOnNavigatedListener(androidx.navigation.NavController.OnNavigatedListener);
+    method public void addOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener);
     method public androidx.navigation.NavDeepLinkBuilder createDeepLink();
     method public androidx.navigation.NavDestination? getCurrentDestination();
     method public androidx.navigation.NavGraph getGraph();
@@ -54,7 +54,7 @@
     method public boolean navigateUp();
     method public boolean popBackStack();
     method public boolean popBackStack(@IdRes int, boolean);
-    method public void removeOnNavigatedListener(androidx.navigation.NavController.OnNavigatedListener);
+    method public void removeOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener);
     method public void restoreState(android.os.Bundle?);
     method public android.os.Bundle? saveState();
     method public void setGraph(@NavigationRes int);
@@ -64,8 +64,8 @@
     field public static final String KEY_DEEP_LINK_INTENT = "android-support-nav:controller:deepLinkIntent";
   }
 
-  public static interface NavController.OnNavigatedListener {
-    method public void onNavigated(androidx.navigation.NavController, androidx.navigation.NavDestination, android.os.Bundle?);
+  public static interface NavController.OnDestinationChangedListener {
+    method public void onDestinationChanged(androidx.navigation.NavController, androidx.navigation.NavDestination, android.os.Bundle?);
   }
 
   public final class NavDeepLinkBuilder {
diff --git a/navigation/runtime/src/main/java/androidx/navigation/NavController.java b/navigation/runtime/src/main/java/androidx/navigation/NavController.java
index 7924c71..b0933ba 100644
--- a/navigation/runtime/src/main/java/androidx/navigation/NavController.java
+++ b/navigation/runtime/src/main/java/androidx/navigation/NavController.java
@@ -132,21 +132,21 @@
                         popBackStack();
                     }
                     if (!mBackStack.isEmpty()) {
-                        dispatchOnNavigated(mBackStack.peekLast());
+                        dispatchOnCurrentDestinationChanged(mBackStack.peekLast());
                     }
                 }
             };
 
-    private final CopyOnWriteArrayList<OnNavigatedListener> mOnNavigatedListeners =
-            new CopyOnWriteArrayList<>();
+    private final CopyOnWriteArrayList<OnDestinationChangedListener>
+            mOnDestinationChangedListeners = new CopyOnWriteArrayList<>();
 
     /**
-     * OnNavigatorNavigatedListener receives a callback when the associated controller
-     * navigates to a new destination.
+     * OnDestinationChangedListener receives a callback when the
+     * {@link #getCurrentDestination()} or its arguments change.
      */
-    public interface OnNavigatedListener {
+    public interface OnDestinationChangedListener {
         /**
-         * Callback for when the controller navigates to a new destination.
+         * Callback for when the {@link #getCurrentDestination()} or its arguments change.
          * This navigation may be to a destination that has not been seen before, or one that
          * was previously on the back stack. This method is called after navigation is complete,
          * but associated transitions may still be playing.
@@ -155,8 +155,8 @@
          * @param destination the new destination
          * @param arguments the arguments passed to the destination
          */
-        void onNavigated(@NonNull NavController controller, @NonNull NavDestination destination,
-                @Nullable Bundle arguments);
+        void onDestinationChanged(@NonNull NavController controller,
+                @NonNull NavDestination destination, @Nullable Bundle arguments);
     }
 
     /**
@@ -210,31 +210,32 @@
     }
 
     /**
-     * Adds an {@link OnNavigatedListener} to this controller to receive events when
-     * the controller navigates to a new destination.
+     * Adds an {@link OnDestinationChangedListener} to this controller to receive a callback
+     * whenever the {@link #getCurrentDestination()} or its arguments change.
      *
      * <p>The current destination, if any, will be immediately sent to your listener.</p>
      *
      * @param listener the listener to receive events
      */
-    public void addOnNavigatedListener(@NonNull OnNavigatedListener listener) {
+    public void addOnDestinationChangedListener(@NonNull OnDestinationChangedListener listener) {
         // Inform the new listener of our current state, if any
         if (!mBackStack.isEmpty()) {
             NavBackStackEntry backStackEntry = mBackStack.peekLast();
-            listener.onNavigated(this, backStackEntry.getDestination(),
+            listener.onDestinationChanged(this, backStackEntry.getDestination(),
                     backStackEntry.getArguments());
         }
-        mOnNavigatedListeners.add(listener);
+        mOnDestinationChangedListeners.add(listener);
     }
 
     /**
-     * Removes an {@link OnNavigatedListener} from this controller. It will no longer
-     * receive navigation events.
+     * Removes an {@link OnDestinationChangedListener} from this controller.
+     * It will no longer receive callbacks.
      *
      * @param listener the listener to remove
      */
-    public void removeOnNavigatedListener(@NonNull OnNavigatedListener listener) {
-        mOnNavigatedListeners.remove(listener);
+    public void removeOnDestinationChangedListener(
+            @NonNull OnDestinationChangedListener listener) {
+        mOnDestinationChangedListeners.remove(listener);
     }
 
     /**
@@ -311,7 +312,7 @@
             }
         }
         if (!mBackStack.isEmpty()) {
-            dispatchOnNavigated(mBackStack.peekLast());
+            dispatchOnCurrentDestinationChanged(mBackStack.peekLast());
         }
         return popped;
     }
@@ -359,9 +360,10 @@
     }
 
     @SuppressWarnings("WeakerAccess") /* synthetic access */
-    void dispatchOnNavigated(NavBackStackEntry backStackEntry) {
-        for (OnNavigatedListener listener : mOnNavigatedListeners) {
-            listener.onNavigated(this, backStackEntry.getDestination(),
+    void dispatchOnCurrentDestinationChanged(NavBackStackEntry backStackEntry) {
+        for (OnDestinationChangedListener listener :
+                mOnDestinationChangedListeners) {
+            listener.onDestinationChanged(this, backStackEntry.getDestination(),
                     backStackEntry.getArguments());
         }
     }
@@ -748,7 +750,7 @@
             // And finally, add the new destination
             NavBackStackEntry newBackStackEntry = new NavBackStackEntry(newDest, finalArgs);
             mBackStack.add(newBackStackEntry);
-            dispatchOnNavigated(newBackStackEntry);
+            dispatchOnCurrentDestinationChanged(newBackStackEntry);
         }
     }
 
diff --git a/navigation/safe-args-generator/build.gradle b/navigation/safe-args-generator/build.gradle
index 2c086b7..e14057a 100644
--- a/navigation/safe-args-generator/build.gradle
+++ b/navigation/safe-args-generator/build.gradle
@@ -39,7 +39,7 @@
     testCompile(GOOGLE_COMPILE_TESTING)
     def logger = new com.android.build.gradle.internal.LoggerWrapper(project.logger)
     def sdkHandler = new com.android.build.gradle.internal.SdkHandler(project, logger)
-    testCompile fileTree(dir: "${sdkHandler.sdkFolder}/platforms/android-$SupportConfig.CURRENT_SDK_VERSION/",
+    testCompile fileTree(dir: "${sdkHandler.sdkFolder}/platforms/$SupportConfig.COMPILE_SDK_VERSION/",
             include : "android.jar")
     testCompile fileTree(dir: "${new File(project(":navigation:navigation-common").buildDir, "libJar")}",
             include : "*.jar")
diff --git a/navigation/safe-args-gradle-plugin/build.gradle b/navigation/safe-args-gradle-plugin/build.gradle
index 95a0b1f..044f62d 100644
--- a/navigation/safe-args-gradle-plugin/build.gradle
+++ b/navigation/safe-args-gradle-plugin/build.gradle
@@ -41,14 +41,14 @@
 }
 
 task generateSdkResource() {
-    inputs.property("compileSdkVersion", SupportConfig.CURRENT_SDK_VERSION)
+    inputs.property("compileSdkVersion", SupportConfig.TARGET_SDK_VERSION)
     inputs.property("buildToolsVersion", SupportConfig.BUILD_TOOLS_VERSION)
     outputs.dir(generatedResources)
     doLast {
         // Properties.write will have a timestamp, that invalidates the task,
         // so we don't use it and write a file manually
         new File(generatedResources, "sdk.prop").withWriter('UTF-8') { writer ->
-            writer.write("compileSdkVersion=$SupportConfig.CURRENT_SDK_VERSION\n")
+            writer.write("compileSdkVersion=$SupportConfig.TARGET_SDK_VERSION\n")
             writer.write("buildToolsVersion=$SupportConfig.BUILD_TOOLS_VERSION\n")
         }
     }
diff --git a/navigation/ui/api/1.0.0-alpha08.txt b/navigation/ui/api/1.0.0-alpha08.txt
index 1a1dcba..b9d5f97 100644
--- a/navigation/ui/api/1.0.0-alpha08.txt
+++ b/navigation/ui/api/1.0.0-alpha08.txt
@@ -8,6 +8,7 @@
 
   public static final class AppBarConfiguration.Builder {
     ctor public AppBarConfiguration.Builder(androidx.navigation.NavGraph);
+    ctor public AppBarConfiguration.Builder(android.view.Menu);
     ctor public AppBarConfiguration.Builder(int...);
     ctor public AppBarConfiguration.Builder(java.util.Set<java.lang.Integer>);
     method public androidx.navigation.ui.AppBarConfiguration build();
diff --git a/navigation/ui/api/current.txt b/navigation/ui/api/current.txt
index 1a1dcba..b9d5f97 100644
--- a/navigation/ui/api/current.txt
+++ b/navigation/ui/api/current.txt
@@ -8,6 +8,7 @@
 
   public static final class AppBarConfiguration.Builder {
     ctor public AppBarConfiguration.Builder(androidx.navigation.NavGraph);
+    ctor public AppBarConfiguration.Builder(android.view.Menu);
     ctor public AppBarConfiguration.Builder(int...);
     ctor public AppBarConfiguration.Builder(java.util.Set<java.lang.Integer>);
     method public androidx.navigation.ui.AppBarConfiguration build();
diff --git a/navigation/ui/ktx/api/1.0.0-alpha08.txt b/navigation/ui/ktx/api/1.0.0-alpha08.txt
index b96f3e8..e2aa356 100644
--- a/navigation/ui/ktx/api/1.0.0-alpha08.txt
+++ b/navigation/ui/ktx/api/1.0.0-alpha08.txt
@@ -10,6 +10,7 @@
   public final class AppBarConfigurationKt {
     ctor public AppBarConfigurationKt();
     method public static androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(androidx.navigation.NavGraph navGraph, android.support.v4.widget.DrawerLayout? drawerLayout = null);
+    method public static androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(android.view.Menu topLevelMenu, android.support.v4.widget.DrawerLayout? drawerLayout = null);
     method public static androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(java.util.Set<java.lang.Integer> topLevelDestinationIds, android.support.v4.widget.DrawerLayout? drawerLayout = null);
   }
 
diff --git a/navigation/ui/ktx/api/current.txt b/navigation/ui/ktx/api/current.txt
index b96f3e8..e2aa356 100644
--- a/navigation/ui/ktx/api/current.txt
+++ b/navigation/ui/ktx/api/current.txt
@@ -10,6 +10,7 @@
   public final class AppBarConfigurationKt {
     ctor public AppBarConfigurationKt();
     method public static androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(androidx.navigation.NavGraph navGraph, android.support.v4.widget.DrawerLayout? drawerLayout = null);
+    method public static androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(android.view.Menu topLevelMenu, android.support.v4.widget.DrawerLayout? drawerLayout = null);
     method public static androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(java.util.Set<java.lang.Integer> topLevelDestinationIds, android.support.v4.widget.DrawerLayout? drawerLayout = null);
   }
 
diff --git a/navigation/ui/ktx/src/main/java/androidx/navigation/ui/AppBarConfiguration.kt b/navigation/ui/ktx/src/main/java/androidx/navigation/ui/AppBarConfiguration.kt
index c26318d..c6cd8ba 100644
--- a/navigation/ui/ktx/src/main/java/androidx/navigation/ui/AppBarConfiguration.kt
+++ b/navigation/ui/ktx/src/main/java/androidx/navigation/ui/AppBarConfiguration.kt
@@ -19,6 +19,7 @@
 package androidx.navigation.ui
 
 import android.support.v4.widget.DrawerLayout
+import android.view.Menu
 import androidx.navigation.NavGraph
 
 /**
@@ -48,6 +49,27 @@
  * [android.support.design.widget.CollapsingToolbarLayout], and
  * [android.support.v7.app.ActionBar].
  *
+ * @param topLevelMenu A Menu containing MenuItems corresponding with the destinations
+ *                     considered at the top level of your information hierarchy.
+ *                     The Up button will not be displayed when on these destinations.
+ * @param drawerLayout The DrawerLayout that should be toggled from the Navigation button. The
+ *                     the Navigation button will show a drawer symbol when it is not being shown
+ *                     as an Up button.
+ */
+@Suppress("FunctionName") /* Acts like a constructor */
+inline fun AppBarConfiguration(
+    topLevelMenu: Menu,
+    drawerLayout: DrawerLayout? = null
+) = AppBarConfiguration.Builder(topLevelMenu)
+    .setDrawerLayout(drawerLayout)
+    .build()
+
+/**
+ * Configuration options for [NavigationUI] methods that interact with implementations of the
+ * app bar pattern such as [android.support.v7.widget.Toolbar],
+ * [android.support.design.widget.CollapsingToolbarLayout], and
+ * [android.support.v7.app.ActionBar].
+ *
  * @param topLevelDestinationIds The set of destinations by id considered at the top level
  *                               of your information hierarchy. The Up button will not be
  *                               displayed when on these destinations.
diff --git a/navigation/ui/src/main/java/androidx/navigation/ui/AbstractAppBarOnNavigatedListener.java b/navigation/ui/src/main/java/androidx/navigation/ui/AbstractAppBarOnDestinationChangedListener.java
similarity index 89%
rename from navigation/ui/src/main/java/androidx/navigation/ui/AbstractAppBarOnNavigatedListener.java
rename to navigation/ui/src/main/java/androidx/navigation/ui/AbstractAppBarOnDestinationChangedListener.java
index 8dd2216..21f5f9a 100644
--- a/navigation/ui/src/main/java/androidx/navigation/ui/AbstractAppBarOnNavigatedListener.java
+++ b/navigation/ui/src/main/java/androidx/navigation/ui/AbstractAppBarOnDestinationChangedListener.java
@@ -37,14 +37,14 @@
 import java.util.regex.Pattern;
 
 /**
- * The abstract OnNavigatedListener for keeping any type of app bar updated. This handles both
- * updating the title and updating the Up Indicator, transitioning between the drawer icon and
- * up arrow as needed.
+ * The abstract OnDestinationChangedListener for keeping any type of app bar updated.
+ * This handles both updating the title and updating the Up Indicator, transitioning between
+ * the drawer icon and up arrow as needed.
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
-abstract class AbstractAppBarOnNavigatedListener
-        implements NavController.OnNavigatedListener {
+abstract class AbstractAppBarOnDestinationChangedListener
+        implements NavController.OnDestinationChangedListener {
     private final Context mContext;
     private final Set<Integer> mTopLevelDestinations;
     @Nullable
@@ -52,7 +52,7 @@
     private DrawerArrowDrawable mArrowDrawable;
     private ValueAnimator mAnimator;
 
-    AbstractAppBarOnNavigatedListener(@NonNull Context context,
+    AbstractAppBarOnDestinationChangedListener(@NonNull Context context,
             @NonNull AppBarConfiguration configuration) {
         mContext = context;
         mTopLevelDestinations = configuration.getTopLevelDestinations();
@@ -69,13 +69,13 @@
     protected abstract void setNavigationIcon(Drawable icon);
 
     @Override
-    public void onNavigated(@NonNull NavController controller,
+    public void onDestinationChanged(@NonNull NavController controller,
             @NonNull NavDestination destination, @Nullable Bundle arguments) {
         DrawerLayout drawerLayout = mDrawerLayoutWeakReference != null
                 ? mDrawerLayoutWeakReference.get()
                 : null;
         if (mDrawerLayoutWeakReference != null && drawerLayout == null) {
-            controller.removeOnNavigatedListener(this);
+            controller.removeOnDestinationChangedListener(this);
             return;
         }
         CharSequence label = destination.getLabel();
diff --git a/navigation/ui/src/main/java/androidx/navigation/ui/ActionBarOnNavigatedListener.java b/navigation/ui/src/main/java/androidx/navigation/ui/ActionBarOnDestinationChangedListener.java
similarity index 81%
rename from navigation/ui/src/main/java/androidx/navigation/ui/ActionBarOnNavigatedListener.java
rename to navigation/ui/src/main/java/androidx/navigation/ui/ActionBarOnDestinationChangedListener.java
index 69d2842..85c2820 100644
--- a/navigation/ui/src/main/java/androidx/navigation/ui/ActionBarOnNavigatedListener.java
+++ b/navigation/ui/src/main/java/androidx/navigation/ui/ActionBarOnDestinationChangedListener.java
@@ -24,16 +24,17 @@
 import android.support.v7.app.AppCompatActivity;
 
 /**
- * The OnNavigatedListener specifically for keeping the ActionBar updated. This handles both
- * updating the title and updating the Up Indicator, transitioning between the drawer icon and
- * up arrow as needed.
+ * The OnDestinationChangedListener specifically for keeping the ActionBar updated.
+ * This handles both updating the title and updating the Up Indicator, transitioning between
+ * the drawer icon and up arrow as needed.
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
-class ActionBarOnNavigatedListener extends AbstractAppBarOnNavigatedListener {
+class ActionBarOnDestinationChangedListener extends
+        AbstractAppBarOnDestinationChangedListener {
     private final AppCompatActivity mActivity;
 
-    ActionBarOnNavigatedListener(@NonNull AppCompatActivity activity,
+    ActionBarOnDestinationChangedListener(@NonNull AppCompatActivity activity,
             @NonNull AppBarConfiguration configuration) {
         super(activity.getDrawerToggleDelegate().getActionBarThemedContext(), configuration);
         mActivity = activity;
diff --git a/navigation/ui/src/main/java/androidx/navigation/ui/AppBarConfiguration.java b/navigation/ui/src/main/java/androidx/navigation/ui/AppBarConfiguration.java
index efd25ed..7d0c21e 100644
--- a/navigation/ui/src/main/java/androidx/navigation/ui/AppBarConfiguration.java
+++ b/navigation/ui/src/main/java/androidx/navigation/ui/AppBarConfiguration.java
@@ -20,6 +20,8 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.widget.DrawerLayout;
+import android.view.Menu;
+import android.view.MenuItem;
 
 import androidx.navigation.NavGraph;
 
@@ -90,6 +92,24 @@
         }
 
         /**
+         * Create a new Builder using a {@link Menu} containing all top level destinations. It is
+         * expected that the {@link MenuItem#getItemId() menu item id} of each item corresponds
+         * with a destination in your navigation graph. The Up button will not be displayed when
+         * on these destinations.
+         *
+         * @param topLevelMenu A Menu containing MenuItems corresponding with the destinations
+         *                     considered at the top level of your information hierarchy.
+         *                     The Up button will not be displayed when on these destinations.
+         */
+        public Builder(@NonNull Menu topLevelMenu) {
+            int size = topLevelMenu.size();
+            for (int index = 0; index < size; index++) {
+                MenuItem item = topLevelMenu.getItem(index);
+                mTopLevelDestinations.add(item.getItemId());
+            }
+        }
+
+        /**
          * Create a new Builder with a specific set of top level destinations. The Up button will
          * not be displayed when on these destinations.
          *
diff --git a/navigation/ui/src/main/java/androidx/navigation/ui/CollapsingToolbarOnNavigatedListener.java b/navigation/ui/src/main/java/androidx/navigation/ui/CollapsingToolbarOnDestinationChangedListener.java
similarity index 84%
rename from navigation/ui/src/main/java/androidx/navigation/ui/CollapsingToolbarOnNavigatedListener.java
rename to navigation/ui/src/main/java/androidx/navigation/ui/CollapsingToolbarOnDestinationChangedListener.java
index e185510..fda9cbc 100644
--- a/navigation/ui/src/main/java/androidx/navigation/ui/CollapsingToolbarOnNavigatedListener.java
+++ b/navigation/ui/src/main/java/androidx/navigation/ui/CollapsingToolbarOnDestinationChangedListener.java
@@ -30,18 +30,19 @@
 import java.lang.ref.WeakReference;
 
 /**
- * The OnNavigatedListener specifically for keeping a CollapsingToolbarLayout+Toolbar updated.
+ * The OnDestinationChangedListener specifically for keeping a
+ * CollapsingToolbarLayout+Toolbar updated.
  * This handles both updating the title and updating the Up Indicator, transitioning between
  * the drawer icon and up arrow as needed.
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
-class CollapsingToolbarOnNavigatedListener
-        extends AbstractAppBarOnNavigatedListener {
+class CollapsingToolbarOnDestinationChangedListener
+        extends AbstractAppBarOnDestinationChangedListener {
     private final WeakReference<CollapsingToolbarLayout> mCollapsingToolbarLayoutWeakReference;
     private final WeakReference<Toolbar> mToolbarWeakReference;
 
-    CollapsingToolbarOnNavigatedListener(
+    CollapsingToolbarOnDestinationChangedListener(
             @NonNull CollapsingToolbarLayout collapsingToolbarLayout,
             @NonNull Toolbar toolbar, @NonNull AppBarConfiguration configuration) {
         super(collapsingToolbarLayout.getContext(), configuration);
@@ -50,16 +51,16 @@
     }
 
     @Override
-    public void onNavigated(@NonNull NavController controller,
+    public void onDestinationChanged(@NonNull NavController controller,
             @NonNull NavDestination destination, @Nullable Bundle arguments) {
         CollapsingToolbarLayout collapsingToolbarLayout =
                 mCollapsingToolbarLayoutWeakReference.get();
         Toolbar toolbar = mToolbarWeakReference.get();
         if (collapsingToolbarLayout == null || toolbar == null) {
-            controller.removeOnNavigatedListener(this);
+            controller.removeOnDestinationChangedListener(this);
             return;
         }
-        super.onNavigated(controller, destination, arguments);
+        super.onDestinationChanged(controller, destination, arguments);
     }
 
     @Override
diff --git a/navigation/ui/src/main/java/androidx/navigation/ui/NavigationUI.java b/navigation/ui/src/main/java/androidx/navigation/ui/NavigationUI.java
index abd726f..5d46abf 100644
--- a/navigation/ui/src/main/java/androidx/navigation/ui/NavigationUI.java
+++ b/navigation/ui/src/main/java/androidx/navigation/ui/NavigationUI.java
@@ -208,8 +208,8 @@
     public static void setupActionBarWithNavController(@NonNull AppCompatActivity activity,
             @NonNull NavController navController,
             @NonNull AppBarConfiguration configuration) {
-        navController.addOnNavigatedListener(
-                new ActionBarOnNavigatedListener(activity, configuration));
+        navController.addOnDestinationChangedListener(
+                new ActionBarOnDestinationChangedListener(activity, configuration));
     }
 
     /**
@@ -281,8 +281,8 @@
     public static void setupWithNavController(@NonNull Toolbar toolbar,
             @NonNull final NavController navController,
             @NonNull final AppBarConfiguration configuration) {
-        navController.addOnNavigatedListener(
-                new ToolbarOnNavigatedListener(toolbar, configuration));
+        navController.addOnDestinationChangedListener(
+                new ToolbarOnDestinationChangedListener(toolbar, configuration));
         toolbar.setNavigationOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -376,8 +376,9 @@
             @NonNull Toolbar toolbar,
             @NonNull final NavController navController,
             @NonNull final AppBarConfiguration configuration) {
-        navController.addOnNavigatedListener(new CollapsingToolbarOnNavigatedListener(
-                collapsingToolbarLayout, toolbar, configuration));
+        navController.addOnDestinationChangedListener(
+                new CollapsingToolbarOnDestinationChangedListener(
+                        collapsingToolbarLayout, toolbar, configuration));
         toolbar.setNavigationOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -428,22 +429,23 @@
                     }
                 });
         final WeakReference<NavigationView> weakReference = new WeakReference<>(navigationView);
-        navController.addOnNavigatedListener(new NavController.OnNavigatedListener() {
-            @Override
-            public void onNavigated(@NonNull NavController controller,
-                    @NonNull NavDestination destination, @Nullable Bundle arguments) {
-                NavigationView view = weakReference.get();
-                if (view == null) {
-                    navController.removeOnNavigatedListener(this);
-                    return;
-                }
-                Menu menu = view.getMenu();
-                for (int h = 0, size = menu.size(); h < size; h++) {
-                    MenuItem item = menu.getItem(h);
-                    item.setChecked(matchDestination(destination, item.getItemId()));
-                }
-            }
-        });
+        navController.addOnDestinationChangedListener(
+                new NavController.OnDestinationChangedListener() {
+                    @Override
+                    public void onDestinationChanged(@NonNull NavController controller,
+                            @NonNull NavDestination destination, @Nullable Bundle arguments) {
+                        NavigationView view = weakReference.get();
+                        if (view == null) {
+                            navController.removeOnDestinationChangedListener(this);
+                            return;
+                        }
+                        Menu menu = view.getMenu();
+                        for (int h = 0, size = menu.size(); h < size; h++) {
+                            MenuItem item = menu.getItem(h);
+                            item.setChecked(matchDestination(destination, item.getItemId()));
+                        }
+                    }
+                });
     }
 
     /**
@@ -493,24 +495,25 @@
                 });
         final WeakReference<BottomNavigationView> weakReference =
                 new WeakReference<>(bottomNavigationView);
-        navController.addOnNavigatedListener(new NavController.OnNavigatedListener() {
-            @Override
-            public void onNavigated(@NonNull NavController controller,
-                    @NonNull NavDestination destination, @Nullable Bundle arguments) {
-                BottomNavigationView view = weakReference.get();
-                if (view == null) {
-                    navController.removeOnNavigatedListener(this);
-                    return;
-                }
-                Menu menu = view.getMenu();
-                for (int h = 0, size = menu.size(); h < size; h++) {
-                    MenuItem item = menu.getItem(h);
-                    if (matchDestination(destination, item.getItemId())) {
-                        item.setChecked(true);
+        navController.addOnDestinationChangedListener(
+                new NavController.OnDestinationChangedListener() {
+                    @Override
+                    public void onDestinationChanged(@NonNull NavController controller,
+                            @NonNull NavDestination destination, @Nullable Bundle arguments) {
+                        BottomNavigationView view = weakReference.get();
+                        if (view == null) {
+                            navController.removeOnDestinationChangedListener(this);
+                            return;
+                        }
+                        Menu menu = view.getMenu();
+                        for (int h = 0, size = menu.size(); h < size; h++) {
+                            MenuItem item = menu.getItem(h);
+                            if (matchDestination(destination, item.getItemId())) {
+                                item.setChecked(true);
+                            }
+                        }
                     }
-                }
-            }
-        });
+                });
     }
 
     /**
diff --git a/navigation/ui/src/main/java/androidx/navigation/ui/ToolbarOnNavigatedListener.java b/navigation/ui/src/main/java/androidx/navigation/ui/ToolbarOnDestinationChangedListener.java
similarity index 76%
rename from navigation/ui/src/main/java/androidx/navigation/ui/ToolbarOnNavigatedListener.java
rename to navigation/ui/src/main/java/androidx/navigation/ui/ToolbarOnDestinationChangedListener.java
index 3bc3cb6..8e2b036 100644
--- a/navigation/ui/src/main/java/androidx/navigation/ui/ToolbarOnNavigatedListener.java
+++ b/navigation/ui/src/main/java/androidx/navigation/ui/ToolbarOnDestinationChangedListener.java
@@ -29,30 +29,31 @@
 import java.lang.ref.WeakReference;
 
 /**
- * The OnNavigatedListener specifically for keeping a Toolbar updated. This handles both
- * updating the title and updating the Up Indicator, transitioning between the drawer icon and
- * up arrow as needed.
+ * The OnDestinationChangedListener specifically for keeping a Toolbar updated.
+ * This handles both updating the title and updating the Up Indicator, transitioning between
+ * the drawer icon and up arrow as needed.
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
-class ToolbarOnNavigatedListener extends AbstractAppBarOnNavigatedListener {
+class ToolbarOnDestinationChangedListener extends
+        AbstractAppBarOnDestinationChangedListener {
     private final WeakReference<Toolbar> mToolbarWeakReference;
 
-    ToolbarOnNavigatedListener(
+    ToolbarOnDestinationChangedListener(
             @NonNull Toolbar toolbar, @NonNull AppBarConfiguration configuration) {
         super(toolbar.getContext(), configuration);
         mToolbarWeakReference = new WeakReference<>(toolbar);
     }
 
     @Override
-    public void onNavigated(@NonNull NavController controller,
+    public void onDestinationChanged(@NonNull NavController controller,
             @NonNull NavDestination destination, @Nullable Bundle arguments) {
         Toolbar toolbar = mToolbarWeakReference.get();
         if (toolbar == null) {
-            controller.removeOnNavigatedListener(this);
+            controller.removeOnDestinationChangedListener(this);
             return;
         }
-        super.onNavigated(controller, destination, arguments);
+        super.onDestinationChanged(controller, destination, arguments);
     }
 
     @Override
diff --git a/preference/ktx/build.gradle b/preference/ktx/build.gradle
index d344a29..d1759e1 100644
--- a/preference/ktx/build.gradle
+++ b/preference/ktx/build.gradle
@@ -42,7 +42,6 @@
     androidTestImplementation(TEST_RULES)
     androidTestImplementation(TRUTH)
     androidTestImplementation(project(":internal-testutils-ktx"))
-    androidTestImplementation(GUAVA_LISTENABLE_FUTURE_AVOID_CONFLICT)
 }
 
 supportLibrary {
diff --git a/room/compiler/build.gradle b/room/compiler/build.gradle
index 6a35f0a..fdf64a3 100644
--- a/room/compiler/build.gradle
+++ b/room/compiler/build.gradle
@@ -59,7 +59,7 @@
     testCompile(INTELLIJ_ANNOTATIONS)
     testCompile(JSR250)
     testCompile(MOCKITO_CORE)
-    testCompile fileTree(dir: "${sdkHandler.sdkFolder}/platforms/android-$SupportConfig.CURRENT_SDK_VERSION/",
+    testCompile fileTree(dir: "${sdkHandler.sdkFolder}/platforms/$SupportConfig.COMPILE_SDK_VERSION/",
             include : "android.jar")
     testCompile fileTree(dir: "${new File(project(":room:room-runtime").buildDir, "libJar")}",
             include : "*.jar")
diff --git a/room/compiler/src/main/kotlin/androidx/room/ext/KotlinMetadataElement.kt b/room/compiler/src/main/kotlin/androidx/room/ext/KotlinMetadataElement.kt
new file mode 100644
index 0000000..8eae79d
--- /dev/null
+++ b/room/compiler/src/main/kotlin/androidx/room/ext/KotlinMetadataElement.kt
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.ext
+
+import androidx.room.processor.Context
+import me.eugeniomarletti.kotlin.metadata.KotlinClassMetadata
+import me.eugeniomarletti.kotlin.metadata.KotlinMetadataUtils
+import me.eugeniomarletti.kotlin.metadata.isPrimary
+import me.eugeniomarletti.kotlin.metadata.isSuspend
+import me.eugeniomarletti.kotlin.metadata.jvm.getJvmConstructorSignature
+import me.eugeniomarletti.kotlin.metadata.kotlinMetadata
+import me.eugeniomarletti.kotlin.metadata.shadow.metadata.ProtoBuf
+import me.eugeniomarletti.kotlin.metadata.shadow.serialization.deserialization.getName
+import javax.annotation.processing.ProcessingEnvironment
+import javax.lang.model.element.Element
+import javax.lang.model.element.ExecutableElement
+
+/**
+ * Utility class for processors that wants to run kotlin specific code.
+ */
+class KotlinMetadataElement private constructor(
+    val context: Context,
+    val element: Element,
+    private val classMetadata: KotlinClassMetadata
+) : KotlinMetadataUtils {
+
+    override val processingEnv: ProcessingEnvironment
+        get() = context.processingEnv
+
+    /**
+     * Returns the parameter names of the function or constructor if all have names embedded in the
+     * metadata.
+     */
+    fun getParameterNames(method: ExecutableElement): List<String>? {
+        val valueParameterList = classMetadata.data.getFunctionOrNull(method)?.valueParameterList
+            ?: findConstructor(method)?.valueParameterList
+            ?: return null
+        return if (valueParameterList.all { it.hasName() }) {
+            valueParameterList.map {
+                classMetadata.data.nameResolver.getName(it.name)
+                    .asString()
+                    .replace("`", "")
+                    .removeSuffix("?")
+                    .trim()
+            }
+        } else {
+            null
+        }
+    }
+
+    /**
+     * Finds the kotlin metadata for a constructor.
+     */
+    private fun findConstructor(
+        executableElement: ExecutableElement
+    ): ProtoBuf.Constructor? = classMetadata?.let { metadata ->
+        val (nameResolver, classProto) = metadata.data
+        val jvmSignature = executableElement.jvmMethodSignature
+        // find constructor
+        return classProto.constructorList.singleOrNull {
+            it.getJvmConstructorSignature(nameResolver, classProto.typeTable) == jvmSignature
+        }
+    }
+
+    /**
+     * Finds the primary constructor signature of the class.
+     */
+    fun findPrimaryConstructorSignature() = classMetadata.data.let { data ->
+        data.classProto
+            .constructorList.first { it.isPrimary }
+            .getJvmConstructorSignature(
+                data.nameResolver,
+                data.classProto.typeTable
+            )
+    }
+
+    fun getMethodSignature(executableElement: ExecutableElement) =
+        executableElement.jvmMethodSignature
+
+    /**
+     * Checks if a method is a suspend function.
+     */
+    fun isSuspendFunction(method: ExecutableElement) =
+        classMetadata.data.getFunctionOrNull(method)?.isSuspend == true
+
+    companion object {
+
+        /**
+         * Creates a [KotlinMetadataElement] for the given element if it contains Kotlin metadata,
+         * otherwise this method returns null.
+         *
+         * Usually the [element] passed must represent a class. For example, if kotlin metadata is
+         * desired for a method, then the containing method should be used as parameter.
+         */
+        fun createFor(context: Context, element: Element): KotlinMetadataElement? {
+            val metadata = try {
+                element.kotlinMetadata
+            } catch (throwable: Throwable) {
+                context.logger.d(element, "failed to read get kotlin metadata from %s", element)
+            } as? KotlinClassMetadata
+            return if (metadata != null) {
+                KotlinMetadataElement(context, element, metadata)
+            } else {
+                null
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/ext/KotlinMetadataProcessor.kt b/room/compiler/src/main/kotlin/androidx/room/ext/KotlinMetadataProcessor.kt
deleted file mode 100644
index d7f49a2..0000000
--- a/room/compiler/src/main/kotlin/androidx/room/ext/KotlinMetadataProcessor.kt
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.room.ext
-
-import me.eugeniomarletti.kotlin.metadata.KotlinClassMetadata
-import me.eugeniomarletti.kotlin.metadata.KotlinMetadataUtils
-import me.eugeniomarletti.kotlin.metadata.jvm.getJvmConstructorSignature
-import me.eugeniomarletti.kotlin.metadata.shadow.metadata.ProtoBuf
-import me.eugeniomarletti.kotlin.metadata.shadow.serialization.deserialization.getName
-import javax.lang.model.element.ExecutableElement
-
-/**
- * Utility interface for processors that wants to run kotlin specific code.
- */
-interface KotlinMetadataProcessor : KotlinMetadataUtils {
-    /**
-     * Returns the parameter names of the function if all have names embedded in the metadata.
-     */
-    fun KotlinClassMetadata.getParameterNames(method: ExecutableElement): List<String>? {
-        val valueParameterList = this.data.getFunctionOrNull(method)?.valueParameterList
-                ?: findConstructor(method)?.valueParameterList
-                ?: return null
-        return if (valueParameterList.all { it.hasName() }) {
-            valueParameterList.map {
-                data.nameResolver.getName(it.name)
-                        .asString()
-                        .replace("`", "")
-                        .removeSuffix("?")
-                        .trim()
-            }
-        } else {
-            null
-        }
-    }
-
-    /**
-     * Finds the kotlin metadata for a constructor.
-     */
-    private fun KotlinClassMetadata.findConstructor(
-            executableElement: ExecutableElement
-    ): ProtoBuf.Constructor? {
-        val (nameResolver, classProto) = data
-        val jvmSignature = executableElement.jvmMethodSignature
-        // find constructor
-        return classProto.constructorList.singleOrNull {
-            it.getJvmConstructorSignature(nameResolver, classProto.typeTable) == jvmSignature
-        }
-    }
-}
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/ext/element_ext.kt b/room/compiler/src/main/kotlin/androidx/room/ext/element_ext.kt
index 7539af1..05cbde9 100644
--- a/room/compiler/src/main/kotlin/androidx/room/ext/element_ext.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/ext/element_ext.kt
@@ -328,7 +328,7 @@
 fun TypeMirror.extendsBound(): TypeMirror? {
     return this.accept(object : SimpleTypeVisitor7<TypeMirror?, Void?>() {
         override fun visitWildcard(type: WildcardType, ignored: Void?): TypeMirror? {
-            return type.extendsBound
+            return type.extendsBound ?: type.superBound
         }
     }, null)
 }
@@ -367,4 +367,16 @@
                 paramsMatch(MoreElements.asExecutable(this).parameters,
                         MoreElements.asExecutable(it).parameters)
     }
+}
+
+/**
+ * Finds the Kotlin's suspend function return type by inspecting the type param of the Continuation
+ * parameter of the function. This method assumes the executable element is a suspend function.
+ * @see KotlinMetadataElement.isSuspendFunction
+ */
+fun ExecutableElement.getSuspendFunctionReturnType(): TypeMirror {
+    // the continuation parameter is always the last parameter of a suspend function and it only has
+    // one type parameter, e.g Continuation<? super T>
+    val typeParam = MoreTypes.asDeclared(parameters.last().asType()).typeArguments.first()
+    return typeParam.extendsBoundOrSelf() // reduce the type param
 }
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt b/room/compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
index 81aee99..efb9573 100644
--- a/room/compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
@@ -153,6 +153,15 @@
             "EmptyResultSetException")
 }
 
+object RoomCoroutinesTypeNames {
+    val COROUTINES_ROOM = ClassName.get("androidx.room", "CoroutinesRoom")
+}
+
+object KotlinTypeNames {
+    val UNIT = ClassName.get("kotlin", "Unit")
+    val CONTINUATION = ClassName.get("kotlin.coroutines", "Continuation")
+}
+
 fun TypeName.defaultValue(): String {
     return if (!isPrimitive) {
         "null"
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/Context.kt b/room/compiler/src/main/kotlin/androidx/room/processor/Context.kt
index 31b3a55..2317bef 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/Context.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/Context.kt
@@ -28,11 +28,12 @@
 import javax.lang.model.type.TypeMirror
 
 class Context private constructor(
-        val processingEnv: ProcessingEnvironment,
-        val logger: RLog,
-        private val typeConverters: CustomConverterProcessor.ProcessResult,
-        private val inheritedAdapterStore: TypeAdapterStore?,
-        val cache: Cache) {
+    val processingEnv: ProcessingEnvironment,
+    val logger: RLog,
+    private val typeConverters: CustomConverterProcessor.ProcessResult,
+    private val inheritedAdapterStore: TypeAdapterStore?,
+    val cache: Cache
+) {
     val checker: Checks = Checks(logger)
     val COMMON_TYPES: Context.CommonTypes = Context.CommonTypes(processingEnv)
 
@@ -64,6 +65,9 @@
         val STRING: TypeMirror by lazy {
             processingEnv.elementUtils.getTypeElement("java.lang.String").asType()
         }
+        val COLLECTION: TypeMirror by lazy {
+            processingEnv.elementUtils.getTypeElement("java.util.Collection").asType()
+        }
     }
 
     val schemaOutFolder by lazy {
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/DeletionMethodProcessor.kt b/room/compiler/src/main/kotlin/androidx/room/processor/DeletionMethodProcessor.kt
index 2dbe533..db672ba 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/DeletionMethodProcessor.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/DeletionMethodProcessor.kt
@@ -33,8 +33,7 @@
 
         val returnType = delegate.extractReturnType()
 
-        val methodBinder = context.typeAdapterStore
-                .findDeleteOrUpdateMethodBinder(returnType)
+        val methodBinder = delegate.findDeleteOrUpdateMethodBinder(returnType)
 
         context.checker.check(
                 methodBinder.adapter != null,
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/InsertionMethodProcessor.kt b/room/compiler/src/main/kotlin/androidx/room/processor/InsertionMethodProcessor.kt
index 095b151..0337c61 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/InsertionMethodProcessor.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/InsertionMethodProcessor.kt
@@ -21,8 +21,8 @@
 import androidx.room.Insert
 import androidx.room.OnConflictStrategy.IGNORE
 import androidx.room.OnConflictStrategy.REPLACE
+import androidx.room.ext.typeName
 import androidx.room.vo.InsertionMethod
-import com.squareup.javapoet.TypeName
 import javax.lang.model.element.ExecutableElement
 import javax.lang.model.type.DeclaredType
 
@@ -42,7 +42,7 @@
                 executableElement, ProcessorErrors.INVALID_ON_CONFLICT_VALUE)
 
         val returnType = delegate.extractReturnType()
-        val returnTypeName = TypeName.get(returnType)
+        val returnTypeName = returnType.typeName()
         context.checker.notUnbound(returnTypeName, executableElement,
                 ProcessorErrors.CANNOT_USE_UNBOUND_GENERICS_IN_INSERTION_METHODS)
 
@@ -50,8 +50,7 @@
                 missingParamError = ProcessorErrors.INSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_INSERT
         )
 
-        val methodBinder = context.typeAdapterStore
-                .findInsertMethodBinder(returnType, params)
+        val methodBinder = delegate.findInsertMethodBinder(returnType, params)
 
         context.checker.check(
                 methodBinder.adapter != null,
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/MethodProcessorDelegate.kt b/room/compiler/src/main/kotlin/androidx/room/processor/MethodProcessorDelegate.kt
new file mode 100644
index 0000000..ace616a
--- /dev/null
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/MethodProcessorDelegate.kt
@@ -0,0 +1,182 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.processor
+
+import androidx.room.ext.KotlinMetadataElement
+import androidx.room.ext.KotlinTypeNames
+import androidx.room.ext.RoomCoroutinesTypeNames
+import androidx.room.ext.getSuspendFunctionReturnType
+import androidx.room.parser.ParsedQuery
+import androidx.room.solver.query.result.CoroutineResultBinder
+import androidx.room.solver.query.result.QueryResultBinder
+import androidx.room.solver.shortcut.binder.CoroutineDeleteOrUpdateMethodBinder
+import androidx.room.solver.shortcut.binder.CoroutineInsertMethodBinder
+import androidx.room.solver.shortcut.binder.DeleteOrUpdateMethodBinder
+import androidx.room.solver.shortcut.binder.InsertMethodBinder
+import androidx.room.vo.QueryParameter
+import androidx.room.vo.ShortcutQueryParameter
+import com.google.auto.common.MoreTypes
+import javax.lang.model.element.ExecutableElement
+import javax.lang.model.element.VariableElement
+import javax.lang.model.type.DeclaredType
+import javax.lang.model.type.TypeMirror
+
+/**
+ *  Delegate class with common functionality for DAO method processors.
+ */
+abstract class MethodProcessorDelegate(
+    val context: Context,
+    val containing: DeclaredType,
+    val executableElement: ExecutableElement,
+    protected val classMetadata: KotlinMetadataElement?
+) {
+
+    abstract fun extractReturnType(): TypeMirror
+
+    abstract fun extractParams(): List<VariableElement>
+
+    fun extractQueryParams(): List<QueryParameter> {
+        val kotlinParameterNames = classMetadata?.getParameterNames(executableElement)
+        return extractParams().mapIndexed { index, variableElement ->
+            QueryParameterProcessor(
+                baseContext = context,
+                containing = containing,
+                element = variableElement,
+                sqlName = kotlinParameterNames?.getOrNull(index)
+            ).process()
+        }
+    }
+
+    abstract fun findResultBinder(returnType: TypeMirror, query: ParsedQuery): QueryResultBinder
+
+    abstract fun findInsertMethodBinder(
+        returnType: TypeMirror,
+        params: List<ShortcutQueryParameter>
+    ): InsertMethodBinder
+
+    abstract fun findDeleteOrUpdateMethodBinder(returnType: TypeMirror): DeleteOrUpdateMethodBinder
+
+    companion object {
+        fun createFor(
+            context: Context,
+            containing: DeclaredType,
+            executableElement: ExecutableElement
+        ): MethodProcessorDelegate {
+            val kotlinMetadata = KotlinMetadataElement.createFor(context, containing.asElement())
+            return if (kotlinMetadata?.isSuspendFunction(executableElement) == true) {
+                val hasCoroutineArtifact = context.processingEnv.elementUtils
+                    .getTypeElement(RoomCoroutinesTypeNames.COROUTINES_ROOM.toString()) != null
+                if (!hasCoroutineArtifact) {
+                    context.logger.e(ProcessorErrors.MISSING_ROOM_COROUTINE_ARTIFACT)
+                }
+                SuspendMethodProcessorDelegate(
+                    context,
+                    containing,
+                    executableElement,
+                    kotlinMetadata
+                )
+            } else {
+                DefaultMethodProcessorDelegate(
+                    context,
+                    containing,
+                    executableElement,
+                    kotlinMetadata
+                )
+            }
+        }
+    }
+}
+
+/**
+ * Default delegate for DAO methods.
+ */
+class DefaultMethodProcessorDelegate(
+    context: Context,
+    containing: DeclaredType,
+    executableElement: ExecutableElement,
+    classMetadata: KotlinMetadataElement?
+) : MethodProcessorDelegate(context, containing, executableElement, classMetadata) {
+
+    override fun extractReturnType(): TypeMirror {
+        val asMember = context.processingEnv.typeUtils.asMemberOf(containing, executableElement)
+        return MoreTypes.asExecutable(asMember).returnType
+    }
+
+    override fun extractParams() = executableElement.parameters
+
+    override fun findResultBinder(returnType: TypeMirror, query: ParsedQuery) =
+        context.typeAdapterStore.findQueryResultBinder(returnType, query)
+
+    override fun findInsertMethodBinder(
+        returnType: TypeMirror,
+        params: List<ShortcutQueryParameter>
+    ) = context.typeAdapterStore.findInsertMethodBinder(returnType, params)
+
+    override fun findDeleteOrUpdateMethodBinder(returnType: TypeMirror) =
+        context.typeAdapterStore.findDeleteOrUpdateMethodBinder(returnType)
+}
+
+/**
+ * Delegate for DAO methods that are a suspend function.
+ */
+class SuspendMethodProcessorDelegate(
+    context: Context,
+    containing: DeclaredType,
+    executableElement: ExecutableElement,
+    kotlinMetadata: KotlinMetadataElement
+) : MethodProcessorDelegate(context, containing, executableElement, kotlinMetadata) {
+
+    private val continuationParam: VariableElement by lazy {
+        val typesUtil = context.processingEnv.typeUtils
+        val continuationType = typesUtil.erasure(
+            context.processingEnv.elementUtils
+                .getTypeElement(KotlinTypeNames.CONTINUATION.toString())
+                .asType()
+        )
+        executableElement.parameters.last {
+            typesUtil.isSameType(typesUtil.erasure(it.asType()), continuationType)
+        }
+    }
+
+    override fun extractReturnType() = executableElement.getSuspendFunctionReturnType()
+
+    override fun extractParams() =
+        executableElement.parameters.filterNot { it == continuationParam }
+
+    override fun findResultBinder(returnType: TypeMirror, query: ParsedQuery) =
+        CoroutineResultBinder(
+            typeArg = returnType,
+            adapter = context.typeAdapterStore.findQueryResultAdapter(returnType, query),
+            continuationParamName = continuationParam.simpleName.toString()
+        )
+
+    override fun findInsertMethodBinder(
+        returnType: TypeMirror,
+        params: List<ShortcutQueryParameter>
+    ) = CoroutineInsertMethodBinder(
+        typeArg = returnType,
+        adapter = context.typeAdapterStore.findInsertAdapter(returnType, params),
+        continuationParamName = continuationParam.simpleName.toString()
+    )
+
+    override fun findDeleteOrUpdateMethodBinder(returnType: TypeMirror) =
+        CoroutineDeleteOrUpdateMethodBinder(
+            typeArg = returnType,
+            adapter = context.typeAdapterStore.findDeleteOrUpdateAdapter(returnType),
+            continuationParamName = continuationParam.simpleName.toString()
+        )
+}
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/PojoProcessor.kt b/room/compiler/src/main/kotlin/androidx/room/processor/PojoProcessor.kt
index 01bcb19..07ad5c2 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/PojoProcessor.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/PojoProcessor.kt
@@ -20,7 +20,7 @@
 import androidx.room.Embedded
 import androidx.room.Ignore
 import androidx.room.Relation
-import androidx.room.ext.KotlinMetadataProcessor
+import androidx.room.ext.KotlinMetadataElement
 import androidx.room.ext.extendsBoundOrSelf
 import androidx.room.ext.getAllFieldsIncludingPrivateSupers
 import androidx.room.ext.hasAnnotation
@@ -51,12 +51,6 @@
 import com.google.auto.common.MoreElements
 import com.google.auto.common.MoreTypes
 import com.google.auto.value.AutoValue
-import me.eugeniomarletti.kotlin.metadata.KotlinClassMetadata
-import me.eugeniomarletti.kotlin.metadata.isDataClass
-import me.eugeniomarletti.kotlin.metadata.isPrimary
-import me.eugeniomarletti.kotlin.metadata.jvm.getJvmConstructorSignature
-import me.eugeniomarletti.kotlin.metadata.kotlinMetadata
-import javax.annotation.processing.ProcessingEnvironment
 import javax.lang.model.element.ExecutableElement
 import javax.lang.model.element.Modifier.ABSTRACT
 import javax.lang.model.element.Modifier.PRIVATE
@@ -83,21 +77,10 @@
     val referenceStack: LinkedHashSet<Name> = LinkedHashSet(),
     val ignoredColumns: Set<String>,
     private val delegate: Delegate
-) : KotlinMetadataProcessor {
+) {
     val context = baseContext.fork(element)
 
-    // for KotlinMetadataUtils
-    override val processingEnv: ProcessingEnvironment
-        get() = context.processingEnv
-
-    // opportunistic kotlin metadata
-    private val kotlinMetadata by lazy {
-        try {
-            element.kotlinMetadata
-        } catch (throwable: Throwable) {
-            context.logger.d(element, "failed to read get kotlin metadata from %s", element)
-        } as? KotlinClassMetadata
-    }
+    private val kotlinMetadata = KotlinMetadataElement.createFor(context, element)
 
     companion object {
         val PROCESSED_ANNOTATIONS = listOf(ColumnInfo::class, Embedded::class,
@@ -389,18 +372,10 @@
                 // if the Pojo is a Kotlin data class then pick its primary constructor. This is
                 // better than picking the no-arg constructor and forcing users to define fields as
                 // vars.
-                val primaryConstructor = kotlinMetadata?.data?.let { kotlinData ->
-                    if (kotlinData.classProto.isDataClass) {
-                        val primaryConstructorSignature = kotlinData.classProto
-                                .constructorList.first { it.isPrimary }
-                                .getJvmConstructorSignature(
-                                        kotlinData.nameResolver,
-                                        kotlinData.classProto.typeTable)
+                val primaryConstructor =
+                    kotlinMetadata?.findPrimaryConstructorSignature()?.let { signature ->
                         goodConstructors.firstOrNull {
-                            it.element.jvmMethodSignature == primaryConstructorSignature
-                        }
-                    } else {
-                        null
+                            kotlinMetadata.getMethodSignature(it.element) == signature
                     }
                 }
                 if (primaryConstructor != null) {
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt b/room/compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
index f95c63b..80c6037 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
@@ -124,8 +124,8 @@
     val QUERY_PARAMETERS_CANNOT_START_WITH_UNDERSCORE = "Query/Insert method parameters cannot " +
             "start with underscore (_)."
 
-    val CANNOT_FIND_QUERY_RESULT_ADAPTER = "Not sure how to convert a Cursor to this method's " +
-            "return type"
+    fun cannotFindQueryResultAdapter(returnTypeName: String) = "Not sure how to convert a " +
+            "Cursor to this method's return type ($returnTypeName)."
 
     val INSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_INSERT = "Method annotated with" +
             " @Insert but does not have any parameters to insert."
@@ -503,10 +503,13 @@
     }
 
     val MISSING_ROOM_GUAVA_ARTIFACT = "To use Guava features, you must add `guava`" +
-            " artifact from Room as a dependency. androidx.room:guava:<version>"
+            " artifact from Room as a dependency. androidx.room:room-guava:<version>"
 
     val MISSING_ROOM_RXJAVA2_ARTIFACT = "To use RxJava2 features, you must add `rxjava2`" +
-            " artifact from Room as a dependency. androidx.room:rxjava2:<version>"
+            " artifact from Room as a dependency. androidx.room:room-rxjava2:<version>"
+
+    val MISSING_ROOM_COROUTINE_ARTIFACT = "To use Coroutine features, you must add `coroutine`" +
+            " artifact from Room as a dependency. androidx.room:room-coroutines:<version>"
 
     fun ambigiousConstructor(
         pojo: String,
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt b/room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
index f9ef4b9..27e3186 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
@@ -19,9 +19,9 @@
 import androidx.room.Query
 import androidx.room.SkipQueryVerification
 import androidx.room.Transaction
-import androidx.room.ext.KotlinMetadataProcessor
 import androidx.room.ext.hasAnnotation
 import androidx.room.ext.toAnnotationBox
+import androidx.room.ext.typeName
 import androidx.room.parser.ParsedQuery
 import androidx.room.parser.QueryType
 import androidx.room.parser.SqlParser
@@ -32,11 +32,7 @@
 import androidx.room.vo.QueryMethod
 import androidx.room.vo.QueryParameter
 import androidx.room.vo.Warning
-import com.google.auto.common.MoreTypes
 import com.squareup.javapoet.TypeName
-import me.eugeniomarletti.kotlin.metadata.KotlinClassMetadata
-import me.eugeniomarletti.kotlin.metadata.kotlinMetadata
-import javax.annotation.processing.ProcessingEnvironment
 import javax.lang.model.element.ExecutableElement
 import javax.lang.model.type.DeclaredType
 import javax.lang.model.type.TypeKind
@@ -46,24 +42,12 @@
     val containing: DeclaredType,
     val executableElement: ExecutableElement,
     val dbVerifier: DatabaseVerifier? = null
-) : KotlinMetadataProcessor {
+) {
     val context = baseContext.fork(executableElement)
 
-    // for kotlin metadata
-    override val processingEnv: ProcessingEnvironment
-        get() = context.processingEnv
-
-    private val classMetadata =
-            try {
-                containing.asElement().kotlinMetadata
-            } catch (throwable: Throwable) {
-                context.logger.d(executableElement,
-                        "failed to read get kotlin metadata from %s", executableElement)
-            } as? KotlinClassMetadata
-
     fun process(): QueryMethod {
-        val asMember = context.processingEnv.typeUtils.asMemberOf(containing, executableElement)
-        val executableType = MoreTypes.asExecutable(asMember)
+        val delegate = MethodProcessorDelegate.createFor(context, containing, executableElement)
+        val returnType = delegate.extractReturnType()
 
         val annotation = executableElement.toAnnotationBox(Query::class)?.value
         context.checker.check(annotation != null, executableElement,
@@ -81,7 +65,7 @@
                         DatabaseVerificaitonErrors.cannotVerifyQuery(query.resultInfo!!.error!!))
             }
 
-            context.checker.check(executableType.returnType.kind != TypeKind.ERROR,
+            context.checker.check(returnType.kind != TypeKind.ERROR,
                     executableElement, ProcessorErrors.CANNOT_RESOLVE_RETURN_TYPE,
                     executableElement)
             query
@@ -89,15 +73,15 @@
             ParsedQuery.MISSING
         }
 
-        val returnTypeName = TypeName.get(executableType.returnType)
+        val returnTypeName = returnType.typeName()
         context.checker.notUnbound(returnTypeName, executableElement,
                 ProcessorErrors.CANNOT_USE_UNBOUND_GENERICS_IN_QUERY_METHODS)
 
         if (query.type == QueryType.DELETE) {
             context.checker.check(
-                    returnTypeName == TypeName.VOID || returnTypeName == TypeName.INT,
-                    executableElement,
-                    ProcessorErrors.DELETION_METHODS_MUST_RETURN_VOID_OR_INT
+                returnTypeName == TypeName.VOID || returnTypeName == TypeName.INT,
+                executableElement,
+                ProcessorErrors.DELETION_METHODS_MUST_RETURN_VOID_OR_INT
             )
         } else if (query.type == QueryType.INSERT) {
             context.checker.check(
@@ -106,10 +90,11 @@
                 ProcessorErrors.PREPARED_INSERT_METHOD_INVALID_RETURN_TYPE
             )
         }
-        val resultBinder = context.typeAdapterStore
-                .findQueryResultBinder(executableType.returnType, query)
-        context.checker.check(resultBinder.adapter != null || query.type != QueryType.SELECT,
-                executableElement, ProcessorErrors.CANNOT_FIND_QUERY_RESULT_ADAPTER)
+        val resultBinder = delegate.findResultBinder(returnType, query)
+        context.checker.check(
+            resultBinder.adapter != null || query.type != QueryType.SELECT,
+                executableElement,
+            ProcessorErrors.cannotFindQueryResultAdapter(returnType.toString()))
         if (resultBinder is LiveDataQueryResultBinder) {
             context.checker.check(query.type == QueryType.SELECT, executableElement,
                     ProcessorErrors.LIVE_DATA_QUERY_WITHOUT_SELECT)
@@ -129,21 +114,12 @@
                 }
             }
         }
-        val kotlinParameterNames = classMetadata?.getParameterNames(executableElement)
-
-        val parameters = executableElement.parameters
-                .mapIndexed { index, variableElement ->
-                    QueryParameterProcessor(
-                            baseContext = context,
-                            containing = containing,
-                            element = variableElement,
-                            sqlName = kotlinParameterNames?.getOrNull(index)).process()
-                }
+        val parameters = delegate.extractQueryParams()
         val queryMethod = QueryMethod(
                 element = executableElement,
                 query = query,
                 name = executableElement.simpleName.toString(),
-                returnType = executableType.returnType,
+                returnType = returnType,
                 parameters = parameters,
                 inTransaction = inTransaction,
                 queryResultBinder = resultBinder)
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/RawQueryMethodProcessor.kt b/room/compiler/src/main/kotlin/androidx/room/processor/RawQueryMethodProcessor.kt
index f8a63d9..724dc3b 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/RawQueryMethodProcessor.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/RawQueryMethodProcessor.kt
@@ -28,8 +28,8 @@
 import androidx.room.vo.RawQueryMethod
 import asTypeElement
 import com.google.auto.common.MoreTypes
-import com.squareup.javapoet.TypeName
 import javax.lang.model.element.ExecutableElement
+import javax.lang.model.element.VariableElement
 import javax.lang.model.type.DeclaredType
 
 class RawQueryMethodProcessor(
@@ -38,30 +38,28 @@
     val executableElement: ExecutableElement
 ) {
     val context = baseContext.fork(executableElement)
+
     fun process(): RawQueryMethod {
-        val types = context.processingEnv.typeUtils
-        val asMember = types.asMemberOf(containing, executableElement)
-        val executableType = MoreTypes.asExecutable(asMember)
+        val delegate = MethodProcessorDelegate.createFor(context, containing, executableElement)
+        val returnType = delegate.extractReturnType()
 
         context.checker.check(executableElement.hasAnnotation(RawQuery::class), executableElement,
                 ProcessorErrors.MISSING_RAWQUERY_ANNOTATION)
 
-        val returnTypeName = TypeName.get(executableType.returnType)
+        val returnTypeName = returnType.typeName()
         context.checker.notUnbound(returnTypeName, executableElement,
                 ProcessorErrors.CANNOT_USE_UNBOUND_GENERICS_IN_QUERY_METHODS)
         val observedTableNames = processObservedTables()
         val query = SqlParser.rawQueryForTables(observedTableNames)
         // build the query but don't calculate result info since we just guessed it.
-        val resultBinder = context.typeAdapterStore
-                .findQueryResultBinder(executableType.returnType, query)
-
-        val runtimeQueryParam = findRuntimeQueryParameter()
+        val resultBinder = delegate.findResultBinder(returnType, query)
+        val runtimeQueryParam = findRuntimeQueryParameter(delegate.extractParams())
         val inTransaction = executableElement.hasAnnotation(Transaction::class)
         val rawQueryMethod = RawQueryMethod(
                 element = executableElement,
                 name = executableElement.simpleName.toString(),
                 observedTableNames = observedTableNames,
-                returnType = executableType.returnType,
+                returnType = returnType,
                 runtimeQueryParam = runtimeQueryParam,
                 inTransaction = inTransaction,
                 queryResultBinder = resultBinder
@@ -102,20 +100,22 @@
                 }?.toSet() ?: emptySet()
     }
 
-    private fun findRuntimeQueryParameter(): RawQueryMethod.RuntimeQueryParameter? {
+    private fun findRuntimeQueryParameter(
+        extractParams: List<VariableElement>
+    ): RawQueryMethod.RuntimeQueryParameter? {
         val types = context.processingEnv.typeUtils
-        if (executableElement.parameters.size == 1 && !executableElement.isVarArgs) {
+        if (extractParams.size == 1 && !executableElement.isVarArgs) {
             val param = MoreTypes.asMemberOf(
                     types,
                     containing,
-                    executableElement.parameters[0])
+                    extractParams[0])
             val elementUtils = context.processingEnv.elementUtils
             val supportQueryType = elementUtils
                     .getTypeElement(SupportDbTypeNames.QUERY.toString()).asType()
             val isSupportSql = types.isAssignable(param, supportQueryType)
             if (isSupportSql) {
                 return RawQueryMethod.RuntimeQueryParameter(
-                        paramName = executableElement.parameters[0].simpleName.toString(),
+                        paramName = extractParams[0].simpleName.toString(),
                         type = supportQueryType.typeName())
             }
             val stringType = elementUtils.getTypeElement("java.lang.String").asType()
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/ShortcutMethodProcessor.kt b/room/compiler/src/main/kotlin/androidx/room/processor/ShortcutMethodProcessor.kt
index f0d0e62..f0114a7 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/ShortcutMethodProcessor.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/ShortcutMethodProcessor.kt
@@ -19,7 +19,6 @@
 import androidx.room.vo.Entity
 import androidx.room.vo.ShortcutQueryParameter
 import asTypeElement
-import com.google.auto.common.MoreTypes
 import javax.lang.model.element.ExecutableElement
 import javax.lang.model.type.DeclaredType
 import javax.lang.model.type.TypeMirror
@@ -34,8 +33,7 @@
     val executableElement: ExecutableElement
 ) {
     val context = baseContext.fork(executableElement)
-    private val asMember = context.processingEnv.typeUtils.asMemberOf(containing, executableElement)
-    private val executableType = MoreTypes.asExecutable(asMember)
+    private val delegate = MethodProcessorDelegate.createFor(context, containing, executableElement)
 
     fun <T : Annotation> extractAnnotation(klass: KClass<T>, errorMsg: String): T? {
         val annotation = executableElement.toAnnotationBox(klass)
@@ -43,14 +41,12 @@
         return annotation?.value
     }
 
-    fun extractReturnType(): TypeMirror {
-        return executableType.returnType
-    }
+    fun extractReturnType() = delegate.extractReturnType()
 
     fun extractParams(
         missingParamError: String
     ): Pair<Map<String, Entity>, List<ShortcutQueryParameter>> {
-        val params = executableElement.parameters
+        val params = delegate.extractParams()
                 .map { ShortcutParameterProcessor(
                         baseContext = context,
                         containing = containing,
@@ -65,4 +61,12 @@
                 })
         return Pair(entities, params)
     }
+
+    fun findInsertMethodBinder(
+        returnType: TypeMirror,
+        params: List<ShortcutQueryParameter>
+    ) = delegate.findInsertMethodBinder(returnType, params)
+
+    fun findDeleteOrUpdateMethodBinder(returnType: TypeMirror) =
+        delegate.findDeleteOrUpdateMethodBinder(returnType)
 }
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/UpdateMethodProcessor.kt b/room/compiler/src/main/kotlin/androidx/room/processor/UpdateMethodProcessor.kt
index d34933a..9c7e4b1 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/UpdateMethodProcessor.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/UpdateMethodProcessor.kt
@@ -43,8 +43,9 @@
                 missingParamError = ProcessorErrors.UPDATE_MISSING_PARAMS
         )
 
-        val methodBinder = context.typeAdapterStore
-                .findDeleteOrUpdateMethodBinder(executableElement.returnType)
+        val returnType = delegate.extractReturnType()
+        val methodBinder = delegate.findDeleteOrUpdateMethodBinder(returnType)
+
         context.checker.check(
                 methodBinder.adapter != null,
                 executableElement,
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt b/room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
index 581e0a0..6ce3e5a 100644
--- a/room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
@@ -53,22 +53,6 @@
 import androidx.room.solver.query.result.RowAdapter
 import androidx.room.solver.query.result.SingleColumnRowAdapter
 import androidx.room.solver.query.result.SingleEntityQueryResultAdapter
-import androidx.room.solver.types.BoxedBooleanToBoxedIntConverter
-import androidx.room.solver.types.BoxedPrimitiveColumnTypeAdapter
-import androidx.room.solver.types.ByteArrayColumnTypeAdapter
-import androidx.room.solver.types.ColumnTypeAdapter
-import androidx.room.solver.types.CompositeAdapter
-import androidx.room.solver.types.CompositeTypeConverter
-import androidx.room.solver.types.CursorValueReader
-import androidx.room.solver.types.NoOpConverter
-import androidx.room.solver.types.PrimitiveBooleanToIntConverter
-import androidx.room.solver.types.PrimitiveColumnTypeAdapter
-import androidx.room.solver.types.StatementValueBinder
-import androidx.room.solver.types.StringColumnTypeAdapter
-import androidx.room.solver.types.TypeConverter
-import androidx.room.vo.ShortcutQueryParameter
-import androidx.room.solver.shortcut.result.DeleteOrUpdateMethodAdapter
-import androidx.room.solver.shortcut.result.InsertMethodAdapter
 import androidx.room.solver.shortcut.binder.DeleteOrUpdateMethodBinder
 import androidx.room.solver.shortcut.binder.InsertMethodBinder
 import androidx.room.solver.shortcut.binder.InstantDeleteOrUpdateMethodBinder
@@ -83,6 +67,22 @@
 import androidx.room.solver.shortcut.binderprovider.RxMaybeInsertMethodBinderProvider
 import androidx.room.solver.shortcut.binderprovider.RxSingleDeleteOrUpdateMethodBinderProvider
 import androidx.room.solver.shortcut.binderprovider.RxSingleInsertMethodBinderProvider
+import androidx.room.solver.shortcut.result.DeleteOrUpdateMethodAdapter
+import androidx.room.solver.shortcut.result.InsertMethodAdapter
+import androidx.room.solver.types.BoxedBooleanToBoxedIntConverter
+import androidx.room.solver.types.BoxedPrimitiveColumnTypeAdapter
+import androidx.room.solver.types.ByteArrayColumnTypeAdapter
+import androidx.room.solver.types.ColumnTypeAdapter
+import androidx.room.solver.types.CompositeAdapter
+import androidx.room.solver.types.CompositeTypeConverter
+import androidx.room.solver.types.CursorValueReader
+import androidx.room.solver.types.NoOpConverter
+import androidx.room.solver.types.PrimitiveBooleanToIntConverter
+import androidx.room.solver.types.PrimitiveColumnTypeAdapter
+import androidx.room.solver.types.StatementValueBinder
+import androidx.room.solver.types.StringColumnTypeAdapter
+import androidx.room.solver.types.TypeConverter
+import androidx.room.vo.ShortcutQueryParameter
 import asTypeElement
 import com.google.auto.common.MoreElements
 import com.google.auto.common.MoreTypes
@@ -474,12 +474,11 @@
     }
 
     fun findQueryParameterAdapter(typeMirror: TypeMirror): QueryParameterAdapter? {
-        if (MoreTypes.isType(typeMirror) &&
-                (MoreTypes.isTypeOf(java.util.List::class.java, typeMirror) ||
-                        MoreTypes.isTypeOf(java.util.Set::class.java, typeMirror))) {
+        val typeUtils = context.processingEnv.typeUtils
+        if (MoreTypes.isType(typeMirror) && typeUtils.isAssignable(typeMirror,
+                typeUtils.erasure(context.COMMON_TYPES.COLLECTION))) {
             val declared = MoreTypes.asDeclared(typeMirror)
-            val binder = findStatementValueBinder(declared.typeArguments.first(),
-                    null)
+            val binder = findStatementValueBinder(declared.typeArguments.first(), null)
             if (binder != null) {
                 return CollectionQueryParameterAdapter(binder)
             } else {
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineResultBinder.kt b/room/compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineResultBinder.kt
new file mode 100644
index 0000000..b59ecc0
--- /dev/null
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineResultBinder.kt
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.solver.query.result
+
+import androidx.room.ext.AndroidTypeNames
+import androidx.room.ext.CallableTypeSpecBuilder
+import androidx.room.ext.L
+import androidx.room.ext.N
+import androidx.room.ext.RoomCoroutinesTypeNames
+import androidx.room.ext.RoomTypeNames
+import androidx.room.ext.T
+import androidx.room.ext.typeName
+import androidx.room.solver.CodeGenScope
+import com.squareup.javapoet.FieldSpec
+import com.squareup.javapoet.MethodSpec
+import javax.lang.model.type.TypeMirror
+
+/**
+ * Binds the result of a of a Kotlin coroutine suspend function.
+ */
+class CoroutineResultBinder(
+    val typeArg: TypeMirror,
+    private val continuationParamName: String,
+    adapter: QueryResultAdapter?
+) : QueryResultBinder(adapter) {
+
+    override fun convertAndReturn(
+        roomSQLiteQueryVar: String,
+        canReleaseQuery: Boolean,
+        dbField: FieldSpec,
+        inTransaction: Boolean,
+        scope: CodeGenScope
+    ) {
+        val callableImpl = CallableTypeSpecBuilder(typeArg.typeName()) {
+            createRunQueryAndReturnStatements(
+                builder = this,
+                roomSQLiteQueryVar = roomSQLiteQueryVar,
+                canReleaseQuery = canReleaseQuery,
+                dbField = dbField,
+                inTransaction = inTransaction,
+                scope = scope)
+        }.build()
+
+        scope.builder().apply {
+            addStatement(
+                "return $T.execute($N, $L, $N)",
+                RoomCoroutinesTypeNames.COROUTINES_ROOM,
+                dbField,
+                callableImpl,
+                continuationParamName)
+        }
+    }
+
+    private fun createRunQueryAndReturnStatements(
+        builder: MethodSpec.Builder,
+        roomSQLiteQueryVar: String,
+        canReleaseQuery: Boolean,
+        dbField: FieldSpec,
+        inTransaction: Boolean,
+        scope: CodeGenScope
+    ) {
+        val transactionWrapper = if (inTransaction) {
+            builder.transactionWrapper(dbField)
+        } else {
+            null
+        }
+        val shouldCopyCursor = adapter?.shouldCopyCursor() == true
+        val outVar = scope.getTmpVar("_result")
+        val cursorVar = scope.getTmpVar("_cursor")
+        transactionWrapper?.beginTransactionWithControlFlow()
+        builder.apply {
+            addStatement("final $T $L = $T.query($N, $L, $L)",
+                AndroidTypeNames.CURSOR,
+                cursorVar,
+                RoomTypeNames.DB_UTIL,
+                dbField,
+                roomSQLiteQueryVar,
+                if (shouldCopyCursor) "true" else "false")
+            beginControlFlow("try").apply {
+                val adapterScope = scope.fork()
+                adapter?.convert(outVar, cursorVar, adapterScope)
+                addCode(adapterScope.builder().build())
+                transactionWrapper?.commitTransaction()
+                addStatement("return $L", outVar)
+            }
+            nextControlFlow("finally").apply {
+                addStatement("$L.close()", cursorVar)
+                if (canReleaseQuery) {
+                    addStatement("$L.release()", roomSQLiteQueryVar)
+                }
+            }
+            endControlFlow()
+        }
+        transactionWrapper?.endTransactionWithControlFlow()
+    }
+}
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt b/room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
index da6bbdc..f54bbaa 100644
--- a/room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
@@ -86,7 +86,7 @@
                         allQueryColumns = info.columns.map { it.name }))
             }
             if (matchedFields.isEmpty()) {
-                context.logger.e(ProcessorErrors.CANNOT_FIND_QUERY_RESULT_ADAPTER)
+                context.logger.e(ProcessorErrors.cannotFindQueryResultAdapter(out.toString()))
             }
         } else {
             matchedFields = remainingFields.map { it }
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CoroutineDeleteOrUpdateMethodBinder.kt b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CoroutineDeleteOrUpdateMethodBinder.kt
new file mode 100644
index 0000000..5353d24
--- /dev/null
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CoroutineDeleteOrUpdateMethodBinder.kt
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.solver.shortcut.binder
+
+import androidx.room.ext.CallableTypeSpecBuilder
+import androidx.room.ext.L
+import androidx.room.ext.N
+import androidx.room.ext.RoomCoroutinesTypeNames
+import androidx.room.ext.T
+import androidx.room.ext.typeName
+import androidx.room.solver.CodeGenScope
+import androidx.room.solver.shortcut.result.DeleteOrUpdateMethodAdapter
+import androidx.room.vo.ShortcutQueryParameter
+import androidx.room.writer.DaoWriter
+import com.squareup.javapoet.FieldSpec
+import com.squareup.javapoet.TypeSpec
+import javax.lang.model.type.TypeMirror
+
+/**
+ * Binder that knows how to write delete and update methods that are suspend functions.
+ */
+class CoroutineDeleteOrUpdateMethodBinder(
+    private val typeArg: TypeMirror,
+    private val continuationParamName: String,
+    adapter: DeleteOrUpdateMethodAdapter?
+
+) : DeleteOrUpdateMethodBinder(adapter) {
+
+    private val instantDeleteOrUpdateMethodBinder = InstantDeleteOrUpdateMethodBinder(adapter)
+
+    override fun convertAndReturn(
+        parameters: List<ShortcutQueryParameter>,
+        adapters: Map<String, Pair<FieldSpec, TypeSpec>>,
+        scope: CodeGenScope
+    ) {
+        val adapterScope = scope.fork()
+        val callableImpl = CallableTypeSpecBuilder(typeArg.typeName()) {
+            instantDeleteOrUpdateMethodBinder.convertAndReturn(
+                parameters = parameters,
+                adapters = adapters,
+                scope = adapterScope
+            )
+            addCode(adapterScope.generate())
+        }.build()
+
+        scope.builder().apply {
+            addStatement(
+                "return $T.execute($N, $L, $N)",
+                RoomCoroutinesTypeNames.COROUTINES_ROOM,
+                DaoWriter.dbField,
+                callableImpl,
+                continuationParamName)
+        }
+    }
+}
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CoroutineInsertMethodBinder.kt b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CoroutineInsertMethodBinder.kt
new file mode 100644
index 0000000..a374409
--- /dev/null
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CoroutineInsertMethodBinder.kt
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.solver.shortcut.binder
+
+import androidx.room.ext.CallableTypeSpecBuilder
+import androidx.room.ext.L
+import androidx.room.ext.N
+import androidx.room.ext.RoomCoroutinesTypeNames
+import androidx.room.ext.T
+import androidx.room.ext.typeName
+import androidx.room.solver.CodeGenScope
+import androidx.room.solver.shortcut.result.InsertMethodAdapter
+import androidx.room.vo.ShortcutQueryParameter
+import androidx.room.writer.DaoWriter
+import com.squareup.javapoet.FieldSpec
+import com.squareup.javapoet.TypeSpec
+import javax.lang.model.type.TypeMirror
+
+/**
+ * Binder that knows how to write insert methods that are suspend functions.
+ */
+class CoroutineInsertMethodBinder(
+    val typeArg: TypeMirror,
+    private val continuationParamName: String,
+    adapter: InsertMethodAdapter?
+) : InsertMethodBinder(adapter) {
+
+    private val instantInsertMethodBinder = InstantInsertMethodBinder(adapter)
+
+    override fun convertAndReturn(
+        parameters: List<ShortcutQueryParameter>,
+        insertionAdapters: Map<String, Pair<FieldSpec, TypeSpec>>,
+        scope: CodeGenScope
+    ) {
+
+        val adapterScope = scope.fork()
+        val callableImpl = CallableTypeSpecBuilder(typeArg.typeName()) {
+            instantInsertMethodBinder.convertAndReturn(
+                parameters = parameters,
+                insertionAdapters = insertionAdapters,
+                scope = adapterScope
+            )
+            addCode(adapterScope.generate())
+        }.build()
+
+        scope.builder().apply {
+            addStatement(
+                "return $T.execute($N, $L, $N)",
+                RoomCoroutinesTypeNames.COROUTINES_ROOM,
+                DaoWriter.dbField,
+                callableImpl,
+                continuationParamName)
+        }
+    }
+}
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/result/DeleteOrUpdateMethodAdapter.kt b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/result/DeleteOrUpdateMethodAdapter.kt
index e23f7ad..304a40c 100644
--- a/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/result/DeleteOrUpdateMethodAdapter.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/result/DeleteOrUpdateMethodAdapter.kt
@@ -16,6 +16,7 @@
 
 package androidx.room.solver.shortcut.result
 
+import androidx.room.ext.KotlinTypeNames
 import androidx.room.ext.L
 import androidx.room.ext.N
 import androidx.room.ext.T
@@ -53,10 +54,14 @@
         private fun isVoidObject(typeMirror: TypeMirror) = MoreTypes.isType(typeMirror) &&
                 MoreTypes.isTypeOf(Void::class.java, typeMirror)
 
+        private fun isKotlinUnit(typeMirror: TypeMirror) = MoreTypes.isType(typeMirror) &&
+                MoreTypes.isTypeOf(Unit::class.java, typeMirror)
+
         private fun isDeleteOrUpdateValid(returnType: TypeMirror): Boolean {
             return returnType.kind == TypeKind.VOID ||
                     isIntType(returnType) ||
-                    isVoidObject(returnType)
+                    isVoidObject(returnType) ||
+                    isKotlinUnit(returnType)
         }
     }
 
@@ -88,6 +93,8 @@
                     addStatement("return $L", resultVar)
                 } else if (hasNullReturn(returnType)) {
                     addStatement("return null")
+                } else if (hasUnitReturn(returnType)) {
+                    addStatement("return $T.INSTANCE", KotlinTypeNames.UNIT)
                 }
             }
             nextControlFlow("finally").apply {
@@ -99,8 +106,12 @@
     }
 
     private fun hasResultValue(returnType: TypeMirror): Boolean {
-        return !(returnType.kind == TypeKind.VOID || isVoidObject(returnType))
+        return !(returnType.kind == TypeKind.VOID ||
+                isVoidObject(returnType) ||
+                isKotlinUnit(returnType))
     }
 
     private fun hasNullReturn(returnType: TypeMirror) = isVoidObject(returnType)
+
+    private fun hasUnitReturn(returnType: TypeMirror) = isKotlinUnit(returnType)
 }
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertMethodAdapter.kt b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertMethodAdapter.kt
index e27a36b..ba70f2f 100644
--- a/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertMethodAdapter.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertMethodAdapter.kt
@@ -16,6 +16,7 @@
 
 package androidx.room.solver.shortcut.result
 
+import androidx.room.ext.KotlinTypeNames
 import androidx.room.ext.L
 import androidx.room.ext.N
 import androidx.room.ext.T
@@ -56,13 +57,15 @@
                 return false
             }
             if (params.isEmpty() || params.size > 1) {
-                return insertionType == InsertionType.INSERT_VOID
+                return insertionType == InsertionType.INSERT_VOID ||
+                        insertionType == InsertionType.INSERT_UNIT
             }
             return if (params.first().isMultiple) {
                 insertionType in MULTIPLE_ITEM_SET
             } else {
                 insertionType == InsertionType.INSERT_VOID ||
                         insertionType == InsertionType.INSERT_VOID_OBJECT ||
+                        insertionType == InsertionType.INSERT_UNIT ||
                         insertionType == InsertionType.INSERT_SINGLE_ID
             }
         }
@@ -70,6 +73,7 @@
         private val MULTIPLE_ITEM_SET by lazy {
             setOf(InsertionType.INSERT_VOID,
                     InsertionType.INSERT_VOID_OBJECT,
+                    InsertionType.INSERT_UNIT,
                     InsertionType.INSERT_ID_ARRAY,
                     InsertionType.INSERT_ID_ARRAY_BOX,
                     InsertionType.INSERT_ID_LIST)
@@ -93,10 +97,15 @@
             fun isVoidObject(typeMirror: TypeMirror) = MoreTypes.isType(typeMirror) &&
                     MoreTypes.isTypeOf(Void::class.java, typeMirror)
 
+            fun isKotlinUnit(typeMirror: TypeMirror) = MoreTypes.isType(typeMirror) &&
+                    MoreTypes.isTypeOf(Unit::class.java, typeMirror)
+
             return if (returnType.kind == TypeKind.VOID) {
                 InsertionType.INSERT_VOID
             } else if (isVoidObject(returnType)) {
                 InsertionType.INSERT_VOID_OBJECT
+            } else if (isKotlinUnit(returnType)) {
+                InsertionType.INSERT_UNIT
             } else if (returnType.kind == TypeKind.ARRAY) {
                 val arrayType = MoreTypes.asArray(returnType)
                 val param = arrayType.componentType
@@ -131,7 +140,8 @@
             // TODO collect results
             addStatement("$N.beginTransaction()", DaoWriter.dbField)
             val needsResultVar = insertionType != InsertionType.INSERT_VOID &&
-                    insertionType != InsertionType.INSERT_VOID_OBJECT
+                    insertionType != InsertionType.INSERT_VOID_OBJECT &&
+                    insertionType != InsertionType.INSERT_UNIT
             val resultVar = if (needsResultVar) {
                 scope.getTmpVar("_result")
             } else {
@@ -159,6 +169,8 @@
                     addStatement("return $L", resultVar)
                 } else if (insertionType == InsertionType.INSERT_VOID_OBJECT) {
                     addStatement("return null")
+                } else if (insertionType == InsertionType.INSERT_UNIT) {
+                    addStatement("return $T.INSTANCE", KotlinTypeNames.UNIT)
                 }
             }
             nextControlFlow("finally").apply {
@@ -176,12 +188,13 @@
     ) {
         INSERT_VOID("insert", TypeName.VOID), // return void
         INSERT_VOID_OBJECT("insert", TypeName.VOID), // return void
+        INSERT_UNIT("insert", KotlinTypeNames.UNIT), // return kotlin.Unit.INSTANCE
         INSERT_SINGLE_ID("insertAndReturnId", TypeName.LONG), // return long
         INSERT_ID_ARRAY("insertAndReturnIdsArray",
                 ArrayTypeName.of(TypeName.LONG)), // return long[]
         INSERT_ID_ARRAY_BOX("insertAndReturnIdsArrayBox",
                 ArrayTypeName.of(TypeName.LONG.box())), // return Long[]
         INSERT_ID_LIST("insertAndReturnIdsList", // return List<Long>
-                ParameterizedTypeName.get(List::class.typeName(), TypeName.LONG.box()))
+                ParameterizedTypeName.get(List::class.typeName(), TypeName.LONG.box())),
     }
 }
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/vo/RelationCollector.kt b/room/compiler/src/main/kotlin/androidx/room/vo/RelationCollector.kt
index 5f227f6..f98e8e4 100644
--- a/room/compiler/src/main/kotlin/androidx/room/vo/RelationCollector.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/vo/RelationCollector.kt
@@ -26,7 +26,7 @@
 import androidx.room.parser.SQLTypeAffinity
 import androidx.room.parser.SqlParser
 import androidx.room.processor.Context
-import androidx.room.processor.ProcessorErrors.CANNOT_FIND_QUERY_RESULT_ADAPTER
+import androidx.room.processor.ProcessorErrors.cannotFindQueryResultAdapter
 import androidx.room.processor.ProcessorErrors.relationAffinityMismatch
 import androidx.room.solver.CodeGenScope
 import androidx.room.solver.query.parameter.QueryParameterAdapter
@@ -327,7 +327,8 @@
                 }
 
                 if (rowAdapter == null) {
-                    context.logger.e(relation.field.element, CANNOT_FIND_QUERY_RESULT_ADAPTER)
+                    context.logger.e(relation.field.element,
+                        cannotFindQueryResultAdapter(relation.pojoType.toString()))
                     null
                 } else {
                     RelationCollector(
diff --git a/room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt b/room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
index 0dbaa4b..36a21ff 100644
--- a/room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
+++ b/room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
@@ -30,7 +30,7 @@
 import androidx.room.ext.hasAnnotation
 import androidx.room.ext.typeName
 import androidx.room.parser.Table
-import androidx.room.processor.ProcessorErrors.CANNOT_FIND_QUERY_RESULT_ADAPTER
+import androidx.room.processor.ProcessorErrors.cannotFindQueryResultAdapter
 import androidx.room.solver.query.result.DataSourceFactoryQueryResultBinder
 import androidx.room.solver.query.result.ListQueryResultAdapter
 import androidx.room.solver.query.result.LiveDataQueryResultBinder
@@ -711,7 +711,7 @@
             assertThat(adapter?.mapping?.unusedColumns, `is`(listOf("name", "lastName")))
             assertThat(adapter?.mapping?.unusedFields, `is`(adapter?.pojo?.fields as List<Field>))
         }?.failsToCompile()
-                ?.withErrorContaining(CANNOT_FIND_QUERY_RESULT_ADAPTER)
+                ?.withErrorContaining(cannotFindQueryResultAdapter("foo.bar.MyClass.Pojo"))
                 ?.and()
                 ?.withWarningContaining(
                         ProcessorErrors.cursorPojoMismatch(
@@ -853,7 +853,8 @@
         if (enableVerification) {
             return assertion
         } else {
-            assertion.failsToCompile().withErrorContaining(CANNOT_FIND_QUERY_RESULT_ADAPTER)
+            assertion.failsToCompile()
+                .withErrorContaining(cannotFindQueryResultAdapter("foo.bar.MyClass.Pojo"))
             return null
         }
     }
diff --git a/room/coroutines/build.gradle b/room/coroutines/build.gradle
new file mode 100644
index 0000000..bb734c9
--- /dev/null
+++ b/room/coroutines/build.gradle
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+import static androidx.build.dependencies.DependenciesKt.*
+import androidx.build.LibraryGroups
+import androidx.build.LibraryVersions
+import androidx.build.SupportLibraryExtension
+
+plugins {
+    id("SupportAndroidLibraryPlugin")
+    id("org.jetbrains.kotlin.android")
+}
+
+dependencies {
+    api(project(":room:room-common"))
+    api(project(":room:room-runtime"))
+    api(KOTLIN_STDLIB)
+    api(KOTLIN_COROUTINES)
+    testImplementation(JUNIT)
+    testImplementation(MOCKITO_CORE)
+}
+
+supportLibrary {
+    name = "Android Room Coroutines Adapter"
+    publish = true
+    mavenVersion = LibraryVersions.ROOM
+    mavenGroup = LibraryGroups.ROOM
+    inceptionYear = "2018"
+    description = "Android Room Coroutines Adapter"
+    url = SupportLibraryExtension.ARCHITECTURE_URL
+}
+repositories {
+    mavenCentral()
+}
\ No newline at end of file
diff --git a/room/coroutines/src/main/AndroidManifest.xml b/room/coroutines/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..364afdb
--- /dev/null
+++ b/room/coroutines/src/main/AndroidManifest.xml
@@ -0,0 +1,19 @@
+<!--
+  ~ Copyright (C) 2018 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.
+  -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="androidx.room.coroutines">
+</manifest>
diff --git a/room/coroutines/src/main/java/androidx/room/CoroutinesRoom.kt b/room/coroutines/src/main/java/androidx/room/CoroutinesRoom.kt
new file mode 100644
index 0000000..ca26d18
--- /dev/null
+++ b/room/coroutines/src/main/java/androidx/room/CoroutinesRoom.kt
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room
+
+import androidx.annotation.RestrictTo
+import kotlinx.coroutines.asCoroutineDispatcher
+import kotlinx.coroutines.withContext
+import java.util.concurrent.Callable
+
+/**
+ * A helper class for supporting Kotlin Coroutines in Room.
+ *
+ * @hide
+ */
+@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+class CoroutinesRoom {
+
+    companion object {
+        @JvmStatic
+        suspend fun <R> execute(db: RoomDatabase, callable: Callable<R>): R {
+            return withContext(db.queryExecutor.asCoroutineDispatcher()) {
+                callable.call()
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/room/integration-tests/kotlintestapp/build.gradle b/room/integration-tests/kotlintestapp/build.gradle
index 41336aa..09b3e8f3 100644
--- a/room/integration-tests/kotlintestapp/build.gradle
+++ b/room/integration-tests/kotlintestapp/build.gradle
@@ -62,6 +62,7 @@
     androidTestImplementation project(':room:room-guava')
     androidTestImplementation project(':room:room-testing')
     androidTestImplementation project(':room:room-rxjava2')
+    androidTestImplementation(project(":room:room-coroutines"))
     androidTestImplementation(ARCH_CORE_TESTING)
     androidTestImplementation(GUAVA_ANDROID)
     androidTestImplementation(RX_JAVA)
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt
index 9311bff..2adccfc 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt
@@ -21,6 +21,7 @@
 import androidx.room.Delete
 import androidx.room.Insert
 import androidx.room.Query
+import androidx.room.RawQuery
 import androidx.room.Transaction
 import androidx.room.TypeConverters
 import androidx.room.Update
@@ -33,6 +34,7 @@
 import androidx.room.integration.kotlintestapp.vo.Publisher
 import androidx.room.integration.kotlintestapp.vo.PublisherWithBookSales
 import androidx.room.integration.kotlintestapp.vo.PublisherWithBooks
+import androidx.sqlite.db.SupportSQLiteQuery
 import com.google.common.base.Optional
 import com.google.common.util.concurrent.ListenableFuture
 import io.reactivex.Completable
@@ -109,6 +111,40 @@
     @Query("SELECT * FROM book WHERE bookId = :bookId")
     fun getBook(bookId: String): Book
 
+    @Query("SELECT * FROM book WHERE bookId = :bookId")
+    suspend fun getBookSuspend(bookId: String): Book
+
+    @Query("SELECT * FROM book")
+    suspend fun getBooksSuspend(): List<Book>
+
+    @Transaction
+    @Query("SELECT * FROM book WHERE salesCnt > :count")
+    suspend fun getBooksWithMinSalesCountSuspend(count: Int): List<Book>
+
+    @RawQuery
+    suspend fun getBookWithRawQuerySuspend(query: SupportSQLiteQuery): Book
+
+    @Insert
+    suspend fun insertBookSuspend(book: Book)
+
+    @Insert
+    suspend fun insertBookWithResultSuspend(book: Book): Long
+
+    @Insert
+    suspend fun insertBooksWithResultSuspend(vararg book: Book): List<Long>
+
+    @Delete
+    suspend fun deleteBookSuspend(book: Book)
+
+    @Delete
+    suspend fun deleteBookWithResultSuspend(book: Book): Int
+
+    @Update
+    suspend fun updateBookSuspend(book: Book)
+
+    @Update
+    suspend fun updateBookWithResultSuspend(book: Book): Int
+
     @Query("""SELECT * FROM book WHERE
             bookId IN(:bookIds)
             order by bookId DESC""")
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/BooksDaoTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/BooksDaoTest.kt
index 5d25ec4..793b5e9 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/BooksDaoTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/BooksDaoTest.kt
@@ -18,15 +18,23 @@
 
 import android.database.sqlite.SQLiteConstraintException
 import androidx.arch.core.executor.ArchTaskExecutor
-import androidx.room.integration.kotlintestapp.vo.*
+import androidx.room.integration.kotlintestapp.vo.Author
+import androidx.room.integration.kotlintestapp.vo.Book
+import androidx.room.integration.kotlintestapp.vo.BookWithPublisher
+import androidx.room.integration.kotlintestapp.vo.Lang
+import androidx.room.integration.kotlintestapp.vo.Publisher
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import com.google.common.base.Optional
 import io.reactivex.Flowable
 import io.reactivex.schedulers.Schedulers
 import io.reactivex.subscribers.TestSubscriber
+import kotlinx.coroutines.runBlocking
 import org.hamcrest.CoreMatchers
-import org.hamcrest.CoreMatchers.*
+import org.hamcrest.CoreMatchers.`is`
+import org.hamcrest.CoreMatchers.equalTo
+import org.hamcrest.CoreMatchers.instanceOf
+import org.hamcrest.CoreMatchers.notNullValue
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Assert.assertNotNull
 import org.junit.Test
@@ -50,6 +58,32 @@
         assertThat(booksDao.getBook(TestUtil.BOOK_1.bookId), `is`<Book>(TestUtil.BOOK_1))
     }
 
+    @Test
+    fun bookByIdSuspend() {
+        runBlocking {
+            booksDao.addAuthors(TestUtil.AUTHOR_1)
+            booksDao.addPublishers(TestUtil.PUBLISHER)
+            booksDao.addBooks(TestUtil.BOOK_1)
+
+            assertThat(booksDao.getBookSuspend(TestUtil.BOOK_1.bookId), `is`<Book>(TestUtil.BOOK_1))
+        }
+    }
+
+    @Test
+    fun allBookSuspend() {
+        runBlocking {
+            booksDao.addAuthors(TestUtil.AUTHOR_1)
+            booksDao.addPublishers(TestUtil.PUBLISHER)
+            booksDao.addBooks(TestUtil.BOOK_1, TestUtil.BOOK_2)
+
+            val books = booksDao.getBooksSuspend()
+
+            assertThat(books.size, `is`(2))
+            assertThat(books[0], `is`<Book>(TestUtil.BOOK_1))
+            assertThat(books[1], `is`<Book>(TestUtil.BOOK_2))
+        }
+    }
+
     @SdkSuppress(minSdkVersion = 24)
     @Test
     fun bookByIdJavaOptional() {
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendRoomDispatcherTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendRoomDispatcherTest.kt
new file mode 100644
index 0000000..744283c
--- /dev/null
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendRoomDispatcherTest.kt
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.integration.kotlintestapp.test
+
+import androidx.arch.core.executor.ArchTaskExecutor
+import androidx.arch.core.executor.DefaultTaskExecutor
+import androidx.test.filters.SmallTest
+import kotlinx.coroutines.runBlocking
+import org.hamcrest.CoreMatchers.`is`
+import org.hamcrest.MatcherAssert.assertThat
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import java.util.concurrent.atomic.AtomicInteger
+
+/**
+ * A small test to verify Room's executor is used as dispatcher for DAO suspend functions.
+ */
+@SmallTest
+class SuspendRoomDispatcherTest : TestDatabaseTest() {
+
+    val executeCount = AtomicInteger()
+
+    @Before
+    fun setup() {
+        ArchTaskExecutor.getInstance().setDelegate(object : DefaultTaskExecutor() {
+            override fun executeOnDiskIO(runnable: Runnable) {
+                executeCount.incrementAndGet()
+                super.executeOnDiskIO(runnable)
+            }
+        })
+    }
+
+    @After
+    fun teardown() {
+        ArchTaskExecutor.getInstance().setDelegate(null)
+    }
+
+    @Test
+    fun testIODispatcher() {
+        runBlocking {
+            booksDao.getBooksSuspend()
+
+            assertThat(executeCount.get(), `is`(1))
+        }
+    }
+}
\ No newline at end of file
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java
index 17a7333..ed57f29 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java
@@ -40,8 +40,10 @@
 
 import org.reactivestreams.Publisher;
 
+import java.util.Collection;
 import java.util.Date;
 import java.util.List;
+import java.util.Queue;
 import java.util.Set;
 import java.util.concurrent.Callable;
 
@@ -70,6 +72,15 @@
     @Query("select * from user where mId IN(:ids)")
     public abstract User[] loadByIds(int... ids);
 
+    @Query("select * from user where mId IN(:ids)")
+    public abstract List<User> loadByIdCollection(Collection<Integer> ids);
+
+    @Query("select * from user where mId IN(:ids)")
+    public abstract List<User> loadByIdSet(Set<Integer> ids);
+
+    @Query("select * from user where mId IN(:ids)")
+    public abstract List<User> loadByIdQueue(Queue<Integer> ids);
+
     @Query("select * from user where custommm = :customField")
     public abstract List<User> findByCustomField(String customField);
 
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/SimpleEntityReadWriteTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/SimpleEntityReadWriteTest.java
index 2f05f72..7b06936 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/SimpleEntityReadWriteTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/SimpleEntityReadWriteTest.java
@@ -17,6 +17,7 @@
 package androidx.room.integration.testapp.test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.hasItems;
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
@@ -62,6 +63,7 @@
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
@@ -639,6 +641,36 @@
         assertThat(users.get(0).getName(), is(equalTo("john")));
     }
 
+    @Test
+    public void queryByCollection() {
+        User[] users = TestUtil.createUsersArray(3, 5, 7, 9);
+        mUserDao.insertAll(users);
+        List<Integer> ids = Arrays.asList(3, 5, 7, 9);
+        List<User> loadedUsers = mUserDao.loadByIdCollection(ids);
+        assertThat(loadedUsers, hasSize(4));
+        assertThat(loadedUsers, hasItems(users));
+    }
+
+    @Test
+    public void queryByQueue() {
+        User[] users = TestUtil.createUsersArray(3, 5, 7, 9);
+        mUserDao.insertAll(users);
+        LinkedList<Integer> ids = new LinkedList<>(Arrays.asList(3, 5, 7, 9));
+        List<User> loadedUsers = mUserDao.loadByIdQueue(ids);
+        assertThat(loadedUsers, hasSize(4));
+        assertThat(loadedUsers, hasItems(users));
+    }
+
+    @Test
+    public void queryBySet() {
+        User[] users = TestUtil.createUsersArray(3, 5, 7, 9);
+        mUserDao.insertAll(users);
+        HashSet<Integer> ids = new HashSet<>(Arrays.asList(3, 5, 7, 9));
+        List<User> loadedUsers = mUserDao.loadByIdSet(ids);
+        assertThat(loadedUsers, hasSize(4));
+        assertThat(loadedUsers, hasItems(users));
+    }
+
     private Set<Day> toSet(Day... days) {
         return new HashSet<>(Arrays.asList(days));
     }
diff --git a/settings.gradle b/settings.gradle
index 1724b7b..24d3602 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -144,6 +144,7 @@
 includeProject(":room:room-benchmark", "room/benchmark")
 includeProject(":room:room-common", "room/common")
 includeProject(":room:room-compiler", "room/compiler")
+includeProject(":room:room-coroutines", "room/coroutines")
 includeProject(":room:room-guava", "room/guava")
 includeProject(":room:room-migration", "room/migration")
 includeProject(":room:room-runtime", "room/runtime")
diff --git a/slices/core/api/1.1.0-alpha01.txt b/slices/core/api/1.1.0-alpha01.txt
index 6abecd0..970ac37 100644
--- a/slices/core/api/1.1.0-alpha01.txt
+++ b/slices/core/api/1.1.0-alpha01.txt
@@ -14,6 +14,7 @@
   }
 
   @RequiresApi(19) public final class SliceItem extends androidx.versionedparcelable.CustomVersionedParcelable {
+    method public static android.text.ParcelableSpan createSensitiveSpan();
     method public void fireAction(android.content.Context?, android.content.Intent?) throws android.app.PendingIntent.CanceledException;
     method public android.app.PendingIntent! getAction();
     method public String! getFormat();
@@ -21,6 +22,7 @@
     method public androidx.core.graphics.drawable.IconCompat! getIcon();
     method public int getInt();
     method public long getLong();
+    method public CharSequence? getRedactedText();
     method public androidx.slice.Slice! getSlice();
     method public String! getSubType();
     method public CharSequence! getText();
diff --git a/slices/core/api/current.txt b/slices/core/api/current.txt
index 6abecd0..970ac37 100644
--- a/slices/core/api/current.txt
+++ b/slices/core/api/current.txt
@@ -14,6 +14,7 @@
   }
 
   @RequiresApi(19) public final class SliceItem extends androidx.versionedparcelable.CustomVersionedParcelable {
+    method public static android.text.ParcelableSpan createSensitiveSpan();
     method public void fireAction(android.content.Context?, android.content.Intent?) throws android.app.PendingIntent.CanceledException;
     method public android.app.PendingIntent! getAction();
     method public String! getFormat();
@@ -21,6 +22,7 @@
     method public androidx.core.graphics.drawable.IconCompat! getIcon();
     method public int getInt();
     method public long getLong();
+    method public CharSequence? getRedactedText();
     method public androidx.slice.Slice! getSlice();
     method public String! getSubType();
     method public CharSequence! getText();
diff --git a/slices/core/src/androidTest/java/androidx/slice/SliceItemTest.java b/slices/core/src/androidTest/java/androidx/slice/SliceItemTest.java
new file mode 100644
index 0000000..50f48bae
--- /dev/null
+++ b/slices/core/src/androidTest/java/androidx/slice/SliceItemTest.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2018 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.slice;
+
+import static android.graphics.Typeface.BOLD;
+
+import static org.junit.Assert.assertEquals;
+
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
+import android.text.style.StyleSpan;
+
+import androidx.test.filters.SdkSuppress;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@SdkSuppress(minSdkVersion = 19)
+public class SliceItemTest {
+
+    @Test
+    public void testNormalText() {
+        String text = "Some normal text";
+        SliceItem item = new SliceItem(text, android.app.slice.SliceItem.FORMAT_TEXT, null,
+                new String[0]);
+
+        assertEquals(text, item.getText());
+        assertEquals(text, item.getRedactedText());
+    }
+
+    @Test
+    public void testSpannedText() {
+        // "Some [normal] text" where [] denotes bold.
+        CharSequence text = new SpannableStringBuilder()
+                .append("Some ")
+                .append("normal", new StyleSpan(BOLD), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+                .append(" text");
+        SliceItem item = new SliceItem(text, android.app.slice.SliceItem.FORMAT_TEXT, null,
+                new String[0]);
+
+        assertEquals(text, item.getText());
+        assertEquals(text, item.getRedactedText());
+    }
+
+    @Test
+    public void testRedactedText() {
+        // "Some [normal] text" where [] denotes sensitive
+        CharSequence text = new SpannableStringBuilder()
+                .append("Some ")
+                .append("normal", SliceItem.createSensitiveSpan(),
+                        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+                .append(" text");
+        String redactedText = "Some ****** text";
+        SliceItem item = new SliceItem(text, android.app.slice.SliceItem.FORMAT_TEXT, null,
+                new String[0]);
+
+        assertEquals(text, item.getText());
+        assertEquals(redactedText, item.getRedactedText().toString());
+    }
+
+}
diff --git a/slices/core/src/main/java/androidx/slice/SliceItem.java b/slices/core/src/main/java/androidx/slice/SliceItem.java
index 1f91530..d0a4d6c 100644
--- a/slices/core/src/main/java/androidx/slice/SliceItem.java
+++ b/slices/core/src/main/java/androidx/slice/SliceItem.java
@@ -33,8 +33,11 @@
 import android.graphics.Color;
 import android.os.Bundle;
 import android.os.Parcelable;
+import android.text.Annotation;
+import android.text.ParcelableSpan;
 import android.text.Spannable;
 import android.text.SpannableString;
+import android.text.SpannableStringBuilder;
 import android.text.Spanned;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
@@ -88,6 +91,8 @@
     private static final String SUBTYPE = "subtype";
     private static final String OBJ = "obj";
     private static final String OBJ_2 = "obj_2";
+    private static final String SLICE_CONTENT = "androidx.slice.content";
+    private static final String SLICE_CONTENT_SENSITIVE = "sensitive";
 
     /**
      * @hide
@@ -238,6 +243,17 @@
     }
 
     /**
+     * Get the same content as {@link #getText()} except with content that should be excluded from
+     * persistent logs because it was tagged with {@link #createSensitiveSpan()}.
+     *
+     * @return The text held by this {@link android.app.slice.SliceItem#FORMAT_TEXT} SliceItem
+     */
+    @Nullable
+    public CharSequence getRedactedText() {
+        return redactSensitiveText(getText());
+    }
+
+    /**
      * @return The icon held by this {@link android.app.slice.SliceItem#FORMAT_IMAGE} SliceItem
      */
     public IconCompat getIcon() {
@@ -551,6 +567,15 @@
         mHolder = null;
     }
 
+    /**
+     * Creates a span object that identifies content that should be redacted when acquired using
+     * {@link #getRedactedText()}.
+     */
+    @NonNull
+    public static ParcelableSpan createSensitiveSpan() {
+        return new Annotation(SLICE_CONTENT, SLICE_CONTENT_SENSITIVE);
+    }
+
     private static String layoutDirectionToString(int layoutDirection) {
         switch (layoutDirection) {
             case android.util.LayoutDirection.LTR:
@@ -566,6 +591,53 @@
         }
     }
 
+    private static CharSequence redactSensitiveText(CharSequence text) {
+        if (text instanceof Spannable) {
+            return redactSpannableText((Spannable) text);
+        } else if (text instanceof Spanned) {
+            if (!isRedactionNeeded((Spanned) text)) return text;
+            Spannable fixedText = new SpannableString(text);
+            return redactSpannableText(fixedText);
+        } else {
+            return text;
+        }
+    }
+
+    private static boolean isRedactionNeeded(Spanned text) {
+        for (Annotation span : text.getSpans(0, text.length(), Annotation.class)) {
+            if (SLICE_CONTENT.equals(span.getKey())
+                    && SLICE_CONTENT_SENSITIVE.equals(span.getValue())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static CharSequence redactSpannableText(Spannable text) {
+        Spanned out = text;
+        for (Annotation span : text.getSpans(0, text.length(), Annotation.class)) {
+            if (!SLICE_CONTENT.equals(span.getKey())
+                    || !SLICE_CONTENT_SENSITIVE.equals(span.getValue())) {
+                continue;
+            }
+            int spanStart = text.getSpanStart(span);
+            int spanEnd = text.getSpanEnd(span);
+            out = new SpannableStringBuilder()
+                    .append(out.subSequence(0, spanStart))
+                    .append(createRedacted(spanEnd - spanStart))
+                    .append(out.subSequence(spanEnd, text.length()));
+        }
+        return out;
+    }
+
+    private static String createRedacted(final int n) {
+        StringBuilder s = new StringBuilder();
+        for (int i = 0; i < n; i++) {
+            s.append('*');
+        }
+        return s.toString();
+    }
+
     private static CharSequence sanitizeText(CharSequence text) {
         if (text instanceof Spannable) {
             fixSpannableText((Spannable) text);
diff --git a/studiow b/studiow
index 5da0362..6458339 100755
--- a/studiow
+++ b/studiow
@@ -6,14 +6,17 @@
 
 
 function getStudioUrl() {
+  version="3.3.0.17"
+  ideaMajorVersion="182"
+  buildNumber="5138683"
   osName="$1"
-  buildNumber="5056338"
-  studioUrl="https://dl.google.com/dl/android/studio/ide-zips/3.2.1.0/android-studio-ide-181.${buildNumber}-${osName}.zip"
+  studioUrl="https://dl.google.com/dl/android/studio/ide-zips/${version}/android-studio-ide-${ideaMajorVersion}.${buildNumber}-${osName}.zip"
   echo "${studioUrl}"
 }
 
 acceptsLicenseAgreement="$1"
 scriptDir="$(cd $(dirname $0) && pwd)"
+projectDir=$scriptDir
 tempDir="${scriptDir}/studio"
 function getOsName() {
   unameOutput="$(uname)"
@@ -70,13 +73,17 @@
 function runStudioLinux() {
   studioPath="${studioUnzippedPath}/android-studio/bin/studio.sh"
   echo "$studioPath &"
-  "${studioPath}" &
+  env STUDIO_PROPERTIES="${projectDir}/development/studio/idea.properties" \
+      STUDIO_VM_OPTIONS="${projectDir}/development/studio/studio.vmoptions" \
+      "${studioPath}" "${projectDir}" &
 }
 
 function runStudioMac() {
   studioPath="${studioUnzippedPath}/Android Studio.app"
   echo "open ${studioPath}"
-  open "${studioPath}"
+  env STUDIO_PROPERTIES="${projectDir}/development/studio/idea.properties" \
+      STUDIO_VM_OPTIONS="${projectDir}/development/studio/studio.vmoptions" \
+      open "${studioPath}" "${projectDir}"
 }
 
 function runStudio() {
diff --git a/textclassifier/build.gradle b/textclassifier/build.gradle
index 7a1842e..ca2c9bb 100644
--- a/textclassifier/build.gradle
+++ b/textclassifier/build.gradle
@@ -18,7 +18,6 @@
     androidTestImplementation(ESPRESSO_CORE, libs.exclude_for_espresso)
     androidTestImplementation(MOCKITO_CORE, libs.exclude_bytebuddy)
     androidTestImplementation(DEXMAKER_MOCKITO, libs.exclude_bytebuddy)
-    androidTestImplementation(GUAVA_LISTENABLE_FUTURE_AVOID_CONFLICT)
 }
 
 android {
diff --git a/transition/src/androidTest/java/androidx/transition/ChangeScrollTest.java b/transition/src/androidTest/java/androidx/transition/ChangeScrollTest.java
index af0c6e0..bb2ea97 100644
--- a/transition/src/androidTest/java/androidx/transition/ChangeScrollTest.java
+++ b/transition/src/androidTest/java/androidx/transition/ChangeScrollTest.java
@@ -19,15 +19,15 @@
 import static org.junit.Assert.assertEquals;
 import static org.mockito.AdditionalMatchers.and;
 import static org.mockito.AdditionalMatchers.gt;
-import static org.mockito.AdditionalMatchers.lt;
+import static org.mockito.AdditionalMatchers.leq;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 
 import android.widget.TextView;
 
-import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.MediumTest;
+import androidx.test.platform.app.InstrumentationRegistry;
 import androidx.transition.test.R;
 
 import org.junit.Test;
@@ -62,8 +62,8 @@
         });
         waitForStart();
 
-        verify(view, timeout(1000).atLeastOnce()).setScrollX(and(gt(0), lt(150)));
-        verify(view, timeout(1000).atLeastOnce()).setScrollY(and(gt(0), lt(300)));
+        verify(view, timeout(1000).atLeastOnce()).setScrollX(and(gt(0), leq(150)));
+        verify(view, timeout(1000).atLeastOnce()).setScrollY(and(gt(0), leq(300)));
 
         waitForEnd();
         rule.runOnUiThread(new Runnable() {
diff --git a/transition/src/androidTest/java/androidx/transition/ExplodeTest.java b/transition/src/androidTest/java/androidx/transition/ExplodeTest.java
index 9b06234..575f583 100644
--- a/transition/src/androidTest/java/androidx/transition/ExplodeTest.java
+++ b/transition/src/androidTest/java/androidx/transition/ExplodeTest.java
@@ -18,7 +18,9 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.AdditionalMatchers.and;
+import static org.mockito.AdditionalMatchers.geq;
 import static org.mockito.AdditionalMatchers.gt;
+import static org.mockito.AdditionalMatchers.leq;
 import static org.mockito.AdditionalMatchers.lt;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.timeout;
@@ -30,8 +32,8 @@
 import android.widget.FrameLayout;
 import android.widget.LinearLayout;
 
-import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.LargeTest;
+import androidx.test.platform.app.InstrumentationRegistry;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -148,6 +150,7 @@
         verifyMovement(mBlueSquare, Gravity.RIGHT | Gravity.BOTTOM, false);
         verifyMovement(mYellowSquare, Gravity.LEFT | Gravity.BOTTOM, false);
         waitForEnd();
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
 
         verifyNoTranslation(mRedSquare);
         verifyNoTranslation(mGreenSquare);
@@ -167,26 +170,26 @@
             if (movingOut) {
                 verify(v, mode).setTranslationX(and(lt(0f), lt(startX)));
             } else {
-                verify(v, mode).setTranslationX(and(lt(0f), gt(startX)));
+                verify(v, mode).setTranslationX(and(leq(0f), gt(startX)));
             }
         } else if ((direction & Gravity.RIGHT) == Gravity.RIGHT) {
             if (movingOut) {
                 verify(v, mode).setTranslationX(and(gt(0f), gt(startX)));
             } else {
-                verify(v, mode).setTranslationX(and(gt(0f), lt(startX)));
+                verify(v, mode).setTranslationX(and(geq(0f), lt(startX)));
             }
         }
         if ((direction & Gravity.TOP) == Gravity.TOP) {
             if (movingOut) {
                 verify(v, mode).setTranslationY(and(lt(0f), lt(startY)));
             } else {
-                verify(v, mode).setTranslationY(and(lt(0f), gt(startY)));
+                verify(v, mode).setTranslationY(and(leq(0f), gt(startY)));
             }
         } else if ((direction & Gravity.BOTTOM) == Gravity.BOTTOM) {
             if (movingOut) {
                 verify(v, mode).setTranslationY(and(gt(0f), gt(startY)));
             } else {
-                verify(v, mode).setTranslationY(and(gt(0f), lt(startY)));
+                verify(v, mode).setTranslationY(and(geq(0f), lt(startY)));
             }
         }
     }
diff --git a/transition/src/androidTest/java/androidx/transition/SlideEdgeTest.java b/transition/src/androidTest/java/androidx/transition/SlideEdgeTest.java
index 0e56fe7..6340f57 100644
--- a/transition/src/androidTest/java/androidx/transition/SlideEdgeTest.java
+++ b/transition/src/androidTest/java/androidx/transition/SlideEdgeTest.java
@@ -34,9 +34,9 @@
 import android.view.View;
 
 import androidx.core.util.Pair;
-import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.LargeTest;
 import androidx.test.filters.MediumTest;
+import androidx.test.platform.app.InstrumentationRegistry;
 
 import org.junit.Test;
 
@@ -99,7 +99,7 @@
                     redSquare.setVisibility(View.INVISIBLE);
                 }
             });
-            verify(listener, timeout(1000)).onTransitionStart(any(Transition.class));
+            verify(listener, timeout(3000)).onTransitionStart(any(Transition.class));
             assertEquals(View.VISIBLE, redSquare.getVisibility());
 
             float redStartX = redSquare.getTranslationX();
@@ -171,7 +171,7 @@
                 }
             });
 
-            verify(listener, timeout(1000)).onTransitionStart(any(Transition.class));
+            verify(listener, timeout(3000)).onTransitionStart(any(Transition.class));
             assertEquals(View.VISIBLE, redSquare.getVisibility());
 
             final float redStartX = redSquare.getTranslationX();
diff --git a/work/workmanager-ktx/src/androidTest/java/androidx/work/CoroutineWorkerTest.kt b/work/workmanager-ktx/src/androidTest/java/androidx/work/CoroutineWorkerTest.kt
index 84fd8a3..4db33c6 100644
--- a/work/workmanager-ktx/src/androidTest/java/androidx/work/CoroutineWorkerTest.kt
+++ b/work/workmanager-ktx/src/androidTest/java/androidx/work/CoroutineWorkerTest.kt
@@ -65,13 +65,13 @@
         context = InstrumentationRegistry.getTargetContext()
         configuration = Configuration.Builder()
             .setExecutor(SynchronousExecutor())
+            .setMinimumLoggingLevel(Log.DEBUG)
             .build()
         workManagerImpl = WorkManagerImpl(context, configuration,
             InstantWorkTaskExecutor()
         )
         WorkManagerImpl.setDelegate(workManagerImpl)
-        database = workManagerImpl.getWorkDatabase()
-        Logger.setMinimumLoggingLevel(Log.DEBUG)
+        database = workManagerImpl.workDatabase
     }
 
     @After
diff --git a/work/workmanager-testing/src/main/java/androidx/work/testing/package-info.java b/work/workmanager-testing/src/main/java/androidx/work/testing/package-info.java
new file mode 100644
index 0000000..aadfeba
--- /dev/null
+++ b/work/workmanager-testing/src/main/java/androidx/work/testing/package-info.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2018 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.
+ */
+
+/**
+ * WorkManager Testing is a library for testing app code that runs using WorkManager.
+ * <p>
+ * This testing library provides a way to manually initialize WorkManager for tests by using
+ * {@link androidx.work.testing.WorkManagerTestInitHelper}.  Once initialized, you can use
+ * {@link androidx.work.testing.WorkManagerTestInitHelper#getTestDriver()} to drive constraints and
+ * timing-related triggers for your background work.
+ * <p>
+ * For ease of testing, this library defaults to using a synchronous
+ * {@link java.util.concurrent.Executor}; you can change this in the
+ * {@link androidx.work.Configuration} if you wish.
+ */
+package androidx.work.testing;
+
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/ObserveForeverTest.java b/work/workmanager/src/androidTest/java/androidx/work/impl/ObserveForeverTest.java
new file mode 100644
index 0000000..9ef3ca2
--- /dev/null
+++ b/work/workmanager/src/androidTest/java/androidx/work/impl/ObserveForeverTest.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright 2018 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.work.impl;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import android.arch.lifecycle.Observer;
+import android.support.annotation.Nullable;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.work.Configuration;
+import androidx.work.ExistingWorkPolicy;
+import androidx.work.OneTimeWorkRequest;
+import androidx.work.WorkContinuation;
+import androidx.work.WorkInfo;
+import androidx.work.impl.utils.SynchronousExecutor;
+import androidx.work.impl.utils.taskexecutor.InstantWorkTaskExecutor;
+import androidx.work.worker.TestWorker;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.time.Duration;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * TODO remove after moving to AndroidX.
+ * see: b/74477406 for details.
+ */
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class ObserveForeverTest {
+    private WorkManagerImpl mWorkManagerImpl;
+    private final OneTimeWorkRequest mWork = new OneTimeWorkRequest.Builder(TestWorker.class)
+            .addTag("foo")
+            .setInitialDelay(Duration.ofHours(1))
+            .build();
+
+    @Before
+    public void init() {
+        Configuration configuration = new Configuration.Builder()
+                .setExecutor(new SynchronousExecutor())
+                .build();
+        mWorkManagerImpl = new WorkManagerImpl(
+                InstrumentationRegistry.getInstrumentation().getTargetContext(),
+                configuration, new InstantWorkTaskExecutor());
+        WorkManagerImpl.setDelegate(mWorkManagerImpl);
+    }
+
+    @After
+    public void tearDown() {
+        WorkManagerImpl.setDelegate(null);
+    }
+
+    @Test
+    public void observeForever_byTags() throws InterruptedException {
+        LoggingObserver<List<WorkInfo>> observer = new LoggingObserver<>();
+        observer.expectValue();
+
+        mWorkManagerImpl
+                .getWorkInfosByTagLiveData("foo")
+                .observeForever(observer);
+        assertThat(observer.awaitNextValue(), is(Collections.<WorkInfo>emptyList()));
+
+        forceGc();
+        observer.expectValue();
+        mWorkManagerImpl.enqueue(mWork);
+
+        List<WorkInfo> received = observer.awaitNextValue();
+        assertThat(received.size(), is(1));
+        assertThat(received.get(0).getState(), is(WorkInfo.State.ENQUEUED));
+    }
+
+    @Test
+    public void observeForever_byId() throws InterruptedException, ExecutionException {
+        LoggingObserver<WorkInfo> observer = new LoggingObserver<>();
+        observer.expectValue();
+
+        mWorkManagerImpl
+                .getWorkInfoByIdLiveData(mWork.getId())
+                .observeForever(observer);
+
+        mWorkManagerImpl.enqueue(mWork);
+
+        WorkInfo received = observer.awaitNextValue();
+        assertThat(received, is(notNullValue()));
+        assertThat(received.getState(), is(WorkInfo.State.ENQUEUED));
+
+        observer.expectValue();
+        forceGc();
+        mWorkManagerImpl.cancelAllWork().getResult().get();
+
+        assertThat(observer.awaitNextValue().getState(), is(WorkInfo.State.CANCELLED));
+    }
+
+    @Test
+    public void observeForever_uniqueWork() throws InterruptedException {
+        LoggingObserver<List<WorkInfo>> observer = new LoggingObserver<>();
+        observer.expectValue();
+
+        mWorkManagerImpl
+                .getWorkInfosForUniqueWorkLiveData("custom-id")
+                .observeForever(observer);
+        assertThat(observer.awaitNextValue(), is(Collections.<WorkInfo>emptyList()));
+
+        forceGc();
+        observer.expectValue();
+        mWorkManagerImpl.beginUniqueWork("custom-id",
+                ExistingWorkPolicy.REPLACE,
+                mWork).enqueue();
+
+        List<WorkInfo> received = observer.awaitNextValue();
+        assertThat(received.size(), is(1));
+        assertThat(received.get(0).getState(), is(WorkInfo.State.ENQUEUED));
+    }
+
+    @Test
+    public void observeForever_workContinuation() throws InterruptedException {
+        LoggingObserver<List<WorkInfo>> observer = new LoggingObserver<>();
+        observer.expectValue();
+
+        WorkContinuation workContinuation = mWorkManagerImpl.beginWith(mWork);
+        workContinuation.getWorkInfosLiveData().observeForever(observer);
+
+        assertThat(observer.awaitNextValue(), is(Collections.<WorkInfo>emptyList()));
+
+        forceGc();
+
+        observer.expectValue();
+        workContinuation.enqueue();
+
+        List<WorkInfo> received = observer.awaitNextValue();
+        assertThat(received.size(), is(1));
+        assertThat(received.get(0).getState(), is(WorkInfo.State.ENQUEUED));
+    }
+
+    private void forceGc() {
+        Runtime.getRuntime().gc();
+        Runtime.getRuntime().runFinalization();
+        Runtime.getRuntime().gc();
+        Runtime.getRuntime().runFinalization();
+    }
+
+    static class LoggingObserver<T> implements Observer<T> {
+        CountDownLatch mLatch;
+        private T mValue;
+
+        void expectValue() {
+            if (mLatch != null) {
+                throw new IllegalStateException("You've not consumed previous value yet");
+            }
+            mLatch = new CountDownLatch(1);
+        }
+
+        T awaitNextValue() throws InterruptedException {
+            assertThat(mLatch.await(10, TimeUnit.SECONDS), is(true));
+            mLatch = null;
+            return mValue;
+        }
+
+        @Override
+        public void onChanged(@Nullable T t) {
+            if (mLatch == null) {
+                throw new IllegalStateException("Not expecting a value yet");
+            }
+            mValue = t;
+            mLatch.countDown();
+        }
+    }
+}
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkManagerImplTest.java b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkManagerImplTest.java
index 32db5e4..fdae08e 100644
--- a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkManagerImplTest.java
+++ b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkManagerImplTest.java
@@ -77,7 +77,6 @@
 import androidx.work.ContentUriTriggers;
 import androidx.work.Data;
 import androidx.work.ExistingPeriodicWorkPolicy;
-import androidx.work.Logger;
 import androidx.work.OneTimeWorkRequest;
 import androidx.work.PeriodicWorkRequest;
 import androidx.work.TestLifecycleOwner;
@@ -152,12 +151,12 @@
         mContext = InstrumentationRegistry.getTargetContext();
         mConfiguration = new Configuration.Builder()
                 .setExecutor(Executors.newSingleThreadExecutor())
+                .setMinimumLoggingLevel(Log.DEBUG)
                 .build();
         mWorkManagerImpl =
                 new WorkManagerImpl(mContext, mConfiguration, new InstantWorkTaskExecutor());
         WorkManagerImpl.setDelegate(mWorkManagerImpl);
         mDatabase = mWorkManagerImpl.getWorkDatabase();
-        Logger.setMinimumLoggingLevel(Log.DEBUG);
     }
 
     @After
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java
index 363710b..5655583 100644
--- a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java
+++ b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java
@@ -70,6 +70,7 @@
 import androidx.work.worker.InterruptionAwareWorker;
 import androidx.work.worker.LatchWorker;
 import androidx.work.worker.RetryWorker;
+import androidx.work.worker.ReturnNullResultWorker;
 import androidx.work.worker.SleepTestWorker;
 import androidx.work.worker.TestWorker;
 import androidx.work.worker.UsedWorker;
@@ -962,6 +963,19 @@
         assertThat(workerWrapper.mWorker.getRunAttemptCount(), is(10));
     }
 
+    @Test
+    @SmallTest
+    public void testWorkerThatReturnsNullResult() {
+        OneTimeWorkRequest work =
+                new OneTimeWorkRequest.Builder(ReturnNullResultWorker.class).build();
+        insertWork(work);
+        WorkerWrapper workerWrapper = createBuilder(work.getStringId()).build();
+        FutureListener listener = createAndAddFutureListener(workerWrapper);
+        workerWrapper.run();
+        assertThat(listener.mResult, is(false));
+        assertThat(mWorkSpecDao.getState(work.getStringId()), is(FAILED));
+    }
+
     private WorkerWrapper.Builder createBuilder(String workSpecId) {
         return new WorkerWrapper.Builder(
                 mContext,
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcherTest.java b/work/workmanager/src/androidTest/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcherTest.java
index f11cb8d..aa12f7a 100644
--- a/work/workmanager/src/androidTest/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcherTest.java
+++ b/work/workmanager/src/androidTest/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcherTest.java
@@ -42,7 +42,6 @@
 import androidx.work.Configuration;
 import androidx.work.Constraints;
 import androidx.work.DatabaseTest;
-import androidx.work.Logger;
 import androidx.work.OneTimeWorkRequest;
 import androidx.work.WorkInfo;
 import androidx.work.impl.Processor;
@@ -120,9 +119,10 @@
                 mLatch.countDown();
             }
         };
-
-        Logger.setMinimumLoggingLevel(Log.VERBOSE);
-        mConfiguration = new Configuration.Builder().setExecutor(new SynchronousExecutor()).build();
+        mConfiguration = new Configuration.Builder()
+                .setExecutor(new SynchronousExecutor())
+                .setMinimumLoggingLevel(Log.VERBOSE)
+                .build();
         when(mWorkManager.getWorkDatabase()).thenReturn(mDatabase);
         when(mWorkManager.getConfiguration()).thenReturn(mConfiguration);
         TaskExecutor instantTaskExecutor = new InstantWorkTaskExecutor();
diff --git a/work/workmanager/src/androidTest/java/androidx/work/worker/ReturnNullResultWorker.java b/work/workmanager/src/androidTest/java/androidx/work/worker/ReturnNullResultWorker.java
new file mode 100644
index 0000000..6a9abd2
--- /dev/null
+++ b/work/workmanager/src/androidTest/java/androidx/work/worker/ReturnNullResultWorker.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2018 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.work.worker;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.util.Log;
+
+import androidx.work.Result;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+
+/**
+ * A Worker that returns {@code null} for a {@link Result}.
+ */
+public class ReturnNullResultWorker extends Worker {
+
+    public ReturnNullResultWorker(
+            @NonNull Context context,
+            @NonNull WorkerParameters workerParams) {
+        super(context, workerParams);
+    }
+
+    @Override
+    public @NonNull Result doWork() {
+        Log.d("ReturnNullResultWorker", "ReturnNullResultWorker Ran!");
+        return null;
+    }
+}
diff --git a/work/workmanager/src/main/java/androidx/work/InputMerger.java b/work/workmanager/src/main/java/androidx/work/InputMerger.java
index 86f4fe9..b6d74db 100644
--- a/work/workmanager/src/main/java/androidx/work/InputMerger.java
+++ b/work/workmanager/src/main/java/androidx/work/InputMerger.java
@@ -62,7 +62,7 @@
             Class<?> clazz = Class.forName(className);
             return (InputMerger) clazz.newInstance();
         } catch (Exception e) {
-            Logger.error(TAG, "Trouble instantiating + " + className, e);
+            Logger.get().error(TAG, "Trouble instantiating + " + className, e);
         }
         return null;
     }
diff --git a/work/workmanager/src/main/java/androidx/work/Logger.java b/work/workmanager/src/main/java/androidx/work/Logger.java
index c54b80f..c8e0549 100644
--- a/work/workmanager/src/main/java/androidx/work/Logger.java
+++ b/work/workmanager/src/main/java/androidx/work/Logger.java
@@ -20,88 +20,126 @@
 import android.util.Log;
 
 /**
- * A class that handles logging to logcat.  It internally delegates to {@link Log} methods but
- * handles library-level verbosity settings.  This class offers no threading guarantees.
+ * The class that handles logging requests for {@link WorkManager}.  Currently, this class is not
+ * accessible and has only one default implementation, {@link LogcatLogger}, that writes to logcat
+ * when the logging request is of a certain verbosity or higher.
  *
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-public class Logger {
+public abstract class Logger {
 
-    private static int sLoggingLevel = Log.INFO;
+    private static Logger sLogger;
 
     /**
-     * @param loggingLevel The minimum logging level
+     * @param logger The {@link Logger} to use for all {@link WorkManager} logging.
      */
-    public static void setMinimumLoggingLevel(int loggingLevel) {
-        sLoggingLevel = loggingLevel;
+    public static void setLogger(Logger logger) {
+        sLogger = logger;
+    }
+
+    /**
+     * @return The current {@link Logger}.
+     */
+    public static synchronized Logger get() {
+        return sLogger;
+    }
+
+    public Logger(int loggingLevel) {
     }
 
     /**
      * Equivalent to Log.v.
      */
-    public static void verbose(String tag, String message, Throwable... throwables)  {
-        if (sLoggingLevel <= Log.VERBOSE) {
-            if (throwables != null && throwables.length >= 1) {
-                Log.v(tag, message, throwables[0]);
-            } else {
-                Log.v(tag, message);
-            }
-        }
-    }
+    public abstract void verbose(String tag, String message, Throwable... throwables);
 
     /**
      * Equivalent to Log.d.
      */
-    public static void debug(String tag, String message, Throwable... throwables)  {
-        if (sLoggingLevel <= Log.DEBUG) {
-            if (throwables != null && throwables.length >= 1) {
-                Log.d(tag, message, throwables[0]);
-            } else {
-                Log.d(tag, message);
-            }
-        }
-    }
+    public abstract void debug(String tag, String message, Throwable... throwables);
 
     /**
      * Equivalent to Log.i.
      */
-    public static void info(String tag, String message, Throwable... throwables)  {
-        if (sLoggingLevel <= Log.INFO) {
-            if (throwables != null && throwables.length >= 1) {
-                Log.i(tag, message, throwables[0]);
-            } else {
-                Log.i(tag, message);
-            }
-        }
-    }
+    public abstract void info(String tag, String message, Throwable... throwables);
 
     /**
      * Equivalent to Log.w.
      */
-    public static void warning(String tag, String message, Throwable... throwables)  {
-        if (sLoggingLevel <= Log.WARN) {
-            if (throwables != null && throwables.length >= 1) {
-                Log.w(tag, message, throwables[0]);
-            } else {
-                Log.w(tag, message);
-            }
-        }
-    }
+    public abstract void warning(String tag, String message, Throwable... throwables);
 
     /**
      * Equivalent to Log.e.
      */
-    public static void error(String tag, String message, Throwable... throwables)  {
-        if (sLoggingLevel <= Log.ERROR) {
-            if (throwables != null && throwables.length >= 1) {
-                Log.e(tag, message, throwables[0]);
-            } else {
-                Log.e(tag, message);
+    public abstract void error(String tag, String message, Throwable... throwables);
+
+    /**
+     * The default {@link Logger} implementation that writes to logcat when the requests meet or
+     * exceed the {@code loggingLevel} specified in the constructor.  This class offers no threading
+     * guarantees.
+     */
+    public static class LogcatLogger extends Logger {
+
+        private int mLoggingLevel;
+
+        public LogcatLogger(int loggingLevel) {
+            super(loggingLevel);
+            mLoggingLevel = loggingLevel;
+        }
+
+        @Override
+        public void verbose(String tag, String message, Throwable... throwables) {
+            if (mLoggingLevel <= Log.VERBOSE) {
+                if (throwables != null && throwables.length >= 1) {
+                    Log.v(tag, message, throwables[0]);
+                } else {
+                    Log.v(tag, message);
+                }
             }
         }
-    }
 
-    private Logger() {
+        @Override
+        public void debug(String tag, String message, Throwable... throwables) {
+            if (mLoggingLevel <= Log.DEBUG) {
+                if (throwables != null && throwables.length >= 1) {
+                    Log.d(tag, message, throwables[0]);
+                } else {
+                    Log.d(tag, message);
+                }
+            }
+        }
+
+        @Override
+        public void info(String tag, String message, Throwable... throwables) {
+            if (mLoggingLevel <= Log.INFO) {
+                if (throwables != null && throwables.length >= 1) {
+                    Log.i(tag, message, throwables[0]);
+                } else {
+                    Log.i(tag, message);
+                }
+            }
+        }
+
+        @Override
+        public void warning(String tag, String message, Throwable... throwables) {
+            if (mLoggingLevel <= Log.WARN) {
+                if (throwables != null && throwables.length >= 1) {
+                    Log.w(tag, message, throwables[0]);
+                } else {
+                    Log.w(tag, message);
+                }
+            }
+        }
+
+        @Override
+        public void error(String tag, String message, Throwable... throwables) {
+            if (mLoggingLevel <= Log.ERROR) {
+                if (throwables != null && throwables.length >= 1) {
+                    Log.e(tag, message, throwables[0]);
+                } else {
+                    Log.e(tag, message);
+                }
+            }
+        }
     }
 }
diff --git a/work/workmanager/src/main/java/androidx/work/WorkerFactory.java b/work/workmanager/src/main/java/androidx/work/WorkerFactory.java
index 6a2b6ff..f97ccba 100644
--- a/work/workmanager/src/main/java/androidx/work/WorkerFactory.java
+++ b/work/workmanager/src/main/java/androidx/work/WorkerFactory.java
@@ -82,7 +82,7 @@
         try {
             clazz = Class.forName(workerClassName).asSubclass(ListenableWorker.class);
         } catch (ClassNotFoundException e) {
-            Logger.error(TAG, "Class not found: " + workerClassName);
+            Logger.get().error(TAG, "Class not found: " + workerClassName);
             return null;
         }
 
@@ -94,7 +94,7 @@
                     workerParameters);
             return worker;
         } catch (Exception e) {
-            Logger.error(TAG, "Could not instantiate " + workerClassName, e);
+            Logger.get().error(TAG, "Could not instantiate " + workerClassName, e);
         }
         return null;
     }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/Processor.java b/work/workmanager/src/main/java/androidx/work/impl/Processor.java
index a9e6a308..e525060 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/Processor.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/Processor.java
@@ -95,7 +95,9 @@
             // Work may get triggered multiple times if they have passing constraints
             // and new work with those constraints are added.
             if (mEnqueuedWorkMap.containsKey(id)) {
-                Logger.debug(TAG, String.format("Work %s is already enqueued for processing", id));
+                Logger.get().debug(
+                        TAG,
+                        String.format("Work %s is already enqueued for processing", id));
                 return false;
             }
 
@@ -116,7 +118,7 @@
             mEnqueuedWorkMap.put(id, workWrapper);
         }
         mWorkTaskExecutor.getBackgroundExecutor().execute(workWrapper);
-        Logger.debug(TAG, String.format("%s: processing %s", getClass().getSimpleName(), id));
+        Logger.get().debug(TAG, String.format("%s: processing %s", getClass().getSimpleName(), id));
         return true;
     }
 
@@ -128,14 +130,14 @@
      */
     public boolean stopWork(String id) {
         synchronized (mLock) {
-            Logger.debug(TAG, String.format("Processor stopping %s", id));
+            Logger.get().debug(TAG, String.format("Processor stopping %s", id));
             WorkerWrapper wrapper = mEnqueuedWorkMap.remove(id);
             if (wrapper != null) {
                 wrapper.interrupt(false);
-                Logger.debug(TAG, String.format("WorkerWrapper stopped for %s", id));
+                Logger.get().debug(TAG, String.format("WorkerWrapper stopped for %s", id));
                 return true;
             }
-            Logger.debug(TAG, String.format("WorkerWrapper could not be found for %s", id));
+            Logger.get().debug(TAG, String.format("WorkerWrapper could not be found for %s", id));
             return false;
         }
     }
@@ -148,15 +150,15 @@
      */
     public boolean stopAndCancelWork(String id) {
         synchronized (mLock) {
-            Logger.debug(TAG, String.format("Processor cancelling %s", id));
+            Logger.get().debug(TAG, String.format("Processor cancelling %s", id));
             mCancelledIds.add(id);
             WorkerWrapper wrapper = mEnqueuedWorkMap.remove(id);
             if (wrapper != null) {
                 wrapper.interrupt(true);
-                Logger.debug(TAG, String.format("WorkerWrapper cancelled for %s", id));
+                Logger.get().debug(TAG, String.format("WorkerWrapper cancelled for %s", id));
                 return true;
             }
-            Logger.debug(TAG, String.format("WorkerWrapper could not be found for %s", id));
+            Logger.get().debug(TAG, String.format("WorkerWrapper could not be found for %s", id));
             return false;
         }
     }
@@ -221,7 +223,7 @@
 
         synchronized (mLock) {
             mEnqueuedWorkMap.remove(workSpecId);
-            Logger.debug(TAG, String.format("%s %s executed; reschedule = %s",
+            Logger.get().debug(TAG, String.format("%s %s executed; reschedule = %s",
                     getClass().getSimpleName(), workSpecId, needsReschedule));
 
             for (ExecutionListener executionListener : mOuterListeners) {
diff --git a/work/workmanager/src/main/java/androidx/work/impl/Schedulers.java b/work/workmanager/src/main/java/androidx/work/impl/Schedulers.java
index 62ddefb..e0e2c46 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/Schedulers.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/Schedulers.java
@@ -104,11 +104,11 @@
         if (Build.VERSION.SDK_INT >= WorkManagerImpl.MIN_JOB_SCHEDULER_API_LEVEL) {
             scheduler = new SystemJobScheduler(context, workManager);
             setComponentEnabled(context, SystemJobService.class, true);
-            Logger.debug(TAG, "Created SystemJobScheduler and enabled SystemJobService");
+            Logger.get().debug(TAG, "Created SystemJobScheduler and enabled SystemJobService");
         } else {
             scheduler = new SystemAlarmScheduler(context);
             enableSystemAlarmService = true;
-            Logger.debug(TAG, "Created SystemAlarmScheduler");
+            Logger.get().debug(TAG, "Created SystemAlarmScheduler");
         }
 
         setComponentEnabled(context, SystemAlarmService.class, enableSystemAlarmService);
diff --git a/work/workmanager/src/main/java/androidx/work/impl/WorkContinuationImpl.java b/work/workmanager/src/main/java/androidx/work/impl/WorkContinuationImpl.java
index 31741a5b0..d3a0043 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/WorkContinuationImpl.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/WorkContinuationImpl.java
@@ -185,7 +185,7 @@
             mWorkManagerImpl.getWorkTaskExecutor().executeOnBackgroundThread(runnable);
             mOperation = runnable.getOperation();
         } else {
-            Logger.warning(TAG,
+            Logger.get().warning(TAG,
                     String.format("Already enqueued work ids (%s)", TextUtils.join(", ", mIds)));
         }
         return mOperation;
diff --git a/work/workmanager/src/main/java/androidx/work/impl/WorkManagerImpl.java b/work/workmanager/src/main/java/androidx/work/impl/WorkManagerImpl.java
index a484af9..ce56b51 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/WorkManagerImpl.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/WorkManagerImpl.java
@@ -82,6 +82,8 @@
     private Preferences mPreferences;
     private boolean mForceStopRunnableCompleted;
     private BroadcastReceiver.PendingResult mRescheduleReceiverResult;
+    // TODO remove after moving to X: b/74477406
+    private final WorkManagerLiveDataTracker mLiveDataTracker = new WorkManagerLiveDataTracker();
 
     private static WorkManagerImpl sDelegatedInstance = null;
     private static WorkManagerImpl sDefaultInstance = null;
@@ -192,6 +194,7 @@
 
         Context applicationContext = context.getApplicationContext();
         WorkDatabase database = WorkDatabase.create(applicationContext, useTestDatabase);
+        Logger.setLogger(new Logger.LogcatLogger(configuration.getMinimumLoggingLevel()));
         List<Scheduler> schedulers = createSchedulers(applicationContext);
         Processor processor = new Processor(
                 context,
@@ -427,7 +430,7 @@
         WorkSpecDao dao = mWorkDatabase.workSpecDao();
         LiveData<List<WorkSpec.WorkInfoPojo>> inputLiveData =
                 dao.getWorkStatusPojoLiveDataForIds(Collections.singletonList(id.toString()));
-        return LiveDataUtils.dedupedMappedLiveDataFor(inputLiveData,
+        LiveData<WorkInfo> deduped = LiveDataUtils.dedupedMappedLiveDataFor(inputLiveData,
                 new Function<List<WorkSpec.WorkInfoPojo>, WorkInfo>() {
                     @Override
                     public WorkInfo apply(List<WorkSpec.WorkInfoPojo> input) {
@@ -439,6 +442,7 @@
                     }
                 },
                 mWorkTaskExecutor);
+        return mLiveDataTracker.track(deduped);
     }
 
     @Override
@@ -453,10 +457,11 @@
         WorkSpecDao workSpecDao = mWorkDatabase.workSpecDao();
         LiveData<List<WorkSpec.WorkInfoPojo>> inputLiveData =
                 workSpecDao.getWorkStatusPojoLiveDataForTag(tag);
-        return LiveDataUtils.dedupedMappedLiveDataFor(
+        LiveData<List<WorkInfo>> deduped = LiveDataUtils.dedupedMappedLiveDataFor(
                 inputLiveData,
                 WorkSpec.WORK_INFO_MAPPER,
                 mWorkTaskExecutor);
+        return mLiveDataTracker.track(deduped);
     }
 
     @Override
@@ -472,10 +477,11 @@
         WorkSpecDao workSpecDao = mWorkDatabase.workSpecDao();
         LiveData<List<WorkSpec.WorkInfoPojo>> inputLiveData =
                 workSpecDao.getWorkStatusPojoLiveDataForName(name);
-        return LiveDataUtils.dedupedMappedLiveDataFor(
+        LiveData<List<WorkInfo>> deduped = LiveDataUtils.dedupedMappedLiveDataFor(
                 inputLiveData,
                 WorkSpec.WORK_INFO_MAPPER,
                 mWorkTaskExecutor);
+        return mLiveDataTracker.track(deduped);
     }
 
     @Override
@@ -491,10 +497,11 @@
         WorkSpecDao dao = mWorkDatabase.workSpecDao();
         LiveData<List<WorkSpec.WorkInfoPojo>> inputLiveData =
                 dao.getWorkStatusPojoLiveDataForIds(workSpecIds);
-        return LiveDataUtils.dedupedMappedLiveDataFor(
+        LiveData<List<WorkInfo>> deduped = LiveDataUtils.dedupedMappedLiveDataFor(
                 inputLiveData,
                 WorkSpec.WORK_INFO_MAPPER,
                 mWorkTaskExecutor);
+        return mLiveDataTracker.track(deduped);
     }
 
     /**
@@ -590,10 +597,10 @@
      * Initializes an instance of {@link WorkManagerImpl}.
      *
      * @param context The application {@link Context}
-     * @param configuration The {@link Configuration} configuration.
-     * @param workDatabase The {@link WorkDatabase} instance.
-     * @param schedulers The {@link List} of {@link Scheduler}s to use.
-     * @param processor The {@link Processor} instance.
+     * @param configuration The {@link Configuration} configuration
+     * @param workDatabase The {@link WorkDatabase} instance
+     * @param schedulers The {@link List} of {@link Scheduler}s to use
+     * @param processor The {@link Processor} instance
      */
     private void internalInit(@NonNull Context context,
             @NonNull Configuration configuration,
@@ -612,8 +619,6 @@
         mPreferences = new Preferences(mContext);
         mForceStopRunnableCompleted = false;
 
-        Logger.setMinimumLoggingLevel(mConfiguration.getMinimumLoggingLevel());
-
         // Checks for app force stops.
         mWorkTaskExecutor.executeOnBackgroundThread(new ForceStopRunnable(context, this));
     }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/WorkManagerLiveDataTracker.java b/work/workmanager/src/main/java/androidx/work/impl/WorkManagerLiveDataTracker.java
new file mode 100644
index 0000000..9ea44c3
--- /dev/null
+++ b/work/workmanager/src/main/java/androidx/work/impl/WorkManagerLiveDataTracker.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2018 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.work.impl;
+
+import android.arch.lifecycle.LiveData;
+import android.arch.lifecycle.MediatorLiveData;
+import android.arch.lifecycle.Observer;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+
+import java.util.Collections;
+import java.util.IdentityHashMap;
+import java.util.Set;
+
+/**
+ * Utility class that create LiveData instances which stay in memory as long as there is an
+ * active observer.
+ * see: b/74477406 for details.
+ */
+class WorkManagerLiveDataTracker {
+    @VisibleForTesting
+    final Set<LiveData> mLiveDataSet = Collections.newSetFromMap(
+            new IdentityHashMap<LiveData, Boolean>());
+
+    public <T> LiveData<T> track(LiveData<T> other) {
+        return new TrackedLiveData<>(this, other);
+    }
+
+    void onActive(LiveData liveData) {
+        mLiveDataSet.add(liveData);
+    }
+
+    void onInactive(LiveData liveData) {
+        mLiveDataSet.remove(liveData);
+    }
+
+    static class TrackedLiveData<T> extends MediatorLiveData<T> {
+        private final WorkManagerLiveDataTracker mContainer;
+        TrackedLiveData(WorkManagerLiveDataTracker container, LiveData<T> wrapped) {
+            mContainer = container;
+            addSource(wrapped, new Observer<T>() {
+                @Override
+                public void onChanged(@Nullable T t) {
+                    setValue(t);
+                }
+            });
+        }
+
+        @Override
+        protected void onActive() {
+            super.onActive();
+            mContainer.onActive(this);
+        }
+
+
+        @Override
+        protected void onInactive() {
+            super.onInactive();
+            mContainer.onInactive(this);
+        }
+    }
+}
diff --git a/work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java b/work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java
index eb9267b..ca75877 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java
@@ -132,7 +132,9 @@
         try {
             mWorkSpec = mWorkSpecDao.getWorkSpec(mWorkSpecId);
             if (mWorkSpec == null) {
-                Logger.error(TAG, String.format("Didn't find WorkSpec for id %s", mWorkSpecId));
+                Logger.get().error(
+                        TAG,
+                        String.format("Didn't find WorkSpec for id %s", mWorkSpecId));
                 resolve(false);
                 return;
             }
@@ -160,7 +162,7 @@
         } else {
             InputMerger inputMerger = InputMerger.fromClassName(mWorkSpec.inputMergerClassName);
             if (inputMerger == null) {
-                Logger.error(TAG, String.format("Could not create Input Merger %s",
+                Logger.get().error(TAG, String.format("Could not create Input Merger %s",
                         mWorkSpec.inputMergerClassName));
                 setFailedAndResolve();
                 return;
@@ -191,14 +193,14 @@
         }
 
         if (mWorker == null) {
-            Logger.error(TAG,
+            Logger.get().error(TAG,
                     String.format("Could not create Worker %s", mWorkSpec.workerClassName));
             setFailedAndResolve();
             return;
         }
 
         if (mWorker.isUsed()) {
-            Logger.error(TAG,
+            Logger.get().error(TAG,
                     String.format("Received an already-used Worker %s; WorkerFactory should return "
                             + "new instances",
                             mWorkSpec.workerClassName));
@@ -236,14 +238,22 @@
                 @Override
                 public void run() {
                     try {
-                        mResult = future.get();
+                        // If the ListenableWorker returns a null result treat it as a failure.
+                        Result result = future.get();
+                        if (result == null) {
+                            Logger.get().error(TAG, String.format(
+                                    "%s returned a null result. Treating it as a failure.",
+                                    mWorkSpec.workerClassName));
+                        } else {
+                            mResult = result;
+                        }
                     } catch (CancellationException exception) {
                         // Cancellations need to be treated with care here because innerFuture
                         // cancellations will bubble up, and we need to gracefully handle that.
-                        Logger.info(TAG, String.format("%s was cancelled", workDescription),
+                        Logger.get().info(TAG, String.format("%s was cancelled", workDescription),
                                 exception);
                     } catch (InterruptedException | ExecutionException exception) {
-                        Logger.error(TAG,
+                        Logger.get().error(TAG,
                                 String.format("%s failed because it threw an exception/error",
                                         workDescription), exception);
                     } finally {
@@ -324,11 +334,11 @@
     private void resolveIncorrectStatus() {
         WorkInfo.State status = mWorkSpecDao.getState(mWorkSpecId);
         if (status == RUNNING) {
-            Logger.debug(TAG, String.format("Status for %s is RUNNING;"
+            Logger.get().debug(TAG, String.format("Status for %s is RUNNING;"
                     + "not doing any work and rescheduling for later execution", mWorkSpecId));
             resolve(true);
         } else {
-            Logger.debug(TAG,
+            Logger.get().debug(TAG,
                     String.format("Status for %s is %s; not doing any work", mWorkSpecId, status));
             resolve(false);
         }
@@ -341,7 +351,7 @@
         // Worker exceeding a 10 min execution window.
         // One scheduler completing a Worker, and telling other Schedulers to cleanup.
         if (mInterrupted) {
-            Logger.debug(TAG, String.format("Work interrupted for %s", mWorkDescription));
+            Logger.get().debug(TAG, String.format("Work interrupted for %s", mWorkDescription));
             WorkInfo.State currentState = mWorkSpecDao.getState(mWorkSpecId);
             if (currentState == null) {
                 // This can happen because of a beginUniqueWork(..., REPLACE, ...).  Notify the
@@ -380,7 +390,9 @@
 
     private void handleResult(Result result) {
         if (result instanceof Result.Success) {
-            Logger.info(TAG, String.format("Worker result SUCCESS for %s", mWorkDescription));
+            Logger.get().info(
+                    TAG,
+                    String.format("Worker result SUCCESS for %s", mWorkDescription));
             if (mWorkSpec.isPeriodic()) {
                 resetPeriodicAndResolve();
             } else {
@@ -388,10 +400,14 @@
             }
 
         } else if (result instanceof Result.Retry) {
-            Logger.info(TAG, String.format("Worker result RETRY for %s", mWorkDescription));
+            Logger.get().info(
+                    TAG,
+                    String.format("Worker result RETRY for %s", mWorkDescription));
             rescheduleAndResolve();
         } else {
-            Logger.info(TAG, String.format("Worker result FAILURE for %s", mWorkDescription));
+            Logger.get().info(
+                    TAG,
+                    String.format("Worker result FAILURE for %s", mWorkDescription));
             if (mWorkSpec.isPeriodic()) {
                 resetPeriodicAndResolve();
             } else {
@@ -512,7 +528,7 @@
             List<String> dependentWorkIds = mDependencyDao.getDependentWorkIds(mWorkSpecId);
             for (String dependentWorkId : dependentWorkIds) {
                 if (mDependencyDao.hasCompletedAllPrerequisites(dependentWorkId)) {
-                    Logger.info(TAG,
+                    Logger.get().info(TAG,
                             String.format("Setting status to enqueued for %s", dependentWorkId));
                     mWorkSpecDao.setState(ENQUEUED, dependentWorkId);
                     mWorkSpecDao.setPeriodStartTime(dependentWorkId, currentTimeMillis);
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/greedy/GreedyScheduler.java b/work/workmanager/src/main/java/androidx/work/impl/background/greedy/GreedyScheduler.java
index b174ab1..77cce8c 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/greedy/GreedyScheduler.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/greedy/GreedyScheduler.java
@@ -100,7 +100,7 @@
         // WorkSpecs. Therefore we need to lock here.
         synchronized (mLock) {
             if (!constrainedWorkSpecs.isEmpty()) {
-                Logger.debug(TAG, String.format("Starting tracking for [%s]",
+                Logger.get().debug(TAG, String.format("Starting tracking for [%s]",
                         TextUtils.join(",", constrainedWorkSpecIds)));
                 mConstrainedWorkSpecs.addAll(constrainedWorkSpecs);
                 mWorkConstraintsTracker.replace(mConstrainedWorkSpecs);
@@ -111,7 +111,7 @@
     @Override
     public void cancel(@NonNull String workSpecId) {
         registerExecutionListenerIfNeeded();
-        Logger.debug(TAG, String.format("Cancelling work ID %s", workSpecId));
+        Logger.get().debug(TAG, String.format("Cancelling work ID %s", workSpecId));
         // onExecutionCompleted does the cleanup.
         mWorkManagerImpl.stopWork(workSpecId);
     }
@@ -119,7 +119,9 @@
     @Override
     public void onAllConstraintsMet(@NonNull List<String> workSpecIds) {
         for (String workSpecId : workSpecIds) {
-            Logger.debug(TAG, String.format("Constraints met: Scheduling work ID %s", workSpecId));
+            Logger.get().debug(
+                    TAG,
+                    String.format("Constraints met: Scheduling work ID %s", workSpecId));
             mWorkManagerImpl.startWork(workSpecId);
         }
     }
@@ -127,7 +129,7 @@
     @Override
     public void onAllConstraintsNotMet(@NonNull List<String> workSpecIds) {
         for (String workSpecId : workSpecIds) {
-            Logger.debug(TAG,
+            Logger.get().debug(TAG,
                     String.format("Constraints not met: Cancelling work ID %s", workSpecId));
             mWorkManagerImpl.stopWork(workSpecId);
         }
@@ -145,7 +147,7 @@
             // executor thread.
             for (int i = 0, size = mConstrainedWorkSpecs.size(); i < size; ++i) {
                 if (mConstrainedWorkSpecs.get(i).id.equals(workSpecId)) {
-                    Logger.debug(TAG, String.format("Stopping tracking for %s", workSpecId));
+                    Logger.get().debug(TAG, String.format("Stopping tracking for %s", workSpecId));
                     mConstrainedWorkSpecs.remove(i);
                     mWorkConstraintsTracker.replace(mConstrainedWorkSpecs);
                     break;
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/Alarms.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/Alarms.java
index d85c1d9..597b90d 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/Alarms.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/Alarms.java
@@ -89,7 +89,7 @@
         SystemIdInfo systemIdInfo = systemIdInfoDao.getSystemIdInfo(workSpecId);
         if (systemIdInfo != null) {
             cancelExactAlarm(context, workSpecId, systemIdInfo.systemId);
-            Logger.debug(TAG,
+            Logger.get().debug(TAG,
                     String.format("Removing SystemIdInfo for workSpecId (%s)", workSpecId));
             systemIdInfoDao.removeSystemIdInfo(workSpecId);
         }
@@ -105,7 +105,7 @@
         PendingIntent pendingIntent = PendingIntent.getService(
                 context, alarmId, delayMet, PendingIntent.FLAG_NO_CREATE);
         if (pendingIntent != null && alarmManager != null) {
-            Logger.debug(TAG, String.format(
+            Logger.get().debug(TAG, String.format(
                     "Cancelling existing alarm with (workSpecId, systemId) (%s, %s)",
                     workSpecId,
                     alarmId));
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/CommandHandler.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/CommandHandler.java
index 8ac6d01..db17040 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/CommandHandler.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/CommandHandler.java
@@ -162,7 +162,7 @@
         } else {
             Bundle extras = intent.getExtras();
             if (!hasKeys(extras, KEY_WORKSPEC_ID)) {
-                Logger.error(TAG,
+                Logger.get().error(TAG,
                         String.format("Invalid request for %s, requires %s.",
                                 action,
                                 KEY_WORKSPEC_ID));
@@ -176,7 +176,7 @@
                 } else if (ACTION_EXECUTION_COMPLETED.equals(action)) {
                     handleExecutionCompleted(intent, startId, dispatcher);
                 } else {
-                    Logger.warning(TAG, String.format("Ignoring intent %s", intent));
+                    Logger.get().warning(TAG, String.format("Ignoring intent %s", intent));
                 }
             }
         }
@@ -189,7 +189,7 @@
 
         Bundle extras = intent.getExtras();
         String workSpecId = extras.getString(KEY_WORKSPEC_ID);
-        Logger.debug(TAG, String.format("Handling schedule work for %s", workSpecId));
+        Logger.get().debug(TAG, String.format("Handling schedule work for %s", workSpecId));
 
         WorkManagerImpl workManager = dispatcher.getWorkManager();
         WorkDatabase workDatabase = workManager.getWorkDatabase();
@@ -207,12 +207,12 @@
             // the background task thread so all database operations happen on the same thread.
             // See b/114705286.
             if (workSpec == null) {
-                Logger.warning(TAG,
+                Logger.get().warning(TAG,
                         "Skipping scheduling " + workSpecId + " because it's no longer in "
                         + "the DB");
                 return;
             } else if (workSpec.state != WorkInfo.State.ENQUEUED) {
-                Logger.warning(TAG,
+                Logger.get().warning(TAG,
                         "Skipping scheduling " + workSpecId + " because it is no longer "
                         + "enqueued");
                 return;
@@ -221,11 +221,11 @@
             long triggerAt = workSpec.calculateNextRunTime();
 
             if (!workSpec.hasConstraints()) {
-                Logger.debug(TAG, String.format("Setting up Alarms for %s", workSpecId));
+                Logger.get().debug(TAG, String.format("Setting up Alarms for %s", workSpecId));
                 Alarms.setAlarm(mContext, dispatcher.getWorkManager(), workSpecId, triggerAt);
             } else {
                 // Schedule an alarm irrespective of whether all constraints matched.
-                Logger.debug(TAG,
+                Logger.get().debug(TAG,
                         String.format("Opportunistically setting an alarm for %s", workSpecId));
                 Alarms.setAlarm(
                         mContext,
@@ -257,7 +257,7 @@
         Bundle extras = intent.getExtras();
         synchronized (mLock) {
             String workSpecId = extras.getString(KEY_WORKSPEC_ID);
-            Logger.debug(TAG, String.format("Handing delay met for %s", workSpecId));
+            Logger.get().debug(TAG, String.format("Handing delay met for %s", workSpecId));
             DelayMetCommandHandler delayMetCommandHandler =
                     new DelayMetCommandHandler(mContext, startId, workSpecId, dispatcher);
             mPendingDelayMet.put(workSpecId, delayMetCommandHandler);
@@ -271,7 +271,7 @@
 
         Bundle extras = intent.getExtras();
         String workSpecId = extras.getString(KEY_WORKSPEC_ID);
-        Logger.debug(TAG, String.format("Handing stopWork work for %s", workSpecId));
+        Logger.get().debug(TAG, String.format("Handing stopWork work for %s", workSpecId));
 
         dispatcher.getWorkManager().stopWork(workSpecId);
         Alarms.cancelAlarm(mContext, dispatcher.getWorkManager(), workSpecId);
@@ -284,7 +284,7 @@
             @NonNull Intent intent, int startId,
             @NonNull SystemAlarmDispatcher dispatcher) {
 
-        Logger.debug(TAG, String.format("Handling constraints changed %s", intent));
+        Logger.get().debug(TAG, String.format("Handling constraints changed %s", intent));
         // Constraints changed command handler is synchronous. No cleanup
         // is necessary.
         ConstraintsCommandHandler changedCommandHandler =
@@ -297,7 +297,7 @@
             int startId,
             @NonNull SystemAlarmDispatcher dispatcher) {
 
-        Logger.debug(TAG, String.format("Handling reschedule %s, %s", intent, startId));
+        Logger.get().debug(TAG, String.format("Handling reschedule %s, %s", intent, startId));
         dispatcher.getWorkManager().rescheduleEligibleWork();
     }
 
@@ -309,7 +309,9 @@
         Bundle extras = intent.getExtras();
         String workSpecId = extras.getString(KEY_WORKSPEC_ID);
         boolean needsReschedule = extras.getBoolean(KEY_NEEDS_RESCHEDULE);
-        Logger.debug(TAG, String.format("Handling onExecutionCompleted %s, %s", intent, startId));
+        Logger.get().debug(
+                TAG,
+                String.format("Handling onExecutionCompleted %s, %s", intent, startId));
         // Delegate onExecuted() to the command handler.
         onExecuted(workSpecId, needsReschedule);
     }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintProxy.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintProxy.java
index 7174960..38a36cd 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintProxy.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintProxy.java
@@ -32,7 +32,7 @@
 
     @Override
     public void onReceive(Context context, Intent intent) {
-        Logger.debug(TAG, String.format("onReceive : %s", intent));
+        Logger.get().debug(TAG, String.format("onReceive : %s", intent));
         Intent constraintChangedIntent = CommandHandler.createConstraintsChangedIntent(context);
         context.startService(constraintChangedIntent);
     }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintProxyUpdateReceiver.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintProxyUpdateReceiver.java
index acf88ad..fb5dbd6 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintProxyUpdateReceiver.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintProxyUpdateReceiver.java
@@ -78,7 +78,7 @@
     public void onReceive(Context context, Intent intent) {
         String action = intent != null ? intent.getAction() : null;
         if (!ACTION.equals(action)) {
-            Logger.debug(TAG, String.format("Ignoring unknown action %s", action));
+            Logger.get().debug(TAG, String.format("Ignoring unknown action %s", action));
         } else {
             boolean batteryNotLowProxyEnabled = intent.getBooleanExtra(
                     KEY_BATTERY_NOT_LOW_PROXY_ENABLED, false);
@@ -89,12 +89,16 @@
             boolean networkStateProxyEnabled = intent.getBooleanExtra(
                     KEY_NETWORK_STATE_PROXY_ENABLED, false);
 
-            Logger.debug(TAG, String.format("Updating proxies: BatteryNotLowProxy enabled (%s), "
-                            + "BatteryChargingProxy enabled (%s), "
-                            + "StorageNotLowProxy (%s), "
-                            + "NetworkStateProxy enabled (%s)", batteryNotLowProxyEnabled,
-                    batteryChargingProxyEnabled, storageNotLowProxyEnabled,
-                    networkStateProxyEnabled));
+            Logger.get().debug(
+                    TAG,
+                    String.format("Updating proxies: BatteryNotLowProxy enabled (%s), "
+                                    + "BatteryChargingProxy enabled (%s), "
+                                    + "StorageNotLowProxy (%s), "
+                                    + "NetworkStateProxy enabled (%s)",
+                            batteryNotLowProxyEnabled,
+                            batteryChargingProxyEnabled,
+                            storageNotLowProxyEnabled,
+                            networkStateProxyEnabled));
 
             PackageManagerHelper.setComponentEnabled(context, BatteryNotLowProxy.class,
                     batteryNotLowProxyEnabled);
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintsCommandHandler.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintsCommandHandler.java
index 5a6d619..c99f563 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintsCommandHandler.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/ConstraintsCommandHandler.java
@@ -89,7 +89,7 @@
         for (WorkSpec workSpec : eligibleWorkSpecs) {
             String workSpecId = workSpec.id;
             Intent intent = CommandHandler.createDelayMetIntent(mContext, workSpecId);
-            Logger.debug(TAG, String.format(
+            Logger.get().debug(TAG, String.format(
                     "Creating a delay_met command for workSpec with id (%s)", workSpecId));
             mDispatcher.postOnMainThread(
                     new SystemAlarmDispatcher.AddRunnable(mDispatcher, intent, mStartId));
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/DelayMetCommandHandler.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/DelayMetCommandHandler.java
index 63c5b26..fd6b423 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/DelayMetCommandHandler.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/DelayMetCommandHandler.java
@@ -77,7 +77,7 @@
 
     @Override
     public void onAllConstraintsMet(@NonNull List<String> ignored) {
-        Logger.debug(TAG, String.format("onAllConstraintsMet for %s", mWorkSpecId));
+        Logger.get().debug(TAG, String.format("onAllConstraintsMet for %s", mWorkSpecId));
         // Constraints met, schedule execution
 
         // Not using WorkManagerImpl#startWork() here because we need to know if the processor
@@ -101,7 +101,7 @@
     @Override
     public void onExecuted(@NonNull String workSpecId, boolean needsReschedule) {
 
-        Logger.debug(TAG, String.format("onExecuted %s, %s", workSpecId, needsReschedule));
+        Logger.get().debug(TAG, String.format("onExecuted %s, %s", workSpecId, needsReschedule));
 
         cleanUp();
 
@@ -117,7 +117,9 @@
 
     @Override
     public void onTimeLimitExceeded(@NonNull String workSpecId) {
-        Logger.debug(TAG, String.format("Exceeded time limits on execution for %s", workSpecId));
+        Logger.get().debug(
+                TAG,
+                String.format("Exceeded time limits on execution for %s", workSpecId));
         stopWork();
     }
 
@@ -131,7 +133,7 @@
         mWakeLock = WakeLocks.newWakeLock(
                 mContext,
                 String.format("%s (%s)", mWorkSpecId, mStartId));
-        Logger.debug(TAG,
+        Logger.get().debug(TAG,
                 String.format("Acquiring wakelock %s for WorkSpec %s", mWakeLock, mWorkSpecId));
         mWakeLock.acquire();
 
@@ -153,7 +155,7 @@
         mHasConstraints = workSpec.hasConstraints();
 
         if (!mHasConstraints) {
-            Logger.debug(TAG, String.format("No constraints for %s", mWorkSpecId));
+            Logger.get().debug(TAG, String.format("No constraints for %s", mWorkSpecId));
             onAllConstraintsMet(Collections.singletonList(mWorkSpecId));
         } else {
             // Allow tracker to report constraint changes
@@ -170,7 +172,9 @@
         // WorkTimer thread as well as the command executor service in SystemAlarmDispatcher.
         synchronized (mLock) {
             if (!mHasPendingStopWorkCommand) {
-                Logger.debug(TAG, String.format("Stopping work for workspec %s", mWorkSpecId));
+                Logger.get().debug(
+                        TAG,
+                        String.format("Stopping work for workspec %s", mWorkSpecId));
                 Intent stopWork = CommandHandler.createStopWorkIntent(mContext, mWorkSpecId);
                 mDispatcher.postOnMainThread(
                         new SystemAlarmDispatcher.AddRunnable(mDispatcher, stopWork, mStartId));
@@ -179,7 +183,7 @@
                 // reschedule should not happen. For e.g. DELAY_MET when constraints are not met,
                 // should not result in a reschedule.
                 if (mDispatcher.getProcessor().isEnqueued(mWorkSpecId)) {
-                    Logger.debug(TAG,
+                    Logger.get().debug(TAG,
                             String.format("WorkSpec %s needs to be rescheduled", mWorkSpecId));
                     Intent reschedule = CommandHandler.createScheduleWorkIntent(mContext,
                             mWorkSpecId);
@@ -187,13 +191,13 @@
                             new SystemAlarmDispatcher.AddRunnable(mDispatcher, reschedule,
                                     mStartId));
                 } else {
-                    Logger.debug(TAG, String.format(
+                    Logger.get().debug(TAG, String.format(
                             "Processor does not have WorkSpec %s. No need to reschedule ",
                             mWorkSpecId));
                 }
                 mHasPendingStopWorkCommand = true;
             } else {
-                Logger.debug(TAG, String.format("Already stopped work for %s", mWorkSpecId));
+                Logger.get().debug(TAG, String.format("Already stopped work for %s", mWorkSpecId));
             }
         }
     }
@@ -211,7 +215,7 @@
 
             // release wake locks
             if (mWakeLock != null && mWakeLock.isHeld()) {
-                Logger.debug(TAG, String.format(
+                Logger.get().debug(TAG, String.format(
                         "Releasing wakelock %s for WorkSpec %s", mWakeLock, mWorkSpecId));
                 mWakeLock.release();
             }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/RescheduleReceiver.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/RescheduleReceiver.java
index 797b730..343e56a 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/RescheduleReceiver.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/RescheduleReceiver.java
@@ -37,7 +37,7 @@
             WorkManagerImpl workManager = WorkManagerImpl.getInstance();
             if (workManager == null) {
                 // WorkManager has not already been initialized.
-                Logger.error(TAG,
+                Logger.get().error(TAG,
                         "Cannot reschedule jobs. WorkManager needs to be initialized via a "
                                 + "ContentProvider#onCreate() or an Application#onCreate().");
             } else {
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcher.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcher.java
index 15990de..c607c74 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcher.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcher.java
@@ -120,11 +120,11 @@
      */
     @MainThread
     public boolean add(@NonNull final Intent intent, final int startId) {
-        Logger.debug(TAG, String.format("Adding command %s (%s)", intent, startId));
+        Logger.get().debug(TAG, String.format("Adding command %s (%s)", intent, startId));
         assertMainThread();
         String action = intent.getAction();
         if (TextUtils.isEmpty(action)) {
-            Logger.warning(TAG, "Unknown command. Ignoring");
+            Logger.get().warning(TAG, "Unknown command. Ignoring");
             return false;
         }
 
@@ -152,7 +152,9 @@
 
     void setCompletedListener(@NonNull CommandsCompletedListener listener) {
         if (mCompletedListener != null) {
-            Logger.error(TAG, "A completion listener for SystemAlarmDispatcher already exists.");
+            Logger.get().error(
+                    TAG,
+                    "A completion listener for SystemAlarmDispatcher already exists.");
             return;
         }
         mCompletedListener = listener;
@@ -177,7 +179,7 @@
     @MainThread
     @SuppressWarnings("WeakerAccess") /* synthetic access */
     void dequeueAndCheckForCompletion() {
-        Logger.debug(TAG, "Checking if commands are complete.");
+        Logger.get().debug(TAG, "Checking if commands are complete.");
         assertMainThread();
 
         synchronized (mIntents) {
@@ -198,7 +200,7 @@
             // ReentrantLock, and lock the queue while command processor processes
             // an intent. Synchronized to prevent ConcurrentModificationExceptions.
             if (mCurrentIntent != null) {
-                Logger.debug(TAG, String.format("Removing command %s", mCurrentIntent));
+                Logger.get().debug(TAG, String.format("Removing command %s", mCurrentIntent));
                 if (!mIntents.remove(0).equals(mCurrentIntent)) {
                     throw new IllegalStateException("Dequeue-d command is not the first.");
                 }
@@ -208,7 +210,7 @@
             if (!mCommandHandler.hasPendingCommands() && mIntents.isEmpty()) {
                 // If there are no more intents to process, and the command handler
                 // has no more pending commands, stop the service.
-                Logger.debug(TAG, "No more commands & intents.");
+                Logger.get().debug(TAG, "No more commands & intents.");
                 if (mCompletedListener != null) {
                     mCompletedListener.onAllCommandsCompleted();
                 }
@@ -239,14 +241,14 @@
                         final String action = mCurrentIntent.getAction();
                         final int startId = mCurrentIntent.getIntExtra(KEY_START_ID,
                                 DEFAULT_START_ID);
-                        Logger.debug(TAG,
+                        Logger.get().debug(TAG,
                                 String.format("Processing command %s, %s", mCurrentIntent,
                                         startId));
                         final PowerManager.WakeLock wakeLock = WakeLocks.newWakeLock(
                                 mContext,
                                 String.format("%s (%s)", action, startId));
                         try {
-                            Logger.debug(TAG, String.format(
+                            Logger.get().debug(TAG, String.format(
                                     "Acquiring operation wake lock (%s) %s",
                                     action,
                                     wakeLock));
@@ -255,12 +257,17 @@
                             mCommandHandler.onHandleIntent(mCurrentIntent, startId,
                                     SystemAlarmDispatcher.this);
                         } catch (Throwable throwable) {
-                            Logger.error(TAG, "Unexpected error in onHandleIntent", throwable);
+                            Logger.get().error(
+                                    TAG,
+                                    "Unexpected error in onHandleIntent",
+                                    throwable);
                         }  finally {
-                            Logger.debug(TAG, String.format(
-                                    "Releasing operation wake lock (%s) %s",
-                                    action,
-                                    wakeLock));
+                            Logger.get().debug(
+                                    TAG,
+                                    String.format(
+                                            "Releasing operation wake lock (%s) %s",
+                                            action,
+                                            wakeLock));
                             wakeLock.release();
                             // Check if we have processed all commands
                             postOnMainThread(
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmScheduler.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmScheduler.java
index 115e5868..d4c0ca2 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmScheduler.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmScheduler.java
@@ -59,7 +59,7 @@
      * times to drift to guarantee that the interval duration always elapses between alarms.
      */
     private void scheduleWorkSpec(@NonNull WorkSpec workSpec) {
-        Logger.debug(TAG, String.format("Scheduling work with workSpecId %s", workSpec.id));
+        Logger.get().debug(TAG, String.format("Scheduling work with workSpecId %s", workSpec.id));
         Intent scheduleIntent = CommandHandler.createScheduleWorkIntent(mContext, workSpec.id);
         mContext.startService(scheduleIntent);
     }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmService.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmService.java
index ba7737d..67e9ce5 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmService.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmService.java
@@ -23,6 +23,7 @@
 import android.support.annotation.RestrictTo;
 
 import androidx.work.Logger;
+import androidx.work.impl.utils.WakeLocks;
 
 /**
  * Service invoked by {@link android.app.AlarmManager} to run work tasks.
@@ -63,7 +64,9 @@
     @MainThread
     @Override
     public void onAllCommandsCompleted() {
-        Logger.debug(TAG, "All commands completed in dispatcher");
+        Logger.get().debug(TAG, "All commands completed in dispatcher");
+        // Check to see if we hold any more wake locks.
+        WakeLocks.checkWakeLocks();
         // No need to pass in startId; stopSelf() translates to stopSelf(-1) which is a hard stop
         // of all startCommands. This is the behavior we want.
         stopSelf();
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/WorkTimer.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/WorkTimer.java
index 26c45247..9155648 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/WorkTimer.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/WorkTimer.java
@@ -59,7 +59,7 @@
             @NonNull TimeLimitExceededListener listener) {
 
         synchronized (mLock) {
-            Logger.debug(TAG, String.format("Starting timer for %s", workSpecId));
+            Logger.get().debug(TAG, String.format("Starting timer for %s", workSpecId));
             // clear existing timer's first
             stopTimer(workSpecId);
             WorkTimerRunnable runnable = new WorkTimerRunnable(this, workSpecId);
@@ -73,7 +73,7 @@
         synchronized (mLock) {
             WorkTimerRunnable removed = mTimerMap.remove(workSpecId);
             if (removed != null) {
-                Logger.debug(TAG, String.format("Stopping timer for %s", workSpecId));
+                Logger.get().debug(TAG, String.format("Stopping timer for %s", workSpecId));
                 mListeners.remove(workSpecId);
             }
         }
@@ -114,7 +114,7 @@
                         listener.onTimeLimitExceeded(mWorkSpecId);
                     }
                 } else {
-                    Logger.debug(TAG, String.format(
+                    Logger.get().debug(TAG, String.format(
                             "Timer with %s is already marked as complete.", mWorkSpecId));
                 }
             }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobInfoConverter.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobInfoConverter.java
index 85fd3e7..3e7c8bf 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobInfoConverter.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobInfoConverter.java
@@ -90,7 +90,7 @@
             if (Build.VERSION.SDK_INT >= 24) {
                 builder.setPeriodic(workSpec.intervalDuration, workSpec.flexDuration);
             } else {
-                Logger.debug(TAG,
+                Logger.get().debug(TAG,
                         "Flex duration is currently not supported before API 24. Ignoring.");
                 builder.setPeriodic(workSpec.intervalDuration);
             }
@@ -153,7 +153,7 @@
                 }
                 break;
         }
-        Logger.debug(TAG, String.format(
+        Logger.get().debug(TAG, String.format(
                 "API version too low. Cannot convert network type value %s", networkType));
         return JobInfo.NETWORK_TYPE_ANY;
     }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobScheduler.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobScheduler.java
index cdb7aef..85f34c7 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobScheduler.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobScheduler.java
@@ -87,13 +87,13 @@
                 // See b/114705286.
                 WorkSpec currentDbWorkSpec = workDatabase.workSpecDao().getWorkSpec(workSpec.id);
                 if (currentDbWorkSpec == null) {
-                    Logger.warning(
+                    Logger.get().warning(
                             TAG,
                             "Skipping scheduling " + workSpec.id
                                     + " because it's no longer in the DB");
                     continue;
                 } else if (currentDbWorkSpec.state != WorkInfo.State.ENQUEUED) {
-                    Logger.warning(
+                    Logger.get().warning(
                             TAG,
                             "Skipping scheduling " + workSpec.id
                                     + " because it is no longer enqueued");
@@ -144,7 +144,9 @@
     @VisibleForTesting
     public void scheduleInternal(WorkSpec workSpec, int jobId) {
         JobInfo jobInfo = mSystemJobInfoConverter.convert(workSpec, jobId);
-        Logger.debug(TAG, String.format("Scheduling work ID %s Job ID %s", workSpec.id, jobId));
+        Logger.get().debug(
+                TAG,
+                String.format("Scheduling work ID %s Job ID %s", workSpec.id, jobId));
         mJobScheduler.schedule(jobInfo);
     }
 
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobService.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobService.java
index e1ae61d..ec50fd1 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobService.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobService.java
@@ -68,7 +68,7 @@
                 throw new IllegalStateException("WorkManager needs to be initialized via a "
                         + "ContentProvider#onCreate() or an Application#onCreate().");
             }
-            Logger.warning(TAG, "Could not find WorkManager instance; this may be because an "
+            Logger.get().warning(TAG, "Could not find WorkManager instance; this may be because an "
                     + "auto-backup is in progress. Ignoring JobScheduler commands for now. Please "
                     + "make sure that you are initializing WorkManager if you have manually "
                     + "disabled WorkManagerInitializer.");
@@ -88,7 +88,7 @@
     @Override
     public boolean onStartJob(JobParameters params) {
         if (mWorkManagerImpl == null) {
-            Logger.debug(TAG, "WorkManager is not initialized; requesting retry.");
+            Logger.get().debug(TAG, "WorkManager is not initialized; requesting retry.");
             jobFinished(params, true);
             return false;
         }
@@ -96,7 +96,7 @@
         PersistableBundle extras = params.getExtras();
         String workSpecId = extras.getString(SystemJobInfoConverter.EXTRA_WORK_SPEC_ID);
         if (TextUtils.isEmpty(workSpecId)) {
-            Logger.error(TAG, "WorkSpec id not found!");
+            Logger.get().error(TAG, "WorkSpec id not found!");
             return false;
         }
 
@@ -104,7 +104,7 @@
             if (mJobParameters.containsKey(workSpecId)) {
                 // This condition may happen due to our workaround for an undesired behavior in API
                 // 23.  See the documentation in {@link SystemJobScheduler#schedule}.
-                Logger.debug(TAG, String.format(
+                Logger.get().debug(TAG, String.format(
                         "Job is already being executed by SystemJobService: %s", workSpecId));
                 return false;
             }
@@ -113,7 +113,7 @@
             // returns true. This is because JobScheduler ensures that for PeriodicWork, constraints
             // are actually met irrespective.
 
-            Logger.debug(TAG, String.format("onStartJob for %s", workSpecId));
+            Logger.get().debug(TAG, String.format("onStartJob for %s", workSpecId));
             mJobParameters.put(workSpecId, params);
         }
 
@@ -140,17 +140,17 @@
     @Override
     public boolean onStopJob(JobParameters params) {
         if (mWorkManagerImpl == null) {
-            Logger.debug(TAG, "WorkManager is not initialized; requesting retry.");
+            Logger.get().debug(TAG, "WorkManager is not initialized; requesting retry.");
             return true;
         }
 
         String workSpecId = params.getExtras().getString(SystemJobInfoConverter.EXTRA_WORK_SPEC_ID);
         if (TextUtils.isEmpty(workSpecId)) {
-            Logger.error(TAG, "WorkSpec id not found!");
+            Logger.get().error(TAG, "WorkSpec id not found!");
             return false;
         }
 
-        Logger.debug(TAG, String.format("onStopJob for %s", workSpecId));
+        Logger.get().debug(TAG, String.format("onStopJob for %s", workSpecId));
 
         synchronized (mJobParameters) {
             mJobParameters.remove(workSpecId);
@@ -161,7 +161,7 @@
 
     @Override
     public void onExecuted(@NonNull String workSpecId, boolean needsReschedule) {
-        Logger.debug(TAG, String.format("%s executed on JobScheduler", workSpecId));
+        Logger.get().debug(TAG, String.format("%s executed on JobScheduler", workSpecId));
         JobParameters parameters;
         synchronized (mJobParameters) {
             parameters = mJobParameters.remove(workSpecId);
diff --git a/work/workmanager/src/main/java/androidx/work/impl/constraints/WorkConstraintsTracker.java b/work/workmanager/src/main/java/androidx/work/impl/constraints/WorkConstraintsTracker.java
index 6329991..66e0b9b 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/constraints/WorkConstraintsTracker.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/constraints/WorkConstraintsTracker.java
@@ -127,7 +127,7 @@
         synchronized (mLock) {
             for (ConstraintController constraintController : mConstraintControllers) {
                 if (constraintController.isWorkSpecConstrained(workSpecId)) {
-                    Logger.debug(TAG, String.format("Work %s constrained by %s", workSpecId,
+                    Logger.get().debug(TAG, String.format("Work %s constrained by %s", workSpecId,
                             constraintController.getClass().getSimpleName()));
                     return false;
                 }
@@ -142,7 +142,7 @@
             List<String> unconstrainedWorkSpecIds = new ArrayList<>();
             for (String workSpecId : workSpecIds) {
                 if (areAllConstraintsMet(workSpecId)) {
-                    Logger.debug(TAG, String.format("Constraints met for %s", workSpecId));
+                    Logger.get().debug(TAG, String.format("Constraints met for %s", workSpecId));
                     unconstrainedWorkSpecIds.add(workSpecId);
                 }
             }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/constraints/controllers/NetworkMeteredController.java b/work/workmanager/src/main/java/androidx/work/impl/constraints/controllers/NetworkMeteredController.java
index 038ab26..d8efa0c 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/constraints/controllers/NetworkMeteredController.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/constraints/controllers/NetworkMeteredController.java
@@ -50,7 +50,7 @@
     @Override
     boolean isConstrained(@NonNull NetworkState state) {
         if (Build.VERSION.SDK_INT < 26) {
-            Logger.debug(TAG, "Metered network constraint is not supported before API 26, "
+            Logger.get().debug(TAG, "Metered network constraint is not supported before API 26, "
                     + "only checking for connected state.");
             return !state.isConnected();
         }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/constraints/controllers/NetworkNotRoamingController.java b/work/workmanager/src/main/java/androidx/work/impl/constraints/controllers/NetworkNotRoamingController.java
index 2b82b80..7aaa80e5 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/constraints/controllers/NetworkNotRoamingController.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/constraints/controllers/NetworkNotRoamingController.java
@@ -50,8 +50,10 @@
     @Override
     boolean isConstrained(@NonNull NetworkState state) {
         if (Build.VERSION.SDK_INT < 24) {
-            Logger.debug(TAG, "Not-roaming network constraint is not supported before API 24, "
-                    + "only checking for connected state.");
+            Logger.get().debug(
+                    TAG,
+                    "Not-roaming network constraint is not supported before API 24, "
+                            + "only checking for connected state.");
             return !state.isConnected();
         }
         return !state.isConnected() || !state.isNotRoaming();
diff --git a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BatteryChargingTracker.java b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BatteryChargingTracker.java
index e9dcb34..003aee2 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BatteryChargingTracker.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BatteryChargingTracker.java
@@ -49,7 +49,7 @@
         IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
         Intent intent = mAppContext.registerReceiver(null, intentFilter);
         if (intent == null) {
-            Logger.error(TAG, "getInitialState - null intent received");
+            Logger.get().error(TAG, "getInitialState - null intent received");
             return null;
         }
         return isBatteryChangedIntentCharging(intent);
@@ -75,7 +75,7 @@
             return;
         }
 
-        Logger.debug(TAG, String.format("Received %s", action));
+        Logger.get().debug(TAG, String.format("Received %s", action));
         switch (action) {
             case BatteryManager.ACTION_CHARGING:
                 setState(true);
diff --git a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.java b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.java
index d86c281..1cc50adea 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.java
@@ -62,7 +62,7 @@
         IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
         Intent intent = mAppContext.registerReceiver(null, intentFilter);
         if (intent == null) {
-            Logger.error(TAG, "getInitialState - null intent received");
+            Logger.get().error(TAG, "getInitialState - null intent received");
             return null;
         }
         int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, BATTERY_PLUGGED_NONE);
@@ -90,7 +90,7 @@
             return;
         }
 
-        Logger.debug(TAG, String.format("Received %s", intent.getAction()));
+        Logger.get().debug(TAG, String.format("Received %s", intent.getAction()));
 
         switch (intent.getAction()) {
             case Intent.ACTION_BATTERY_OKAY:
diff --git a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker.java b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker.java
index c81e954..d622f89 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker.java
@@ -64,13 +64,17 @@
 
     @Override
     public void startTracking() {
-        Logger.debug(TAG, String.format("%s: registering receiver", getClass().getSimpleName()));
+        Logger.get().debug(
+                TAG,
+                String.format("%s: registering receiver", getClass().getSimpleName()));
         mAppContext.registerReceiver(mBroadcastReceiver, getIntentFilter());
     }
 
     @Override
     public void stopTracking() {
-        Logger.debug(TAG, String.format("%s: unregistering receiver", getClass().getSimpleName()));
+        Logger.get().debug(
+                TAG,
+                String.format("%s: unregistering receiver", getClass().getSimpleName()));
         mAppContext.unregisterReceiver(mBroadcastReceiver);
     }
 }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/ConstraintTracker.java b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/ConstraintTracker.java
index 005034a..b9f6f76 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/ConstraintTracker.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/ConstraintTracker.java
@@ -58,7 +58,7 @@
             if (mListeners.add(listener)) {
                 if (mListeners.size() == 1) {
                     mCurrentState = getInitialState();
-                    Logger.debug(TAG, String.format("%s: initial state = %s",
+                    Logger.get().debug(TAG, String.format("%s: initial state = %s",
                             getClass().getSimpleName(),
                             mCurrentState));
                     startTracking();
diff --git a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/NetworkStateTracker.java b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/NetworkStateTracker.java
index 90b7ced..1dd6641 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/NetworkStateTracker.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/NetworkStateTracker.java
@@ -78,10 +78,10 @@
     @Override
     public void startTracking() {
         if (isNetworkCallbackSupported()) {
-            Logger.debug(TAG, "Registering network callback");
+            Logger.get().debug(TAG, "Registering network callback");
             mConnectivityManager.registerDefaultNetworkCallback(mNetworkCallback);
         } else {
-            Logger.debug(TAG, "Registering broadcast receiver");
+            Logger.get().debug(TAG, "Registering broadcast receiver");
             mAppContext.registerReceiver(mBroadcastReceiver,
                     new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
         }
@@ -91,15 +91,18 @@
     public void stopTracking() {
         if (isNetworkCallbackSupported()) {
             try {
-                Logger.debug(TAG, "Unregistering network callback");
+                Logger.get().debug(TAG, "Unregistering network callback");
                 mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
             } catch (IllegalArgumentException e) {
                 // This seems to be happening on NVIDIA Shield Tablets a lot.  Catching the
                 // exception since it's not fatal and moving on.  See b/119484416.
-                Logger.error(TAG, "Received exception while unregistering network callback", e);
+                Logger.get().error(
+                        TAG,
+                        "Received exception while unregistering network callback",
+                        e);
             }
         } else {
-            Logger.debug(TAG, "Unregistering broadcast receiver");
+            Logger.get().debug(TAG, "Unregistering broadcast receiver");
             mAppContext.unregisterReceiver(mBroadcastReceiver);
         }
     }
@@ -138,13 +141,15 @@
         @Override
         public void onCapabilitiesChanged(Network network, NetworkCapabilities capabilities) {
             // The Network parameter is unreliable when a VPN app is running - use active network.
-            Logger.debug(TAG, String.format("Network capabilities changed: %s", capabilities));
+            Logger.get().debug(
+                    TAG,
+                    String.format("Network capabilities changed: %s", capabilities));
             setState(getActiveNetworkState());
         }
 
         @Override
         public void onLost(Network network) {
-            Logger.debug(TAG, "Network connection lost");
+            Logger.get().debug(TAG, "Network connection lost");
             setState(getActiveNetworkState());
         }
     }
@@ -159,7 +164,7 @@
                 return;
             }
             if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
-                Logger.debug(TAG, "Network broadcast received");
+                Logger.get().debug(TAG, "Network broadcast received");
                 setState(getActiveNetworkState());
             }
         }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/StorageNotLowTracker.java b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/StorageNotLowTracker.java
index b4fc7c5..b2dcd7a 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/StorageNotLowTracker.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/StorageNotLowTracker.java
@@ -81,7 +81,7 @@
             return; // Should never happen since the IntentFilter was configured.
         }
 
-        Logger.debug(TAG, String.format("Received %s", intent.getAction()));
+        Logger.get().debug(TAG, String.format("Received %s", intent.getAction()));
 
         switch (intent.getAction()) {
             case Intent.ACTION_DEVICE_STORAGE_OK:
diff --git a/work/workmanager/src/main/java/androidx/work/impl/model/WorkSpec.java b/work/workmanager/src/main/java/androidx/work/impl/model/WorkSpec.java
index d99e5b9..e42713f 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/model/WorkSpec.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/model/WorkSpec.java
@@ -153,11 +153,11 @@
      */
     public void setBackoffDelayDuration(long backoffDelayDuration) {
         if (backoffDelayDuration > MAX_BACKOFF_MILLIS) {
-            Logger.warning(TAG, "Backoff delay duration exceeds maximum value");
+            Logger.get().warning(TAG, "Backoff delay duration exceeds maximum value");
             backoffDelayDuration = MAX_BACKOFF_MILLIS;
         }
         if (backoffDelayDuration < MIN_BACKOFF_MILLIS) {
-            Logger.warning(TAG, "Backoff delay duration less than minimum value");
+            Logger.get().warning(TAG, "Backoff delay duration less than minimum value");
             backoffDelayDuration = MIN_BACKOFF_MILLIS;
         }
         this.backoffDelayDuration = backoffDelayDuration;
@@ -179,7 +179,7 @@
      */
     public void setPeriodic(long intervalDuration) {
         if (intervalDuration < MIN_PERIODIC_INTERVAL_MILLIS) {
-            Logger.warning(TAG, String.format(
+            Logger.get().warning(TAG, String.format(
                     "Interval duration lesser than minimum allowed value; Changed to %s",
                     MIN_PERIODIC_INTERVAL_MILLIS));
             intervalDuration = MIN_PERIODIC_INTERVAL_MILLIS;
@@ -195,19 +195,19 @@
      */
     public void setPeriodic(long intervalDuration, long flexDuration) {
         if (intervalDuration < MIN_PERIODIC_INTERVAL_MILLIS) {
-            Logger.warning(TAG, String.format(
+            Logger.get().warning(TAG, String.format(
                     "Interval duration lesser than minimum allowed value; Changed to %s",
                     MIN_PERIODIC_INTERVAL_MILLIS));
             intervalDuration = MIN_PERIODIC_INTERVAL_MILLIS;
         }
         if (flexDuration < MIN_PERIODIC_FLEX_MILLIS) {
-            Logger.warning(TAG,
+            Logger.get().warning(TAG,
                     String.format("Flex duration lesser than minimum allowed value; Changed to %s",
                             MIN_PERIODIC_FLEX_MILLIS));
             flexDuration = MIN_PERIODIC_FLEX_MILLIS;
         }
         if (flexDuration > intervalDuration) {
-            Logger.warning(TAG,
+            Logger.get().warning(TAG,
                     String.format("Flex duration greater than interval duration; Changed to %s",
                     intervalDuration));
             flexDuration = intervalDuration;
diff --git a/work/workmanager/src/main/java/androidx/work/impl/utils/EnqueueRunnable.java b/work/workmanager/src/main/java/androidx/work/impl/utils/EnqueueRunnable.java
index cc02bcb..6e45ec0 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/utils/EnqueueRunnable.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/utils/EnqueueRunnable.java
@@ -144,7 +144,7 @@
                 if (!parent.isEnqueued()) {
                     needsScheduling |= processContinuation(parent);
                 } else {
-                    Logger.warning(TAG, String.format("Already enqueued work ids (%s).",
+                    Logger.get().warning(TAG, String.format("Already enqueued work ids (%s).",
                             TextUtils.join(", ", parent.getIds())));
                 }
             }
@@ -196,7 +196,7 @@
             for (String id : prerequisiteIds) {
                 WorkSpec prerequisiteWorkSpec = workDatabase.workSpecDao().getWorkSpec(id);
                 if (prerequisiteWorkSpec == null) {
-                    Logger.error(TAG,
+                    Logger.get().error(TAG,
                             String.format("Prerequisite %s doesn't exist; not enqueuing", id));
                     return false;
                 }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/utils/ForceStopRunnable.java b/work/workmanager/src/main/java/androidx/work/impl/utils/ForceStopRunnable.java
index 7c1c33d..83b5407 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/utils/ForceStopRunnable.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/utils/ForceStopRunnable.java
@@ -65,12 +65,12 @@
     @Override
     public void run() {
         if (shouldRescheduleWorkers()) {
-            Logger.debug(TAG, "Rescheduling Workers.");
+            Logger.get().debug(TAG, "Rescheduling Workers.");
             mWorkManager.rescheduleEligibleWork();
             // Mark the jobs as migrated.
             mWorkManager.getPreferences().setNeedsReschedule(false);
         } else if (isForceStopped()) {
-            Logger.debug(TAG, "Application was force-stopped, rescheduling.");
+            Logger.get().debug(TAG, "Application was force-stopped, rescheduling.");
             mWorkManager.rescheduleEligibleWork();
         }
         mWorkManager.onForceStopRunnableCompleted();
@@ -154,7 +154,9 @@
             if (intent != null) {
                 String action = intent.getAction();
                 if (ACTION_FORCE_STOP_RESCHEDULE.equals(action)) {
-                    Logger.verbose(TAG, "Rescheduling alarm that keeps track of force-stops.");
+                    Logger.get().verbose(
+                            TAG,
+                            "Rescheduling alarm that keeps track of force-stops.");
                     ForceStopRunnable.setAlarm(context);
                 }
             }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/utils/PackageManagerHelper.java b/work/workmanager/src/main/java/androidx/work/impl/utils/PackageManagerHelper.java
index c6fd45e..4bb22f2 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/utils/PackageManagerHelper.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/utils/PackageManagerHelper.java
@@ -52,10 +52,10 @@
                             : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                     PackageManager.DONT_KILL_APP);
 
-            Logger.debug(TAG,
+            Logger.get().debug(TAG,
                     String.format("%s %s", klazz.getName(), (enabled ? "enabled" : "disabled")));
         } catch (Exception exception) {
-            Logger.debug(TAG, String.format("%s could not be %s", klazz.getName(),
+            Logger.get().debug(TAG, String.format("%s could not be %s", klazz.getName(),
                     (enabled ? "enabled" : "disabled")), exception);
         }
     }
diff --git a/work/workmanager/src/main/java/androidx/work/impl/utils/StopWorkRunnable.java b/work/workmanager/src/main/java/androidx/work/impl/utils/StopWorkRunnable.java
index 64e7bfc..703b190 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/utils/StopWorkRunnable.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/utils/StopWorkRunnable.java
@@ -52,7 +52,7 @@
                 workSpecDao.setState(WorkInfo.State.ENQUEUED, mWorkSpecId);
             }
             boolean isStopped = mWorkManagerImpl.getProcessor().stopWork(mWorkSpecId);
-            Logger.debug(
+            Logger.get().debug(
                     TAG,
                     String.format(
                             "StopWorkRunnable for %s; Processor.stopWork = %s",
diff --git a/work/workmanager/src/main/java/androidx/work/impl/utils/WakeLocks.java b/work/workmanager/src/main/java/androidx/work/impl/utils/WakeLocks.java
index 0fe9e24..4d7f5f7 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/utils/WakeLocks.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/utils/WakeLocks.java
@@ -23,6 +23,10 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.RestrictTo;
 
+import androidx.work.Logger;
+
+import java.util.WeakHashMap;
+
 /**
  * A common class for creating WakeLocks.
  *
@@ -31,19 +35,44 @@
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class WakeLocks {
 
+    private static final String TAG = "WakeLocks";
+
+    private static final WeakHashMap<PowerManager.WakeLock, String> sWakeLocks =
+            new WeakHashMap<>();
+
     /**
      * Creates and returns a new WakeLock.
      *
      * @param context The context from which to get the PowerManager
-     * @param tag A descriptive tag for the WakeLock; this method will prefix "WorkManager: " to it
-     * @return A new WakeLock
+     * @param tag     A descriptive tag for the WakeLock; this method will prefix "WorkManager: "
+     *                to it
+     * @return A new {@link android.os.PowerManager.WakeLock}
      */
     public static PowerManager.WakeLock newWakeLock(
             @NonNull Context context,
             @NonNull String tag) {
         PowerManager powerManager = (PowerManager) context.getApplicationContext()
                 .getSystemService(Context.POWER_SERVICE);
-        return powerManager.newWakeLock(PARTIAL_WAKE_LOCK, "WorkManager: " + tag);
+
+        String tagWithPrefix = "WorkManager: " + tag;
+        PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PARTIAL_WAKE_LOCK, tagWithPrefix);
+        // All wakelocks are only created on the command handler thread. No need to synchronize.
+        sWakeLocks.put(wakeLock, tagWithPrefix);
+        return wakeLock;
+    }
+
+    /**
+     * Checks to see if there are any {@link PowerManager.WakeLock}s that
+     * {@link androidx.work.impl.background.systemalarm.SystemAlarmService} holds when all the
+     * pending commands have been drained in the command queue.
+     */
+    public static void checkWakeLocks() {
+        for (PowerManager.WakeLock wakeLock : sWakeLocks.keySet()) {
+            if (wakeLock.isHeld()) {
+                String message = String.format("WakeLock held for %s", sWakeLocks.get(wakeLock));
+                Logger.get().warning(TAG, message);
+            }
+        }
     }
 
     private WakeLocks() {
diff --git a/work/workmanager/src/main/java/androidx/work/impl/workers/ConstraintTrackingWorker.java b/work/workmanager/src/main/java/androidx/work/impl/workers/ConstraintTrackingWorker.java
index 8b762bf..16eb791 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/workers/ConstraintTrackingWorker.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/workers/ConstraintTrackingWorker.java
@@ -92,7 +92,7 @@
     void setupAndRunConstraintTrackingWork() {
         String className = getInputData().getString(ARGUMENT_CLASS_NAME);
         if (TextUtils.isEmpty(className)) {
-            Logger.error(TAG, "No worker to delegate to.");
+            Logger.get().error(TAG, "No worker to delegate to.");
             setFutureFailed();
             return;
         }
@@ -103,7 +103,7 @@
                 mWorkerParameters);
 
         if (mDelegate == null) {
-            Logger.debug(TAG, "No worker to delegate to.");
+            Logger.get().debug(TAG, "No worker to delegate to.");
             setFutureFailed();
             return;
         }
@@ -123,7 +123,7 @@
         workConstraintsTracker.replace(Collections.singletonList(workSpec));
 
         if (workConstraintsTracker.areAllConstraintsMet(getId().toString())) {
-            Logger.debug(TAG, String.format("Constraints met for delegate %s", className));
+            Logger.get().debug(TAG, String.format("Constraints met for delegate %s", className));
 
             // Wrapping the call to mDelegate#doWork() in a try catch, because
             // changes in constraints can cause the worker to throw RuntimeExceptions, and
@@ -143,12 +143,12 @@
                     }
                 }, getBackgroundExecutor());
             } catch (Throwable exception) {
-                Logger.debug(TAG, String.format(
+                Logger.get().debug(TAG, String.format(
                         "Delegated worker %s threw exception in startWork.", className),
                         exception);
                 synchronized (mLock) {
                     if (mAreConstraintsUnmet) {
-                        Logger.debug(TAG, "Constraints were unmet, Retrying.");
+                        Logger.get().debug(TAG, "Constraints were unmet, Retrying.");
                         setFutureRetry();
                     } else {
                         setFutureFailed();
@@ -156,7 +156,7 @@
                 }
             }
         } else {
-            Logger.debug(TAG, String.format(
+            Logger.get().debug(TAG, String.format(
                     "Constraints not met for delegate %s. Requesting retry.", className));
             setFutureRetry();
         }
@@ -211,7 +211,7 @@
     @Override
     public void onAllConstraintsNotMet(@NonNull List<String> workSpecIds) {
         // If at any point, constraints are not met mark it so we can retry the work.
-        Logger.debug(TAG, String.format("Constraints changed for %s", workSpecIds));
+        Logger.get().debug(TAG, String.format("Constraints changed for %s", workSpecIds));
         synchronized (mLock) {
             mAreConstraintsUnmet = true;
         }
diff --git a/work/workmanager/src/test/java/androidx/work/impl/WorkManagerLiveDataTrackerTest.java b/work/workmanager/src/test/java/androidx/work/impl/WorkManagerLiveDataTrackerTest.java
new file mode 100644
index 0000000..23179ee
--- /dev/null
+++ b/work/workmanager/src/test/java/androidx/work/impl/WorkManagerLiveDataTrackerTest.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2018 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.work.impl;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import android.arch.lifecycle.LiveData;
+import android.arch.lifecycle.MutableLiveData;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+@RunWith(JUnit4.class)
+public class WorkManagerLiveDataTrackerTest {
+    private WorkManagerLiveDataTracker mContainer = new WorkManagerLiveDataTracker();
+
+    @Test
+    public void add() {
+        LiveData liveData = createLiveData();
+        assertThat(mContainer.mLiveDataSet, is(setOf()));
+        mContainer.onActive(liveData);
+        assertThat(mContainer.mLiveDataSet, is(setOf(liveData)));
+    }
+
+    @Test
+    public void add_twice() {
+        LiveData liveData = createLiveData();
+        mContainer.onActive(liveData);
+        mContainer.onActive(liveData);
+        assertThat(mContainer.mLiveDataSet, is(setOf(liveData)));
+    }
+
+    @Test
+    public void remove() {
+        LiveData liveData = createLiveData();
+        mContainer.onActive(liveData);
+        mContainer.onInactive(liveData);
+        assertThat(mContainer.mLiveDataSet, is(setOf()));
+    }
+
+    @Test
+    public void remove_twice() {
+        LiveData liveData = createLiveData();
+        mContainer.onActive(liveData);
+        mContainer.onInactive(liveData);
+        mContainer.onInactive(liveData);
+        assertThat(mContainer.mLiveDataSet, is(setOf()));
+    }
+
+    @Test
+    public void addRemoveMultiple() {
+        LiveData ld1 = createLiveData();
+        LiveData ld2 = createLiveData();
+        assertThat(mContainer.mLiveDataSet, is(setOf()));
+        mContainer.onActive(ld1);
+        mContainer.onActive(ld2);
+        assertThat(mContainer.mLiveDataSet, is(setOf(ld1, ld2)));
+        mContainer.onInactive(ld1);
+        assertThat(mContainer.mLiveDataSet, is(setOf(ld2)));
+        mContainer.onInactive(ld1); // intentional
+        assertThat(mContainer.mLiveDataSet, is(setOf(ld2)));
+        mContainer.onActive(ld1);
+        assertThat(mContainer.mLiveDataSet, is(setOf(ld1, ld2)));
+        mContainer.onActive(ld1); // intentional
+        assertThat(mContainer.mLiveDataSet, is(setOf(ld1, ld2)));
+        mContainer.onInactive(ld2);
+        assertThat(mContainer.mLiveDataSet, is(setOf(ld1)));
+        mContainer.onInactive(ld1);
+        assertThat(mContainer.mLiveDataSet, is(setOf()));
+        mContainer.onActive(ld1);
+        assertThat(mContainer.mLiveDataSet, is(setOf(ld1)));
+        mContainer.onActive(ld2);
+        assertThat(mContainer.mLiveDataSet, is(setOf(ld1, ld2)));
+    }
+
+    private LiveData<String> createLiveData() {
+        return mContainer.track(new MutableLiveData<String>());
+    }
+
+    private static Set<LiveData> setOf(LiveData... items) {
+        return new HashSet<>(Arrays.asList(items));
+    }
+}