Merge "Move vectordrawable to the new proper directory structure" into androidx-master-dev
diff --git a/appcompat/appcompat/api/1.2.0-alpha01.txt b/appcompat/appcompat/api/1.2.0-alpha01.txt
index 330bca1..a19c8b1 100644
--- a/appcompat/appcompat/api/1.2.0-alpha01.txt
+++ b/appcompat/appcompat/api/1.2.0-alpha01.txt
@@ -253,8 +253,7 @@
   public abstract class AppCompatDelegate {
     method public abstract void addContentView(android.view.View!, android.view.ViewGroup.LayoutParams!);
     method public abstract boolean applyDayNight();
-    method @Deprecated public void attachBaseContext(android.content.Context!);
-    method @CallSuper public android.content.Context attachBaseContext2(android.content.Context);
+    method public void attachBaseContext(android.content.Context!);
     method public static androidx.appcompat.app.AppCompatDelegate create(android.app.Activity, androidx.appcompat.app.AppCompatCallback?);
     method public static androidx.appcompat.app.AppCompatDelegate create(android.app.Dialog, androidx.appcompat.app.AppCompatCallback?);
     method public static androidx.appcompat.app.AppCompatDelegate create(android.content.Context, android.view.Window, androidx.appcompat.app.AppCompatCallback?);
diff --git a/appcompat/appcompat/api/public_plus_experimental_1.2.0-alpha01.txt b/appcompat/appcompat/api/public_plus_experimental_1.2.0-alpha01.txt
index 330bca1..a19c8b1 100644
--- a/appcompat/appcompat/api/public_plus_experimental_1.2.0-alpha01.txt
+++ b/appcompat/appcompat/api/public_plus_experimental_1.2.0-alpha01.txt
@@ -253,8 +253,7 @@
   public abstract class AppCompatDelegate {
     method public abstract void addContentView(android.view.View!, android.view.ViewGroup.LayoutParams!);
     method public abstract boolean applyDayNight();
-    method @Deprecated public void attachBaseContext(android.content.Context!);
-    method @CallSuper public android.content.Context attachBaseContext2(android.content.Context);
+    method public void attachBaseContext(android.content.Context!);
     method public static androidx.appcompat.app.AppCompatDelegate create(android.app.Activity, androidx.appcompat.app.AppCompatCallback?);
     method public static androidx.appcompat.app.AppCompatDelegate create(android.app.Dialog, androidx.appcompat.app.AppCompatCallback?);
     method public static androidx.appcompat.app.AppCompatDelegate create(android.content.Context, android.view.Window, androidx.appcompat.app.AppCompatCallback?);
diff --git a/arch/core-runtime/api/restricted_2.0.0.txt b/arch/core-runtime/api/restricted_2.0.0.txt
index b61078d..e95b096 100644
--- a/arch/core-runtime/api/restricted_2.0.0.txt
+++ b/arch/core-runtime/api/restricted_2.0.0.txt
@@ -1,30 +1,13 @@
 // Signature format: 3.0
 package androidx.arch.core.executor {
 
-  @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ArchTaskExecutor extends androidx.arch.core.executor.TaskExecutor {
-    method public void executeOnDiskIO(Runnable!);
-    method public static java.util.concurrent.Executor getIOThreadExecutor();
-    method public static androidx.arch.core.executor.ArchTaskExecutor getInstance();
-    method public static java.util.concurrent.Executor getMainThreadExecutor();
-    method public boolean isMainThread();
-    method public void postToMainThread(Runnable!);
-    method public void setDelegate(androidx.arch.core.executor.TaskExecutor?);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class DefaultTaskExecutor extends androidx.arch.core.executor.TaskExecutor {
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class DefaultTaskExecutor {
     ctor public DefaultTaskExecutor();
     method public void executeOnDiskIO(Runnable!);
+    method public void executeOnMainThread(Runnable);
     method public boolean isMainThread();
     method public void postToMainThread(Runnable!);
   }
 
-  @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class TaskExecutor {
-    ctor public TaskExecutor();
-    method public abstract void executeOnDiskIO(Runnable);
-    method public void executeOnMainThread(Runnable);
-    method public abstract boolean isMainThread();
-    method public abstract void postToMainThread(Runnable);
-  }
-
 }
 
diff --git a/biometric/api/restricted_1.0.0-alpha04.txt b/biometric/api/restricted_1.0.0-alpha04.txt
index c0fb51c..f517f0f 100644
--- a/biometric/api/restricted_1.0.0-alpha04.txt
+++ b/biometric/api/restricted_1.0.0-alpha04.txt
@@ -1,13 +1,23 @@
 // Signature format: 3.0
 package androidx.biometric {
 
-
-
-  public class BiometricPrompt implements androidx.biometric.BiometricConstants {
+  public class BiometricPrompt {
     ctor public BiometricPrompt(androidx.fragment.app.FragmentActivity, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo, androidx.biometric.BiometricPrompt.CryptoObject);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo);
     method public void cancelAuthentication();
+    field public static final int ERROR_CANCELED = 5; // 0x5
+    field public static final int ERROR_HW_NOT_PRESENT = 12; // 0xc
+    field public static final int ERROR_HW_UNAVAILABLE = 1; // 0x1
+    field public static final int ERROR_LOCKOUT = 7; // 0x7
+    field public static final int ERROR_LOCKOUT_PERMANENT = 9; // 0x9
+    field public static final int ERROR_NEGATIVE_BUTTON = 13; // 0xd
+    field public static final int ERROR_NO_BIOMETRICS = 11; // 0xb
+    field public static final int ERROR_NO_SPACE = 4; // 0x4
+    field public static final int ERROR_TIMEOUT = 3; // 0x3
+    field public static final int ERROR_UNABLE_TO_PROCESS = 2; // 0x2
+    field public static final int ERROR_USER_CANCELED = 10; // 0xa
+    field public static final int ERROR_VENDOR = 8; // 0x8
   }
 
   public abstract static class BiometricPrompt.AuthenticationCallback {
@@ -46,7 +56,5 @@
     method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setTitle(CharSequence);
   }
 
-
-
 }
 
diff --git a/biometric/api/restricted_1.0.0-beta01.txt b/biometric/api/restricted_1.0.0-beta01.txt
index cf9f995..b17b443 100644
--- a/biometric/api/restricted_1.0.0-beta01.txt
+++ b/biometric/api/restricted_1.0.0-beta01.txt
@@ -1,8 +1,6 @@
 // Signature format: 3.0
 package androidx.biometric {
 
-
-
   public class BiometricManager {
     method public int canAuthenticate();
     method public static androidx.biometric.BiometricManager from(android.content.Context);
@@ -12,12 +10,25 @@
     field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
   }
 
-  public class BiometricPrompt implements androidx.biometric.BiometricConstants {
+  public class BiometricPrompt {
     ctor public BiometricPrompt(androidx.fragment.app.FragmentActivity, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     ctor public BiometricPrompt(androidx.fragment.app.Fragment, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo, androidx.biometric.BiometricPrompt.CryptoObject);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo);
     method public void cancelAuthentication();
+    field public static final int ERROR_CANCELED = 5; // 0x5
+    field public static final int ERROR_HW_NOT_PRESENT = 12; // 0xc
+    field public static final int ERROR_HW_UNAVAILABLE = 1; // 0x1
+    field public static final int ERROR_LOCKOUT = 7; // 0x7
+    field public static final int ERROR_LOCKOUT_PERMANENT = 9; // 0x9
+    field public static final int ERROR_NEGATIVE_BUTTON = 13; // 0xd
+    field public static final int ERROR_NO_BIOMETRICS = 11; // 0xb
+    field public static final int ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
+    field public static final int ERROR_NO_SPACE = 4; // 0x4
+    field public static final int ERROR_TIMEOUT = 3; // 0x3
+    field public static final int ERROR_UNABLE_TO_PROCESS = 2; // 0x2
+    field public static final int ERROR_USER_CANCELED = 10; // 0xa
+    field public static final int ERROR_VENDOR = 8; // 0x8
   }
 
   public abstract static class BiometricPrompt.AuthenticationCallback {
@@ -60,9 +71,5 @@
     method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setTitle(CharSequence);
   }
 
-
-
-
-
 }
 
diff --git a/biometric/api/restricted_1.0.0-beta02.txt b/biometric/api/restricted_1.0.0-beta02.txt
index cf9f995..b17b443 100644
--- a/biometric/api/restricted_1.0.0-beta02.txt
+++ b/biometric/api/restricted_1.0.0-beta02.txt
@@ -1,8 +1,6 @@
 // Signature format: 3.0
 package androidx.biometric {
 
-
-
   public class BiometricManager {
     method public int canAuthenticate();
     method public static androidx.biometric.BiometricManager from(android.content.Context);
@@ -12,12 +10,25 @@
     field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
   }
 
-  public class BiometricPrompt implements androidx.biometric.BiometricConstants {
+  public class BiometricPrompt {
     ctor public BiometricPrompt(androidx.fragment.app.FragmentActivity, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     ctor public BiometricPrompt(androidx.fragment.app.Fragment, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo, androidx.biometric.BiometricPrompt.CryptoObject);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo);
     method public void cancelAuthentication();
+    field public static final int ERROR_CANCELED = 5; // 0x5
+    field public static final int ERROR_HW_NOT_PRESENT = 12; // 0xc
+    field public static final int ERROR_HW_UNAVAILABLE = 1; // 0x1
+    field public static final int ERROR_LOCKOUT = 7; // 0x7
+    field public static final int ERROR_LOCKOUT_PERMANENT = 9; // 0x9
+    field public static final int ERROR_NEGATIVE_BUTTON = 13; // 0xd
+    field public static final int ERROR_NO_BIOMETRICS = 11; // 0xb
+    field public static final int ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
+    field public static final int ERROR_NO_SPACE = 4; // 0x4
+    field public static final int ERROR_TIMEOUT = 3; // 0x3
+    field public static final int ERROR_UNABLE_TO_PROCESS = 2; // 0x2
+    field public static final int ERROR_USER_CANCELED = 10; // 0xa
+    field public static final int ERROR_VENDOR = 8; // 0x8
   }
 
   public abstract static class BiometricPrompt.AuthenticationCallback {
@@ -60,9 +71,5 @@
     method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setTitle(CharSequence);
   }
 
-
-
-
-
 }
 
diff --git a/biometric/api/restricted_1.0.0-rc01.txt b/biometric/api/restricted_1.0.0-rc01.txt
index cf9f995..b17b443 100644
--- a/biometric/api/restricted_1.0.0-rc01.txt
+++ b/biometric/api/restricted_1.0.0-rc01.txt
@@ -1,8 +1,6 @@
 // Signature format: 3.0
 package androidx.biometric {
 
-
-
   public class BiometricManager {
     method public int canAuthenticate();
     method public static androidx.biometric.BiometricManager from(android.content.Context);
@@ -12,12 +10,25 @@
     field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
   }
 
-  public class BiometricPrompt implements androidx.biometric.BiometricConstants {
+  public class BiometricPrompt {
     ctor public BiometricPrompt(androidx.fragment.app.FragmentActivity, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     ctor public BiometricPrompt(androidx.fragment.app.Fragment, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo, androidx.biometric.BiometricPrompt.CryptoObject);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo);
     method public void cancelAuthentication();
+    field public static final int ERROR_CANCELED = 5; // 0x5
+    field public static final int ERROR_HW_NOT_PRESENT = 12; // 0xc
+    field public static final int ERROR_HW_UNAVAILABLE = 1; // 0x1
+    field public static final int ERROR_LOCKOUT = 7; // 0x7
+    field public static final int ERROR_LOCKOUT_PERMANENT = 9; // 0x9
+    field public static final int ERROR_NEGATIVE_BUTTON = 13; // 0xd
+    field public static final int ERROR_NO_BIOMETRICS = 11; // 0xb
+    field public static final int ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
+    field public static final int ERROR_NO_SPACE = 4; // 0x4
+    field public static final int ERROR_TIMEOUT = 3; // 0x3
+    field public static final int ERROR_UNABLE_TO_PROCESS = 2; // 0x2
+    field public static final int ERROR_USER_CANCELED = 10; // 0xa
+    field public static final int ERROR_VENDOR = 8; // 0x8
   }
 
   public abstract static class BiometricPrompt.AuthenticationCallback {
@@ -60,9 +71,5 @@
     method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setTitle(CharSequence);
   }
 
-
-
-
-
 }
 
diff --git a/biometric/api/restricted_1.0.0-rc02.txt b/biometric/api/restricted_1.0.0-rc02.txt
index cf9f995..b17b443 100644
--- a/biometric/api/restricted_1.0.0-rc02.txt
+++ b/biometric/api/restricted_1.0.0-rc02.txt
@@ -1,8 +1,6 @@
 // Signature format: 3.0
 package androidx.biometric {
 
-
-
   public class BiometricManager {
     method public int canAuthenticate();
     method public static androidx.biometric.BiometricManager from(android.content.Context);
@@ -12,12 +10,25 @@
     field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
   }
 
-  public class BiometricPrompt implements androidx.biometric.BiometricConstants {
+  public class BiometricPrompt {
     ctor public BiometricPrompt(androidx.fragment.app.FragmentActivity, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     ctor public BiometricPrompt(androidx.fragment.app.Fragment, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo, androidx.biometric.BiometricPrompt.CryptoObject);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo);
     method public void cancelAuthentication();
+    field public static final int ERROR_CANCELED = 5; // 0x5
+    field public static final int ERROR_HW_NOT_PRESENT = 12; // 0xc
+    field public static final int ERROR_HW_UNAVAILABLE = 1; // 0x1
+    field public static final int ERROR_LOCKOUT = 7; // 0x7
+    field public static final int ERROR_LOCKOUT_PERMANENT = 9; // 0x9
+    field public static final int ERROR_NEGATIVE_BUTTON = 13; // 0xd
+    field public static final int ERROR_NO_BIOMETRICS = 11; // 0xb
+    field public static final int ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
+    field public static final int ERROR_NO_SPACE = 4; // 0x4
+    field public static final int ERROR_TIMEOUT = 3; // 0x3
+    field public static final int ERROR_UNABLE_TO_PROCESS = 2; // 0x2
+    field public static final int ERROR_USER_CANCELED = 10; // 0xa
+    field public static final int ERROR_VENDOR = 8; // 0x8
   }
 
   public abstract static class BiometricPrompt.AuthenticationCallback {
@@ -60,9 +71,5 @@
     method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setTitle(CharSequence);
   }
 
-
-
-
-
 }
 
diff --git a/biometric/api/restricted_1.1.0-alpha01.txt b/biometric/api/restricted_1.1.0-alpha01.txt
index 7af17fe..b17b443 100644
--- a/biometric/api/restricted_1.1.0-alpha01.txt
+++ b/biometric/api/restricted_1.1.0-alpha01.txt
@@ -1,8 +1,6 @@
 // Signature format: 3.0
 package androidx.biometric {
 
-
-
   public class BiometricManager {
     method public int canAuthenticate();
     method public static androidx.biometric.BiometricManager from(android.content.Context);
@@ -12,12 +10,25 @@
     field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
   }
 
-  public class BiometricPrompt implements androidx.biometric.BiometricConstants {
+  public class BiometricPrompt {
     ctor public BiometricPrompt(androidx.fragment.app.FragmentActivity, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     ctor public BiometricPrompt(androidx.fragment.app.Fragment, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo, androidx.biometric.BiometricPrompt.CryptoObject);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo);
     method public void cancelAuthentication();
+    field public static final int ERROR_CANCELED = 5; // 0x5
+    field public static final int ERROR_HW_NOT_PRESENT = 12; // 0xc
+    field public static final int ERROR_HW_UNAVAILABLE = 1; // 0x1
+    field public static final int ERROR_LOCKOUT = 7; // 0x7
+    field public static final int ERROR_LOCKOUT_PERMANENT = 9; // 0x9
+    field public static final int ERROR_NEGATIVE_BUTTON = 13; // 0xd
+    field public static final int ERROR_NO_BIOMETRICS = 11; // 0xb
+    field public static final int ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
+    field public static final int ERROR_NO_SPACE = 4; // 0x4
+    field public static final int ERROR_TIMEOUT = 3; // 0x3
+    field public static final int ERROR_UNABLE_TO_PROCESS = 2; // 0x2
+    field public static final int ERROR_USER_CANCELED = 10; // 0xa
+    field public static final int ERROR_VENDOR = 8; // 0x8
   }
 
   public abstract static class BiometricPrompt.AuthenticationCallback {
@@ -60,8 +71,5 @@
     method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setTitle(CharSequence);
   }
 
-
-
-
 }
 
diff --git a/biometric/api/restricted_current.txt b/biometric/api/restricted_current.txt
index 7af17fe..b17b443 100644
--- a/biometric/api/restricted_current.txt
+++ b/biometric/api/restricted_current.txt
@@ -1,8 +1,6 @@
 // Signature format: 3.0
 package androidx.biometric {
 
-
-
   public class BiometricManager {
     method public int canAuthenticate();
     method public static androidx.biometric.BiometricManager from(android.content.Context);
@@ -12,12 +10,25 @@
     field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
   }
 
-  public class BiometricPrompt implements androidx.biometric.BiometricConstants {
+  public class BiometricPrompt {
     ctor public BiometricPrompt(androidx.fragment.app.FragmentActivity, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     ctor public BiometricPrompt(androidx.fragment.app.Fragment, java.util.concurrent.Executor, androidx.biometric.BiometricPrompt.AuthenticationCallback);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo, androidx.biometric.BiometricPrompt.CryptoObject);
     method public void authenticate(androidx.biometric.BiometricPrompt.PromptInfo);
     method public void cancelAuthentication();
+    field public static final int ERROR_CANCELED = 5; // 0x5
+    field public static final int ERROR_HW_NOT_PRESENT = 12; // 0xc
+    field public static final int ERROR_HW_UNAVAILABLE = 1; // 0x1
+    field public static final int ERROR_LOCKOUT = 7; // 0x7
+    field public static final int ERROR_LOCKOUT_PERMANENT = 9; // 0x9
+    field public static final int ERROR_NEGATIVE_BUTTON = 13; // 0xd
+    field public static final int ERROR_NO_BIOMETRICS = 11; // 0xb
+    field public static final int ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
+    field public static final int ERROR_NO_SPACE = 4; // 0x4
+    field public static final int ERROR_TIMEOUT = 3; // 0x3
+    field public static final int ERROR_UNABLE_TO_PROCESS = 2; // 0x2
+    field public static final int ERROR_USER_CANCELED = 10; // 0xa
+    field public static final int ERROR_VENDOR = 8; // 0x8
   }
 
   public abstract static class BiometricPrompt.AuthenticationCallback {
@@ -60,8 +71,5 @@
     method public androidx.biometric.BiometricPrompt.PromptInfo.Builder setTitle(CharSequence);
   }
 
-
-
-
 }
 
diff --git a/browser/api/restricted_1.2.0-alpha08.txt b/browser/api/restricted_1.2.0-alpha08.txt
index 5635cab..fdafb39 100644
--- a/browser/api/restricted_1.2.0-alpha08.txt
+++ b/browser/api/restricted_1.2.0-alpha08.txt
@@ -60,7 +60,6 @@
     method @Deprecated public androidx.browser.browseractions.BrowserActionsIntent.Builder! setUrlType(@androidx.browser.browseractions.BrowserActionsIntent.BrowserActionsUrlType int);
   }
 
-
 }
 
 package androidx.browser.customtabs {
@@ -107,7 +106,7 @@
   }
 
   public final class CustomTabsIntent {
-    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, @androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
+    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, int);
     method public static int getMaxToolbarItems();
     method public void launchUrl(android.content.Context!, android.net.Uri!);
     method public static android.content.Intent! setAlwaysUseBrowserUI(android.content.Intent!);
@@ -158,8 +157,8 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent, boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setCloseButtonIcon(android.graphics.Bitmap);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int, androidx.browser.customtabs.CustomTabColorSchemeParams);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(int);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(int, androidx.browser.customtabs.CustomTabColorSchemeParams);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setExitAnimations(android.content.Context, @AnimRes int, @AnimRes int);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setInstantAppsEnabled(boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setNavigationBarColor(@ColorInt int);
@@ -171,7 +170,6 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setToolbarColor(@ColorInt int);
   }
 
-
   public abstract class CustomTabsService extends android.app.Service {
     ctor public CustomTabsService();
     method protected boolean cleanUpSession(androidx.browser.customtabs.CustomTabsSessionToken!);
@@ -180,7 +178,7 @@
     method protected abstract boolean newSession(androidx.browser.customtabs.CustomTabsSessionToken!);
     method public android.os.IBinder! onBind(android.content.Intent!);
     method @androidx.browser.customtabs.CustomTabsService.Result protected abstract int postMessage(androidx.browser.customtabs.CustomTabsSessionToken!, String!, android.os.Bundle!);
-    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, int, android.os.Bundle?);
     method protected abstract boolean requestPostMessageChannel(androidx.browser.customtabs.CustomTabsSessionToken!, android.net.Uri!);
     method protected abstract boolean updateVisuals(androidx.browser.customtabs.CustomTabsSessionToken!, android.os.Bundle!);
     method protected abstract boolean validateRelationship(androidx.browser.customtabs.CustomTabsSessionToken!, @androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri!, android.os.Bundle!);
@@ -200,7 +198,6 @@
     field public static final String TRUSTED_WEB_ACTIVITY_CATEGORY = "androidx.browser.trusted.category.TrustedWebActivities";
   }
 
-
   @IntDef({androidx.browser.customtabs.CustomTabsService.RELATION_USE_AS_ORIGIN, androidx.browser.customtabs.CustomTabsService.RELATION_HANDLE_ALL_URLS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface CustomTabsService.Relation {
   }
 
@@ -217,7 +214,7 @@
     method @VisibleForTesting public static androidx.browser.customtabs.CustomTabsSession createMockSessionForTesting(android.content.ComponentName);
     method public boolean mayLaunchUrl(android.net.Uri, android.os.Bundle?, java.util.List<android.os.Bundle!>?);
     method @androidx.browser.customtabs.CustomTabsService.Result public int postMessage(String, android.os.Bundle?);
-    method public boolean receiveFile(android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method public boolean receiveFile(android.net.Uri, int, android.os.Bundle?);
     method public boolean requestPostMessageChannel(android.net.Uri);
     method public boolean setActionButton(android.graphics.Bitmap, String);
     method public boolean setSecondaryToolbarViews(android.widget.RemoteViews?, int[]?, android.app.PendingIntent?);
@@ -225,7 +222,6 @@
     method public boolean validateRelationship(@androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
   }
 
-
   public class CustomTabsSessionToken {
     method public static androidx.browser.customtabs.CustomTabsSessionToken createMockSessionTokenForTesting();
     method public androidx.browser.customtabs.CustomTabsCallback? getCallback();
@@ -233,13 +229,12 @@
     method public boolean isAssociatedWith(androidx.browser.customtabs.CustomTabsSession);
   }
 
-
   public class PostMessageService extends android.app.Service {
     ctor public PostMessageService();
     method public android.os.IBinder! onBind(android.content.Intent!);
   }
 
-  public abstract class PostMessageServiceConnection implements androidx.browser.customtabs.PostMessageBackend android.content.ServiceConnection {
+  public abstract class PostMessageServiceConnection implements android.content.ServiceConnection {
     ctor public PostMessageServiceConnection(androidx.browser.customtabs.CustomTabsSessionToken!);
     method public boolean bindSessionToPostMessageService(android.content.Context!, String!);
     method public final boolean notifyMessageChannelReady(android.os.Bundle!);
@@ -262,7 +257,6 @@
 
 package androidx.browser.trusted {
 
-
   public final class TrustedWebActivityIntent {
     method public android.content.Intent getIntent();
     method public void launchTrustedWebActivity(android.content.Context);
@@ -340,7 +334,7 @@
   }
 
   public final class ShareTarget {
-    ctor public ShareTarget(String, @androidx.browser.trusted.sharing.ShareTarget.RequestMethod String?, @androidx.browser.trusted.sharing.ShareTarget.EncodingType String?, androidx.browser.trusted.sharing.ShareTarget.Params);
+    ctor public ShareTarget(String, String?, String?, androidx.browser.trusted.sharing.ShareTarget.Params);
     method public static androidx.browser.trusted.sharing.ShareTarget? fromBundle(android.os.Bundle);
     method public android.os.Bundle toBundle();
     field public static final String ENCODING_TYPE_MULTIPART = "multipart/form-data";
@@ -352,12 +346,11 @@
     field public static final String METHOD_GET = "GET";
     field public static final String METHOD_POST = "POST";
     field public final String action;
-    field @androidx.browser.trusted.sharing.ShareTarget.EncodingType public final String? encodingType;
-    field @androidx.browser.trusted.sharing.ShareTarget.RequestMethod public final String? method;
+    field public final String? encodingType;
+    field public final String? method;
     field public final androidx.browser.trusted.sharing.ShareTarget.Params params;
   }
 
-
   public static class ShareTarget.FileFormField {
     ctor public ShareTarget.FileFormField(String, java.util.List<java.lang.String!>);
     field public static final String KEY_ACCEPTED_TYPES = "androidx.browser.trusted.sharing.KEY_ACCEPTED_TYPES";
@@ -376,7 +369,6 @@
     field public final String? title;
   }
 
-
 }
 
 package androidx.browser.trusted.splashscreens {
diff --git a/browser/api/restricted_1.2.0-alpha09.txt b/browser/api/restricted_1.2.0-alpha09.txt
index 5a07a9a..e8b4ea6 100644
--- a/browser/api/restricted_1.2.0-alpha09.txt
+++ b/browser/api/restricted_1.2.0-alpha09.txt
@@ -60,7 +60,6 @@
     method @Deprecated public androidx.browser.browseractions.BrowserActionsIntent.Builder! setUrlType(@androidx.browser.browseractions.BrowserActionsIntent.BrowserActionsUrlType int);
   }
 
-
 }
 
 package androidx.browser.customtabs {
@@ -107,7 +106,7 @@
   }
 
   public final class CustomTabsIntent {
-    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, @androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
+    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, int);
     method public static int getMaxToolbarItems();
     method public void launchUrl(android.content.Context!, android.net.Uri!);
     method public static android.content.Intent! setAlwaysUseBrowserUI(android.content.Intent!);
@@ -158,8 +157,8 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent, boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setCloseButtonIcon(android.graphics.Bitmap);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int, androidx.browser.customtabs.CustomTabColorSchemeParams);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(int);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(int, androidx.browser.customtabs.CustomTabColorSchemeParams);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setExitAnimations(android.content.Context, @AnimRes int, @AnimRes int);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setInstantAppsEnabled(boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setNavigationBarColor(@ColorInt int);
@@ -171,7 +170,6 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setToolbarColor(@ColorInt int);
   }
 
-
   public abstract class CustomTabsService extends android.app.Service {
     ctor public CustomTabsService();
     method protected boolean cleanUpSession(androidx.browser.customtabs.CustomTabsSessionToken!);
@@ -180,7 +178,7 @@
     method protected abstract boolean newSession(androidx.browser.customtabs.CustomTabsSessionToken!);
     method public android.os.IBinder! onBind(android.content.Intent!);
     method @androidx.browser.customtabs.CustomTabsService.Result protected abstract int postMessage(androidx.browser.customtabs.CustomTabsSessionToken!, String!, android.os.Bundle!);
-    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, int, android.os.Bundle?);
     method protected abstract boolean requestPostMessageChannel(androidx.browser.customtabs.CustomTabsSessionToken!, android.net.Uri!);
     method protected abstract boolean updateVisuals(androidx.browser.customtabs.CustomTabsSessionToken!, android.os.Bundle!);
     method protected abstract boolean validateRelationship(androidx.browser.customtabs.CustomTabsSessionToken!, @androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri!, android.os.Bundle!);
@@ -201,7 +199,6 @@
     field public static final String TRUSTED_WEB_ACTIVITY_CATEGORY = "androidx.browser.trusted.category.TrustedWebActivities";
   }
 
-
   @IntDef({androidx.browser.customtabs.CustomTabsService.RELATION_USE_AS_ORIGIN, androidx.browser.customtabs.CustomTabsService.RELATION_HANDLE_ALL_URLS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface CustomTabsService.Relation {
   }
 
@@ -218,7 +215,7 @@
     method @VisibleForTesting public static androidx.browser.customtabs.CustomTabsSession createMockSessionForTesting(android.content.ComponentName);
     method public boolean mayLaunchUrl(android.net.Uri, android.os.Bundle?, java.util.List<android.os.Bundle!>?);
     method @androidx.browser.customtabs.CustomTabsService.Result public int postMessage(String, android.os.Bundle?);
-    method public boolean receiveFile(android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method public boolean receiveFile(android.net.Uri, int, android.os.Bundle?);
     method public boolean requestPostMessageChannel(android.net.Uri);
     method public boolean setActionButton(android.graphics.Bitmap, String);
     method public boolean setSecondaryToolbarViews(android.widget.RemoteViews?, int[]?, android.app.PendingIntent?);
@@ -226,7 +223,6 @@
     method public boolean validateRelationship(@androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
   }
 
-
   public class CustomTabsSessionToken {
     method public static androidx.browser.customtabs.CustomTabsSessionToken createMockSessionTokenForTesting();
     method public androidx.browser.customtabs.CustomTabsCallback? getCallback();
@@ -234,13 +230,12 @@
     method public boolean isAssociatedWith(androidx.browser.customtabs.CustomTabsSession);
   }
 
-
   public class PostMessageService extends android.app.Service {
     ctor public PostMessageService();
     method public android.os.IBinder! onBind(android.content.Intent!);
   }
 
-  public abstract class PostMessageServiceConnection implements androidx.browser.customtabs.PostMessageBackend android.content.ServiceConnection {
+  public abstract class PostMessageServiceConnection implements android.content.ServiceConnection {
     ctor public PostMessageServiceConnection(androidx.browser.customtabs.CustomTabsSessionToken!);
     method public boolean bindSessionToPostMessageService(android.content.Context!, String!);
     method public final boolean notifyMessageChannelReady(android.os.Bundle!);
@@ -263,7 +258,6 @@
 
 package androidx.browser.trusted {
 
-
   public final class Token {
     method public static androidx.browser.trusted.Token? create(String, android.content.pm.PackageManager);
     method public static androidx.browser.trusted.Token deserialize(byte[]);
@@ -370,7 +364,7 @@
   }
 
   public final class ShareTarget {
-    ctor public ShareTarget(String, @androidx.browser.trusted.sharing.ShareTarget.RequestMethod String?, @androidx.browser.trusted.sharing.ShareTarget.EncodingType String?, androidx.browser.trusted.sharing.ShareTarget.Params);
+    ctor public ShareTarget(String, String?, String?, androidx.browser.trusted.sharing.ShareTarget.Params);
     method public static androidx.browser.trusted.sharing.ShareTarget? fromBundle(android.os.Bundle);
     method public android.os.Bundle toBundle();
     field public static final String ENCODING_TYPE_MULTIPART = "multipart/form-data";
@@ -382,12 +376,11 @@
     field public static final String METHOD_GET = "GET";
     field public static final String METHOD_POST = "POST";
     field public final String action;
-    field @androidx.browser.trusted.sharing.ShareTarget.EncodingType public final String? encodingType;
-    field @androidx.browser.trusted.sharing.ShareTarget.RequestMethod public final String? method;
+    field public final String? encodingType;
+    field public final String? method;
     field public final androidx.browser.trusted.sharing.ShareTarget.Params params;
   }
 
-
   public static final class ShareTarget.FileFormField {
     ctor public ShareTarget.FileFormField(String, java.util.List<java.lang.String!>);
     field public static final String KEY_ACCEPTED_TYPES = "androidx.browser.trusted.sharing.KEY_ACCEPTED_TYPES";
@@ -406,7 +399,6 @@
     field public final String? title;
   }
 
-
 }
 
 package androidx.browser.trusted.splashscreens {
diff --git a/browser/api/restricted_1.2.0-beta01.txt b/browser/api/restricted_1.2.0-beta01.txt
index f865d85..2dda625 100644
--- a/browser/api/restricted_1.2.0-beta01.txt
+++ b/browser/api/restricted_1.2.0-beta01.txt
@@ -60,7 +60,6 @@
     method @Deprecated public androidx.browser.browseractions.BrowserActionsIntent.Builder setUrlType(@androidx.browser.browseractions.BrowserActionsIntent.BrowserActionsUrlType int);
   }
 
-
 }
 
 package androidx.browser.customtabs {
@@ -107,7 +106,7 @@
   }
 
   public final class CustomTabsIntent {
-    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, @androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
+    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, int);
     method public static int getMaxToolbarItems();
     method public void launchUrl(android.content.Context, android.net.Uri);
     method public static android.content.Intent setAlwaysUseBrowserUI(android.content.Intent?);
@@ -158,8 +157,8 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent, boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setCloseButtonIcon(android.graphics.Bitmap);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int, androidx.browser.customtabs.CustomTabColorSchemeParams);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(int);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(int, androidx.browser.customtabs.CustomTabColorSchemeParams);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setExitAnimations(android.content.Context, @AnimRes int, @AnimRes int);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setInstantAppsEnabled(boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setNavigationBarColor(@ColorInt int);
@@ -171,7 +170,6 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setToolbarColor(@ColorInt int);
   }
 
-
   public abstract class CustomTabsService extends android.app.Service {
     ctor public CustomTabsService();
     method protected boolean cleanUpSession(androidx.browser.customtabs.CustomTabsSessionToken);
@@ -180,7 +178,7 @@
     method protected abstract boolean newSession(androidx.browser.customtabs.CustomTabsSessionToken);
     method public android.os.IBinder onBind(android.content.Intent?);
     method @androidx.browser.customtabs.CustomTabsService.Result protected abstract int postMessage(androidx.browser.customtabs.CustomTabsSessionToken, String, android.os.Bundle?);
-    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, int, android.os.Bundle?);
     method protected abstract boolean requestPostMessageChannel(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri);
     method protected abstract boolean updateVisuals(androidx.browser.customtabs.CustomTabsSessionToken, android.os.Bundle?);
     method protected abstract boolean validateRelationship(androidx.browser.customtabs.CustomTabsSessionToken, @androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
@@ -201,7 +199,6 @@
     field public static final String TRUSTED_WEB_ACTIVITY_CATEGORY = "androidx.browser.trusted.category.TrustedWebActivities";
   }
 
-
   @IntDef({androidx.browser.customtabs.CustomTabsService.RELATION_USE_AS_ORIGIN, androidx.browser.customtabs.CustomTabsService.RELATION_HANDLE_ALL_URLS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface CustomTabsService.Relation {
   }
 
@@ -218,7 +215,7 @@
     method @VisibleForTesting public static androidx.browser.customtabs.CustomTabsSession createMockSessionForTesting(android.content.ComponentName);
     method public boolean mayLaunchUrl(android.net.Uri, android.os.Bundle?, java.util.List<android.os.Bundle!>?);
     method @androidx.browser.customtabs.CustomTabsService.Result public int postMessage(String, android.os.Bundle?);
-    method public boolean receiveFile(android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method public boolean receiveFile(android.net.Uri, int, android.os.Bundle?);
     method public boolean requestPostMessageChannel(android.net.Uri);
     method public boolean setActionButton(android.graphics.Bitmap, String);
     method public boolean setSecondaryToolbarViews(android.widget.RemoteViews?, int[]?, android.app.PendingIntent?);
@@ -226,7 +223,6 @@
     method public boolean validateRelationship(@androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
   }
 
-
   public class CustomTabsSessionToken {
     method public static androidx.browser.customtabs.CustomTabsSessionToken createMockSessionTokenForTesting();
     method public androidx.browser.customtabs.CustomTabsCallback? getCallback();
@@ -234,13 +230,12 @@
     method public boolean isAssociatedWith(androidx.browser.customtabs.CustomTabsSession);
   }
 
-
   public class PostMessageService extends android.app.Service {
     ctor public PostMessageService();
     method public android.os.IBinder onBind(android.content.Intent?);
   }
 
-  public abstract class PostMessageServiceConnection implements androidx.browser.customtabs.PostMessageBackend android.content.ServiceConnection {
+  public abstract class PostMessageServiceConnection implements android.content.ServiceConnection {
     ctor public PostMessageServiceConnection(androidx.browser.customtabs.CustomTabsSessionToken);
     method public boolean bindSessionToPostMessageService(android.content.Context, String);
     method public final boolean notifyMessageChannelReady(android.os.Bundle?);
@@ -263,7 +258,6 @@
 
 package androidx.browser.trusted {
 
-
   public final class Token {
     method public static androidx.browser.trusted.Token? create(String, android.content.pm.PackageManager);
     method public static androidx.browser.trusted.Token deserialize(byte[]);
@@ -370,7 +364,7 @@
   }
 
   public final class ShareTarget {
-    ctor public ShareTarget(String, @androidx.browser.trusted.sharing.ShareTarget.RequestMethod String?, @androidx.browser.trusted.sharing.ShareTarget.EncodingType String?, androidx.browser.trusted.sharing.ShareTarget.Params);
+    ctor public ShareTarget(String, String?, String?, androidx.browser.trusted.sharing.ShareTarget.Params);
     method public static androidx.browser.trusted.sharing.ShareTarget? fromBundle(android.os.Bundle);
     method public android.os.Bundle toBundle();
     field public static final String ENCODING_TYPE_MULTIPART = "multipart/form-data";
@@ -382,12 +376,11 @@
     field public static final String METHOD_GET = "GET";
     field public static final String METHOD_POST = "POST";
     field public final String action;
-    field @androidx.browser.trusted.sharing.ShareTarget.EncodingType public final String? encodingType;
-    field @androidx.browser.trusted.sharing.ShareTarget.RequestMethod public final String? method;
+    field public final String? encodingType;
+    field public final String? method;
     field public final androidx.browser.trusted.sharing.ShareTarget.Params params;
   }
 
-
   public static final class ShareTarget.FileFormField {
     ctor public ShareTarget.FileFormField(String, java.util.List<java.lang.String!>);
     field public static final String KEY_ACCEPTED_TYPES = "androidx.browser.trusted.sharing.KEY_ACCEPTED_TYPES";
@@ -406,7 +399,6 @@
     field public final String? title;
   }
 
-
 }
 
 package androidx.browser.trusted.splashscreens {
diff --git a/browser/api/restricted_1.2.0-rc01.txt b/browser/api/restricted_1.2.0-rc01.txt
index f865d85..2dda625 100644
--- a/browser/api/restricted_1.2.0-rc01.txt
+++ b/browser/api/restricted_1.2.0-rc01.txt
@@ -60,7 +60,6 @@
     method @Deprecated public androidx.browser.browseractions.BrowserActionsIntent.Builder setUrlType(@androidx.browser.browseractions.BrowserActionsIntent.BrowserActionsUrlType int);
   }
 
-
 }
 
 package androidx.browser.customtabs {
@@ -107,7 +106,7 @@
   }
 
   public final class CustomTabsIntent {
-    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, @androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
+    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, int);
     method public static int getMaxToolbarItems();
     method public void launchUrl(android.content.Context, android.net.Uri);
     method public static android.content.Intent setAlwaysUseBrowserUI(android.content.Intent?);
@@ -158,8 +157,8 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent, boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setCloseButtonIcon(android.graphics.Bitmap);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int, androidx.browser.customtabs.CustomTabColorSchemeParams);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(int);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(int, androidx.browser.customtabs.CustomTabColorSchemeParams);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setExitAnimations(android.content.Context, @AnimRes int, @AnimRes int);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setInstantAppsEnabled(boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setNavigationBarColor(@ColorInt int);
@@ -171,7 +170,6 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setToolbarColor(@ColorInt int);
   }
 
-
   public abstract class CustomTabsService extends android.app.Service {
     ctor public CustomTabsService();
     method protected boolean cleanUpSession(androidx.browser.customtabs.CustomTabsSessionToken);
@@ -180,7 +178,7 @@
     method protected abstract boolean newSession(androidx.browser.customtabs.CustomTabsSessionToken);
     method public android.os.IBinder onBind(android.content.Intent?);
     method @androidx.browser.customtabs.CustomTabsService.Result protected abstract int postMessage(androidx.browser.customtabs.CustomTabsSessionToken, String, android.os.Bundle?);
-    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, int, android.os.Bundle?);
     method protected abstract boolean requestPostMessageChannel(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri);
     method protected abstract boolean updateVisuals(androidx.browser.customtabs.CustomTabsSessionToken, android.os.Bundle?);
     method protected abstract boolean validateRelationship(androidx.browser.customtabs.CustomTabsSessionToken, @androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
@@ -201,7 +199,6 @@
     field public static final String TRUSTED_WEB_ACTIVITY_CATEGORY = "androidx.browser.trusted.category.TrustedWebActivities";
   }
 
-
   @IntDef({androidx.browser.customtabs.CustomTabsService.RELATION_USE_AS_ORIGIN, androidx.browser.customtabs.CustomTabsService.RELATION_HANDLE_ALL_URLS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface CustomTabsService.Relation {
   }
 
@@ -218,7 +215,7 @@
     method @VisibleForTesting public static androidx.browser.customtabs.CustomTabsSession createMockSessionForTesting(android.content.ComponentName);
     method public boolean mayLaunchUrl(android.net.Uri, android.os.Bundle?, java.util.List<android.os.Bundle!>?);
     method @androidx.browser.customtabs.CustomTabsService.Result public int postMessage(String, android.os.Bundle?);
-    method public boolean receiveFile(android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method public boolean receiveFile(android.net.Uri, int, android.os.Bundle?);
     method public boolean requestPostMessageChannel(android.net.Uri);
     method public boolean setActionButton(android.graphics.Bitmap, String);
     method public boolean setSecondaryToolbarViews(android.widget.RemoteViews?, int[]?, android.app.PendingIntent?);
@@ -226,7 +223,6 @@
     method public boolean validateRelationship(@androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
   }
 
-
   public class CustomTabsSessionToken {
     method public static androidx.browser.customtabs.CustomTabsSessionToken createMockSessionTokenForTesting();
     method public androidx.browser.customtabs.CustomTabsCallback? getCallback();
@@ -234,13 +230,12 @@
     method public boolean isAssociatedWith(androidx.browser.customtabs.CustomTabsSession);
   }
 
-
   public class PostMessageService extends android.app.Service {
     ctor public PostMessageService();
     method public android.os.IBinder onBind(android.content.Intent?);
   }
 
-  public abstract class PostMessageServiceConnection implements androidx.browser.customtabs.PostMessageBackend android.content.ServiceConnection {
+  public abstract class PostMessageServiceConnection implements android.content.ServiceConnection {
     ctor public PostMessageServiceConnection(androidx.browser.customtabs.CustomTabsSessionToken);
     method public boolean bindSessionToPostMessageService(android.content.Context, String);
     method public final boolean notifyMessageChannelReady(android.os.Bundle?);
@@ -263,7 +258,6 @@
 
 package androidx.browser.trusted {
 
-
   public final class Token {
     method public static androidx.browser.trusted.Token? create(String, android.content.pm.PackageManager);
     method public static androidx.browser.trusted.Token deserialize(byte[]);
@@ -370,7 +364,7 @@
   }
 
   public final class ShareTarget {
-    ctor public ShareTarget(String, @androidx.browser.trusted.sharing.ShareTarget.RequestMethod String?, @androidx.browser.trusted.sharing.ShareTarget.EncodingType String?, androidx.browser.trusted.sharing.ShareTarget.Params);
+    ctor public ShareTarget(String, String?, String?, androidx.browser.trusted.sharing.ShareTarget.Params);
     method public static androidx.browser.trusted.sharing.ShareTarget? fromBundle(android.os.Bundle);
     method public android.os.Bundle toBundle();
     field public static final String ENCODING_TYPE_MULTIPART = "multipart/form-data";
@@ -382,12 +376,11 @@
     field public static final String METHOD_GET = "GET";
     field public static final String METHOD_POST = "POST";
     field public final String action;
-    field @androidx.browser.trusted.sharing.ShareTarget.EncodingType public final String? encodingType;
-    field @androidx.browser.trusted.sharing.ShareTarget.RequestMethod public final String? method;
+    field public final String? encodingType;
+    field public final String? method;
     field public final androidx.browser.trusted.sharing.ShareTarget.Params params;
   }
 
-
   public static final class ShareTarget.FileFormField {
     ctor public ShareTarget.FileFormField(String, java.util.List<java.lang.String!>);
     field public static final String KEY_ACCEPTED_TYPES = "androidx.browser.trusted.sharing.KEY_ACCEPTED_TYPES";
@@ -406,7 +399,6 @@
     field public final String? title;
   }
 
-
 }
 
 package androidx.browser.trusted.splashscreens {
diff --git a/browser/api/restricted_1.3.0-alpha01.txt b/browser/api/restricted_1.3.0-alpha01.txt
index f865d85..2dda625 100644
--- a/browser/api/restricted_1.3.0-alpha01.txt
+++ b/browser/api/restricted_1.3.0-alpha01.txt
@@ -60,7 +60,6 @@
     method @Deprecated public androidx.browser.browseractions.BrowserActionsIntent.Builder setUrlType(@androidx.browser.browseractions.BrowserActionsIntent.BrowserActionsUrlType int);
   }
 
-
 }
 
 package androidx.browser.customtabs {
@@ -107,7 +106,7 @@
   }
 
   public final class CustomTabsIntent {
-    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, @androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
+    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, int);
     method public static int getMaxToolbarItems();
     method public void launchUrl(android.content.Context, android.net.Uri);
     method public static android.content.Intent setAlwaysUseBrowserUI(android.content.Intent?);
@@ -158,8 +157,8 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent, boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setCloseButtonIcon(android.graphics.Bitmap);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int, androidx.browser.customtabs.CustomTabColorSchemeParams);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(int);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(int, androidx.browser.customtabs.CustomTabColorSchemeParams);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setExitAnimations(android.content.Context, @AnimRes int, @AnimRes int);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setInstantAppsEnabled(boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setNavigationBarColor(@ColorInt int);
@@ -171,7 +170,6 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setToolbarColor(@ColorInt int);
   }
 
-
   public abstract class CustomTabsService extends android.app.Service {
     ctor public CustomTabsService();
     method protected boolean cleanUpSession(androidx.browser.customtabs.CustomTabsSessionToken);
@@ -180,7 +178,7 @@
     method protected abstract boolean newSession(androidx.browser.customtabs.CustomTabsSessionToken);
     method public android.os.IBinder onBind(android.content.Intent?);
     method @androidx.browser.customtabs.CustomTabsService.Result protected abstract int postMessage(androidx.browser.customtabs.CustomTabsSessionToken, String, android.os.Bundle?);
-    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, int, android.os.Bundle?);
     method protected abstract boolean requestPostMessageChannel(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri);
     method protected abstract boolean updateVisuals(androidx.browser.customtabs.CustomTabsSessionToken, android.os.Bundle?);
     method protected abstract boolean validateRelationship(androidx.browser.customtabs.CustomTabsSessionToken, @androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
@@ -201,7 +199,6 @@
     field public static final String TRUSTED_WEB_ACTIVITY_CATEGORY = "androidx.browser.trusted.category.TrustedWebActivities";
   }
 
-
   @IntDef({androidx.browser.customtabs.CustomTabsService.RELATION_USE_AS_ORIGIN, androidx.browser.customtabs.CustomTabsService.RELATION_HANDLE_ALL_URLS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface CustomTabsService.Relation {
   }
 
@@ -218,7 +215,7 @@
     method @VisibleForTesting public static androidx.browser.customtabs.CustomTabsSession createMockSessionForTesting(android.content.ComponentName);
     method public boolean mayLaunchUrl(android.net.Uri, android.os.Bundle?, java.util.List<android.os.Bundle!>?);
     method @androidx.browser.customtabs.CustomTabsService.Result public int postMessage(String, android.os.Bundle?);
-    method public boolean receiveFile(android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method public boolean receiveFile(android.net.Uri, int, android.os.Bundle?);
     method public boolean requestPostMessageChannel(android.net.Uri);
     method public boolean setActionButton(android.graphics.Bitmap, String);
     method public boolean setSecondaryToolbarViews(android.widget.RemoteViews?, int[]?, android.app.PendingIntent?);
@@ -226,7 +223,6 @@
     method public boolean validateRelationship(@androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
   }
 
-
   public class CustomTabsSessionToken {
     method public static androidx.browser.customtabs.CustomTabsSessionToken createMockSessionTokenForTesting();
     method public androidx.browser.customtabs.CustomTabsCallback? getCallback();
@@ -234,13 +230,12 @@
     method public boolean isAssociatedWith(androidx.browser.customtabs.CustomTabsSession);
   }
 
-
   public class PostMessageService extends android.app.Service {
     ctor public PostMessageService();
     method public android.os.IBinder onBind(android.content.Intent?);
   }
 
-  public abstract class PostMessageServiceConnection implements androidx.browser.customtabs.PostMessageBackend android.content.ServiceConnection {
+  public abstract class PostMessageServiceConnection implements android.content.ServiceConnection {
     ctor public PostMessageServiceConnection(androidx.browser.customtabs.CustomTabsSessionToken);
     method public boolean bindSessionToPostMessageService(android.content.Context, String);
     method public final boolean notifyMessageChannelReady(android.os.Bundle?);
@@ -263,7 +258,6 @@
 
 package androidx.browser.trusted {
 
-
   public final class Token {
     method public static androidx.browser.trusted.Token? create(String, android.content.pm.PackageManager);
     method public static androidx.browser.trusted.Token deserialize(byte[]);
@@ -370,7 +364,7 @@
   }
 
   public final class ShareTarget {
-    ctor public ShareTarget(String, @androidx.browser.trusted.sharing.ShareTarget.RequestMethod String?, @androidx.browser.trusted.sharing.ShareTarget.EncodingType String?, androidx.browser.trusted.sharing.ShareTarget.Params);
+    ctor public ShareTarget(String, String?, String?, androidx.browser.trusted.sharing.ShareTarget.Params);
     method public static androidx.browser.trusted.sharing.ShareTarget? fromBundle(android.os.Bundle);
     method public android.os.Bundle toBundle();
     field public static final String ENCODING_TYPE_MULTIPART = "multipart/form-data";
@@ -382,12 +376,11 @@
     field public static final String METHOD_GET = "GET";
     field public static final String METHOD_POST = "POST";
     field public final String action;
-    field @androidx.browser.trusted.sharing.ShareTarget.EncodingType public final String? encodingType;
-    field @androidx.browser.trusted.sharing.ShareTarget.RequestMethod public final String? method;
+    field public final String? encodingType;
+    field public final String? method;
     field public final androidx.browser.trusted.sharing.ShareTarget.Params params;
   }
 
-
   public static final class ShareTarget.FileFormField {
     ctor public ShareTarget.FileFormField(String, java.util.List<java.lang.String!>);
     field public static final String KEY_ACCEPTED_TYPES = "androidx.browser.trusted.sharing.KEY_ACCEPTED_TYPES";
@@ -406,7 +399,6 @@
     field public final String? title;
   }
 
-
 }
 
 package androidx.browser.trusted.splashscreens {
diff --git a/browser/api/restricted_current.txt b/browser/api/restricted_current.txt
index f865d85..2dda625 100644
--- a/browser/api/restricted_current.txt
+++ b/browser/api/restricted_current.txt
@@ -60,7 +60,6 @@
     method @Deprecated public androidx.browser.browseractions.BrowserActionsIntent.Builder setUrlType(@androidx.browser.browseractions.BrowserActionsIntent.BrowserActionsUrlType int);
   }
 
-
 }
 
 package androidx.browser.customtabs {
@@ -107,7 +106,7 @@
   }
 
   public final class CustomTabsIntent {
-    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, @androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
+    method public static androidx.browser.customtabs.CustomTabColorSchemeParams getColorSchemeParams(android.content.Intent, int);
     method public static int getMaxToolbarItems();
     method public void launchUrl(android.content.Context, android.net.Uri);
     method public static android.content.Intent setAlwaysUseBrowserUI(android.content.Intent?);
@@ -158,8 +157,8 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent, boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setActionButton(android.graphics.Bitmap, String, android.app.PendingIntent);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setCloseButtonIcon(android.graphics.Bitmap);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int);
-    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(@androidx.browser.customtabs.CustomTabsIntent.ColorScheme int, androidx.browser.customtabs.CustomTabColorSchemeParams);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorScheme(int);
+    method public androidx.browser.customtabs.CustomTabsIntent.Builder setColorSchemeParams(int, androidx.browser.customtabs.CustomTabColorSchemeParams);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setExitAnimations(android.content.Context, @AnimRes int, @AnimRes int);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setInstantAppsEnabled(boolean);
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setNavigationBarColor(@ColorInt int);
@@ -171,7 +170,6 @@
     method public androidx.browser.customtabs.CustomTabsIntent.Builder setToolbarColor(@ColorInt int);
   }
 
-
   public abstract class CustomTabsService extends android.app.Service {
     ctor public CustomTabsService();
     method protected boolean cleanUpSession(androidx.browser.customtabs.CustomTabsSessionToken);
@@ -180,7 +178,7 @@
     method protected abstract boolean newSession(androidx.browser.customtabs.CustomTabsSessionToken);
     method public android.os.IBinder onBind(android.content.Intent?);
     method @androidx.browser.customtabs.CustomTabsService.Result protected abstract int postMessage(androidx.browser.customtabs.CustomTabsSessionToken, String, android.os.Bundle?);
-    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, int, android.os.Bundle?);
     method protected abstract boolean requestPostMessageChannel(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri);
     method protected abstract boolean updateVisuals(androidx.browser.customtabs.CustomTabsSessionToken, android.os.Bundle?);
     method protected abstract boolean validateRelationship(androidx.browser.customtabs.CustomTabsSessionToken, @androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
@@ -201,7 +199,6 @@
     field public static final String TRUSTED_WEB_ACTIVITY_CATEGORY = "androidx.browser.trusted.category.TrustedWebActivities";
   }
 
-
   @IntDef({androidx.browser.customtabs.CustomTabsService.RELATION_USE_AS_ORIGIN, androidx.browser.customtabs.CustomTabsService.RELATION_HANDLE_ALL_URLS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface CustomTabsService.Relation {
   }
 
@@ -218,7 +215,7 @@
     method @VisibleForTesting public static androidx.browser.customtabs.CustomTabsSession createMockSessionForTesting(android.content.ComponentName);
     method public boolean mayLaunchUrl(android.net.Uri, android.os.Bundle?, java.util.List<android.os.Bundle!>?);
     method @androidx.browser.customtabs.CustomTabsService.Result public int postMessage(String, android.os.Bundle?);
-    method public boolean receiveFile(android.net.Uri, @androidx.browser.customtabs.CustomTabsService.FilePurpose int, android.os.Bundle?);
+    method public boolean receiveFile(android.net.Uri, int, android.os.Bundle?);
     method public boolean requestPostMessageChannel(android.net.Uri);
     method public boolean setActionButton(android.graphics.Bitmap, String);
     method public boolean setSecondaryToolbarViews(android.widget.RemoteViews?, int[]?, android.app.PendingIntent?);
@@ -226,7 +223,6 @@
     method public boolean validateRelationship(@androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
   }
 
-
   public class CustomTabsSessionToken {
     method public static androidx.browser.customtabs.CustomTabsSessionToken createMockSessionTokenForTesting();
     method public androidx.browser.customtabs.CustomTabsCallback? getCallback();
@@ -234,13 +230,12 @@
     method public boolean isAssociatedWith(androidx.browser.customtabs.CustomTabsSession);
   }
 
-
   public class PostMessageService extends android.app.Service {
     ctor public PostMessageService();
     method public android.os.IBinder onBind(android.content.Intent?);
   }
 
-  public abstract class PostMessageServiceConnection implements androidx.browser.customtabs.PostMessageBackend android.content.ServiceConnection {
+  public abstract class PostMessageServiceConnection implements android.content.ServiceConnection {
     ctor public PostMessageServiceConnection(androidx.browser.customtabs.CustomTabsSessionToken);
     method public boolean bindSessionToPostMessageService(android.content.Context, String);
     method public final boolean notifyMessageChannelReady(android.os.Bundle?);
@@ -263,7 +258,6 @@
 
 package androidx.browser.trusted {
 
-
   public final class Token {
     method public static androidx.browser.trusted.Token? create(String, android.content.pm.PackageManager);
     method public static androidx.browser.trusted.Token deserialize(byte[]);
@@ -370,7 +364,7 @@
   }
 
   public final class ShareTarget {
-    ctor public ShareTarget(String, @androidx.browser.trusted.sharing.ShareTarget.RequestMethod String?, @androidx.browser.trusted.sharing.ShareTarget.EncodingType String?, androidx.browser.trusted.sharing.ShareTarget.Params);
+    ctor public ShareTarget(String, String?, String?, androidx.browser.trusted.sharing.ShareTarget.Params);
     method public static androidx.browser.trusted.sharing.ShareTarget? fromBundle(android.os.Bundle);
     method public android.os.Bundle toBundle();
     field public static final String ENCODING_TYPE_MULTIPART = "multipart/form-data";
@@ -382,12 +376,11 @@
     field public static final String METHOD_GET = "GET";
     field public static final String METHOD_POST = "POST";
     field public final String action;
-    field @androidx.browser.trusted.sharing.ShareTarget.EncodingType public final String? encodingType;
-    field @androidx.browser.trusted.sharing.ShareTarget.RequestMethod public final String? method;
+    field public final String? encodingType;
+    field public final String? method;
     field public final androidx.browser.trusted.sharing.ShareTarget.Params params;
   }
 
-
   public static final class ShareTarget.FileFormField {
     ctor public ShareTarget.FileFormField(String, java.util.List<java.lang.String!>);
     field public static final String KEY_ACCEPTED_TYPES = "androidx.browser.trusted.sharing.KEY_ACCEPTED_TYPES";
@@ -406,7 +399,6 @@
     field public final String? title;
   }
 
-
 }
 
 package androidx.browser.trusted.splashscreens {
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index 81f02c1..1a08e10 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -30,11 +30,6 @@
 apply from: "out.gradle"
 init.chooseOutDir()
 
-def runningInBuildServer = System.env.DIST_DIR != null
-if (runningInBuildServer) {
-    System.setProperty("kotlin.compiler.execution.strategy", "in-process")
-}
-
 ext.supportRootFolder = project.projectDir.getParentFile()
 apply from: 'repos.gradle'
 apply from: "build_dependencies.gradle"
diff --git a/buildSrc/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt b/buildSrc/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt
index f4052b7..303f0ff 100644
--- a/buildSrc/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt
@@ -27,8 +27,10 @@
 import org.gradle.api.plugins.JavaPluginConvention
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.api.tasks.bundling.Jar
+import org.gradle.kotlin.dsl.extra
 import org.gradle.kotlin.dsl.getPlugin
 import org.gradle.kotlin.dsl.named
+import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
 
 /**
  * Sets up a source jar task for an Android library project.
@@ -41,6 +43,26 @@
         }
         registerSourcesVariant(sourceJar)
     }
+    project.afterEvaluate {
+        // we can only tell if a project is multiplatform after it is configured
+        if (it.multiplatformExtension != null && it.extra.has("publish")) {
+            extension.defaultPublishVariant { variant ->
+                val kotlinExt = project.extensions.getByName("kotlin") as KotlinProjectExtension
+                val sourceJar =
+                    project.tasks.named("sourceJar${variant.name.capitalize()}", Jar::class.java)
+                // multiplatform projects use different source sets, so we need to modify the task
+                sourceJar.configure { sourceJarTask ->
+                    // use a whitelist of source sets, because that is the preferred policy
+                    sourceJarTask.from(kotlinExt.sourceSets.getByName("commonMain").kotlin.srcDirs)
+                    sourceJarTask.from(kotlinExt.sourceSets.getByName("androidMain").kotlin.srcDirs)
+                }
+            }
+            // Disable the builtin maven-publish for kotlin multiplatform, as it doesn't work
+            // and can't be feasibly modified. It may not be present in MPP samples.
+            project.tasks.findByName("publishKotlinMultiplatformPublicationToMavenRepository")
+                ?.enabled = false
+        }
+    }
 }
 
 /**
@@ -92,4 +114,4 @@
     if (javaComponent is AdhocComponentWithVariants) {
         javaComponent.addVariantsFromConfiguration(gradleVariant) { }
     }
-}
\ No newline at end of file
+}
diff --git a/buildSrc/src/main/kotlin/androidx/build/TaskUpToDateValidator.kt b/buildSrc/src/main/kotlin/androidx/build/TaskUpToDateValidator.kt
index 553d833..dbd1480 100644
--- a/buildSrc/src/main/kotlin/androidx/build/TaskUpToDateValidator.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/TaskUpToDateValidator.kt
@@ -46,6 +46,10 @@
     "distPublicDokkaDocs",
     "dokkaJavaPublicDocs",
     "dokkaKotlinPublicDocs",
+    "externalNativeBuildDebug",
+    "externalNativeBuildRelease",
+    "generateJsonModelDebug",
+    "generateJsonModelRelease",
     "generateMetadataFileForKotlinMultiplatformPublication",
     "generatePomFileForBenchmarkPluginMarkerMavenPublication",
     "generatePomFileForKotlinMultiplatformPublication",
diff --git a/buildSrc/src/main/kotlin/androidx/build/checkapi/CheckApi.kt b/buildSrc/src/main/kotlin/androidx/build/checkapi/CheckApi.kt
index 7ddd1e5..431c549 100644
--- a/buildSrc/src/main/kotlin/androidx/build/checkapi/CheckApi.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/checkapi/CheckApi.kt
@@ -97,26 +97,36 @@
  * @param version the API version, ex. 25.0.0-SNAPSHOT
  * @return the API file of this version
  */
-fun getApiFile(rootDir: File, version: Version): File {
-    if (!isValidApiVersion(version)) {
+fun getApiFile(rootDir: File, artifactVersion: Version): File {
+    val apiDir = File(rootDir, "api")
+    val version = getApiFileVersion(artifactVersion)
+    return File(apiDir, "${version.major}.${version.minor}.0${version.extra}.txt")
+}
+
+/**
+ * Sometimes the version of an API file might be not equal to the version of its artifact.
+ * This is because under certain circumstances, APIs are not allowed to change, and in those
+ * cases we may stop versioning the API.
+ * This functions returns the version of API file to use given the version of an artifact
+ */
+fun getApiFileVersion(version: Version): Version {
+    if (!isValidArtifactVersion(version)) {
         val suggestedVersion = Version("${version.major}.${version.minor}.${version.patch}-rc01")
         throw GradleException("Illegal version $version . It is not allowed to have a nonzero " +
                 "patch number and be alpha or beta at the same time.\n" +
                 "Did you mean $suggestedVersion?")
     }
-
     var extra = ""
     if (version.patch == 0 && version.extra != null) {
         extra = version.extra
     }
-    val apiDir = File(rootDir, "api")
-    return File(apiDir, "${version.major}.${version.minor}.0$extra.txt")
+    return Version(version.major, version.minor, 0, extra)
 }
 
 /**
- * Whether it is allowed to generate an API of the given version
+ * Whether it is allowed for an artifact to have this version
  */
-fun isValidApiVersion(version: Version): Boolean {
+fun isValidArtifactVersion(version: Version): Boolean {
     if (version.patch != 0 && (version.isAlpha() || version.isBeta() || version.isDev())) {
         return false
     }
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
index d329caa..8bea829 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
@@ -90,8 +90,9 @@
             args = args + listOf("--baseline", baselineFile.toString())
         }
         if (checkRestrictedAPIs) {
-            args = args + listOf("--show-annotation",
-                "androidx.annotation.RestrictTo",
+            args = args + listOf(
+                "--show-annotation", "androidx.annotation.RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP)",
+                "--show-annotation", "androidx.annotation.RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX)",
                 "--show-unannotated"
             )
         }
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt
index 9991331..0fc8906 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt
@@ -73,7 +73,6 @@
         project.generateApi(
             inputs,
             apiLocation.get(),
-            apiLocation.get().publicApiFile.parentFile,
             ApiLintMode.CheckBaseline(baselines.get().apiLintFile),
             generateRestrictedAPIs,
             workerExecutor
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
index 2440471..ea3728d 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
@@ -154,19 +154,18 @@
 fun Project.generateApi(
     files: JavaCompileInputs,
     apiLocation: ApiLocation,
-    tempDir: File,
     apiLintMode: ApiLintMode,
     includeRestrictedApis: Boolean,
     workerExecutor: WorkerExecutor
 ) {
     generateApi(files.bootClasspath, files.dependencyClasspath, files.sourcePaths.files,
-        apiLocation.publicApiFile, tempDir, GenerateApiMode.PublicApi, apiLintMode, workerExecutor)
+        apiLocation.publicApiFile, GenerateApiMode.PublicApi, apiLintMode, workerExecutor)
     generateApi(files.bootClasspath, files.dependencyClasspath, files.sourcePaths.files,
-        apiLocation.experimentalApiFile, tempDir, GenerateApiMode.ExperimentalApi, apiLintMode,
+        apiLocation.experimentalApiFile, GenerateApiMode.ExperimentalApi, apiLintMode,
         workerExecutor)
     if (includeRestrictedApis) {
         generateApi(files.bootClasspath, files.dependencyClasspath, files.sourcePaths.files,
-            apiLocation.restrictedApiFile, tempDir, GenerateApiMode.RestrictedApi, ApiLintMode.Skip,
+            apiLocation.restrictedApiFile, GenerateApiMode.RestrictedApi, ApiLintMode.Skip,
             workerExecutor)
     }
 }
@@ -177,17 +176,10 @@
     dependencyClasspath: FileCollection,
     sourcePaths: Collection<File>,
     outputFile: File,
-    tempDir: File,
     generateApiMode: GenerateApiMode,
     apiLintMode: ApiLintMode,
     workerExecutor: WorkerExecutor
 ) {
-    val tempOutputFile = if (generateApiMode is GenerateApiMode.RestrictedApi) {
-        File(tempDir, outputFile.name + ".tmp")
-    } else {
-        outputFile
-    }
-
     // generate public API txt
     val args = mutableListOf(
         "--classpath",
@@ -197,7 +189,7 @@
         sourcePaths.filter { it.exists() }.joinToString(File.pathSeparator),
 
         "--api",
-        tempOutputFile.toString(),
+        outputFile.toString(),
 
         "--format=v3",
         "--output-kotlin-nulls=yes"
@@ -210,7 +202,8 @@
         is GenerateApiMode.RestrictedApi -> {
             // Show restricted APIs despite @hide.
             args += listOf(
-                "--show-annotation", "androidx.annotation.RestrictTo",
+                "--show-annotation", "androidx.annotation.RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP)",
+                "--show-annotation", "androidx.annotation.RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX)",
                 "--show-unannotated"
             )
             args += HIDE_EXPERIMENTAL_ARGS
@@ -247,36 +240,5 @@
         }
     }
 
-    if (generateApiMode is GenerateApiMode.RestrictedApi) {
-        runMetalavaWithArgs(getMetalavaJar(), args, workerExecutor)
-        // TODO(119617147): when we no longer need to fix Metalava's output, remove this "await"
-        workerExecutor.await()
-        removeRestrictToLibraryLines(tempOutputFile, outputFile)
-    } else {
-        runMetalavaWithArgs(getMetalavaJar(), args, workerExecutor)
-    }
-}
-
-// until b/119617147 is done, remove lines containing "@RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY)"
-private fun removeRestrictToLibraryLines(inputFile: File, outputFile: File) {
-    val outputBuilder = StringBuilder()
-    val lines = inputFile.readLines()
-    var skipScopeUntil: String? = null
-    for (line in lines) {
-        val skip = line.contains("@RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY)")
-        if (skip && line.endsWith("{")) {
-            skipScopeUntil = line.commonPrefixWith("    ") + "}"
-        }
-        if (!skip && skipScopeUntil == null) {
-            outputBuilder.append(line)
-            outputBuilder.append("\n")
-        }
-        if (line == skipScopeUntil) {
-            skipScopeUntil = null
-        }
-    }
-    if (skipScopeUntil != null) {
-        throw GradleException("Skipping until `$skipScopeUntil`, but found EOF")
-    }
-    outputFile.writeText(outputBuilder.toString())
+    runMetalavaWithArgs(getMetalavaJar(), args, workerExecutor)
 }
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/RegenerateOldApisTask.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/RegenerateOldApisTask.kt
index b02956c..ac522d5 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/RegenerateOldApisTask.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/RegenerateOldApisTask.kt
@@ -18,8 +18,9 @@
 
 import androidx.build.SupportConfig
 import androidx.build.Version
+import androidx.build.checkapi.getApiFileVersion
 import androidx.build.checkapi.getApiLocation
-import androidx.build.checkapi.isValidApiVersion
+import androidx.build.checkapi.isValidArtifactVersion
 import androidx.build.java.JavaCompileInputs
 import org.gradle.api.DefaultTask
 import org.gradle.api.Project
@@ -44,36 +45,37 @@
         val projectPrebuiltsDir =
             File(internalPrebuiltsDir, groupId.replace(".", "/") + "/" + artifactId)
 
-        val versions = listVersions(projectPrebuiltsDir)
+        val artifactVersions = listVersions(projectPrebuiltsDir)
 
-        for (version in versions) {
-            if (version != project.version.toString()) {
-                regenerate(project.rootProject, groupId, artifactId, version)
+        var prevApiFileVersion = getApiFileVersion(project.version as Version)
+        for (artifactVersion in artifactVersions.reversed()) {
+            val apiFileVersion = getApiFileVersion(artifactVersion)
+            // If two artifacts correspond to the same API file, don't regenerate the
+            // same api file again
+            if (apiFileVersion != prevApiFileVersion) {
+                regenerate(project.rootProject, groupId, artifactId, artifactVersion)
+                prevApiFileVersion = apiFileVersion
             }
         }
     }
 
-    // Returns the artifact versions that appear to exist in <dir>
-    fun listVersions(dir: File): List<String> {
+    // Returns all (valid) artifact versions that appear to exist in <dir>
+    fun listVersions(dir: File): List<Version> {
         val pathNames: Array<String> = dir.list() ?: arrayOf()
         val files = pathNames.map({ name -> File(dir, name) })
         val subdirs = files.filter({ child -> child.isDirectory() })
-        val versions = subdirs.map({ child -> child.name })
-        return versions.sorted()
+        val versions = subdirs.map({ child -> Version(child.name) })
+        val validVersions = versions.filter({ v -> isValidArtifactVersion(v) })
+        return validVersions.sorted()
     }
 
     fun regenerate(
         runnerProject: Project,
         groupId: String,
         artifactId: String,
-        versionString: String
+        version: Version
     ) {
-        val mavenId = "$groupId:$artifactId:$versionString"
-        val version = Version(versionString)
-        if (!isValidApiVersion(version)) {
-            runnerProject.logger.info("Skipping illegal version $version from $mavenId")
-            return
-        }
+        val mavenId = "$groupId:$artifactId:$version"
         val inputs: JavaCompileInputs?
         try {
             inputs = getFiles(runnerProject, mavenId)
@@ -83,12 +85,11 @@
         }
 
         val outputApiLocation = project.getApiLocation(version)
-        val tempDir = File(project.buildDir, "api")
         if (outputApiLocation.publicApiFile.exists()) {
             project.logger.lifecycle("Regenerating $mavenId")
             val generateRestrictedAPIs = outputApiLocation.restrictedApiFile.exists()
             project.generateApi(
-                inputs, outputApiLocation, tempDir, ApiLintMode.Skip, generateRestrictedAPIs,
+                inputs, outputApiLocation, ApiLintMode.Skip, generateRestrictedAPIs,
                 workerExecutor)
         }
     }
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
index 77fe582..a5e1b5d 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
@@ -145,9 +145,9 @@
         )
         if (processRestrictedApis) {
             args += listOf(
-                "--show-unannotated",
-                "--show-annotation",
-                "androidx.annotation.RestrictTo"
+                "--show-annotation", "androidx.annotation.RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP)",
+                "--show-annotation", "androidx.annotation.RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX)",
+                "--show-unannotated"
             )
         }
         runWithArgs(args)
diff --git a/car/core/api/restricted_1.0.0-alpha8.txt b/car/core/api/restricted_1.0.0-alpha8.txt
index c63653f..0c03a60 100644
--- a/car/core/api/restricted_1.0.0-alpha8.txt
+++ b/car/core/api/restricted_1.0.0-alpha8.txt
@@ -383,7 +383,7 @@
   public final class CheckBoxListItem extends androidx.car.widget.CompoundButtonListItem<androidx.car.widget.CheckBoxListItem.ViewHolder> {
     ctor public CheckBoxListItem(android.content.Context);
     method public static androidx.car.widget.CheckBoxListItem.ViewHolder createViewHolder(android.view.View);
-    method @androidx.car.widget.ListItemAdapter.ListItemType public int getViewType();
+    method public int getViewType();
     method public boolean isCompoundButtonPositionEnd();
   }
 
@@ -467,7 +467,7 @@
 
   public class ListItemAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter<androidx.car.widget.ListItem.ViewHolder> implements androidx.car.widget.PagedListView.DividerVisibilityManager androidx.car.widget.PagedListView.ItemCap {
     ctor public ListItemAdapter(android.content.Context, androidx.car.widget.ListItemProvider);
-    ctor public ListItemAdapter(android.content.Context, androidx.car.widget.ListItemProvider, @androidx.car.widget.ListItemAdapter.ListBackgroundStyle int);
+    ctor public ListItemAdapter(android.content.Context, androidx.car.widget.ListItemProvider, int);
     method public android.content.Context getContext();
     method public int getItemCount();
     method public boolean getShowDivider(@IntRange(from=0) int);
@@ -490,8 +490,6 @@
     field @Deprecated public static final int SOLID = 0; // 0x0
   }
 
-
-
   public abstract class ListItemProvider<VH extends androidx.car.widget.ListItem.ViewHolder> {
     ctor public ListItemProvider();
     method public abstract androidx.car.widget.ListItem<VH!> get(int);
@@ -651,7 +649,7 @@
   public final class RadioButtonListItem extends androidx.car.widget.CompoundButtonListItem<androidx.car.widget.RadioButtonListItem.ViewHolder> {
     ctor public RadioButtonListItem(android.content.Context);
     method public static androidx.car.widget.RadioButtonListItem.ViewHolder createViewHolder(android.view.View);
-    method @androidx.car.widget.ListItemAdapter.ListItemType public int getViewType();
+    method public int getViewType();
     method public boolean isCompoundButtonPositionEnd();
   }
 
@@ -727,7 +725,7 @@
   public final class SwitchListItem extends androidx.car.widget.CompoundButtonListItem<androidx.car.widget.SwitchListItem.ViewHolder> {
     ctor public SwitchListItem(android.content.Context);
     method public static androidx.car.widget.SwitchListItem.ViewHolder createViewHolder(android.view.View);
-    method @androidx.car.widget.ListItemAdapter.ListItemType public int getViewType();
+    method public int getViewType();
     method public boolean isCompoundButtonPositionEnd();
     method @Deprecated public void setShowSwitchDivider(boolean);
     method @Deprecated public void setSwitchOnCheckedChangeListener(android.widget.CompoundButton.OnCheckedChangeListener?);
diff --git a/car/core/api/restricted_current.txt b/car/core/api/restricted_current.txt
index c63653f..0c03a60 100644
--- a/car/core/api/restricted_current.txt
+++ b/car/core/api/restricted_current.txt
@@ -383,7 +383,7 @@
   public final class CheckBoxListItem extends androidx.car.widget.CompoundButtonListItem<androidx.car.widget.CheckBoxListItem.ViewHolder> {
     ctor public CheckBoxListItem(android.content.Context);
     method public static androidx.car.widget.CheckBoxListItem.ViewHolder createViewHolder(android.view.View);
-    method @androidx.car.widget.ListItemAdapter.ListItemType public int getViewType();
+    method public int getViewType();
     method public boolean isCompoundButtonPositionEnd();
   }
 
@@ -467,7 +467,7 @@
 
   public class ListItemAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter<androidx.car.widget.ListItem.ViewHolder> implements androidx.car.widget.PagedListView.DividerVisibilityManager androidx.car.widget.PagedListView.ItemCap {
     ctor public ListItemAdapter(android.content.Context, androidx.car.widget.ListItemProvider);
-    ctor public ListItemAdapter(android.content.Context, androidx.car.widget.ListItemProvider, @androidx.car.widget.ListItemAdapter.ListBackgroundStyle int);
+    ctor public ListItemAdapter(android.content.Context, androidx.car.widget.ListItemProvider, int);
     method public android.content.Context getContext();
     method public int getItemCount();
     method public boolean getShowDivider(@IntRange(from=0) int);
@@ -490,8 +490,6 @@
     field @Deprecated public static final int SOLID = 0; // 0x0
   }
 
-
-
   public abstract class ListItemProvider<VH extends androidx.car.widget.ListItem.ViewHolder> {
     ctor public ListItemProvider();
     method public abstract androidx.car.widget.ListItem<VH!> get(int);
@@ -651,7 +649,7 @@
   public final class RadioButtonListItem extends androidx.car.widget.CompoundButtonListItem<androidx.car.widget.RadioButtonListItem.ViewHolder> {
     ctor public RadioButtonListItem(android.content.Context);
     method public static androidx.car.widget.RadioButtonListItem.ViewHolder createViewHolder(android.view.View);
-    method @androidx.car.widget.ListItemAdapter.ListItemType public int getViewType();
+    method public int getViewType();
     method public boolean isCompoundButtonPositionEnd();
   }
 
@@ -727,7 +725,7 @@
   public final class SwitchListItem extends androidx.car.widget.CompoundButtonListItem<androidx.car.widget.SwitchListItem.ViewHolder> {
     ctor public SwitchListItem(android.content.Context);
     method public static androidx.car.widget.SwitchListItem.ViewHolder createViewHolder(android.view.View);
-    method @androidx.car.widget.ListItemAdapter.ListItemType public int getViewType();
+    method public int getViewType();
     method public boolean isCompoundButtonPositionEnd();
     method @Deprecated public void setShowSwitchDivider(boolean);
     method @Deprecated public void setSwitchOnCheckedChangeListener(android.widget.CompoundButton.OnCheckedChangeListener?);
diff --git a/compose/compose-runtime/build.gradle b/compose/compose-runtime/build.gradle
index fa9d11f..2f0088f 100644
--- a/compose/compose-runtime/build.gradle
+++ b/compose/compose-runtime/build.gradle
@@ -65,24 +65,3 @@
     inceptionYear = "2019"
     description = "Contains support code for tree composition"
 }
-
-//TODO: figure out the trigger for this logic being needed and move it to AndroidX(UI)Plugin
-// or else decide we *should* be making jars and get other people to not break. b/142408067
-afterEvaluate {
-    configurations.archives.artifacts.each {
-        if (it.file.name.endsWith('jar') && !it.file.name.endsWith('sources.jar')) {
-            configurations.archives.artifacts.remove(it)
-        }
-    }
-}
-
-//TODO: decide whether and how to move this to AndroidX(UI)Plugin
-task sourcesJar(type: Jar) {
-    classifier = 'sources'
-    from kotlin.sourceSets.commonMain.kotlin
-    from kotlin.sourceSets.androidMain.kotlin
-}
-
-artifacts {
-    archives sourcesJar
-}
diff --git a/coordinatorlayout/api/restricted_1.1.0-beta01.txt b/coordinatorlayout/api/restricted_1.1.0-beta01.txt
index b8d1ba0..e6e4e26 100644
--- a/coordinatorlayout/api/restricted_1.1.0-beta01.txt
+++ b/coordinatorlayout/api/restricted_1.1.0-beta01.txt
@@ -101,7 +101,5 @@
     field public static final android.os.Parcelable.Creator<androidx.coordinatorlayout.widget.CoordinatorLayout.SavedState!>! CREATOR;
   }
 
-
-
 }
 
diff --git a/coordinatorlayout/api/restricted_1.1.0-rc01.txt b/coordinatorlayout/api/restricted_1.1.0-rc01.txt
index b8d1ba0..e6e4e26 100644
--- a/coordinatorlayout/api/restricted_1.1.0-rc01.txt
+++ b/coordinatorlayout/api/restricted_1.1.0-rc01.txt
@@ -101,7 +101,5 @@
     field public static final android.os.Parcelable.Creator<androidx.coordinatorlayout.widget.CoordinatorLayout.SavedState!>! CREATOR;
   }
 
-
-
 }
 
diff --git a/coordinatorlayout/api/restricted_1.2.0-alpha01.txt b/coordinatorlayout/api/restricted_1.2.0-alpha01.txt
index b8d1ba0..e6e4e26 100644
--- a/coordinatorlayout/api/restricted_1.2.0-alpha01.txt
+++ b/coordinatorlayout/api/restricted_1.2.0-alpha01.txt
@@ -101,7 +101,5 @@
     field public static final android.os.Parcelable.Creator<androidx.coordinatorlayout.widget.CoordinatorLayout.SavedState!>! CREATOR;
   }
 
-
-
 }
 
diff --git a/coordinatorlayout/api/restricted_current.txt b/coordinatorlayout/api/restricted_current.txt
index b8d1ba0..e6e4e26 100644
--- a/coordinatorlayout/api/restricted_current.txt
+++ b/coordinatorlayout/api/restricted_current.txt
@@ -101,7 +101,5 @@
     field public static final android.os.Parcelable.Creator<androidx.coordinatorlayout.widget.CoordinatorLayout.SavedState!>! CREATOR;
   }
 
-
-
 }
 
diff --git a/core/core/api/restricted_1.1.0-alpha05.txt b/core/core/api/restricted_1.1.0-alpha05.txt
index 5abde11..7cd3262 100644
--- a/core/core/api/restricted_1.1.0-alpha05.txt
+++ b/core/core/api/restricted_1.1.0-alpha05.txt
@@ -954,12 +954,10 @@
   }
 
   public final class PermissionInfoCompat {
-    method @androidx.core.content.pm.PermissionInfoCompat.Protection public static int getProtection(android.content.pm.PermissionInfo);
-    method @androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags public static int getProtectionFlags(android.content.pm.PermissionInfo);
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
   }
 
-
-
   public class ShortcutInfoCompat {
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
@@ -1274,7 +1272,7 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
     method @IdRes public int getResId();
     method public String getResPackage();
-    method @androidx.core.graphics.drawable.IconCompat.IconType public int getType();
+    method public int getType();
     method public android.net.Uri getUri();
     method public android.graphics.drawable.Drawable! loadDrawable(android.content.Context!);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
@@ -1286,7 +1284,6 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mType;
   }
 
-
   public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
     method public void draw(android.graphics.Canvas);
     method public final android.graphics.Bitmap? getBitmap();
diff --git a/core/core/api/restricted_1.1.0-beta01.txt b/core/core/api/restricted_1.1.0-beta01.txt
index 71f8c77..71e92a4 100644
--- a/core/core/api/restricted_1.1.0-beta01.txt
+++ b/core/core/api/restricted_1.1.0-beta01.txt
@@ -961,12 +961,10 @@
   }
 
   public final class PermissionInfoCompat {
-    method @androidx.core.content.pm.PermissionInfoCompat.Protection public static int getProtection(android.content.pm.PermissionInfo);
-    method @androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags public static int getProtectionFlags(android.content.pm.PermissionInfo);
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
   }
 
-
-
   public class ShortcutInfoCompat {
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
@@ -1281,7 +1279,7 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
     method @IdRes public int getResId();
     method public String getResPackage();
-    method @androidx.core.graphics.drawable.IconCompat.IconType public int getType();
+    method public int getType();
     method public android.net.Uri getUri();
     method public android.graphics.drawable.Drawable! loadDrawable(android.content.Context!);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
@@ -1293,7 +1291,6 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mType;
   }
 
-
   public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
     method public void draw(android.graphics.Canvas);
     method public final android.graphics.Bitmap? getBitmap();
diff --git a/core/core/api/restricted_1.1.0-rc01.txt b/core/core/api/restricted_1.1.0-rc01.txt
index 01c8881..13ec2cc 100644
--- a/core/core/api/restricted_1.1.0-rc01.txt
+++ b/core/core/api/restricted_1.1.0-rc01.txt
@@ -961,12 +961,10 @@
   }
 
   public final class PermissionInfoCompat {
-    method @androidx.core.content.pm.PermissionInfoCompat.Protection public static int getProtection(android.content.pm.PermissionInfo);
-    method @androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags public static int getProtectionFlags(android.content.pm.PermissionInfo);
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
   }
 
-
-
   public class ShortcutInfoCompat {
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
@@ -1007,7 +1005,6 @@
     method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
-
   public class ShortcutManagerCompat {
     method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
@@ -1282,7 +1279,7 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
     method @IdRes public int getResId();
     method public String getResPackage();
-    method @androidx.core.graphics.drawable.IconCompat.IconType public int getType();
+    method public int getType();
     method public android.net.Uri getUri();
     method public android.graphics.drawable.Drawable! loadDrawable(android.content.Context!);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
@@ -1294,7 +1291,6 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mType;
   }
 
-
   public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
     method public void draw(android.graphics.Canvas);
     method public final android.graphics.Bitmap? getBitmap();
diff --git a/core/core/api/restricted_1.2.0-alpha02.txt b/core/core/api/restricted_1.2.0-alpha02.txt
index 97b1259..2919e29 100644
--- a/core/core/api/restricted_1.2.0-alpha02.txt
+++ b/core/core/api/restricted_1.2.0-alpha02.txt
@@ -1001,12 +1001,10 @@
   }
 
   public final class PermissionInfoCompat {
-    method @androidx.core.content.pm.PermissionInfoCompat.Protection public static int getProtection(android.content.pm.PermissionInfo);
-    method @androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags public static int getProtectionFlags(android.content.pm.PermissionInfo);
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
   }
 
-
-
   public class ShortcutInfoCompat {
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
@@ -1047,7 +1045,6 @@
     method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
-
   public class ShortcutManagerCompat {
     method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
@@ -1376,7 +1373,7 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
     method @IdRes public int getResId();
     method public String getResPackage();
-    method @androidx.core.graphics.drawable.IconCompat.IconType public int getType();
+    method public int getType();
     method public android.net.Uri getUri();
     method public android.graphics.drawable.Drawable! loadDrawable(android.content.Context!);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
@@ -1388,7 +1385,6 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mType;
   }
 
-
   public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
     method public void draw(android.graphics.Canvas);
     method public final android.graphics.Bitmap? getBitmap();
diff --git a/core/core/api/restricted_1.2.0-alpha03.txt b/core/core/api/restricted_1.2.0-alpha03.txt
index 0cd8629..265366c 100644
--- a/core/core/api/restricted_1.2.0-alpha03.txt
+++ b/core/core/api/restricted_1.2.0-alpha03.txt
@@ -1002,12 +1002,10 @@
   }
 
   public final class PermissionInfoCompat {
-    method @androidx.core.content.pm.PermissionInfoCompat.Protection public static int getProtection(android.content.pm.PermissionInfo);
-    method @androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags public static int getProtectionFlags(android.content.pm.PermissionInfo);
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
   }
 
-
-
   public class ShortcutInfoCompat {
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
@@ -1048,7 +1046,6 @@
     method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
-
   public class ShortcutManagerCompat {
     method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
@@ -1380,7 +1377,7 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
     method @IdRes public int getResId();
     method public String getResPackage();
-    method @androidx.core.graphics.drawable.IconCompat.IconType public int getType();
+    method public int getType();
     method public android.net.Uri getUri();
     method public android.graphics.drawable.Drawable! loadDrawable(android.content.Context!);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
@@ -1392,7 +1389,6 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mType;
   }
 
-
   public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
     method public void draw(android.graphics.Canvas);
     method public final android.graphics.Bitmap? getBitmap();
diff --git a/core/core/api/restricted_1.2.0-alpha04.txt b/core/core/api/restricted_1.2.0-alpha04.txt
index 3fd3a18..cee3d02 100644
--- a/core/core/api/restricted_1.2.0-alpha04.txt
+++ b/core/core/api/restricted_1.2.0-alpha04.txt
@@ -1002,12 +1002,10 @@
   }
 
   public final class PermissionInfoCompat {
-    method @androidx.core.content.pm.PermissionInfoCompat.Protection public static int getProtection(android.content.pm.PermissionInfo);
-    method @androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags public static int getProtectionFlags(android.content.pm.PermissionInfo);
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
   }
 
-
-
   public class ShortcutInfoCompat {
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
@@ -1051,7 +1049,6 @@
     method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
-
   public class ShortcutManagerCompat {
     method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
@@ -1383,7 +1380,7 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
     method @IdRes public int getResId();
     method public String getResPackage();
-    method @androidx.core.graphics.drawable.IconCompat.IconType public int getType();
+    method public int getType();
     method public android.net.Uri getUri();
     method public android.graphics.drawable.Drawable! loadDrawable(android.content.Context!);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
@@ -1395,7 +1392,6 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mType;
   }
 
-
   public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
     method public void draw(android.graphics.Canvas);
     method public final android.graphics.Bitmap? getBitmap();
diff --git a/core/core/api/restricted_1.2.0-beta01.txt b/core/core/api/restricted_1.2.0-beta01.txt
index 9c2617d..7f416dac 100644
--- a/core/core/api/restricted_1.2.0-beta01.txt
+++ b/core/core/api/restricted_1.2.0-beta01.txt
@@ -1007,12 +1007,10 @@
   }
 
   public final class PermissionInfoCompat {
-    method @androidx.core.content.pm.PermissionInfoCompat.Protection public static int getProtection(android.content.pm.PermissionInfo);
-    method @androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags public static int getProtectionFlags(android.content.pm.PermissionInfo);
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
   }
 
-
-
   public class ShortcutInfoCompat {
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
@@ -1056,7 +1054,6 @@
     method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
-
   public class ShortcutManagerCompat {
     method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
@@ -1389,7 +1386,7 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
     method @IdRes public int getResId();
     method public String getResPackage();
-    method @androidx.core.graphics.drawable.IconCompat.IconType public int getType();
+    method public int getType();
     method public android.net.Uri getUri();
     method public android.graphics.drawable.Drawable! loadDrawable(android.content.Context!);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
@@ -1401,7 +1398,6 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mType;
   }
 
-
   public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
     method public void draw(android.graphics.Canvas);
     method public final android.graphics.Bitmap? getBitmap();
diff --git a/core/core/api/restricted_1.2.0-beta02.txt b/core/core/api/restricted_1.2.0-beta02.txt
index fdc2d53..a4025e1 100644
--- a/core/core/api/restricted_1.2.0-beta02.txt
+++ b/core/core/api/restricted_1.2.0-beta02.txt
@@ -1007,12 +1007,10 @@
   }
 
   public final class PermissionInfoCompat {
-    method @androidx.core.content.pm.PermissionInfoCompat.Protection public static int getProtection(android.content.pm.PermissionInfo);
-    method @androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags public static int getProtectionFlags(android.content.pm.PermissionInfo);
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
   }
 
-
-
   public class ShortcutInfoCompat {
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
@@ -1056,7 +1054,6 @@
     method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
-
   public class ShortcutManagerCompat {
     method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
@@ -1389,7 +1386,7 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
     method @IdRes public int getResId();
     method public String getResPackage();
-    method @androidx.core.graphics.drawable.IconCompat.IconType public int getType();
+    method public int getType();
     method public android.net.Uri getUri();
     method public android.graphics.drawable.Drawable! loadDrawable(android.content.Context!);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
@@ -1401,7 +1398,6 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mType;
   }
 
-
   public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
     method public void draw(android.graphics.Canvas);
     method public final android.graphics.Bitmap? getBitmap();
diff --git a/core/core/api/restricted_1.3.0-alpha01.ignore b/core/core/api/restricted_1.3.0-alpha01.ignore
new file mode 100644
index 0000000..392c5a0
--- /dev/null
+++ b/core/core/api/restricted_1.3.0-alpha01.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.core.util.LogWriter:
+    Removed class androidx.core.util.LogWriter
diff --git a/core/core/api/restricted_1.3.0-alpha01.txt b/core/core/api/restricted_1.3.0-alpha01.txt
index 3413875..9628396 100644
--- a/core/core/api/restricted_1.3.0-alpha01.txt
+++ b/core/core/api/restricted_1.3.0-alpha01.txt
@@ -1013,12 +1013,10 @@
   }
 
   public final class PermissionInfoCompat {
-    method @androidx.core.content.pm.PermissionInfoCompat.Protection public static int getProtection(android.content.pm.PermissionInfo);
-    method @androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags public static int getProtectionFlags(android.content.pm.PermissionInfo);
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
   }
 
-
-
   public class ShortcutInfoCompat {
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
@@ -1062,7 +1060,6 @@
     method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
-
   public class ShortcutManagerCompat {
     method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
@@ -1398,7 +1395,7 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
     method @IdRes public int getResId();
     method public String getResPackage();
-    method @androidx.core.graphics.drawable.IconCompat.IconType public int getType();
+    method public int getType();
     method public android.net.Uri getUri();
     method public android.graphics.drawable.Drawable? loadDrawable(android.content.Context);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
@@ -1417,7 +1414,6 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mType;
   }
 
-
   public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
     method public void draw(android.graphics.Canvas);
     method public final android.graphics.Bitmap? getBitmap();
@@ -1936,13 +1932,6 @@
     method public static void buildShortClassTag(Object!, StringBuilder!);
   }
 
-  @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.TESTS) public class LogWriter extends java.io.Writer {
-    ctor @Deprecated public LogWriter(String!);
-    method @Deprecated public void close();
-    method @Deprecated public void flush();
-    method @Deprecated public void write(char[]!, int, int);
-  }
-
   public class ObjectsCompat {
     method public static boolean equals(Object?, Object?);
     method public static int hash(java.lang.Object!...);
diff --git a/core/core/api/restricted_current.txt b/core/core/api/restricted_current.txt
index 3413875..9628396 100644
--- a/core/core/api/restricted_current.txt
+++ b/core/core/api/restricted_current.txt
@@ -1013,12 +1013,10 @@
   }
 
   public final class PermissionInfoCompat {
-    method @androidx.core.content.pm.PermissionInfoCompat.Protection public static int getProtection(android.content.pm.PermissionInfo);
-    method @androidx.core.content.pm.PermissionInfoCompat.ProtectionFlags public static int getProtectionFlags(android.content.pm.PermissionInfo);
+    method public static int getProtection(android.content.pm.PermissionInfo);
+    method public static int getProtectionFlags(android.content.pm.PermissionInfo);
   }
 
-
-
   public class ShortcutInfoCompat {
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
@@ -1062,7 +1060,6 @@
     method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
   }
 
-
   public class ShortcutManagerCompat {
     method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
@@ -1398,7 +1395,7 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
     method @IdRes public int getResId();
     method public String getResPackage();
-    method @androidx.core.graphics.drawable.IconCompat.IconType public int getType();
+    method public int getType();
     method public android.net.Uri getUri();
     method public android.graphics.drawable.Drawable? loadDrawable(android.content.Context);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
@@ -1417,7 +1414,6 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mType;
   }
 
-
   public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
     method public void draw(android.graphics.Canvas);
     method public final android.graphics.Bitmap? getBitmap();
@@ -1936,13 +1932,6 @@
     method public static void buildShortClassTag(Object!, StringBuilder!);
   }
 
-  @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.TESTS) public class LogWriter extends java.io.Writer {
-    ctor @Deprecated public LogWriter(String!);
-    method @Deprecated public void close();
-    method @Deprecated public void flush();
-    method @Deprecated public void write(char[]!, int, int);
-  }
-
   public class ObjectsCompat {
     method public static boolean equals(Object?, Object?);
     method public static int hash(java.lang.Object!...);
diff --git a/core/core/src/androidTest/java/androidx/core/graphics/drawable/IconCompatTest.java b/core/core/src/androidTest/java/androidx/core/graphics/drawable/IconCompatTest.java
index 6612ffa..9b09124 100644
--- a/core/core/src/androidTest/java/androidx/core/graphics/drawable/IconCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/graphics/drawable/IconCompatTest.java
@@ -172,15 +172,32 @@
     }
 
     @Test
-    public void testCreateWithContentUriForAdaptiveBitmap() throws IOException {
+    public void testFileIconCompatAdaptiveBitmap() throws IOException {
         File file = new File(mContext.getFilesDir(), "testimage.jpg");
+        Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
+        bitmap.eraseColor(Color.GRAY);
         try {
-            writeSampleImage(file);
+            writeSampleImage(bitmap, file);
             assertTrue(file.exists());
             final IconCompat compat =
                     IconCompat.createWithAdaptiveBitmapContentUri(Uri.fromFile(file));
             verifyIconCompatValidity(compat);
-            verifyAdaptiveIconCompat(compat, Color.argb(255, 4, 5, 10));
+        } finally {
+            file.delete();
+        }
+    }
+
+    @Test
+    public void testCreateWithContentUriForAdaptiveBitmap() throws IOException {
+        File file = new File(mContext.getFilesDir(), "testimage.jpg");
+        Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
+        bitmap.eraseColor(Color.GRAY);
+        try {
+            writeSampleImage(bitmap, file);
+            assertTrue(file.exists());
+            final IconCompat compat =
+                    IconCompat.createWithAdaptiveBitmapContentUri(Uri.fromFile(file));
+            verifyAdaptiveIconCompat(compat, Color.GRAY);
         } finally {
             file.delete();
         }
@@ -344,6 +361,13 @@
         verifyClippedCircle(result, Color.RED, 100);
     }
 
+    private void writeSampleImage(Bitmap bitmap, File imageFile) throws IOException {
+        try (OutputStream target = new FileOutputStream(imageFile)) {
+            bitmap.compress(Bitmap.CompressFormat.PNG, 0, target);
+            target.flush();
+        }
+    }
+
     private void writeSampleImage(File imagefile) throws IOException {
         try (InputStream source = mContext.getResources().openRawResource(R.drawable.testimage);
              OutputStream target = new FileOutputStream(imagefile)) {
diff --git a/exifinterface/api/restricted_1.0.0.txt b/exifinterface/api/restricted_1.0.0.txt
index 8fd35d4..94bd5c6 100644
--- a/exifinterface/api/restricted_1.0.0.txt
+++ b/exifinterface/api/restricted_1.0.0.txt
@@ -329,6 +329,5 @@
     field public static final short Y_CB_CR_POSITIONING_CO_SITED = 2; // 0x2
   }
 
-
 }
 
diff --git a/exifinterface/api/restricted_1.1.0-alpha01.txt b/exifinterface/api/restricted_1.1.0-alpha01.txt
index bd41d78..75772d7 100644
--- a/exifinterface/api/restricted_1.1.0-alpha01.txt
+++ b/exifinterface/api/restricted_1.1.0-alpha01.txt
@@ -332,6 +332,5 @@
     field public static final short Y_CB_CR_POSITIONING_CO_SITED = 2; // 0x2
   }
 
-
 }
 
diff --git a/exifinterface/api/restricted_1.1.0-beta01.txt b/exifinterface/api/restricted_1.1.0-beta01.txt
index ce8a598..87a26c7 100644
--- a/exifinterface/api/restricted_1.1.0-beta01.txt
+++ b/exifinterface/api/restricted_1.1.0-beta01.txt
@@ -336,6 +336,5 @@
     field public static final short Y_CB_CR_POSITIONING_CO_SITED = 2; // 0x2
   }
 
-
 }
 
diff --git a/exifinterface/api/restricted_1.2.0-alpha01.txt b/exifinterface/api/restricted_1.2.0-alpha01.txt
index 5aacfe0..4bbc2ba 100644
--- a/exifinterface/api/restricted_1.2.0-alpha01.txt
+++ b/exifinterface/api/restricted_1.2.0-alpha01.txt
@@ -6,7 +6,7 @@
     ctor public ExifInterface(String) throws java.io.IOException;
     ctor public ExifInterface(java.io.FileDescriptor) throws java.io.IOException;
     ctor public ExifInterface(java.io.InputStream) throws java.io.IOException;
-    ctor public ExifInterface(java.io.InputStream, @androidx.exifinterface.media.ExifInterface.ExifStreamType int) throws java.io.IOException;
+    ctor public ExifInterface(java.io.InputStream, int) throws java.io.IOException;
     method public void flipHorizontally();
     method public void flipVertically();
     method public double getAltitude(double);
@@ -343,7 +343,5 @@
     field public static final short Y_CB_CR_POSITIONING_CO_SITED = 2; // 0x2
   }
 
-
-
 }
 
diff --git a/exifinterface/api/restricted_1.2.0-beta01.txt b/exifinterface/api/restricted_1.2.0-beta01.txt
index 5aacfe0..4bbc2ba 100644
--- a/exifinterface/api/restricted_1.2.0-beta01.txt
+++ b/exifinterface/api/restricted_1.2.0-beta01.txt
@@ -6,7 +6,7 @@
     ctor public ExifInterface(String) throws java.io.IOException;
     ctor public ExifInterface(java.io.FileDescriptor) throws java.io.IOException;
     ctor public ExifInterface(java.io.InputStream) throws java.io.IOException;
-    ctor public ExifInterface(java.io.InputStream, @androidx.exifinterface.media.ExifInterface.ExifStreamType int) throws java.io.IOException;
+    ctor public ExifInterface(java.io.InputStream, int) throws java.io.IOException;
     method public void flipHorizontally();
     method public void flipVertically();
     method public double getAltitude(double);
@@ -343,7 +343,5 @@
     field public static final short Y_CB_CR_POSITIONING_CO_SITED = 2; // 0x2
   }
 
-
-
 }
 
diff --git a/exifinterface/api/restricted_current.txt b/exifinterface/api/restricted_current.txt
index 5aacfe0..4bbc2ba 100644
--- a/exifinterface/api/restricted_current.txt
+++ b/exifinterface/api/restricted_current.txt
@@ -6,7 +6,7 @@
     ctor public ExifInterface(String) throws java.io.IOException;
     ctor public ExifInterface(java.io.FileDescriptor) throws java.io.IOException;
     ctor public ExifInterface(java.io.InputStream) throws java.io.IOException;
-    ctor public ExifInterface(java.io.InputStream, @androidx.exifinterface.media.ExifInterface.ExifStreamType int) throws java.io.IOException;
+    ctor public ExifInterface(java.io.InputStream, int) throws java.io.IOException;
     method public void flipHorizontally();
     method public void flipVertically();
     method public double getAltitude(double);
@@ -343,7 +343,5 @@
     field public static final short Y_CB_CR_POSITIONING_CO_SITED = 2; // 0x2
   }
 
-
-
 }
 
diff --git a/fragment/fragment-testing/api/restricted_1.1.0-alpha05.txt b/fragment/fragment-testing/api/restricted_1.1.0-alpha05.txt
index 2ad7664..e233be9 100644
--- a/fragment/fragment-testing/api/restricted_1.1.0-alpha05.txt
+++ b/fragment/fragment-testing/api/restricted_1.1.0-alpha05.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.1.0-alpha06.txt b/fragment/fragment-testing/api/restricted_1.1.0-alpha06.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.1.0-alpha06.txt
+++ b/fragment/fragment-testing/api/restricted_1.1.0-alpha06.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.1.0-alpha07.txt b/fragment/fragment-testing/api/restricted_1.1.0-alpha07.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.1.0-alpha07.txt
+++ b/fragment/fragment-testing/api/restricted_1.1.0-alpha07.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.1.0-alpha08.txt b/fragment/fragment-testing/api/restricted_1.1.0-alpha08.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.1.0-alpha08.txt
+++ b/fragment/fragment-testing/api/restricted_1.1.0-alpha08.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.1.0-alpha09.txt b/fragment/fragment-testing/api/restricted_1.1.0-alpha09.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.1.0-alpha09.txt
+++ b/fragment/fragment-testing/api/restricted_1.1.0-alpha09.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.1.0-beta01.txt b/fragment/fragment-testing/api/restricted_1.1.0-beta01.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.1.0-beta01.txt
+++ b/fragment/fragment-testing/api/restricted_1.1.0-beta01.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.1.0-rc01.txt b/fragment/fragment-testing/api/restricted_1.1.0-rc01.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.1.0-rc01.txt
+++ b/fragment/fragment-testing/api/restricted_1.1.0-rc01.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.2.0-alpha01.txt b/fragment/fragment-testing/api/restricted_1.2.0-alpha01.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.2.0-alpha01.txt
+++ b/fragment/fragment-testing/api/restricted_1.2.0-alpha01.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.2.0-alpha02.txt b/fragment/fragment-testing/api/restricted_1.2.0-alpha02.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.2.0-alpha02.txt
+++ b/fragment/fragment-testing/api/restricted_1.2.0-alpha02.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.2.0-alpha03.txt b/fragment/fragment-testing/api/restricted_1.2.0-alpha03.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.2.0-alpha03.txt
+++ b/fragment/fragment-testing/api/restricted_1.2.0-alpha03.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.2.0-alpha04.txt b/fragment/fragment-testing/api/restricted_1.2.0-alpha04.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.2.0-alpha04.txt
+++ b/fragment/fragment-testing/api/restricted_1.2.0-alpha04.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.2.0-beta01.txt b/fragment/fragment-testing/api/restricted_1.2.0-beta01.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.2.0-beta01.txt
+++ b/fragment/fragment-testing/api/restricted_1.2.0-beta01.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.2.0-rc01.txt b/fragment/fragment-testing/api/restricted_1.2.0-rc01.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.2.0-rc01.txt
+++ b/fragment/fragment-testing/api/restricted_1.2.0-rc01.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_1.3.0-alpha01.txt b/fragment/fragment-testing/api/restricted_1.3.0-alpha01.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_1.3.0-alpha01.txt
+++ b/fragment/fragment-testing/api/restricted_1.3.0-alpha01.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment-testing/api/restricted_current.txt b/fragment/fragment-testing/api/restricted_current.txt
index 7042bb9..873d5c8 100644
--- a/fragment/fragment-testing/api/restricted_current.txt
+++ b/fragment/fragment-testing/api/restricted_current.txt
@@ -15,12 +15,10 @@
     method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
   }
 
-
   public static interface FragmentScenario.FragmentAction<F extends androidx.fragment.app.Fragment> {
     method public void perform(F);
   }
 
-
   public final class FragmentScenarioKt {
     ctor public FragmentScenarioKt();
     method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F> launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
diff --git a/fragment/fragment/api/restricted_1.2.0-alpha01.txt b/fragment/fragment/api/restricted_1.2.0-alpha01.txt
index 40508a9..4685ff5 100644
--- a/fragment/fragment/api/restricted_1.2.0-alpha01.txt
+++ b/fragment/fragment/api/restricted_1.2.0-alpha01.txt
@@ -192,7 +192,6 @@
     method public abstract boolean onHasView();
   }
 
-
   public class FragmentController {
     method public void attachHost(androidx.fragment.app.Fragment?);
     method public static androidx.fragment.app.FragmentController createController(androidx.fragment.app.FragmentHostCallback<?>);
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentStoreTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentStoreTest.kt
index 9f84e27..4ce1227 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentStoreTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentStoreTest.kt
@@ -64,7 +64,7 @@
     @Test
     fun testMakeActiveRetained() {
         val nonConfig = FragmentManagerViewModel(true)
-        fragmentStore.setNonConfig(nonConfig)
+        fragmentStore.nonConfig = nonConfig
         emptyFragment.retainInstance = true
         fragmentStore.makeActive(emptyStateManager)
         assertThat(fragmentStore.activeFragments)
@@ -117,7 +117,7 @@
     @Test
     fun testMakeInactiveBurpRetained() {
         val nonConfig = FragmentManagerViewModel(true)
-        fragmentStore.setNonConfig(nonConfig)
+        fragmentStore.nonConfig = nonConfig
         emptyFragment.retainInstance = true
         fragmentStore.makeActive(emptyStateManager)
         assertThat(fragmentStore.activeFragments)
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/SaveStateFragmentTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/SaveStateFragmentTest.kt
index 867ada4..28cad09 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/SaveStateFragmentTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/SaveStateFragmentTest.kt
@@ -328,6 +328,9 @@
         assertWithMessage("Retained Fragment added after saved state should be destroyed")
             .that(retainedOnStartFragment.calledOnDestroy)
             .isTrue()
+        assertWithMessage("Retained Fragment should be removed from non config")
+            .that(fm2.fragmentStore.nonConfig.retainedFragments)
+            .containsExactly(retainedFragment)
 
         fc2.dispatchActivityCreated()
         fc2.noteStateNotSaved()
diff --git a/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManagerViewModel.java b/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManagerViewModel.java
index 2f24e8b..9dd9478 100644
--- a/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManagerViewModel.java
+++ b/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManagerViewModel.java
@@ -131,7 +131,7 @@
 
     @NonNull
     Collection<Fragment> getRetainedFragments() {
-        return mRetainedFragments.values();
+        return new ArrayList<>(mRetainedFragments.values());
     }
 
     boolean shouldDestroy(@NonNull Fragment fragment) {
diff --git a/fragment/fragment/src/main/java/androidx/fragment/app/FragmentStore.java b/fragment/fragment/src/main/java/androidx/fragment/app/FragmentStore.java
index 8699091..1d991fe 100644
--- a/fragment/fragment/src/main/java/androidx/fragment/app/FragmentStore.java
+++ b/fragment/fragment/src/main/java/androidx/fragment/app/FragmentStore.java
@@ -44,6 +44,10 @@
         mNonConfig = nonConfig;
     }
 
+    FragmentManagerViewModel getNonConfig() {
+        return mNonConfig;
+    }
+
     void resetActiveFragments() {
         mActive.clear();
     }
@@ -121,6 +125,10 @@
     void makeInactive(@NonNull FragmentStateManager newlyInactive) {
         Fragment f = newlyInactive.getFragment();
 
+        if (f.mRetainInstance) {
+            mNonConfig.removeRetainedFragment(f);
+        }
+
         // Don't remove yet. That happens in burpActive(). This prevents
         // concurrent modification while iterating over mActive
         FragmentStateManager removedStateManager = mActive.put(f.mWho, null);
@@ -149,10 +157,6 @@
             // even after the Fragment is removed.
             f.mTarget = findActiveFragment(f.mTargetWho);
         }
-
-        if (f.mRetainInstance) {
-            mNonConfig.removeRetainedFragment(f);
-        }
     }
 
     /**
diff --git a/leanback/api/restricted_1.1.0-alpha02.txt b/leanback/api/restricted_1.1.0-alpha02.txt
index c9f9d59..b6c5ae0 100644
--- a/leanback/api/restricted_1.1.0-alpha02.txt
+++ b/leanback/api/restricted_1.1.0-alpha02.txt
@@ -763,7 +763,6 @@
     field @Deprecated public static final int BG_NONE = 0; // 0x0
   }
 
-
   @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();
@@ -807,7 +806,6 @@
     field public static final int BG_NONE = 0; // 0x0
   }
 
-
   public class PlaybackSupportFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
     ctor public PlaybackSupportFragmentGlueHost(androidx.leanback.app.PlaybackSupportFragment!);
     method public void fadeOut();
@@ -1489,7 +1487,6 @@
     ctor public SlideNoPropagation(android.content.Context!, android.util.AttributeSet!);
   }
 
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class TransitionHelper {
     method public static void addSharedElement(android.app.FragmentTransaction!, android.view.View!, String!);
     method public static void addTarget(Object!, android.view.View!);
@@ -1559,7 +1556,6 @@
 
 package androidx.leanback.util {
 
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class StateMachine {
     ctor public StateMachine();
     method public void addState(androidx.leanback.util.StateMachine.State!);
@@ -1987,7 +1983,6 @@
     method public androidx.leanback.widget.Parallax.IntProperty! getOverviewRowTop();
   }
 
-
   public abstract class DiffCallback<Value> {
     ctor public DiffCallback();
     method public abstract boolean areContentsTheSame(Value, Value);
@@ -3523,7 +3518,6 @@
     method public void setNumColumns(int);
   }
 
-
   public interface ViewHolderTask {
     method public void run(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
   }
diff --git a/leanback/api/restricted_1.1.0-alpha03.txt b/leanback/api/restricted_1.1.0-alpha03.txt
index 0a70514..d8b7c2a 100644
--- a/leanback/api/restricted_1.1.0-alpha03.txt
+++ b/leanback/api/restricted_1.1.0-alpha03.txt
@@ -763,7 +763,6 @@
     field @Deprecated public static final int BG_NONE = 0; // 0x0
   }
 
-
   @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();
@@ -807,7 +806,6 @@
     field public static final int BG_NONE = 0; // 0x0
   }
 
-
   public class PlaybackSupportFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
     ctor public PlaybackSupportFragmentGlueHost(androidx.leanback.app.PlaybackSupportFragment!);
     method public void fadeOut();
@@ -1489,7 +1487,6 @@
     ctor public SlideNoPropagation(android.content.Context!, android.util.AttributeSet!);
   }
 
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class TransitionHelper {
     method public static void addSharedElement(android.app.FragmentTransaction!, android.view.View!, String!);
     method public static void addTarget(Object!, android.view.View!);
@@ -1559,7 +1556,6 @@
 
 package androidx.leanback.util {
 
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class StateMachine {
     ctor public StateMachine();
     method public void addState(androidx.leanback.util.StateMachine.State!);
@@ -2004,7 +2000,6 @@
     method public androidx.leanback.widget.Parallax.IntProperty! getOverviewRowTop();
   }
 
-
   public abstract class DiffCallback<Value> {
     ctor public DiffCallback();
     method public abstract boolean areContentsTheSame(Value, Value);
@@ -3540,7 +3535,6 @@
     method public void setNumColumns(int);
   }
 
-
   public interface ViewHolderTask {
     method public void run(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
   }
diff --git a/leanback/api/restricted_current.txt b/leanback/api/restricted_current.txt
index 0a70514..d8b7c2a 100644
--- a/leanback/api/restricted_current.txt
+++ b/leanback/api/restricted_current.txt
@@ -763,7 +763,6 @@
     field @Deprecated public static final int BG_NONE = 0; // 0x0
   }
 
-
   @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();
@@ -807,7 +806,6 @@
     field public static final int BG_NONE = 0; // 0x0
   }
 
-
   public class PlaybackSupportFragmentGlueHost extends androidx.leanback.media.PlaybackGlueHost implements androidx.leanback.widget.PlaybackSeekUi {
     ctor public PlaybackSupportFragmentGlueHost(androidx.leanback.app.PlaybackSupportFragment!);
     method public void fadeOut();
@@ -1489,7 +1487,6 @@
     ctor public SlideNoPropagation(android.content.Context!, android.util.AttributeSet!);
   }
 
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class TransitionHelper {
     method public static void addSharedElement(android.app.FragmentTransaction!, android.view.View!, String!);
     method public static void addTarget(Object!, android.view.View!);
@@ -1559,7 +1556,6 @@
 
 package androidx.leanback.util {
 
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class StateMachine {
     ctor public StateMachine();
     method public void addState(androidx.leanback.util.StateMachine.State!);
@@ -2004,7 +2000,6 @@
     method public androidx.leanback.widget.Parallax.IntProperty! getOverviewRowTop();
   }
 
-
   public abstract class DiffCallback<Value> {
     ctor public DiffCallback();
     method public abstract boolean areContentsTheSame(Value, Value);
@@ -3540,7 +3535,6 @@
     method public void setNumColumns(int);
   }
 
-
   public interface ViewHolderTask {
     method public void run(androidx.recyclerview.widget.RecyclerView.ViewHolder!);
   }
diff --git a/lifecycle/lifecycle-common/api/restricted_2.0.0.txt b/lifecycle/lifecycle-common/api/restricted_2.0.0.txt
index ae8da88..52fdef1 100644
--- a/lifecycle/lifecycle-common/api/restricted_2.0.0.txt
+++ b/lifecycle/lifecycle-common/api/restricted_2.0.0.txt
@@ -1,7 +1,7 @@
 // Signature format: 3.0
 package androidx.lifecycle {
 
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class CompositeGeneratedAdaptersObserver implements androidx.lifecycle.GenericLifecycleObserver {
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class CompositeGeneratedAdaptersObserver implements androidx.lifecycle.LifecycleObserver {
     method public void onStateChanged(androidx.lifecycle.LifecycleOwner!, androidx.lifecycle.Lifecycle.Event!);
   }
 
@@ -9,7 +9,6 @@
     method public void callMethods(androidx.lifecycle.LifecycleOwner!, androidx.lifecycle.Lifecycle.Event!, boolean, androidx.lifecycle.MethodCallsLogger!);
   }
 
-
   public abstract class Lifecycle {
     ctor public Lifecycle();
     method @MainThread public abstract void addObserver(androidx.lifecycle.LifecycleObserver);
@@ -56,7 +55,7 @@
     method public abstract androidx.lifecycle.Lifecycle.Event! value();
   }
 
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class SingleGeneratedAdapterObserver implements androidx.lifecycle.GenericLifecycleObserver {
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class SingleGeneratedAdapterObserver implements androidx.lifecycle.LifecycleObserver {
     method public void onStateChanged(androidx.lifecycle.LifecycleOwner!, androidx.lifecycle.Lifecycle.Event!);
   }
 
diff --git a/media/api/restricted_1.1.0-rc01.txt b/media/api/restricted_1.1.0-rc01.txt
index 8871252..9e0ec31 100644
--- a/media/api/restricted_1.1.0-rc01.txt
+++ b/media/api/restricted_1.1.0-rc01.txt
@@ -426,7 +426,6 @@
     field public static final int UNKNOWN_ID = -1; // 0xffffffff
   }
 
-
   @IntDef(flag=true, value={android.support.v4.media.session.MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS, android.support.v4.media.session.MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS, android.support.v4.media.session.MediaSessionCompat.FLAG_HANDLES_QUEUE_COMMANDS}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MediaSessionCompat.SessionFlags {
   }
 
@@ -707,7 +706,6 @@
     method public static boolean hasDuplicatedItems(android.os.Bundle!, android.os.Bundle!);
   }
 
-
   public abstract class MediaBrowserServiceCompat extends android.app.Service {
     ctor public MediaBrowserServiceCompat();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void attachToBaseContext(android.content.Context!);
diff --git a/media/api/restricted_1.2.0-alpha01.txt b/media/api/restricted_1.2.0-alpha01.txt
index 9c1f0db..a799d29 100644
--- a/media/api/restricted_1.2.0-alpha01.txt
+++ b/media/api/restricted_1.2.0-alpha01.txt
@@ -189,7 +189,7 @@
     method public boolean isThumbUp();
     method public static android.support.v4.media.RatingCompat! newHeartRating(boolean);
     method public static android.support.v4.media.RatingCompat! newPercentageRating(float);
-    method public static android.support.v4.media.RatingCompat! newStarRating(@android.support.v4.media.RatingCompat.StarStyle int, float);
+    method public static android.support.v4.media.RatingCompat! newStarRating(int, float);
     method public static android.support.v4.media.RatingCompat! newThumbRating(boolean);
     method public static android.support.v4.media.RatingCompat! newUnratedRating(@android.support.v4.media.RatingCompat.Style int);
     method public void writeToParcel(android.os.Parcel!, int);
@@ -203,7 +203,6 @@
     field public static final int RATING_THUMB_UP_DOWN = 2; // 0x2
   }
 
-
   @IntDef({android.support.v4.media.RatingCompat.RATING_NONE, android.support.v4.media.RatingCompat.RATING_HEART, android.support.v4.media.RatingCompat.RATING_THUMB_UP_DOWN, android.support.v4.media.RatingCompat.RATING_3_STARS, android.support.v4.media.RatingCompat.RATING_4_STARS, android.support.v4.media.RatingCompat.RATING_5_STARS, android.support.v4.media.RatingCompat.RATING_PERCENTAGE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RatingCompat.Style {
   }
 
@@ -442,7 +441,7 @@
     method public Object! getPlaybackState();
     method public long getPosition();
     method @android.support.v4.media.session.PlaybackStateCompat.State public int getState();
-    method public static int toKeyCode(@android.support.v4.media.session.PlaybackStateCompat.MediaKeyAction long);
+    method public static int toKeyCode(long);
     method public void writeToParcel(android.os.Parcel!, int);
     field public static final long ACTION_FAST_FORWARD = 64L; // 0x40L
     field public static final long ACTION_PAUSE = 2L; // 0x2L
@@ -540,7 +539,6 @@
     method public android.support.v4.media.session.PlaybackStateCompat.CustomAction.Builder! setExtras(android.os.Bundle!);
   }
 
-
   @IntDef({android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_INVALID, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_NONE, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_ONE, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_ALL, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_GROUP}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PlaybackStateCompat.RepeatMode {
   }
 
@@ -558,7 +556,7 @@
     method public int getContentType();
     method public int getFlags();
     method public int getLegacyStreamType();
-    method @androidx.media.AudioAttributesCompat.AttributeUsage public int getUsage();
+    method public int getUsage();
     method public int getVolumeControlStream();
     method public Object? unwrap();
     method public static androidx.media.AudioAttributesCompat? wrap(Object);
@@ -587,21 +585,16 @@
     field public static final int USAGE_VOICE_COMMUNICATION_SIGNALLING = 3; // 0x3
   }
 
-
-
   public static class AudioAttributesCompat.Builder {
     ctor public AudioAttributesCompat.Builder();
     ctor public AudioAttributesCompat.Builder(androidx.media.AudioAttributesCompat!);
     method public androidx.media.AudioAttributesCompat! build();
-    method public androidx.media.AudioAttributesCompat.Builder! setContentType(@androidx.media.AudioAttributesCompat.AttributeContentType int);
+    method public androidx.media.AudioAttributesCompat.Builder! setContentType(int);
     method public androidx.media.AudioAttributesCompat.Builder! setFlags(int);
     method public androidx.media.AudioAttributesCompat.Builder! setLegacyStreamType(int);
-    method public androidx.media.AudioAttributesCompat.Builder! setUsage(@androidx.media.AudioAttributesCompat.AttributeUsage int);
+    method public androidx.media.AudioAttributesCompat.Builder! setUsage(int);
   }
 
-
-
-
   public class AudioFocusRequestCompat {
     method public androidx.media.AudioAttributesCompat getAudioAttributesCompat();
     method public android.os.Handler getFocusChangeHandler();
@@ -630,8 +623,6 @@
     field public static final int AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK = 3; // 0x3
   }
 
-
-
   public abstract class MediaBrowserServiceCompat extends android.app.Service {
     ctor public MediaBrowserServiceCompat();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void attachToBaseContext(android.content.Context!);
@@ -733,8 +724,8 @@
 
   public class MediaButtonReceiver extends android.content.BroadcastReceiver {
     ctor public MediaButtonReceiver();
-    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, @android.support.v4.media.session.PlaybackStateCompat.MediaKeyAction long);
-    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, android.content.ComponentName!, @android.support.v4.media.session.PlaybackStateCompat.MediaKeyAction long);
+    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, long);
+    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, android.content.ComponentName!, long);
     method public static android.view.KeyEvent! handleIntent(android.support.v4.media.session.MediaSessionCompat!, android.content.Intent!);
     method public void onReceive(android.content.Context!, android.content.Intent!);
   }
diff --git a/media/api/restricted_1.2.0-alpha02.txt b/media/api/restricted_1.2.0-alpha02.txt
index 9c1f0db..a799d29 100644
--- a/media/api/restricted_1.2.0-alpha02.txt
+++ b/media/api/restricted_1.2.0-alpha02.txt
@@ -189,7 +189,7 @@
     method public boolean isThumbUp();
     method public static android.support.v4.media.RatingCompat! newHeartRating(boolean);
     method public static android.support.v4.media.RatingCompat! newPercentageRating(float);
-    method public static android.support.v4.media.RatingCompat! newStarRating(@android.support.v4.media.RatingCompat.StarStyle int, float);
+    method public static android.support.v4.media.RatingCompat! newStarRating(int, float);
     method public static android.support.v4.media.RatingCompat! newThumbRating(boolean);
     method public static android.support.v4.media.RatingCompat! newUnratedRating(@android.support.v4.media.RatingCompat.Style int);
     method public void writeToParcel(android.os.Parcel!, int);
@@ -203,7 +203,6 @@
     field public static final int RATING_THUMB_UP_DOWN = 2; // 0x2
   }
 
-
   @IntDef({android.support.v4.media.RatingCompat.RATING_NONE, android.support.v4.media.RatingCompat.RATING_HEART, android.support.v4.media.RatingCompat.RATING_THUMB_UP_DOWN, android.support.v4.media.RatingCompat.RATING_3_STARS, android.support.v4.media.RatingCompat.RATING_4_STARS, android.support.v4.media.RatingCompat.RATING_5_STARS, android.support.v4.media.RatingCompat.RATING_PERCENTAGE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RatingCompat.Style {
   }
 
@@ -442,7 +441,7 @@
     method public Object! getPlaybackState();
     method public long getPosition();
     method @android.support.v4.media.session.PlaybackStateCompat.State public int getState();
-    method public static int toKeyCode(@android.support.v4.media.session.PlaybackStateCompat.MediaKeyAction long);
+    method public static int toKeyCode(long);
     method public void writeToParcel(android.os.Parcel!, int);
     field public static final long ACTION_FAST_FORWARD = 64L; // 0x40L
     field public static final long ACTION_PAUSE = 2L; // 0x2L
@@ -540,7 +539,6 @@
     method public android.support.v4.media.session.PlaybackStateCompat.CustomAction.Builder! setExtras(android.os.Bundle!);
   }
 
-
   @IntDef({android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_INVALID, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_NONE, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_ONE, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_ALL, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_GROUP}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PlaybackStateCompat.RepeatMode {
   }
 
@@ -558,7 +556,7 @@
     method public int getContentType();
     method public int getFlags();
     method public int getLegacyStreamType();
-    method @androidx.media.AudioAttributesCompat.AttributeUsage public int getUsage();
+    method public int getUsage();
     method public int getVolumeControlStream();
     method public Object? unwrap();
     method public static androidx.media.AudioAttributesCompat? wrap(Object);
@@ -587,21 +585,16 @@
     field public static final int USAGE_VOICE_COMMUNICATION_SIGNALLING = 3; // 0x3
   }
 
-
-
   public static class AudioAttributesCompat.Builder {
     ctor public AudioAttributesCompat.Builder();
     ctor public AudioAttributesCompat.Builder(androidx.media.AudioAttributesCompat!);
     method public androidx.media.AudioAttributesCompat! build();
-    method public androidx.media.AudioAttributesCompat.Builder! setContentType(@androidx.media.AudioAttributesCompat.AttributeContentType int);
+    method public androidx.media.AudioAttributesCompat.Builder! setContentType(int);
     method public androidx.media.AudioAttributesCompat.Builder! setFlags(int);
     method public androidx.media.AudioAttributesCompat.Builder! setLegacyStreamType(int);
-    method public androidx.media.AudioAttributesCompat.Builder! setUsage(@androidx.media.AudioAttributesCompat.AttributeUsage int);
+    method public androidx.media.AudioAttributesCompat.Builder! setUsage(int);
   }
 
-
-
-
   public class AudioFocusRequestCompat {
     method public androidx.media.AudioAttributesCompat getAudioAttributesCompat();
     method public android.os.Handler getFocusChangeHandler();
@@ -630,8 +623,6 @@
     field public static final int AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK = 3; // 0x3
   }
 
-
-
   public abstract class MediaBrowserServiceCompat extends android.app.Service {
     ctor public MediaBrowserServiceCompat();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void attachToBaseContext(android.content.Context!);
@@ -733,8 +724,8 @@
 
   public class MediaButtonReceiver extends android.content.BroadcastReceiver {
     ctor public MediaButtonReceiver();
-    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, @android.support.v4.media.session.PlaybackStateCompat.MediaKeyAction long);
-    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, android.content.ComponentName!, @android.support.v4.media.session.PlaybackStateCompat.MediaKeyAction long);
+    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, long);
+    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, android.content.ComponentName!, long);
     method public static android.view.KeyEvent! handleIntent(android.support.v4.media.session.MediaSessionCompat!, android.content.Intent!);
     method public void onReceive(android.content.Context!, android.content.Intent!);
   }
diff --git a/media/api/restricted_current.txt b/media/api/restricted_current.txt
index 9c1f0db..a799d29 100644
--- a/media/api/restricted_current.txt
+++ b/media/api/restricted_current.txt
@@ -189,7 +189,7 @@
     method public boolean isThumbUp();
     method public static android.support.v4.media.RatingCompat! newHeartRating(boolean);
     method public static android.support.v4.media.RatingCompat! newPercentageRating(float);
-    method public static android.support.v4.media.RatingCompat! newStarRating(@android.support.v4.media.RatingCompat.StarStyle int, float);
+    method public static android.support.v4.media.RatingCompat! newStarRating(int, float);
     method public static android.support.v4.media.RatingCompat! newThumbRating(boolean);
     method public static android.support.v4.media.RatingCompat! newUnratedRating(@android.support.v4.media.RatingCompat.Style int);
     method public void writeToParcel(android.os.Parcel!, int);
@@ -203,7 +203,6 @@
     field public static final int RATING_THUMB_UP_DOWN = 2; // 0x2
   }
 
-
   @IntDef({android.support.v4.media.RatingCompat.RATING_NONE, android.support.v4.media.RatingCompat.RATING_HEART, android.support.v4.media.RatingCompat.RATING_THUMB_UP_DOWN, android.support.v4.media.RatingCompat.RATING_3_STARS, android.support.v4.media.RatingCompat.RATING_4_STARS, android.support.v4.media.RatingCompat.RATING_5_STARS, android.support.v4.media.RatingCompat.RATING_PERCENTAGE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RatingCompat.Style {
   }
 
@@ -442,7 +441,7 @@
     method public Object! getPlaybackState();
     method public long getPosition();
     method @android.support.v4.media.session.PlaybackStateCompat.State public int getState();
-    method public static int toKeyCode(@android.support.v4.media.session.PlaybackStateCompat.MediaKeyAction long);
+    method public static int toKeyCode(long);
     method public void writeToParcel(android.os.Parcel!, int);
     field public static final long ACTION_FAST_FORWARD = 64L; // 0x40L
     field public static final long ACTION_PAUSE = 2L; // 0x2L
@@ -540,7 +539,6 @@
     method public android.support.v4.media.session.PlaybackStateCompat.CustomAction.Builder! setExtras(android.os.Bundle!);
   }
 
-
   @IntDef({android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_INVALID, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_NONE, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_ONE, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_ALL, android.support.v4.media.session.PlaybackStateCompat.REPEAT_MODE_GROUP}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PlaybackStateCompat.RepeatMode {
   }
 
@@ -558,7 +556,7 @@
     method public int getContentType();
     method public int getFlags();
     method public int getLegacyStreamType();
-    method @androidx.media.AudioAttributesCompat.AttributeUsage public int getUsage();
+    method public int getUsage();
     method public int getVolumeControlStream();
     method public Object? unwrap();
     method public static androidx.media.AudioAttributesCompat? wrap(Object);
@@ -587,21 +585,16 @@
     field public static final int USAGE_VOICE_COMMUNICATION_SIGNALLING = 3; // 0x3
   }
 
-
-
   public static class AudioAttributesCompat.Builder {
     ctor public AudioAttributesCompat.Builder();
     ctor public AudioAttributesCompat.Builder(androidx.media.AudioAttributesCompat!);
     method public androidx.media.AudioAttributesCompat! build();
-    method public androidx.media.AudioAttributesCompat.Builder! setContentType(@androidx.media.AudioAttributesCompat.AttributeContentType int);
+    method public androidx.media.AudioAttributesCompat.Builder! setContentType(int);
     method public androidx.media.AudioAttributesCompat.Builder! setFlags(int);
     method public androidx.media.AudioAttributesCompat.Builder! setLegacyStreamType(int);
-    method public androidx.media.AudioAttributesCompat.Builder! setUsage(@androidx.media.AudioAttributesCompat.AttributeUsage int);
+    method public androidx.media.AudioAttributesCompat.Builder! setUsage(int);
   }
 
-
-
-
   public class AudioFocusRequestCompat {
     method public androidx.media.AudioAttributesCompat getAudioAttributesCompat();
     method public android.os.Handler getFocusChangeHandler();
@@ -630,8 +623,6 @@
     field public static final int AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK = 3; // 0x3
   }
 
-
-
   public abstract class MediaBrowserServiceCompat extends android.app.Service {
     ctor public MediaBrowserServiceCompat();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void attachToBaseContext(android.content.Context!);
@@ -733,8 +724,8 @@
 
   public class MediaButtonReceiver extends android.content.BroadcastReceiver {
     ctor public MediaButtonReceiver();
-    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, @android.support.v4.media.session.PlaybackStateCompat.MediaKeyAction long);
-    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, android.content.ComponentName!, @android.support.v4.media.session.PlaybackStateCompat.MediaKeyAction long);
+    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, long);
+    method public static android.app.PendingIntent! buildMediaButtonPendingIntent(android.content.Context!, android.content.ComponentName!, long);
     method public static android.view.KeyEvent! handleIntent(android.support.v4.media.session.MediaSessionCompat!, android.content.Intent!);
     method public void onReceive(android.content.Context!, android.content.Intent!);
   }
diff --git a/media/version-compat-tests/current/client/src/androidTest/java/android/support/mediacompat/client/MediaControllerCompatCallbackTest.java b/media/version-compat-tests/current/client/src/androidTest/java/android/support/mediacompat/client/MediaControllerCompatCallbackTest.java
index d1d7209..ec09a80 100644
--- a/media/version-compat-tests/current/client/src/androidTest/java/android/support/mediacompat/client/MediaControllerCompatCallbackTest.java
+++ b/media/version-compat-tests/current/client/src/androidTest/java/android/support/mediacompat/client/MediaControllerCompatCallbackTest.java
@@ -69,6 +69,7 @@
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.media.AudioManager;
+import android.media.session.MediaSession;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
@@ -665,6 +666,37 @@
 
     @Test
     @SmallTest
+    @SdkSuppress(minSdkVersion = 21)
+    public void testOnSessionReadyCalled_fwkMediaSession() throws Exception {
+        mController = null;
+        final MediaSession session = new MediaSession(getInstrumentation().getTargetContext(),
+                "TestFwkSession");
+        final SessionReadyCallback callback = new SessionReadyCallback();
+        synchronized (callback.mWaitLock) {
+            getInstrumentation().runOnMainSync(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        // No extra binder exists in API 19. (i.e. session is always ready.)
+                        // onSessionReady() should be posted by registerCallback().
+                        MediaSession.Token fwkToken = session.getSessionToken();
+                        mController = new MediaControllerCompat(
+                                getInstrumentation().getTargetContext(),
+                                MediaSessionCompat.Token.fromToken(fwkToken));
+                        mController.registerCallback(callback, new Handler());
+                    } catch (Exception e) {
+                        fail();
+                    }
+                }
+            });
+            callback.mWaitLock.wait(TIME_OUT_MS);
+            assertFalse(mController.isSessionReady());
+            assertFalse(callback.mOnSessionReadyCalled);
+        }
+    }
+
+    @Test
+    @SmallTest
     public void testReceivingParcelables() throws Exception {
         Bundle arguments = new Bundle();
         arguments.putString("event", TEST_SESSION_EVENT);
diff --git a/media2/common/api/restricted_1.1.0-alpha01.txt b/media2/common/api/restricted_1.1.0-alpha01.txt
index e5d7d40..d8ee5c7d 100644
--- a/media2/common/api/restricted_1.1.0-alpha01.txt
+++ b/media2/common/api/restricted_1.1.0-alpha01.txt
@@ -79,15 +79,15 @@
 
   public final class MediaMetadata extends androidx.versionedparcelable.CustomVersionedParcelable {
     method public boolean containsKey(String);
-    method public android.graphics.Bitmap? getBitmap(@androidx.media2.common.MediaMetadata.BitmapKey String);
+    method public android.graphics.Bitmap? getBitmap(String);
     method public android.os.Bundle? getExtras();
-    method public float getFloat(@androidx.media2.common.MediaMetadata.FloatKey String);
-    method public long getLong(@androidx.media2.common.MediaMetadata.LongKey String);
+    method public float getFloat(String);
+    method public long getLong(String);
     method public String? getMediaId();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public Object? getObject(String);
-    method public androidx.media2.common.Rating? getRating(@androidx.media2.common.MediaMetadata.RatingKey String);
-    method public String? getString(@androidx.media2.common.MediaMetadata.TextKey String);
-    method public CharSequence? getText(@androidx.media2.common.MediaMetadata.TextKey String);
+    method public androidx.media2.common.Rating? getRating(String);
+    method public String? getString(String);
+    method public CharSequence? getText(String);
     method public java.util.Set<java.lang.String!> keySet();
     method public int size();
     field public static final long BROWSABLE_TYPE_ALBUMS = 2L; // 0x2L
@@ -136,25 +136,19 @@
     field public static final long STATUS_NOT_DOWNLOADED = 0L; // 0x0L
   }
 
-
   public static final class MediaMetadata.Builder {
     ctor public MediaMetadata.Builder();
     ctor public MediaMetadata.Builder(androidx.media2.common.MediaMetadata);
     method public androidx.media2.common.MediaMetadata build();
-    method public androidx.media2.common.MediaMetadata.Builder putBitmap(@androidx.media2.common.MediaMetadata.BitmapKey String, android.graphics.Bitmap?);
-    method public androidx.media2.common.MediaMetadata.Builder putFloat(@androidx.media2.common.MediaMetadata.LongKey String, float);
-    method public androidx.media2.common.MediaMetadata.Builder putLong(@androidx.media2.common.MediaMetadata.LongKey String, long);
-    method public androidx.media2.common.MediaMetadata.Builder putRating(@androidx.media2.common.MediaMetadata.RatingKey String, androidx.media2.common.Rating?);
-    method public androidx.media2.common.MediaMetadata.Builder putString(@androidx.media2.common.MediaMetadata.TextKey String, String?);
-    method public androidx.media2.common.MediaMetadata.Builder putText(@androidx.media2.common.MediaMetadata.TextKey String, CharSequence?);
+    method public androidx.media2.common.MediaMetadata.Builder putBitmap(String, android.graphics.Bitmap?);
+    method public androidx.media2.common.MediaMetadata.Builder putFloat(String, float);
+    method public androidx.media2.common.MediaMetadata.Builder putLong(String, long);
+    method public androidx.media2.common.MediaMetadata.Builder putRating(String, androidx.media2.common.Rating?);
+    method public androidx.media2.common.MediaMetadata.Builder putString(String, String?);
+    method public androidx.media2.common.MediaMetadata.Builder putText(String, CharSequence?);
     method public androidx.media2.common.MediaMetadata.Builder setExtras(android.os.Bundle?);
   }
 
-
-
-
-
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class MediaParcelUtils {
     method public static <T extends androidx.versionedparcelable.VersionedParcelable> T? fromParcelable(androidx.versionedparcelable.ParcelImpl);
     method public static <T extends androidx.versionedparcelable.VersionedParcelable> java.util.List<T!> fromParcelableList(java.util.List<androidx.versionedparcelable.ParcelImpl!>);
@@ -267,10 +261,9 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> createFuture(int);
     method public long getCompletionTime();
     method public androidx.media2.common.MediaItem? getMediaItem();
-    method @androidx.media2.common.SessionPlayer.PlayerResult.ResultCode public int getResultCode();
+    method public int getResultCode();
   }
 
-
   @IntDef({androidx.media2.common.SessionPlayer.PLAYER_STATE_IDLE, androidx.media2.common.SessionPlayer.PLAYER_STATE_PAUSED, androidx.media2.common.SessionPlayer.PLAYER_STATE_PLAYING, androidx.media2.common.SessionPlayer.PLAYER_STATE_ERROR}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface SessionPlayer.PlayerState {
   }
 
diff --git a/media2/common/api/restricted_current.txt b/media2/common/api/restricted_current.txt
index e5d7d40..d8ee5c7d 100644
--- a/media2/common/api/restricted_current.txt
+++ b/media2/common/api/restricted_current.txt
@@ -79,15 +79,15 @@
 
   public final class MediaMetadata extends androidx.versionedparcelable.CustomVersionedParcelable {
     method public boolean containsKey(String);
-    method public android.graphics.Bitmap? getBitmap(@androidx.media2.common.MediaMetadata.BitmapKey String);
+    method public android.graphics.Bitmap? getBitmap(String);
     method public android.os.Bundle? getExtras();
-    method public float getFloat(@androidx.media2.common.MediaMetadata.FloatKey String);
-    method public long getLong(@androidx.media2.common.MediaMetadata.LongKey String);
+    method public float getFloat(String);
+    method public long getLong(String);
     method public String? getMediaId();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public Object? getObject(String);
-    method public androidx.media2.common.Rating? getRating(@androidx.media2.common.MediaMetadata.RatingKey String);
-    method public String? getString(@androidx.media2.common.MediaMetadata.TextKey String);
-    method public CharSequence? getText(@androidx.media2.common.MediaMetadata.TextKey String);
+    method public androidx.media2.common.Rating? getRating(String);
+    method public String? getString(String);
+    method public CharSequence? getText(String);
     method public java.util.Set<java.lang.String!> keySet();
     method public int size();
     field public static final long BROWSABLE_TYPE_ALBUMS = 2L; // 0x2L
@@ -136,25 +136,19 @@
     field public static final long STATUS_NOT_DOWNLOADED = 0L; // 0x0L
   }
 
-
   public static final class MediaMetadata.Builder {
     ctor public MediaMetadata.Builder();
     ctor public MediaMetadata.Builder(androidx.media2.common.MediaMetadata);
     method public androidx.media2.common.MediaMetadata build();
-    method public androidx.media2.common.MediaMetadata.Builder putBitmap(@androidx.media2.common.MediaMetadata.BitmapKey String, android.graphics.Bitmap?);
-    method public androidx.media2.common.MediaMetadata.Builder putFloat(@androidx.media2.common.MediaMetadata.LongKey String, float);
-    method public androidx.media2.common.MediaMetadata.Builder putLong(@androidx.media2.common.MediaMetadata.LongKey String, long);
-    method public androidx.media2.common.MediaMetadata.Builder putRating(@androidx.media2.common.MediaMetadata.RatingKey String, androidx.media2.common.Rating?);
-    method public androidx.media2.common.MediaMetadata.Builder putString(@androidx.media2.common.MediaMetadata.TextKey String, String?);
-    method public androidx.media2.common.MediaMetadata.Builder putText(@androidx.media2.common.MediaMetadata.TextKey String, CharSequence?);
+    method public androidx.media2.common.MediaMetadata.Builder putBitmap(String, android.graphics.Bitmap?);
+    method public androidx.media2.common.MediaMetadata.Builder putFloat(String, float);
+    method public androidx.media2.common.MediaMetadata.Builder putLong(String, long);
+    method public androidx.media2.common.MediaMetadata.Builder putRating(String, androidx.media2.common.Rating?);
+    method public androidx.media2.common.MediaMetadata.Builder putString(String, String?);
+    method public androidx.media2.common.MediaMetadata.Builder putText(String, CharSequence?);
     method public androidx.media2.common.MediaMetadata.Builder setExtras(android.os.Bundle?);
   }
 
-
-
-
-
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class MediaParcelUtils {
     method public static <T extends androidx.versionedparcelable.VersionedParcelable> T? fromParcelable(androidx.versionedparcelable.ParcelImpl);
     method public static <T extends androidx.versionedparcelable.VersionedParcelable> java.util.List<T!> fromParcelableList(java.util.List<androidx.versionedparcelable.ParcelImpl!>);
@@ -267,10 +261,9 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> createFuture(int);
     method public long getCompletionTime();
     method public androidx.media2.common.MediaItem? getMediaItem();
-    method @androidx.media2.common.SessionPlayer.PlayerResult.ResultCode public int getResultCode();
+    method public int getResultCode();
   }
 
-
   @IntDef({androidx.media2.common.SessionPlayer.PLAYER_STATE_IDLE, androidx.media2.common.SessionPlayer.PLAYER_STATE_PAUSED, androidx.media2.common.SessionPlayer.PLAYER_STATE_PLAYING, androidx.media2.common.SessionPlayer.PLAYER_STATE_ERROR}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface SessionPlayer.PlayerState {
   }
 
diff --git a/media2/player/api/restricted_1.1.0-alpha01.txt b/media2/player/api/restricted_1.1.0-alpha01.txt
index 35d65c5..8a75ae5 100644
--- a/media2/player/api/restricted_1.1.0-alpha01.txt
+++ b/media2/player/api/restricted_1.1.0-alpha01.txt
@@ -36,7 +36,7 @@
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> replacePlaylistItem(int, androidx.media2.common.MediaItem);
     method public void reset();
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> seekTo(long);
-    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> seekTo(long, @androidx.media2.player.MediaPlayer.SeekMode int);
+    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> seekTo(long, int);
     method @Deprecated public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> selectTrack(androidx.media2.player.MediaPlayer.TrackInfo);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> setAudioAttributes(androidx.media.AudioAttributesCompat);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> setAudioSessionId(int);
@@ -73,24 +73,15 @@
     field public static final int SEEK_PREVIOUS_SYNC = 0; // 0x0
   }
 
-
-
-
-
-
-
-
-
   public abstract static class MediaPlayer.PlayerCallback extends androidx.media2.common.SessionPlayer.PlayerCallback {
     ctor public MediaPlayer.PlayerCallback();
-    method public void onError(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, @androidx.media2.player.MediaPlayer.MediaError int, int);
-    method public void onInfo(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, @androidx.media2.player.MediaPlayer.MediaInfo int, int);
+    method public void onError(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, int, int);
+    method public void onInfo(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, int, int);
     method public void onMediaTimeDiscontinuity(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, androidx.media2.player.MediaTimestamp);
     method public void onTimedMetaDataAvailable(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, androidx.media2.player.TimedMetaData);
     method @Deprecated public void onVideoSizeChanged(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, androidx.media2.player.VideoSize);
   }
 
-
   public static final class MediaPlayer.TrackInfo extends androidx.media2.common.SessionPlayer.TrackInfo {
   }
 
@@ -102,7 +93,7 @@
   }
 
   public final class PlaybackParams {
-    method @androidx.media2.player.PlaybackParams.AudioFallbackMode public Integer? getAudioFallbackMode();
+    method public Integer? getAudioFallbackMode();
     method public Float? getPitch();
     method public Float? getSpeed();
     field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
@@ -110,12 +101,11 @@
     field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
   }
 
-
   public static final class PlaybackParams.Builder {
     ctor public PlaybackParams.Builder();
     ctor public PlaybackParams.Builder(androidx.media2.player.PlaybackParams);
     method public androidx.media2.player.PlaybackParams build();
-    method public androidx.media2.player.PlaybackParams.Builder setAudioFallbackMode(@androidx.media2.player.PlaybackParams.AudioFallbackMode int);
+    method public androidx.media2.player.PlaybackParams.Builder setAudioFallbackMode(int);
     method public androidx.media2.player.PlaybackParams.Builder setPitch(@FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE, fromInclusive=false) float);
     method public androidx.media2.player.PlaybackParams.Builder setSpeed(@FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE, fromInclusive=false) float);
   }
diff --git a/media2/player/api/restricted_current.txt b/media2/player/api/restricted_current.txt
index 35d65c5..8a75ae5 100644
--- a/media2/player/api/restricted_current.txt
+++ b/media2/player/api/restricted_current.txt
@@ -36,7 +36,7 @@
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> replacePlaylistItem(int, androidx.media2.common.MediaItem);
     method public void reset();
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> seekTo(long);
-    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> seekTo(long, @androidx.media2.player.MediaPlayer.SeekMode int);
+    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> seekTo(long, int);
     method @Deprecated public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> selectTrack(androidx.media2.player.MediaPlayer.TrackInfo);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> setAudioAttributes(androidx.media.AudioAttributesCompat);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.common.SessionPlayer.PlayerResult!> setAudioSessionId(int);
@@ -73,24 +73,15 @@
     field public static final int SEEK_PREVIOUS_SYNC = 0; // 0x0
   }
 
-
-
-
-
-
-
-
-
   public abstract static class MediaPlayer.PlayerCallback extends androidx.media2.common.SessionPlayer.PlayerCallback {
     ctor public MediaPlayer.PlayerCallback();
-    method public void onError(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, @androidx.media2.player.MediaPlayer.MediaError int, int);
-    method public void onInfo(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, @androidx.media2.player.MediaPlayer.MediaInfo int, int);
+    method public void onError(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, int, int);
+    method public void onInfo(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, int, int);
     method public void onMediaTimeDiscontinuity(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, androidx.media2.player.MediaTimestamp);
     method public void onTimedMetaDataAvailable(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, androidx.media2.player.TimedMetaData);
     method @Deprecated public void onVideoSizeChanged(androidx.media2.player.MediaPlayer, androidx.media2.common.MediaItem, androidx.media2.player.VideoSize);
   }
 
-
   public static final class MediaPlayer.TrackInfo extends androidx.media2.common.SessionPlayer.TrackInfo {
   }
 
@@ -102,7 +93,7 @@
   }
 
   public final class PlaybackParams {
-    method @androidx.media2.player.PlaybackParams.AudioFallbackMode public Integer? getAudioFallbackMode();
+    method public Integer? getAudioFallbackMode();
     method public Float? getPitch();
     method public Float? getSpeed();
     field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
@@ -110,12 +101,11 @@
     field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
   }
 
-
   public static final class PlaybackParams.Builder {
     ctor public PlaybackParams.Builder();
     ctor public PlaybackParams.Builder(androidx.media2.player.PlaybackParams);
     method public androidx.media2.player.PlaybackParams build();
-    method public androidx.media2.player.PlaybackParams.Builder setAudioFallbackMode(@androidx.media2.player.PlaybackParams.AudioFallbackMode int);
+    method public androidx.media2.player.PlaybackParams.Builder setAudioFallbackMode(int);
     method public androidx.media2.player.PlaybackParams.Builder setPitch(@FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE, fromInclusive=false) float);
     method public androidx.media2.player.PlaybackParams.Builder setSpeed(@FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE, fromInclusive=false) float);
   }
diff --git a/media2/session/api/restricted_1.1.0-alpha01.txt b/media2/session/api/restricted_1.1.0-alpha01.txt
index 4956c96..49010ab 100644
--- a/media2/session/api/restricted_1.1.0-alpha01.txt
+++ b/media2/session/api/restricted_1.1.0-alpha01.txt
@@ -9,14 +9,14 @@
   }
 
   public class LibraryResult extends androidx.versionedparcelable.CustomVersionedParcelable implements androidx.media2.common.BaseResult {
-    ctor public LibraryResult(@androidx.media2.session.LibraryResult.ResultCode int);
-    ctor public LibraryResult(@androidx.media2.session.LibraryResult.ResultCode int, androidx.media2.common.MediaItem?, androidx.media2.session.MediaLibraryService.LibraryParams?);
-    ctor public LibraryResult(@androidx.media2.session.LibraryResult.ResultCode int, java.util.List<androidx.media2.common.MediaItem!>?, androidx.media2.session.MediaLibraryService.LibraryParams?);
+    ctor public LibraryResult(int);
+    ctor public LibraryResult(int, androidx.media2.common.MediaItem?, androidx.media2.session.MediaLibraryService.LibraryParams?);
+    ctor public LibraryResult(int, java.util.List<androidx.media2.common.MediaItem!>?, androidx.media2.session.MediaLibraryService.LibraryParams?);
     method public long getCompletionTime();
     method public androidx.media2.session.MediaLibraryService.LibraryParams? getLibraryParams();
     method public androidx.media2.common.MediaItem? getMediaItem();
     method public java.util.List<androidx.media2.common.MediaItem!>? getMediaItems();
-    method @androidx.media2.session.LibraryResult.ResultCode public int getResultCode();
+    method public int getResultCode();
     field public static final int RESULT_ERROR_SESSION_AUTHENTICATION_EXPIRED = -102; // 0xffffff9a
     field public static final int RESULT_ERROR_SESSION_CONCURRENT_STREAM_LIMIT = -104; // 0xffffff98
     field public static final int RESULT_ERROR_SESSION_DISCONNECTED = -100; // 0xffffff9c
@@ -27,7 +27,6 @@
     field public static final int RESULT_ERROR_SESSION_SKIP_LIMIT_REACHED = -107; // 0xffffff95
   }
 
-
   public class MediaBrowser extends androidx.media2.session.MediaController {
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.LibraryResult!> getChildren(String, @IntRange(from=0) int, @IntRange(from=1) int, androidx.media2.session.MediaLibraryService.LibraryParams?);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.LibraryResult!> getItem(String);
@@ -55,7 +54,7 @@
 
   public class MediaController implements java.lang.AutoCloseable {
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> addPlaylistItem(@IntRange(from=0) int, String);
-    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> adjustVolume(@androidx.media2.session.MediaController.VolumeDirection int, @androidx.media2.session.MediaController.VolumeFlags int);
+    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> adjustVolume(int, int);
     method public void close();
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> deselectTrack(androidx.media2.common.SessionPlayer.TrackInfo);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> fastForward();
@@ -99,7 +98,7 @@
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> setRepeatMode(@androidx.media2.common.SessionPlayer.RepeatMode int);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> setShuffleMode(@androidx.media2.common.SessionPlayer.ShuffleMode int);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> setSurface(android.view.Surface?);
-    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> setVolumeTo(int, @androidx.media2.session.MediaController.VolumeFlags int);
+    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> setVolumeTo(int, int);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> skipBackward();
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> skipForward();
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> skipToNextPlaylistItem();
@@ -133,7 +132,7 @@
     method public void onPlaylistMetadataChanged(androidx.media2.session.MediaController, androidx.media2.common.MediaMetadata?);
     method public void onRepeatModeChanged(androidx.media2.session.MediaController, @androidx.media2.common.SessionPlayer.RepeatMode int);
     method public void onSeekCompleted(androidx.media2.session.MediaController, long);
-    method @androidx.media2.session.SessionResult.ResultCode public int onSetCustomLayout(androidx.media2.session.MediaController, java.util.List<androidx.media2.session.MediaSession.CommandButton!>);
+    method public int onSetCustomLayout(androidx.media2.session.MediaController, java.util.List<androidx.media2.session.MediaSession.CommandButton!>);
     method public void onShuffleModeChanged(androidx.media2.session.MediaController, @androidx.media2.common.SessionPlayer.ShuffleMode int);
     method public void onSubtitleData(androidx.media2.session.MediaController, androidx.media2.common.MediaItem, androidx.media2.common.SessionPlayer.TrackInfo, androidx.media2.common.SubtitleData);
     method public void onTrackDeselected(androidx.media2.session.MediaController, androidx.media2.common.SessionPlayer.TrackInfo);
@@ -142,7 +141,6 @@
     method public void onVideoSizeChanged(androidx.media2.session.MediaController, androidx.media2.common.VideoSize);
   }
 
-
   public static final class MediaController.PlaybackInfo implements androidx.versionedparcelable.VersionedParcelable {
     method public androidx.media.AudioAttributesCompat? getAudioAttributes();
     method public int getControlType();
@@ -153,8 +151,6 @@
     field public static final int PLAYBACK_TYPE_REMOTE = 2; // 0x2
   }
 
-
-
   public abstract class MediaLibraryService extends androidx.media2.session.MediaSessionService {
     ctor public MediaLibraryService();
     method public abstract androidx.media2.session.MediaLibraryService.MediaLibrarySession? onGetSession(androidx.media2.session.MediaSession.ControllerInfo);
@@ -197,9 +193,9 @@
     method public androidx.media2.session.LibraryResult onGetItem(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String);
     method public androidx.media2.session.LibraryResult onGetLibraryRoot(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, androidx.media2.session.MediaLibraryService.LibraryParams?);
     method public androidx.media2.session.LibraryResult onGetSearchResult(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String, @IntRange(from=0) int, @IntRange(from=1) int, androidx.media2.session.MediaLibraryService.LibraryParams?);
-    method @androidx.media2.session.LibraryResult.ResultCode public int onSearch(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.session.MediaLibraryService.LibraryParams?);
-    method @androidx.media2.session.LibraryResult.ResultCode public int onSubscribe(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.session.MediaLibraryService.LibraryParams?);
-    method @androidx.media2.session.LibraryResult.ResultCode public int onUnsubscribe(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String);
+    method public int onSearch(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.session.MediaLibraryService.LibraryParams?);
+    method public int onSubscribe(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.session.MediaLibraryService.LibraryParams?);
+    method public int onUnsubscribe(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String);
   }
 
   public class MediaSession implements java.lang.AutoCloseable {
@@ -250,17 +246,17 @@
 
   public abstract static class MediaSession.SessionCallback {
     ctor public MediaSession.SessionCallback();
-    method @androidx.media2.session.SessionResult.ResultCode public int onCommandRequest(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, androidx.media2.session.SessionCommand);
+    method public int onCommandRequest(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, androidx.media2.session.SessionCommand);
     method public androidx.media2.session.SessionCommandGroup? onConnect(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
     method public androidx.media2.common.MediaItem? onCreateMediaItem(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, String);
     method public androidx.media2.session.SessionResult onCustomCommand(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, androidx.media2.session.SessionCommand, android.os.Bundle?);
     method public void onDisconnected(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
-    method @androidx.media2.session.SessionResult.ResultCode public int onFastForward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
+    method public int onFastForward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
     method public void onPostConnect(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
-    method @androidx.media2.session.SessionResult.ResultCode public int onRewind(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
-    method @androidx.media2.session.SessionResult.ResultCode public int onSetRating(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.common.Rating);
-    method @androidx.media2.session.SessionResult.ResultCode public int onSkipBackward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
-    method @androidx.media2.session.SessionResult.ResultCode public int onSkipForward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
+    method public int onRewind(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
+    method public int onSetRating(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.common.Rating);
+    method public int onSkipBackward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
+    method public int onSkipForward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
   }
 
   @RequiresApi(28) public final class MediaSessionManager {
@@ -285,7 +281,6 @@
     method public int getNotificationId();
   }
 
-
   public final class PercentageRating implements androidx.media2.common.Rating {
     ctor public PercentageRating();
     ctor public PercentageRating(float);
@@ -298,7 +293,7 @@
     method public abstract java.util.concurrent.Future<androidx.media2.common.SessionPlayer.PlayerResult!> adjustVolume(int);
     method public abstract int getMaxVolume();
     method public abstract int getVolume();
-    method @androidx.media2.session.RemoteSessionPlayer.VolumeControlType public abstract int getVolumeControlType();
+    method public abstract int getVolumeControlType();
     method public abstract java.util.concurrent.Future<androidx.media2.common.SessionPlayer.PlayerResult!> setVolume(int);
     field public static final int VOLUME_CONTROL_ABSOLUTE = 2; // 0x2
     field public static final int VOLUME_CONTROL_FIXED = 0; // 0x0
@@ -310,11 +305,10 @@
     method public void onVolumeChanged(androidx.media2.session.RemoteSessionPlayer, int);
   }
 
-
   public final class SessionCommand implements androidx.versionedparcelable.VersionedParcelable {
-    ctor public SessionCommand(@androidx.media2.session.SessionCommand.CommandCode int);
+    ctor public SessionCommand(int);
     ctor public SessionCommand(String, android.os.Bundle?);
-    method @androidx.media2.session.SessionCommand.CommandCode public int getCommandCode();
+    method public int getCommandCode();
     method public String? getCustomAction();
     method public android.os.Bundle? getCustomExtras();
     field public static final int COMMAND_CODE_CUSTOM = 0; // 0x0
@@ -359,31 +353,29 @@
     field public static final int COMMAND_VERSION_2 = 2; // 0x2
   }
 
-
-
   public final class SessionCommandGroup implements androidx.versionedparcelable.VersionedParcelable {
     ctor public SessionCommandGroup();
     ctor public SessionCommandGroup(java.util.Collection<androidx.media2.session.SessionCommand!>?);
     method public java.util.Set<androidx.media2.session.SessionCommand!> getCommands();
     method public boolean hasCommand(androidx.media2.session.SessionCommand);
-    method public boolean hasCommand(@androidx.media2.session.SessionCommand.CommandCode int);
+    method public boolean hasCommand(int);
   }
 
   public static final class SessionCommandGroup.Builder {
     ctor public SessionCommandGroup.Builder();
     ctor public SessionCommandGroup.Builder(androidx.media2.session.SessionCommandGroup);
-    method public androidx.media2.session.SessionCommandGroup.Builder addAllPredefinedCommands(@androidx.media2.session.SessionCommand.CommandVersion int);
+    method public androidx.media2.session.SessionCommandGroup.Builder addAllPredefinedCommands(int);
     method public androidx.media2.session.SessionCommandGroup.Builder addCommand(androidx.media2.session.SessionCommand);
     method public androidx.media2.session.SessionCommandGroup build();
     method public androidx.media2.session.SessionCommandGroup.Builder removeCommand(androidx.media2.session.SessionCommand);
   }
 
   public class SessionResult extends androidx.versionedparcelable.CustomVersionedParcelable implements androidx.media2.common.BaseResult {
-    ctor public SessionResult(@androidx.media2.session.SessionResult.ResultCode int, android.os.Bundle?);
+    ctor public SessionResult(int, android.os.Bundle?);
     method public long getCompletionTime();
     method public android.os.Bundle? getCustomCommandResult();
     method public androidx.media2.common.MediaItem? getMediaItem();
-    method @androidx.media2.session.SessionResult.ResultCode public int getResultCode();
+    method public int getResultCode();
     field public static final int RESULT_ERROR_SESSION_AUTHENTICATION_EXPIRED = -102; // 0xffffff9a
     field public static final int RESULT_ERROR_SESSION_CONCURRENT_STREAM_LIMIT = -104; // 0xffffff98
     field public static final int RESULT_ERROR_SESSION_DISCONNECTED = -100; // 0xffffff9c
@@ -395,21 +387,18 @@
     field public static final int RESULT_SUCCESS = 0; // 0x0
   }
 
-
   public final class SessionToken implements androidx.versionedparcelable.VersionedParcelable {
     ctor public SessionToken(android.content.Context, android.content.ComponentName);
     method public android.os.Bundle getExtras();
     method public String getPackageName();
     method public String? getServiceName();
-    method @androidx.media2.session.SessionToken.TokenType public int getType();
+    method public int getType();
     method public int getUid();
     field public static final int TYPE_LIBRARY_SERVICE = 2; // 0x2
     field public static final int TYPE_SESSION = 0; // 0x0
     field public static final int TYPE_SESSION_SERVICE = 1; // 0x1
   }
 
-
-
   public final class StarRating implements androidx.media2.common.Rating {
     ctor public StarRating(@IntRange(from=1) int);
     ctor public StarRating(@IntRange(from=1) int, float);
diff --git a/media2/session/api/restricted_current.txt b/media2/session/api/restricted_current.txt
index 4956c96..49010ab 100644
--- a/media2/session/api/restricted_current.txt
+++ b/media2/session/api/restricted_current.txt
@@ -9,14 +9,14 @@
   }
 
   public class LibraryResult extends androidx.versionedparcelable.CustomVersionedParcelable implements androidx.media2.common.BaseResult {
-    ctor public LibraryResult(@androidx.media2.session.LibraryResult.ResultCode int);
-    ctor public LibraryResult(@androidx.media2.session.LibraryResult.ResultCode int, androidx.media2.common.MediaItem?, androidx.media2.session.MediaLibraryService.LibraryParams?);
-    ctor public LibraryResult(@androidx.media2.session.LibraryResult.ResultCode int, java.util.List<androidx.media2.common.MediaItem!>?, androidx.media2.session.MediaLibraryService.LibraryParams?);
+    ctor public LibraryResult(int);
+    ctor public LibraryResult(int, androidx.media2.common.MediaItem?, androidx.media2.session.MediaLibraryService.LibraryParams?);
+    ctor public LibraryResult(int, java.util.List<androidx.media2.common.MediaItem!>?, androidx.media2.session.MediaLibraryService.LibraryParams?);
     method public long getCompletionTime();
     method public androidx.media2.session.MediaLibraryService.LibraryParams? getLibraryParams();
     method public androidx.media2.common.MediaItem? getMediaItem();
     method public java.util.List<androidx.media2.common.MediaItem!>? getMediaItems();
-    method @androidx.media2.session.LibraryResult.ResultCode public int getResultCode();
+    method public int getResultCode();
     field public static final int RESULT_ERROR_SESSION_AUTHENTICATION_EXPIRED = -102; // 0xffffff9a
     field public static final int RESULT_ERROR_SESSION_CONCURRENT_STREAM_LIMIT = -104; // 0xffffff98
     field public static final int RESULT_ERROR_SESSION_DISCONNECTED = -100; // 0xffffff9c
@@ -27,7 +27,6 @@
     field public static final int RESULT_ERROR_SESSION_SKIP_LIMIT_REACHED = -107; // 0xffffff95
   }
 
-
   public class MediaBrowser extends androidx.media2.session.MediaController {
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.LibraryResult!> getChildren(String, @IntRange(from=0) int, @IntRange(from=1) int, androidx.media2.session.MediaLibraryService.LibraryParams?);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.LibraryResult!> getItem(String);
@@ -55,7 +54,7 @@
 
   public class MediaController implements java.lang.AutoCloseable {
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> addPlaylistItem(@IntRange(from=0) int, String);
-    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> adjustVolume(@androidx.media2.session.MediaController.VolumeDirection int, @androidx.media2.session.MediaController.VolumeFlags int);
+    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> adjustVolume(int, int);
     method public void close();
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> deselectTrack(androidx.media2.common.SessionPlayer.TrackInfo);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> fastForward();
@@ -99,7 +98,7 @@
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> setRepeatMode(@androidx.media2.common.SessionPlayer.RepeatMode int);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> setShuffleMode(@androidx.media2.common.SessionPlayer.ShuffleMode int);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> setSurface(android.view.Surface?);
-    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> setVolumeTo(int, @androidx.media2.session.MediaController.VolumeFlags int);
+    method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> setVolumeTo(int, int);
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> skipBackward();
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> skipForward();
     method public com.google.common.util.concurrent.ListenableFuture<androidx.media2.session.SessionResult!> skipToNextPlaylistItem();
@@ -133,7 +132,7 @@
     method public void onPlaylistMetadataChanged(androidx.media2.session.MediaController, androidx.media2.common.MediaMetadata?);
     method public void onRepeatModeChanged(androidx.media2.session.MediaController, @androidx.media2.common.SessionPlayer.RepeatMode int);
     method public void onSeekCompleted(androidx.media2.session.MediaController, long);
-    method @androidx.media2.session.SessionResult.ResultCode public int onSetCustomLayout(androidx.media2.session.MediaController, java.util.List<androidx.media2.session.MediaSession.CommandButton!>);
+    method public int onSetCustomLayout(androidx.media2.session.MediaController, java.util.List<androidx.media2.session.MediaSession.CommandButton!>);
     method public void onShuffleModeChanged(androidx.media2.session.MediaController, @androidx.media2.common.SessionPlayer.ShuffleMode int);
     method public void onSubtitleData(androidx.media2.session.MediaController, androidx.media2.common.MediaItem, androidx.media2.common.SessionPlayer.TrackInfo, androidx.media2.common.SubtitleData);
     method public void onTrackDeselected(androidx.media2.session.MediaController, androidx.media2.common.SessionPlayer.TrackInfo);
@@ -142,7 +141,6 @@
     method public void onVideoSizeChanged(androidx.media2.session.MediaController, androidx.media2.common.VideoSize);
   }
 
-
   public static final class MediaController.PlaybackInfo implements androidx.versionedparcelable.VersionedParcelable {
     method public androidx.media.AudioAttributesCompat? getAudioAttributes();
     method public int getControlType();
@@ -153,8 +151,6 @@
     field public static final int PLAYBACK_TYPE_REMOTE = 2; // 0x2
   }
 
-
-
   public abstract class MediaLibraryService extends androidx.media2.session.MediaSessionService {
     ctor public MediaLibraryService();
     method public abstract androidx.media2.session.MediaLibraryService.MediaLibrarySession? onGetSession(androidx.media2.session.MediaSession.ControllerInfo);
@@ -197,9 +193,9 @@
     method public androidx.media2.session.LibraryResult onGetItem(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String);
     method public androidx.media2.session.LibraryResult onGetLibraryRoot(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, androidx.media2.session.MediaLibraryService.LibraryParams?);
     method public androidx.media2.session.LibraryResult onGetSearchResult(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String, @IntRange(from=0) int, @IntRange(from=1) int, androidx.media2.session.MediaLibraryService.LibraryParams?);
-    method @androidx.media2.session.LibraryResult.ResultCode public int onSearch(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.session.MediaLibraryService.LibraryParams?);
-    method @androidx.media2.session.LibraryResult.ResultCode public int onSubscribe(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.session.MediaLibraryService.LibraryParams?);
-    method @androidx.media2.session.LibraryResult.ResultCode public int onUnsubscribe(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String);
+    method public int onSearch(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.session.MediaLibraryService.LibraryParams?);
+    method public int onSubscribe(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.session.MediaLibraryService.LibraryParams?);
+    method public int onUnsubscribe(androidx.media2.session.MediaLibraryService.MediaLibrarySession, androidx.media2.session.MediaSession.ControllerInfo, String);
   }
 
   public class MediaSession implements java.lang.AutoCloseable {
@@ -250,17 +246,17 @@
 
   public abstract static class MediaSession.SessionCallback {
     ctor public MediaSession.SessionCallback();
-    method @androidx.media2.session.SessionResult.ResultCode public int onCommandRequest(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, androidx.media2.session.SessionCommand);
+    method public int onCommandRequest(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, androidx.media2.session.SessionCommand);
     method public androidx.media2.session.SessionCommandGroup? onConnect(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
     method public androidx.media2.common.MediaItem? onCreateMediaItem(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, String);
     method public androidx.media2.session.SessionResult onCustomCommand(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, androidx.media2.session.SessionCommand, android.os.Bundle?);
     method public void onDisconnected(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
-    method @androidx.media2.session.SessionResult.ResultCode public int onFastForward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
+    method public int onFastForward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
     method public void onPostConnect(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
-    method @androidx.media2.session.SessionResult.ResultCode public int onRewind(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
-    method @androidx.media2.session.SessionResult.ResultCode public int onSetRating(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.common.Rating);
-    method @androidx.media2.session.SessionResult.ResultCode public int onSkipBackward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
-    method @androidx.media2.session.SessionResult.ResultCode public int onSkipForward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
+    method public int onRewind(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
+    method public int onSetRating(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo, String, androidx.media2.common.Rating);
+    method public int onSkipBackward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
+    method public int onSkipForward(androidx.media2.session.MediaSession, androidx.media2.session.MediaSession.ControllerInfo);
   }
 
   @RequiresApi(28) public final class MediaSessionManager {
@@ -285,7 +281,6 @@
     method public int getNotificationId();
   }
 
-
   public final class PercentageRating implements androidx.media2.common.Rating {
     ctor public PercentageRating();
     ctor public PercentageRating(float);
@@ -298,7 +293,7 @@
     method public abstract java.util.concurrent.Future<androidx.media2.common.SessionPlayer.PlayerResult!> adjustVolume(int);
     method public abstract int getMaxVolume();
     method public abstract int getVolume();
-    method @androidx.media2.session.RemoteSessionPlayer.VolumeControlType public abstract int getVolumeControlType();
+    method public abstract int getVolumeControlType();
     method public abstract java.util.concurrent.Future<androidx.media2.common.SessionPlayer.PlayerResult!> setVolume(int);
     field public static final int VOLUME_CONTROL_ABSOLUTE = 2; // 0x2
     field public static final int VOLUME_CONTROL_FIXED = 0; // 0x0
@@ -310,11 +305,10 @@
     method public void onVolumeChanged(androidx.media2.session.RemoteSessionPlayer, int);
   }
 
-
   public final class SessionCommand implements androidx.versionedparcelable.VersionedParcelable {
-    ctor public SessionCommand(@androidx.media2.session.SessionCommand.CommandCode int);
+    ctor public SessionCommand(int);
     ctor public SessionCommand(String, android.os.Bundle?);
-    method @androidx.media2.session.SessionCommand.CommandCode public int getCommandCode();
+    method public int getCommandCode();
     method public String? getCustomAction();
     method public android.os.Bundle? getCustomExtras();
     field public static final int COMMAND_CODE_CUSTOM = 0; // 0x0
@@ -359,31 +353,29 @@
     field public static final int COMMAND_VERSION_2 = 2; // 0x2
   }
 
-
-
   public final class SessionCommandGroup implements androidx.versionedparcelable.VersionedParcelable {
     ctor public SessionCommandGroup();
     ctor public SessionCommandGroup(java.util.Collection<androidx.media2.session.SessionCommand!>?);
     method public java.util.Set<androidx.media2.session.SessionCommand!> getCommands();
     method public boolean hasCommand(androidx.media2.session.SessionCommand);
-    method public boolean hasCommand(@androidx.media2.session.SessionCommand.CommandCode int);
+    method public boolean hasCommand(int);
   }
 
   public static final class SessionCommandGroup.Builder {
     ctor public SessionCommandGroup.Builder();
     ctor public SessionCommandGroup.Builder(androidx.media2.session.SessionCommandGroup);
-    method public androidx.media2.session.SessionCommandGroup.Builder addAllPredefinedCommands(@androidx.media2.session.SessionCommand.CommandVersion int);
+    method public androidx.media2.session.SessionCommandGroup.Builder addAllPredefinedCommands(int);
     method public androidx.media2.session.SessionCommandGroup.Builder addCommand(androidx.media2.session.SessionCommand);
     method public androidx.media2.session.SessionCommandGroup build();
     method public androidx.media2.session.SessionCommandGroup.Builder removeCommand(androidx.media2.session.SessionCommand);
   }
 
   public class SessionResult extends androidx.versionedparcelable.CustomVersionedParcelable implements androidx.media2.common.BaseResult {
-    ctor public SessionResult(@androidx.media2.session.SessionResult.ResultCode int, android.os.Bundle?);
+    ctor public SessionResult(int, android.os.Bundle?);
     method public long getCompletionTime();
     method public android.os.Bundle? getCustomCommandResult();
     method public androidx.media2.common.MediaItem? getMediaItem();
-    method @androidx.media2.session.SessionResult.ResultCode public int getResultCode();
+    method public int getResultCode();
     field public static final int RESULT_ERROR_SESSION_AUTHENTICATION_EXPIRED = -102; // 0xffffff9a
     field public static final int RESULT_ERROR_SESSION_CONCURRENT_STREAM_LIMIT = -104; // 0xffffff98
     field public static final int RESULT_ERROR_SESSION_DISCONNECTED = -100; // 0xffffff9c
@@ -395,21 +387,18 @@
     field public static final int RESULT_SUCCESS = 0; // 0x0
   }
 
-
   public final class SessionToken implements androidx.versionedparcelable.VersionedParcelable {
     ctor public SessionToken(android.content.Context, android.content.ComponentName);
     method public android.os.Bundle getExtras();
     method public String getPackageName();
     method public String? getServiceName();
-    method @androidx.media2.session.SessionToken.TokenType public int getType();
+    method public int getType();
     method public int getUid();
     field public static final int TYPE_LIBRARY_SERVICE = 2; // 0x2
     field public static final int TYPE_SESSION = 0; // 0x0
     field public static final int TYPE_SESSION_SERVICE = 1; // 0x1
   }
 
-
-
   public final class StarRating implements androidx.media2.common.Rating {
     ctor public StarRating(@IntRange(from=1) int);
     ctor public StarRating(@IntRange(from=1) int, float);
diff --git a/media2/session/src/androidTest/java/androidx/media2/session/MediaController_FrameworkMediaSessionTest.java b/media2/session/src/androidTest/java/androidx/media2/session/MediaController_FrameworkMediaSessionTest.java
new file mode 100644
index 0000000..7ce0069
--- /dev/null
+++ b/media2/session/src/androidTest/java/androidx/media2/session/MediaController_FrameworkMediaSessionTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.media2.session;
+
+import static org.junit.Assert.assertTrue;
+
+import android.media.session.PlaybackState;
+import android.os.Build;
+import android.support.v4.media.session.MediaSessionCompat;
+
+import androidx.annotation.NonNull;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.SdkSuppress;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests {@link MediaController} with framework MediaSession.
+ */
+@SdkSuppress(minSdkVersion = Build.VERSION_CODES.LOLLIPOP)
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class MediaController_FrameworkMediaSessionTest extends MediaSessionTestBase {
+    private static final String TAG = "MediaController_FrameworkMediaSessionTest";
+
+    private android.media.session.MediaSession mFwkSession;
+
+    @Before
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mFwkSession = new android.media.session.MediaSession(mContext, TAG);
+        mFwkSession.setActive(true);
+        mFwkSession.setFlags(android.media.session.MediaSession.FLAG_HANDLES_MEDIA_BUTTONS
+                | android.media.session.MediaSession.FLAG_HANDLES_MEDIA_BUTTONS);
+        mFwkSession.setCallback(new android.media.session.MediaSession.Callback() {});
+    }
+
+    @After
+    @Override
+    public void cleanUp() throws Exception {
+        super.cleanUp();
+        mFwkSession.release();
+    }
+
+    @Test
+    public void testConnect() throws Exception {
+        CountDownLatch connectedLatch = new CountDownLatch(1);
+        MediaController.ControllerCallback callback = new MediaController.ControllerCallback() {
+            @Override
+            public void onConnected(@NonNull MediaController controller,
+                    @NonNull SessionCommandGroup allowedCommands) {
+                connectedLatch.countDown();
+            }
+        };
+        try (MediaController controller = new MediaController.Builder(mContext)
+                .setSessionCompatToken(
+                        MediaSessionCompat.Token.fromToken(mFwkSession.getSessionToken()))
+                .setControllerCallback(sHandlerExecutor, callback)
+                .build()) {
+            assertTrue(connectedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testPlayerStateChanged() throws Exception {
+        CountDownLatch connectedLatch = new CountDownLatch(1);
+        CountDownLatch playerStateChangedLatch = new CountDownLatch(1);
+        MediaController.ControllerCallback callback = new MediaController.ControllerCallback() {
+            @Override
+            public void onConnected(@NonNull MediaController controller,
+                    @NonNull SessionCommandGroup allowedCommands) {
+                connectedLatch.countDown();
+            }
+
+            @Override
+            public void onPlayerStateChanged(@NonNull MediaController controller, int state) {
+                playerStateChangedLatch.countDown();
+            }
+        };
+        try (MediaController controller = new MediaController.Builder(mContext)
+                .setSessionCompatToken(
+                        MediaSessionCompat.Token.fromToken(mFwkSession.getSessionToken()))
+                .setControllerCallback(sHandlerExecutor, callback)
+                .build()) {
+            assertTrue(connectedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+            mFwkSession.setPlaybackState(new PlaybackState.Builder()
+                    .setState(PlaybackState.STATE_PLAYING, 0, 1.0f)
+                    .build());
+            assertTrue(playerStateChangedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+}
diff --git a/media2/session/src/main/java/androidx/media2/session/MediaControllerImplLegacy.java b/media2/session/src/main/java/androidx/media2/session/MediaControllerImplLegacy.java
index 365267c..ad3e9d1 100644
--- a/media2/session/src/main/java/androidx/media2/session/MediaControllerImplLegacy.java
+++ b/media2/session/src/main/java/androidx/media2/session/MediaControllerImplLegacy.java
@@ -106,7 +106,7 @@
     MediaBrowserCompat mBrowserCompat;
     @GuardedBy("mLock")
     @SuppressWarnings("WeakerAccess") /* synthetic access */
-    boolean mIsReleased;
+    boolean mClosed;
     @GuardedBy("mLock")
     @SuppressWarnings("WeakerAccess") /* synthetic access */
     List<MediaItem> mPlaylist;
@@ -153,7 +153,8 @@
     @SuppressWarnings("WeakerAccess") /* synthetic access */
     MediaControllerCompat mControllerCompat;
     @GuardedBy("mLock")
-    private ControllerCompatCallback mControllerCompatCallback;
+    @SuppressWarnings("WeakerAccess") /* synthetic access */
+    ControllerCompatCallback mControllerCompatCallback;
     @GuardedBy("mLock")
     @SuppressWarnings("WeakerAccess") /* synthetic access */
     PlaybackStateCompat mPlaybackStateCompat;
@@ -161,10 +162,9 @@
     @SuppressWarnings("WeakerAccess") /* synthetic access */
     MediaMetadataCompat mMediaMetadataCompat;
 
-    // Assignment should be used with the lock hold, but should be used without a lock to prevent
-    // potential deadlock.
     @GuardedBy("mLock")
-    private volatile boolean mConnected;
+    @SuppressWarnings("WeakerAccess") /* synthetic access */
+    boolean mConnected;
 
     MediaControllerImplLegacy(@NonNull Context context, @NonNull MediaController instance,
             @NonNull SessionToken token) {
@@ -188,10 +188,10 @@
     @Override
     public void close() {
         if (DEBUG) {
-            Log.d(TAG, "release from " + mToken);
+            Log.d(TAG, "close from " + mToken);
         }
         synchronized (mLock) {
-            if (mIsReleased) {
+            if (mClosed) {
                 // Prevent re-enterance from the ControllerCallback.onDisconnected()
                 return;
             }
@@ -203,7 +203,7 @@
                 mHandlerThread.quit();
             }
 
-            mIsReleased = true;
+            mClosed = true;
 
             if (mBrowserCompat != null) {
                 mBrowserCompat.disconnect();
@@ -870,7 +870,7 @@
         final List<CommandButton> customLayout;
 
         synchronized (mLock) {
-            if (mIsReleased || mConnected) {
+            if (mClosed || mConnected) {
                 return;
             }
             mPlaybackStateCompat = mControllerCompat.getPlaybackState();
@@ -930,6 +930,8 @@
             mControllerCompatCallback = new ControllerCompatCallback();
             mControllerCompat.registerCallback(mControllerCompatCallback, mHandler);
         }
+        // MediaControllerCompat is available to use immediately after it's created.
+        onConnectedNotLocked();
     }
 
     private void connectToService() {
@@ -1038,7 +1040,26 @@
 
         @Override
         public void onSessionReady() {
-            onConnectedNotLocked();
+            boolean connected;
+            synchronized (mLock) {
+                connected = mConnected;
+            }
+            if (connected) {
+                PlaybackStateCompat state;
+                int shuffleMode;
+                int repeatMode;
+                boolean isCaptioningEnabled;
+                synchronized (mLock) {
+                    state = mControllerCompat.getPlaybackState();
+                    shuffleMode = mControllerCompat.getShuffleMode();
+                    repeatMode = mControllerCompat.getRepeatMode();
+                    isCaptioningEnabled = mControllerCompat.isCaptioningEnabled();
+                }
+                onPlaybackStateChanged(state);
+                onShuffleModeChanged(shuffleMode);
+                onRepeatModeChanged(repeatMode);
+                onCaptioningEnabledChanged(isCaptioningEnabled);
+            }
         }
 
         @Override
@@ -1049,7 +1070,7 @@
         @Override
         public void onSessionEvent(final String event, final Bundle extras) {
             synchronized (mLock) {
-                if (mIsReleased) {
+                if (mClosed || !mConnected) {
                     return;
                 }
             }
@@ -1072,7 +1093,7 @@
             final SessionCommandGroup prevAllowedCommands;
             final SessionCommandGroup currentAllowedCommands;
             synchronized (mLock) {
-                if (mIsReleased) {
+                if (mClosed || !mConnected) {
                     return;
                 }
                 prevItem = mCurrentMediaItem;
@@ -1208,7 +1229,7 @@
             final MediaItem prevItem;
             final MediaItem currentItem;
             synchronized (mLock) {
-                if (mIsReleased) {
+                if (mClosed || !mConnected) {
                     return;
                 }
                 prevItem = mCurrentMediaItem;
@@ -1230,7 +1251,7 @@
             final List<MediaItem> playlist;
             final MediaMetadata playlistMetadata;
             synchronized (mLock) {
-                if (mIsReleased) {
+                if (mClosed || !mConnected) {
                     return;
                 }
                 mQueue = MediaUtils.removeNullElements(queue);
@@ -1258,7 +1279,7 @@
         public void onQueueTitleChanged(CharSequence title) {
             final MediaMetadata playlistMetadata;
             synchronized (mLock) {
-                if (mIsReleased) {
+                if (mClosed || !mConnected) {
                     return;
                 }
                 mPlaylistMetadata = MediaUtils.convertToMediaMetadata(title);
@@ -1275,7 +1296,7 @@
         @Override
         public void onExtrasChanged(final Bundle extras) {
             synchronized (mLock) {
-                if (mIsReleased) {
+                if (mClosed || !mConnected) {
                     return;
                 }
             }
@@ -1291,7 +1312,7 @@
         @Override
         public void onAudioInfoChanged(final MediaControllerCompat.PlaybackInfo info) {
             synchronized (mLock) {
-                if (mIsReleased) {
+                if (mClosed || !mConnected) {
                     return;
                 }
             }
@@ -1306,7 +1327,7 @@
         @Override
         public void onCaptioningEnabledChanged(final boolean enabled) {
             synchronized (mLock) {
-                if (mIsReleased) {
+                if (mClosed || !mConnected) {
                     return;
                 }
             }
@@ -1324,7 +1345,7 @@
         @Override
         public void onRepeatModeChanged(@PlaybackStateCompat.RepeatMode final int repeatMode) {
             synchronized (mLock) {
-                if (mIsReleased) {
+                if (mClosed || !mConnected) {
                     return;
                 }
                 mRepeatMode = repeatMode;
@@ -1340,7 +1361,7 @@
         @Override
         public void onShuffleModeChanged(@PlaybackStateCompat.ShuffleMode final int shuffleMode) {
             synchronized (mLock) {
-                if (mIsReleased) {
+                if (mClosed || !mConnected) {
                     return;
                 }
                 mShuffleMode = shuffleMode;
diff --git a/navigation/navigation-runtime/api/restricted_2.3.0-alpha01.txt b/navigation/navigation-runtime/api/restricted_2.3.0-alpha01.txt
index 9b6cbf4..4f49e23 100644
--- a/navigation/navigation-runtime/api/restricted_2.3.0-alpha01.txt
+++ b/navigation/navigation-runtime/api/restricted_2.3.0-alpha01.txt
@@ -51,6 +51,7 @@
     ctor public NavController(android.content.Context);
     method public void addOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener);
     method public androidx.navigation.NavDeepLinkBuilder createDeepLink();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public java.util.Deque<androidx.navigation.NavBackStackEntry!> getBackStack();
     method public androidx.navigation.NavBackStackEntry getBackStackEntry(@IdRes int);
     method public androidx.navigation.NavDestination? getCurrentDestination();
     method public androidx.navigation.NavGraph getGraph();
@@ -78,6 +79,7 @@
     method @CallSuper public void setGraph(@NavigationRes int, android.os.Bundle?);
     method @CallSuper public void setGraph(androidx.navigation.NavGraph);
     method @CallSuper public void setGraph(androidx.navigation.NavGraph, android.os.Bundle?);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public void setNavigatorProvider(androidx.navigation.NavigatorProvider);
     field public static final String KEY_DEEP_LINK_INTENT = "android-support-nav:controller:deepLinkIntent";
   }
 
diff --git a/navigation/navigation-runtime/api/restricted_current.txt b/navigation/navigation-runtime/api/restricted_current.txt
index 9b6cbf4..4f49e23 100644
--- a/navigation/navigation-runtime/api/restricted_current.txt
+++ b/navigation/navigation-runtime/api/restricted_current.txt
@@ -51,6 +51,7 @@
     ctor public NavController(android.content.Context);
     method public void addOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener);
     method public androidx.navigation.NavDeepLinkBuilder createDeepLink();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public java.util.Deque<androidx.navigation.NavBackStackEntry!> getBackStack();
     method public androidx.navigation.NavBackStackEntry getBackStackEntry(@IdRes int);
     method public androidx.navigation.NavDestination? getCurrentDestination();
     method public androidx.navigation.NavGraph getGraph();
@@ -78,6 +79,7 @@
     method @CallSuper public void setGraph(@NavigationRes int, android.os.Bundle?);
     method @CallSuper public void setGraph(androidx.navigation.NavGraph);
     method @CallSuper public void setGraph(androidx.navigation.NavGraph, android.os.Bundle?);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public void setNavigatorProvider(androidx.navigation.NavigatorProvider);
     field public static final String KEY_DEEP_LINK_INTENT = "android-support-nav:controller:deepLinkIntent";
   }
 
diff --git a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.java b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.java
index 8a5ba6a..221ba97 100644
--- a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.java
+++ b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.java
@@ -32,6 +32,7 @@
 import androidx.annotation.NavigationRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.RestrictTo;
 import androidx.core.app.TaskStackBuilder;
 import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.LifecycleEventObserver;
@@ -95,7 +96,7 @@
     private LifecycleOwner mLifecycleOwner;
     private NavControllerViewModel mViewModel;
 
-    private final NavigatorProvider mNavigatorProvider = new NavigatorProvider();
+    private NavigatorProvider mNavigatorProvider = new NavigatorProvider();
 
     private final CopyOnWriteArrayList<OnDestinationChangedListener>
             mOnDestinationChangedListeners = new CopyOnWriteArrayList<>();
@@ -169,6 +170,18 @@
         mNavigatorProvider.addNavigator(new ActivityNavigator(mContext));
     }
 
+    /**
+     * Retrieve the current back stack.
+     *
+     * @return The current back stack.
+     * @hide
+     */
+    @NonNull
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+    public Deque<NavBackStackEntry> getBackStack() {
+        return mBackStack;
+    }
+
     @NonNull
     Context getContext() {
         return mContext;
@@ -190,6 +203,22 @@
     }
 
     /**
+     * Sets the {@link NavigatorProvider navigator provider} to the specified provider. This can
+     * only be called before the graph is set via {@code setGraph()}.
+     *
+     * @param navigatorProvider {@link NavigatorProvider} to set
+     * @throws IllegalStateException If this is called after {@code setGraph()}
+     * @hide
+     */
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+    public void setNavigatorProvider(@NonNull NavigatorProvider navigatorProvider) {
+        if (!mBackStack.isEmpty()) {
+            throw new IllegalStateException("NavigatorProvider must be set before setGraph call");
+        }
+        mNavigatorProvider = navigatorProvider;
+    }
+
+    /**
      * Adds an {@link OnDestinationChangedListener} to this controller to receive a callback
      * whenever the {@link #getCurrentDestination()} or its arguments change.
      *
diff --git a/navigation/navigation-testing/src/androidTest/java/androidx/navigation/testing/TestNavHostControllerTest.kt b/navigation/navigation-testing/src/androidTest/java/androidx/navigation/testing/TestNavHostControllerTest.kt
index ed95edc..92b1a11 100644
--- a/navigation/navigation-testing/src/androidTest/java/androidx/navigation/testing/TestNavHostControllerTest.kt
+++ b/navigation/navigation-testing/src/androidTest/java/androidx/navigation/testing/TestNavHostControllerTest.kt
@@ -16,9 +16,8 @@
 
 package androidx.navigation.testing
 
-import androidx.navigation.testing.test.R
-import androidx.navigation.TestNavHostController
 import androidx.navigation.plusAssign
+import androidx.navigation.testing.test.R
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
@@ -36,14 +35,12 @@
 
     @Before
     fun setUp() {
-        navController = TestNavHostController(ApplicationProvider.getApplicationContext()).apply {
-            navigatorProvider += TestNavigator()
-            setGraph(R.navigation.test_graph)
-        }
+        navController = TestNavHostController(ApplicationProvider.getApplicationContext())
     }
 
     @Test
     fun testStartBackStack() {
+        navController.setGraph(R.navigation.test_graph)
         val backStack = navController.backStack
         assertThat(backStack).hasSize(2)
         assertThat(backStack[0].destination.id).isEqualTo(R.id.test_graph)
@@ -52,9 +49,19 @@
 
     @Test
     fun testNavigateBackStack() {
+        navController.setGraph(R.navigation.test_graph)
         navController.navigate(R.id.second)
         val backStack = navController.backStack
         assertThat(backStack).hasSize(3)
         assertThat(backStack[2].destination.id).isEqualTo(R.id.second_test)
     }
+
+    @Test
+    fun testCustomNavigator() {
+        navController.navigatorProvider += TestNavigator()
+        navController.setGraph(R.navigation.test_graph)
+        val backStack = navController.backStack
+        assertThat(backStack).hasSize(2)
+        assertThat(backStack[1].destination).isInstanceOf(TestNavigator.Destination::class.java)
+    }
 }
diff --git a/navigation/navigation-testing/src/main/java/androidx/navigation/testing/TestNavHostController.kt b/navigation/navigation-testing/src/main/java/androidx/navigation/testing/TestNavHostController.kt
index 228c966..192655e 100644
--- a/navigation/navigation-testing/src/main/java/androidx/navigation/testing/TestNavHostController.kt
+++ b/navigation/navigation-testing/src/main/java/androidx/navigation/testing/TestNavHostController.kt
@@ -14,9 +14,11 @@
  * limitations under the License.
  */
 
-package androidx.navigation
+package androidx.navigation.testing
 
 import android.content.Context
+import androidx.navigation.NavBackStackEntry
+import androidx.navigation.NavHostController
 
 /**
  * Subclass of [NavHostController] that offers additional APIs for testing Navigation.
@@ -26,5 +28,9 @@
     /**
      * Gets an immutable copy of the [elements][NavBackStackEntry] currently on the back stack.
      */
-    val backStack get(): List<NavBackStackEntry> = mBackStack.toList()
+    val backStack get(): List<NavBackStackEntry> = getBackStack().toList()
+
+    init {
+        navigatorProvider = TestNavigatorProvider()
+    }
 }
diff --git a/navigation/navigation-testing/src/main/java/androidx/navigation/testing/TestNavigatorProvider.kt b/navigation/navigation-testing/src/main/java/androidx/navigation/testing/TestNavigatorProvider.kt
new file mode 100644
index 0000000..62e9ba8
--- /dev/null
+++ b/navigation/navigation-testing/src/main/java/androidx/navigation/testing/TestNavigatorProvider.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.navigation.testing
+
+import android.os.Bundle
+import androidx.navigation.NavDestination
+import androidx.navigation.NavGraphNavigator
+import androidx.navigation.NavOptions
+import androidx.navigation.Navigator
+import androidx.navigation.NavigatorProvider
+import java.lang.IllegalStateException
+
+/**
+ * A [NavigatorProvider] for testing that only parses
+ * [navigation graphs][androidx.navigation.NavGraph] and [destinations][NavDestination].
+ */
+internal class TestNavigatorProvider : NavigatorProvider() {
+
+    /**
+     * A [Navigator] that only supports creating destinations.
+     */
+    private val navigator = object : Navigator<NavDestination>() {
+        override fun createDestination() = NavDestination("test")
+
+        override fun navigate(
+            destination: NavDestination,
+            args: Bundle?,
+            navOptions: NavOptions?,
+            navigatorExtras: Extras?
+        ): NavDestination? {
+            return destination
+        }
+
+        override fun popBackStack(): Boolean {
+            return true
+        }
+    }
+
+    init {
+        addNavigator(NavGraphNavigator(this))
+    }
+
+    override fun <T : Navigator<out NavDestination>> getNavigator(name: String): T {
+        return try {
+            super.getNavigator(name)
+        } catch (e: IllegalStateException) {
+            @Suppress("UNCHECKED_CAST")
+            navigator as T
+        }
+    }
+}
diff --git a/paging/common/api/restricted_3.0.0-alpha01.txt b/paging/common/api/restricted_3.0.0-alpha01.txt
index 6fb99d7..310fe1f 100644
--- a/paging/common/api/restricted_3.0.0-alpha01.txt
+++ b/paging/common/api/restricted_3.0.0-alpha01.txt
@@ -1,7 +1,6 @@
 // Signature format: 3.0
 package androidx.paging {
 
-
   public abstract class DataSource<Key, Value> {
     method @AnyThread public void addInvalidatedCallback(androidx.paging.DataSource.InvalidatedCallback onInvalidatedCallback);
     method @AnyThread public final void addInvalidatedCallback(kotlin.jvm.functions.Function0<kotlin.Unit> onInvalidatedCallback);
@@ -34,7 +33,6 @@
     ctor public DataSourceKt();
   }
 
-
   public abstract class ItemKeyedDataSource<Key, Value> extends androidx.paging.DataSource<Key,Value> {
     ctor public ItemKeyedDataSource();
     method public abstract Key getKey(Value item);
@@ -331,7 +329,6 @@
     method public final <V> androidx.paging.PositionalDataSource<V> mapByPage(kotlin.jvm.functions.Function1<? super java.util.List<? extends T>,? extends java.util.List<? extends V>> function);
   }
 
-
   public abstract static class PositionalDataSource.LoadInitialCallback<T> {
     ctor public PositionalDataSource.LoadInitialCallback();
     method public abstract void onResult(java.util.List<? extends T> data, int position, int totalCount);
diff --git a/paging/common/api/restricted_current.txt b/paging/common/api/restricted_current.txt
index 6fb99d7..310fe1f 100644
--- a/paging/common/api/restricted_current.txt
+++ b/paging/common/api/restricted_current.txt
@@ -1,7 +1,6 @@
 // Signature format: 3.0
 package androidx.paging {
 
-
   public abstract class DataSource<Key, Value> {
     method @AnyThread public void addInvalidatedCallback(androidx.paging.DataSource.InvalidatedCallback onInvalidatedCallback);
     method @AnyThread public final void addInvalidatedCallback(kotlin.jvm.functions.Function0<kotlin.Unit> onInvalidatedCallback);
@@ -34,7 +33,6 @@
     ctor public DataSourceKt();
   }
 
-
   public abstract class ItemKeyedDataSource<Key, Value> extends androidx.paging.DataSource<Key,Value> {
     ctor public ItemKeyedDataSource();
     method public abstract Key getKey(Value item);
@@ -331,7 +329,6 @@
     method public final <V> androidx.paging.PositionalDataSource<V> mapByPage(kotlin.jvm.functions.Function1<? super java.util.List<? extends T>,? extends java.util.List<? extends V>> function);
   }
 
-
   public abstract static class PositionalDataSource.LoadInitialCallback<T> {
     ctor public PositionalDataSource.LoadInitialCallback();
     method public abstract void onResult(java.util.List<? extends T> data, int position, int totalCount);
diff --git a/preference/preference/api/restricted_1.0.0.txt b/preference/preference/api/restricted_1.0.0.txt
index 55d3bd3..30b0b37 100644
--- a/preference/preference/api/restricted_1.0.0.txt
+++ b/preference/preference/api/restricted_1.0.0.txt
@@ -496,7 +496,6 @@
   }
 
   public class PreferenceViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder {
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.TESTS) public static androidx.preference.PreferenceViewHolder! createInstanceForTests(android.view.View!);
     method public android.view.View! findViewById(@IdRes int);
     method public boolean isDividerAllowedAbove();
     method public boolean isDividerAllowedBelow();
diff --git a/preference/preference/api/restricted_1.1.0-alpha04.txt b/preference/preference/api/restricted_1.1.0-alpha04.txt
index fac4a6a..e107369 100644
--- a/preference/preference/api/restricted_1.1.0-alpha04.txt
+++ b/preference/preference/api/restricted_1.1.0-alpha04.txt
@@ -1,7 +1,6 @@
 // Signature format: 3.0
 package androidx.preference {
 
-
   public class CheckBoxPreference extends androidx.preference.TwoStatePreference {
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int);
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int, int);
@@ -510,7 +509,6 @@
   }
 
   public class PreferenceViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder {
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.TESTS) public static androidx.preference.PreferenceViewHolder! createInstanceForTests(android.view.View!);
     method public android.view.View! findViewById(@IdRes int);
     method public boolean isDividerAllowedAbove();
     method public boolean isDividerAllowedBelow();
@@ -591,4 +589,13 @@
 
 }
 
+package @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY}) @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY}) androidx.preference.internal {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class PreferenceImageView extends android.widget.ImageView {
+    ctor public PreferenceImageView(android.content.Context!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+}
 
diff --git a/preference/preference/api/restricted_1.1.0-alpha05.txt b/preference/preference/api/restricted_1.1.0-alpha05.txt
index fac4a6a..e107369 100644
--- a/preference/preference/api/restricted_1.1.0-alpha05.txt
+++ b/preference/preference/api/restricted_1.1.0-alpha05.txt
@@ -1,7 +1,6 @@
 // Signature format: 3.0
 package androidx.preference {
 
-
   public class CheckBoxPreference extends androidx.preference.TwoStatePreference {
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int);
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int, int);
@@ -510,7 +509,6 @@
   }
 
   public class PreferenceViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder {
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.TESTS) public static androidx.preference.PreferenceViewHolder! createInstanceForTests(android.view.View!);
     method public android.view.View! findViewById(@IdRes int);
     method public boolean isDividerAllowedAbove();
     method public boolean isDividerAllowedBelow();
@@ -591,4 +589,13 @@
 
 }
 
+package @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY}) @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY}) androidx.preference.internal {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class PreferenceImageView extends android.widget.ImageView {
+    ctor public PreferenceImageView(android.content.Context!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+}
 
diff --git a/preference/preference/api/restricted_1.1.0-beta01.txt b/preference/preference/api/restricted_1.1.0-beta01.txt
index 42cde3c..f6ba072 100644
--- a/preference/preference/api/restricted_1.1.0-beta01.txt
+++ b/preference/preference/api/restricted_1.1.0-beta01.txt
@@ -1,7 +1,6 @@
 // Signature format: 3.0
 package androidx.preference {
 
-
   public class CheckBoxPreference extends androidx.preference.TwoStatePreference {
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int);
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int, int);
@@ -509,7 +508,6 @@
   }
 
   public class PreferenceViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder {
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.TESTS) public static androidx.preference.PreferenceViewHolder! createInstanceForTests(android.view.View!);
     method public android.view.View! findViewById(@IdRes int);
     method public boolean isDividerAllowedAbove();
     method public boolean isDividerAllowedBelow();
@@ -590,4 +588,13 @@
 
 }
 
+package @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY}) @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY}) androidx.preference.internal {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class PreferenceImageView extends android.widget.ImageView {
+    ctor public PreferenceImageView(android.content.Context!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+}
 
diff --git a/preference/preference/api/restricted_1.1.0-rc01.txt b/preference/preference/api/restricted_1.1.0-rc01.txt
index cf33935..ba0d303 100644
--- a/preference/preference/api/restricted_1.1.0-rc01.txt
+++ b/preference/preference/api/restricted_1.1.0-rc01.txt
@@ -1,7 +1,6 @@
 // Signature format: 3.0
 package androidx.preference {
 
-
   public class CheckBoxPreference extends androidx.preference.TwoStatePreference {
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int);
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int, int);
@@ -509,7 +508,6 @@
   }
 
   public class PreferenceViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder {
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.TESTS) public static androidx.preference.PreferenceViewHolder! createInstanceForTests(android.view.View!);
     method public android.view.View! findViewById(@IdRes int);
     method public boolean isDividerAllowedAbove();
     method public boolean isDividerAllowedBelow();
@@ -590,4 +588,13 @@
 
 }
 
+package @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY}) @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY}) androidx.preference.internal {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class PreferenceImageView extends android.widget.ImageView {
+    ctor public PreferenceImageView(android.content.Context!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+}
 
diff --git a/preference/preference/api/restricted_1.2.0-alpha01.txt b/preference/preference/api/restricted_1.2.0-alpha01.txt
index c356468..7b25888 100644
--- a/preference/preference/api/restricted_1.2.0-alpha01.txt
+++ b/preference/preference/api/restricted_1.2.0-alpha01.txt
@@ -1,7 +1,6 @@
 // Signature format: 3.0
 package androidx.preference {
 
-
   public class CheckBoxPreference extends androidx.preference.TwoStatePreference {
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int);
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int, int);
@@ -509,7 +508,6 @@
   }
 
   public class PreferenceViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder {
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.TESTS) public static androidx.preference.PreferenceViewHolder! createInstanceForTests(android.view.View!);
     method public android.view.View! findViewById(@IdRes int);
     method public boolean isDividerAllowedAbove();
     method public boolean isDividerAllowedBelow();
@@ -590,4 +588,13 @@
 
 }
 
+package @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) androidx.preference.internal {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class PreferenceImageView extends android.widget.ImageView {
+    ctor public PreferenceImageView(android.content.Context!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+}
 
diff --git a/preference/preference/api/restricted_current.txt b/preference/preference/api/restricted_current.txt
index c356468..7b25888 100644
--- a/preference/preference/api/restricted_current.txt
+++ b/preference/preference/api/restricted_current.txt
@@ -1,7 +1,6 @@
 // Signature format: 3.0
 package androidx.preference {
 
-
   public class CheckBoxPreference extends androidx.preference.TwoStatePreference {
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int);
     ctor public CheckBoxPreference(android.content.Context!, android.util.AttributeSet!, int, int);
@@ -509,7 +508,6 @@
   }
 
   public class PreferenceViewHolder extends androidx.recyclerview.widget.RecyclerView.ViewHolder {
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.TESTS) public static androidx.preference.PreferenceViewHolder! createInstanceForTests(android.view.View!);
     method public android.view.View! findViewById(@IdRes int);
     method public boolean isDividerAllowedAbove();
     method public boolean isDividerAllowedBelow();
@@ -590,4 +588,13 @@
 
 }
 
+package @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) androidx.preference.internal {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class PreferenceImageView extends android.widget.ImageView {
+    ctor public PreferenceImageView(android.content.Context!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!);
+    ctor public PreferenceImageView(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+}
 
diff --git a/recyclerview/recyclerview-selection/api/restricted_1.1.0-alpha06.txt b/recyclerview/recyclerview-selection/api/restricted_1.1.0-alpha06.txt
index adebbf3..cea7610 100644
--- a/recyclerview/recyclerview-selection/api/restricted_1.1.0-alpha06.txt
+++ b/recyclerview/recyclerview-selection/api/restricted_1.1.0-alpha06.txt
@@ -16,7 +16,6 @@
     method public boolean canInitiate(android.view.MotionEvent);
   }
 
-
   public abstract class FocusDelegate<K> {
     ctor public FocusDelegate();
     method public abstract void clearFocus();
diff --git a/recyclerview/recyclerview-selection/api/restricted_1.1.0-beta01.txt b/recyclerview/recyclerview-selection/api/restricted_1.1.0-beta01.txt
index f944138..f80bfd39 100644
--- a/recyclerview/recyclerview-selection/api/restricted_1.1.0-beta01.txt
+++ b/recyclerview/recyclerview-selection/api/restricted_1.1.0-beta01.txt
@@ -16,7 +16,6 @@
     method public boolean canInitiate(android.view.MotionEvent);
   }
 
-
   public abstract class FocusDelegate<K> {
     ctor public FocusDelegate();
     method public abstract void clearFocus();
@@ -81,7 +80,6 @@
     method public void onChanged();
   }
 
-
   public class Selection<K> implements java.lang.Iterable<K> {
     method public boolean contains(K?);
     method public boolean isEmpty();
diff --git a/recyclerview/recyclerview-selection/api/restricted_current.txt b/recyclerview/recyclerview-selection/api/restricted_current.txt
index f944138..f80bfd39 100644
--- a/recyclerview/recyclerview-selection/api/restricted_current.txt
+++ b/recyclerview/recyclerview-selection/api/restricted_current.txt
@@ -16,7 +16,6 @@
     method public boolean canInitiate(android.view.MotionEvent);
   }
 
-
   public abstract class FocusDelegate<K> {
     ctor public FocusDelegate();
     method public abstract void clearFocus();
@@ -81,7 +80,6 @@
     method public void onChanged();
   }
 
-
   public class Selection<K> implements java.lang.Iterable<K> {
     method public boolean contains(K?);
     method public boolean isEmpty();
diff --git a/recyclerview/recyclerview/api/restricted_1.1.0-alpha06.txt b/recyclerview/recyclerview/api/restricted_1.1.0-alpha06.txt
index 96f73f8..9a8590e 100644
--- a/recyclerview/recyclerview/api/restricted_1.1.0-alpha06.txt
+++ b/recyclerview/recyclerview/api/restricted_1.1.0-alpha06.txt
@@ -273,7 +273,6 @@
     field public boolean mIgnoreConsumed;
   }
 
-
   public class LinearSmoothScroller extends androidx.recyclerview.widget.RecyclerView.SmoothScroller {
     ctor public LinearSmoothScroller(android.content.Context!);
     method public int calculateDtToFit(int, int, int, int, int);
@@ -811,7 +810,6 @@
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
   }
 
-
   public static class RecyclerView.SimpleOnItemTouchListener implements androidx.recyclerview.widget.RecyclerView.OnItemTouchListener {
     ctor public RecyclerView.SimpleOnItemTouchListener();
     method public boolean onInterceptTouchEvent(androidx.recyclerview.widget.RecyclerView, android.view.MotionEvent);
@@ -1038,6 +1036,5 @@
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
   }
 
-
 }
 
diff --git a/recyclerview/recyclerview/api/restricted_1.1.0-beta01.txt b/recyclerview/recyclerview/api/restricted_1.1.0-beta01.txt
index 7048ea8..6d5fda3 100644
--- a/recyclerview/recyclerview/api/restricted_1.1.0-beta01.txt
+++ b/recyclerview/recyclerview/api/restricted_1.1.0-beta01.txt
@@ -273,7 +273,6 @@
     field public boolean mIgnoreConsumed;
   }
 
-
   public class LinearSmoothScroller extends androidx.recyclerview.widget.RecyclerView.SmoothScroller {
     ctor public LinearSmoothScroller(android.content.Context!);
     method public int calculateDtToFit(int, int, int, int, int);
@@ -811,7 +810,6 @@
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
   }
 
-
   public static class RecyclerView.SimpleOnItemTouchListener implements androidx.recyclerview.widget.RecyclerView.OnItemTouchListener {
     ctor public RecyclerView.SimpleOnItemTouchListener();
     method public boolean onInterceptTouchEvent(androidx.recyclerview.widget.RecyclerView, android.view.MotionEvent);
@@ -1038,6 +1036,5 @@
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
   }
 
-
 }
 
diff --git a/recyclerview/recyclerview/api/restricted_1.1.0-beta02.txt b/recyclerview/recyclerview/api/restricted_1.1.0-beta02.txt
index 7048ea8..6d5fda3 100644
--- a/recyclerview/recyclerview/api/restricted_1.1.0-beta02.txt
+++ b/recyclerview/recyclerview/api/restricted_1.1.0-beta02.txt
@@ -273,7 +273,6 @@
     field public boolean mIgnoreConsumed;
   }
 
-
   public class LinearSmoothScroller extends androidx.recyclerview.widget.RecyclerView.SmoothScroller {
     ctor public LinearSmoothScroller(android.content.Context!);
     method public int calculateDtToFit(int, int, int, int, int);
@@ -811,7 +810,6 @@
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
   }
 
-
   public static class RecyclerView.SimpleOnItemTouchListener implements androidx.recyclerview.widget.RecyclerView.OnItemTouchListener {
     ctor public RecyclerView.SimpleOnItemTouchListener();
     method public boolean onInterceptTouchEvent(androidx.recyclerview.widget.RecyclerView, android.view.MotionEvent);
@@ -1038,6 +1036,5 @@
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
   }
 
-
 }
 
diff --git a/recyclerview/recyclerview/api/restricted_1.1.0-beta03.txt b/recyclerview/recyclerview/api/restricted_1.1.0-beta03.txt
index 7048ea8..6d5fda3 100644
--- a/recyclerview/recyclerview/api/restricted_1.1.0-beta03.txt
+++ b/recyclerview/recyclerview/api/restricted_1.1.0-beta03.txt
@@ -273,7 +273,6 @@
     field public boolean mIgnoreConsumed;
   }
 
-
   public class LinearSmoothScroller extends androidx.recyclerview.widget.RecyclerView.SmoothScroller {
     ctor public LinearSmoothScroller(android.content.Context!);
     method public int calculateDtToFit(int, int, int, int, int);
@@ -811,7 +810,6 @@
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
   }
 
-
   public static class RecyclerView.SimpleOnItemTouchListener implements androidx.recyclerview.widget.RecyclerView.OnItemTouchListener {
     ctor public RecyclerView.SimpleOnItemTouchListener();
     method public boolean onInterceptTouchEvent(androidx.recyclerview.widget.RecyclerView, android.view.MotionEvent);
@@ -1038,6 +1036,5 @@
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
   }
 
-
 }
 
diff --git a/recyclerview/recyclerview/api/restricted_1.1.0-beta04.txt b/recyclerview/recyclerview/api/restricted_1.1.0-beta04.txt
index 7048ea8..6d5fda3 100644
--- a/recyclerview/recyclerview/api/restricted_1.1.0-beta04.txt
+++ b/recyclerview/recyclerview/api/restricted_1.1.0-beta04.txt
@@ -273,7 +273,6 @@
     field public boolean mIgnoreConsumed;
   }
 
-
   public class LinearSmoothScroller extends androidx.recyclerview.widget.RecyclerView.SmoothScroller {
     ctor public LinearSmoothScroller(android.content.Context!);
     method public int calculateDtToFit(int, int, int, int, int);
@@ -811,7 +810,6 @@
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
   }
 
-
   public static class RecyclerView.SimpleOnItemTouchListener implements androidx.recyclerview.widget.RecyclerView.OnItemTouchListener {
     ctor public RecyclerView.SimpleOnItemTouchListener();
     method public boolean onInterceptTouchEvent(androidx.recyclerview.widget.RecyclerView, android.view.MotionEvent);
@@ -1038,6 +1036,5 @@
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
   }
 
-
 }
 
diff --git a/recyclerview/recyclerview/api/restricted_1.1.0-beta05.txt b/recyclerview/recyclerview/api/restricted_1.1.0-beta05.txt
index 7048ea8..6d5fda3 100644
--- a/recyclerview/recyclerview/api/restricted_1.1.0-beta05.txt
+++ b/recyclerview/recyclerview/api/restricted_1.1.0-beta05.txt
@@ -273,7 +273,6 @@
     field public boolean mIgnoreConsumed;
   }
 
-
   public class LinearSmoothScroller extends androidx.recyclerview.widget.RecyclerView.SmoothScroller {
     ctor public LinearSmoothScroller(android.content.Context!);
     method public int calculateDtToFit(int, int, int, int, int);
@@ -811,7 +810,6 @@
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
   }
 
-
   public static class RecyclerView.SimpleOnItemTouchListener implements androidx.recyclerview.widget.RecyclerView.OnItemTouchListener {
     ctor public RecyclerView.SimpleOnItemTouchListener();
     method public boolean onInterceptTouchEvent(androidx.recyclerview.widget.RecyclerView, android.view.MotionEvent);
@@ -1038,6 +1036,5 @@
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
   }
 
-
 }
 
diff --git a/recyclerview/recyclerview/api/restricted_1.1.0-rc01.txt b/recyclerview/recyclerview/api/restricted_1.1.0-rc01.txt
index 7048ea8..6d5fda3 100644
--- a/recyclerview/recyclerview/api/restricted_1.1.0-rc01.txt
+++ b/recyclerview/recyclerview/api/restricted_1.1.0-rc01.txt
@@ -273,7 +273,6 @@
     field public boolean mIgnoreConsumed;
   }
 
-
   public class LinearSmoothScroller extends androidx.recyclerview.widget.RecyclerView.SmoothScroller {
     ctor public LinearSmoothScroller(android.content.Context!);
     method public int calculateDtToFit(int, int, int, int, int);
@@ -811,7 +810,6 @@
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
   }
 
-
   public static class RecyclerView.SimpleOnItemTouchListener implements androidx.recyclerview.widget.RecyclerView.OnItemTouchListener {
     ctor public RecyclerView.SimpleOnItemTouchListener();
     method public boolean onInterceptTouchEvent(androidx.recyclerview.widget.RecyclerView, android.view.MotionEvent);
@@ -1038,6 +1036,5 @@
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
   }
 
-
 }
 
diff --git a/recyclerview/recyclerview/api/restricted_1.2.0-alpha01.txt b/recyclerview/recyclerview/api/restricted_1.2.0-alpha01.txt
index 7048ea8..6d5fda3 100644
--- a/recyclerview/recyclerview/api/restricted_1.2.0-alpha01.txt
+++ b/recyclerview/recyclerview/api/restricted_1.2.0-alpha01.txt
@@ -273,7 +273,6 @@
     field public boolean mIgnoreConsumed;
   }
 
-
   public class LinearSmoothScroller extends androidx.recyclerview.widget.RecyclerView.SmoothScroller {
     ctor public LinearSmoothScroller(android.content.Context!);
     method public int calculateDtToFit(int, int, int, int, int);
@@ -811,7 +810,6 @@
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
   }
 
-
   public static class RecyclerView.SimpleOnItemTouchListener implements androidx.recyclerview.widget.RecyclerView.OnItemTouchListener {
     ctor public RecyclerView.SimpleOnItemTouchListener();
     method public boolean onInterceptTouchEvent(androidx.recyclerview.widget.RecyclerView, android.view.MotionEvent);
@@ -1038,6 +1036,5 @@
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
   }
 
-
 }
 
diff --git a/recyclerview/recyclerview/api/restricted_current.txt b/recyclerview/recyclerview/api/restricted_current.txt
index 7048ea8..6d5fda3 100644
--- a/recyclerview/recyclerview/api/restricted_current.txt
+++ b/recyclerview/recyclerview/api/restricted_current.txt
@@ -273,7 +273,6 @@
     field public boolean mIgnoreConsumed;
   }
 
-
   public class LinearSmoothScroller extends androidx.recyclerview.widget.RecyclerView.SmoothScroller {
     ctor public LinearSmoothScroller(android.content.Context!);
     method public int calculateDtToFit(int, int, int, int, int);
@@ -811,7 +810,6 @@
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
   }
 
-
   public static class RecyclerView.SimpleOnItemTouchListener implements androidx.recyclerview.widget.RecyclerView.OnItemTouchListener {
     ctor public RecyclerView.SimpleOnItemTouchListener();
     method public boolean onInterceptTouchEvent(androidx.recyclerview.widget.RecyclerView, android.view.MotionEvent);
@@ -1038,6 +1036,5 @@
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
   }
 
-
 }
 
diff --git a/remotecallback/api/restricted_1.0.0-alpha02.txt b/remotecallback/api/restricted_1.0.0-alpha02.txt
index 8bf05f9..104224b 100644
--- a/remotecallback/api/restricted_1.0.0-alpha02.txt
+++ b/remotecallback/api/restricted_1.0.0-alpha02.txt
@@ -59,12 +59,12 @@
   }
 
   public class RemoteCallback {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public RemoteCallback(android.content.Context, @androidx.remotecallback.RemoteCallback.RemoteCallbackType int, android.content.Intent, String, android.os.Bundle);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public RemoteCallback(android.content.Context, int, android.content.Intent, String, android.os.Bundle);
     method public static <T extends androidx.remotecallback.CallbackReceiver> T! create(Class<T!>!, android.content.Context!);
     method public android.os.Bundle! getArgumentBundle();
     method public String! getMethodName();
     method public String getReceiverClass();
-    method @androidx.remotecallback.RemoteCallback.RemoteCallbackType public int getType();
+    method public int getType();
     method public android.app.PendingIntent! toPendingIntent();
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String EXTRA_METHOD = "remotecallback.method";
     field public static final androidx.remotecallback.RemoteCallback! LOCAL;
@@ -72,6 +72,5 @@
     field public static final int TYPE_RECEIVER = 0; // 0x0
   }
 
-
 }
 
diff --git a/remotecallback/api/restricted_current.txt b/remotecallback/api/restricted_current.txt
index 8bf05f9..104224b 100644
--- a/remotecallback/api/restricted_current.txt
+++ b/remotecallback/api/restricted_current.txt
@@ -59,12 +59,12 @@
   }
 
   public class RemoteCallback {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public RemoteCallback(android.content.Context, @androidx.remotecallback.RemoteCallback.RemoteCallbackType int, android.content.Intent, String, android.os.Bundle);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public RemoteCallback(android.content.Context, int, android.content.Intent, String, android.os.Bundle);
     method public static <T extends androidx.remotecallback.CallbackReceiver> T! create(Class<T!>!, android.content.Context!);
     method public android.os.Bundle! getArgumentBundle();
     method public String! getMethodName();
     method public String getReceiverClass();
-    method @androidx.remotecallback.RemoteCallback.RemoteCallbackType public int getType();
+    method public int getType();
     method public android.app.PendingIntent! toPendingIntent();
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String EXTRA_METHOD = "remotecallback.method";
     field public static final androidx.remotecallback.RemoteCallback! LOCAL;
@@ -72,6 +72,5 @@
     field public static final int TYPE_RECEIVER = 0; // 0x0
   }
 
-
 }
 
diff --git a/slices/builders/api/restricted_1.1.0-alpha01.txt b/slices/builders/api/restricted_1.1.0-alpha01.txt
index 17a84fa..b666f762b 100644
--- a/slices/builders/api/restricted_1.1.0-alpha01.txt
+++ b/slices/builders/api/restricted_1.1.0-alpha01.txt
@@ -5,7 +5,7 @@
     ctor public GridRowBuilder();
     method public androidx.slice.builders.GridRowBuilder addCell(androidx.slice.builders.GridRowBuilder.CellBuilder);
     method public androidx.slice.builders.GridRowBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.GridRowBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.GridRowBuilder setLayoutDirection(int);
     method public androidx.slice.builders.GridRowBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.GridRowBuilder setSeeMoreAction(android.app.PendingIntent);
     method public androidx.slice.builders.GridRowBuilder setSeeMoreAction(androidx.remotecallback.RemoteCallback);
@@ -14,8 +14,8 @@
 
   public static class GridRowBuilder.CellBuilder {
     ctor public GridRowBuilder.CellBuilder();
-    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int);
-    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat?, @androidx.slice.builders.ListBuilder.ImageMode int, boolean);
+    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat, int);
+    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat?, int, boolean);
     method public androidx.slice.builders.GridRowBuilder.CellBuilder addText(CharSequence);
     method public androidx.slice.builders.GridRowBuilder.CellBuilder addText(CharSequence?, boolean);
     method public androidx.slice.builders.GridRowBuilder.CellBuilder addTitleText(CharSequence);
@@ -38,7 +38,7 @@
     method public androidx.slice.builders.ListBuilder setHeader(androidx.slice.builders.ListBuilder.HeaderBuilder);
     method public androidx.slice.builders.ListBuilder setIsError(boolean);
     method public androidx.slice.builders.ListBuilder setKeywords(java.util.Set<java.lang.String!>!);
-    method public androidx.slice.builders.ListBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder setSeeMoreAction(android.app.PendingIntent);
     method public androidx.slice.builders.ListBuilder setSeeMoreAction(androidx.remotecallback.RemoteCallback);
     method public androidx.slice.builders.ListBuilder setSeeMoreRow(androidx.slice.builders.ListBuilder.RowBuilder);
@@ -53,7 +53,7 @@
     ctor public ListBuilder.HeaderBuilder();
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public ListBuilder.HeaderBuilder(android.net.Uri!);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.ListBuilder.HeaderBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.HeaderBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setSubtitle(CharSequence);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setSubtitle(CharSequence, boolean);
@@ -63,13 +63,12 @@
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setTitle(CharSequence, boolean);
   }
 
-
   public static class ListBuilder.InputRangeBuilder {
     ctor public ListBuilder.InputRangeBuilder();
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setContentDescription(CharSequence);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setInputAction(android.app.PendingIntent);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setInputAction(androidx.remotecallback.RemoteCallback);
-    method public androidx.slice.builders.ListBuilder.InputRangeBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.InputRangeBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setMax(int);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setMin(int);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
@@ -79,11 +78,10 @@
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setValue(int);
   }
 
-
   public static class ListBuilder.RangeBuilder {
     ctor public ListBuilder.RangeBuilder();
     method public androidx.slice.builders.ListBuilder.RangeBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.ListBuilder.RangeBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.RangeBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.RangeBuilder setMax(int);
     method public androidx.slice.builders.ListBuilder.RangeBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RangeBuilder setSubtitle(CharSequence);
@@ -95,20 +93,20 @@
     ctor public ListBuilder.RowBuilder();
     ctor public ListBuilder.RowBuilder(android.net.Uri!);
     method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(long);
-    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int);
-    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat?, @androidx.slice.builders.ListBuilder.ImageMode int, boolean);
+    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat, int);
+    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat?, int, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.slice.builders.SliceAction, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.ListBuilder.RowBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.RowBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.RowBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RowBuilder setSubtitle(CharSequence);
     method public androidx.slice.builders.ListBuilder.RowBuilder setSubtitle(CharSequence?, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitle(CharSequence);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitle(CharSequence?, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(long);
-    method public androidx.slice.builders.ListBuilder.RowBuilder! setTitleItem(androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int);
-    method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.core.graphics.drawable.IconCompat?, @androidx.slice.builders.ListBuilder.ImageMode int, boolean);
+    method public androidx.slice.builders.ListBuilder.RowBuilder! setTitleItem(androidx.core.graphics.drawable.IconCompat, int);
+    method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.core.graphics.drawable.IconCompat?, int, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.slice.builders.SliceAction, boolean);
   }
@@ -134,7 +132,7 @@
     method public androidx.slice.builders.SelectionBuilder! setContentDescription(CharSequence?);
     method public androidx.slice.builders.SelectionBuilder! setInputAction(android.app.PendingIntent);
     method public androidx.slice.builders.SelectionBuilder! setInputAction(androidx.remotecallback.RemoteCallback);
-    method public androidx.slice.builders.SelectionBuilder! setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.SelectionBuilder! setLayoutDirection(int);
     method public androidx.slice.builders.SelectionBuilder! setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.SelectionBuilder! setSelectedOption(String!);
     method public androidx.slice.builders.SelectionBuilder! setSubtitle(CharSequence?);
@@ -142,13 +140,13 @@
   }
 
   @RequiresApi(19) public class SliceAction implements androidx.slice.core.SliceAction {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, CharSequence, boolean);
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, CharSequence, boolean);
-    method public static androidx.slice.builders.SliceAction! create(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
-    method public static androidx.slice.builders.SliceAction! create(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
-    method public static androidx.slice.builders.SliceAction! createDeeplink(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
-    method public static androidx.slice.builders.SliceAction! createDeeplink(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! create(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! create(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! createDeeplink(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! createDeeplink(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
     method public static androidx.slice.builders.SliceAction! createToggle(android.app.PendingIntent, CharSequence, boolean);
     method public static androidx.slice.builders.SliceAction! createToggle(androidx.remotecallback.RemoteCallback, CharSequence, boolean);
     method public static androidx.slice.builders.SliceAction! createToggle(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, CharSequence, boolean);
@@ -156,7 +154,7 @@
     method public android.app.PendingIntent getAction();
     method public CharSequence? getContentDescription();
     method public androidx.core.graphics.drawable.IconCompat? getIcon();
-    method @androidx.slice.builders.ListBuilder.ImageMode public int getImageMode();
+    method public int getImageMode();
     method public int getPriority();
     method public CharSequence getTitle();
     method public boolean isActivity();
@@ -174,80 +172,3 @@
 
 }
 
-package androidx.slice.builders.impl {
-
-
-  public static final class GridRowBuilderListV1Impl.CellBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method public void fillFrom(androidx.slice.builders.GridRowBuilder.CellBuilder!);
-  }
-
-
-
-
-  public static class ListBuilderImpl.HeaderBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-  public static class ListBuilderImpl.InputRangeBuilderImpl extends androidx.slice.builders.impl.ListBuilderImpl.RangeBuilderImpl {
-  }
-
-  public static class ListBuilderImpl.RangeBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method public void apply(androidx.slice.Slice.Builder!);
-    field protected CharSequence! mContentDescr;
-    field protected int mLayoutDir;
-    field protected int mMax;
-    field protected int mMin;
-    field protected androidx.slice.builders.SliceAction! mPrimaryAction;
-    field protected CharSequence! mSubtitle;
-    field protected CharSequence! mTitle;
-    field protected int mValue;
-    field protected boolean mValueSet;
-  }
-
-  public static class ListBuilderImpl.RowBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method protected void addEndItem(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-    method protected void setSubtitle(CharSequence!);
-    method protected void setTitleItem(androidx.core.graphics.drawable.IconCompat!, int);
-  }
-
-
-  public static final class MessagingBasicImpl.MessageBuilder extends androidx.slice.builders.impl.TemplateBuilderImpl implements androidx.slice.builders.impl.MessagingBuilder.MessageBuilder {
-    ctor public MessagingBasicImpl.MessageBuilder(androidx.slice.builders.impl.MessagingBasicImpl!);
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-
-  public static interface MessagingBuilder.MessageBuilder {
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-  }
-
-
-  public static final class MessagingListV1Impl.MessageBuilder extends androidx.slice.builders.impl.TemplateBuilderImpl implements androidx.slice.builders.impl.MessagingBuilder.MessageBuilder {
-    ctor public MessagingListV1Impl.MessageBuilder(androidx.slice.builders.impl.MessagingListV1Impl!);
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-
-  public static final class MessagingV1Impl.MessageBuilder extends androidx.slice.builders.impl.TemplateBuilderImpl implements androidx.slice.builders.impl.MessagingBuilder.MessageBuilder {
-    ctor public MessagingV1Impl.MessageBuilder(androidx.slice.builders.impl.MessagingV1Impl!);
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-
-
-
-
-}
-
diff --git a/slices/builders/api/restricted_1.1.0-alpha02.txt b/slices/builders/api/restricted_1.1.0-alpha02.txt
index 17a84fa..b666f762b 100644
--- a/slices/builders/api/restricted_1.1.0-alpha02.txt
+++ b/slices/builders/api/restricted_1.1.0-alpha02.txt
@@ -5,7 +5,7 @@
     ctor public GridRowBuilder();
     method public androidx.slice.builders.GridRowBuilder addCell(androidx.slice.builders.GridRowBuilder.CellBuilder);
     method public androidx.slice.builders.GridRowBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.GridRowBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.GridRowBuilder setLayoutDirection(int);
     method public androidx.slice.builders.GridRowBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.GridRowBuilder setSeeMoreAction(android.app.PendingIntent);
     method public androidx.slice.builders.GridRowBuilder setSeeMoreAction(androidx.remotecallback.RemoteCallback);
@@ -14,8 +14,8 @@
 
   public static class GridRowBuilder.CellBuilder {
     ctor public GridRowBuilder.CellBuilder();
-    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int);
-    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat?, @androidx.slice.builders.ListBuilder.ImageMode int, boolean);
+    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat, int);
+    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat?, int, boolean);
     method public androidx.slice.builders.GridRowBuilder.CellBuilder addText(CharSequence);
     method public androidx.slice.builders.GridRowBuilder.CellBuilder addText(CharSequence?, boolean);
     method public androidx.slice.builders.GridRowBuilder.CellBuilder addTitleText(CharSequence);
@@ -38,7 +38,7 @@
     method public androidx.slice.builders.ListBuilder setHeader(androidx.slice.builders.ListBuilder.HeaderBuilder);
     method public androidx.slice.builders.ListBuilder setIsError(boolean);
     method public androidx.slice.builders.ListBuilder setKeywords(java.util.Set<java.lang.String!>!);
-    method public androidx.slice.builders.ListBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder setSeeMoreAction(android.app.PendingIntent);
     method public androidx.slice.builders.ListBuilder setSeeMoreAction(androidx.remotecallback.RemoteCallback);
     method public androidx.slice.builders.ListBuilder setSeeMoreRow(androidx.slice.builders.ListBuilder.RowBuilder);
@@ -53,7 +53,7 @@
     ctor public ListBuilder.HeaderBuilder();
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public ListBuilder.HeaderBuilder(android.net.Uri!);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.ListBuilder.HeaderBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.HeaderBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setSubtitle(CharSequence);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setSubtitle(CharSequence, boolean);
@@ -63,13 +63,12 @@
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setTitle(CharSequence, boolean);
   }
 
-
   public static class ListBuilder.InputRangeBuilder {
     ctor public ListBuilder.InputRangeBuilder();
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setContentDescription(CharSequence);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setInputAction(android.app.PendingIntent);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setInputAction(androidx.remotecallback.RemoteCallback);
-    method public androidx.slice.builders.ListBuilder.InputRangeBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.InputRangeBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setMax(int);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setMin(int);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
@@ -79,11 +78,10 @@
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setValue(int);
   }
 
-
   public static class ListBuilder.RangeBuilder {
     ctor public ListBuilder.RangeBuilder();
     method public androidx.slice.builders.ListBuilder.RangeBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.ListBuilder.RangeBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.RangeBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.RangeBuilder setMax(int);
     method public androidx.slice.builders.ListBuilder.RangeBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RangeBuilder setSubtitle(CharSequence);
@@ -95,20 +93,20 @@
     ctor public ListBuilder.RowBuilder();
     ctor public ListBuilder.RowBuilder(android.net.Uri!);
     method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(long);
-    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int);
-    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat?, @androidx.slice.builders.ListBuilder.ImageMode int, boolean);
+    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat, int);
+    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat?, int, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.slice.builders.SliceAction, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.ListBuilder.RowBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.RowBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.RowBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RowBuilder setSubtitle(CharSequence);
     method public androidx.slice.builders.ListBuilder.RowBuilder setSubtitle(CharSequence?, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitle(CharSequence);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitle(CharSequence?, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(long);
-    method public androidx.slice.builders.ListBuilder.RowBuilder! setTitleItem(androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int);
-    method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.core.graphics.drawable.IconCompat?, @androidx.slice.builders.ListBuilder.ImageMode int, boolean);
+    method public androidx.slice.builders.ListBuilder.RowBuilder! setTitleItem(androidx.core.graphics.drawable.IconCompat, int);
+    method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.core.graphics.drawable.IconCompat?, int, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.slice.builders.SliceAction, boolean);
   }
@@ -134,7 +132,7 @@
     method public androidx.slice.builders.SelectionBuilder! setContentDescription(CharSequence?);
     method public androidx.slice.builders.SelectionBuilder! setInputAction(android.app.PendingIntent);
     method public androidx.slice.builders.SelectionBuilder! setInputAction(androidx.remotecallback.RemoteCallback);
-    method public androidx.slice.builders.SelectionBuilder! setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.SelectionBuilder! setLayoutDirection(int);
     method public androidx.slice.builders.SelectionBuilder! setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.SelectionBuilder! setSelectedOption(String!);
     method public androidx.slice.builders.SelectionBuilder! setSubtitle(CharSequence?);
@@ -142,13 +140,13 @@
   }
 
   @RequiresApi(19) public class SliceAction implements androidx.slice.core.SliceAction {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, CharSequence, boolean);
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, CharSequence, boolean);
-    method public static androidx.slice.builders.SliceAction! create(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
-    method public static androidx.slice.builders.SliceAction! create(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
-    method public static androidx.slice.builders.SliceAction! createDeeplink(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
-    method public static androidx.slice.builders.SliceAction! createDeeplink(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! create(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! create(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! createDeeplink(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! createDeeplink(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
     method public static androidx.slice.builders.SliceAction! createToggle(android.app.PendingIntent, CharSequence, boolean);
     method public static androidx.slice.builders.SliceAction! createToggle(androidx.remotecallback.RemoteCallback, CharSequence, boolean);
     method public static androidx.slice.builders.SliceAction! createToggle(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, CharSequence, boolean);
@@ -156,7 +154,7 @@
     method public android.app.PendingIntent getAction();
     method public CharSequence? getContentDescription();
     method public androidx.core.graphics.drawable.IconCompat? getIcon();
-    method @androidx.slice.builders.ListBuilder.ImageMode public int getImageMode();
+    method public int getImageMode();
     method public int getPriority();
     method public CharSequence getTitle();
     method public boolean isActivity();
@@ -174,80 +172,3 @@
 
 }
 
-package androidx.slice.builders.impl {
-
-
-  public static final class GridRowBuilderListV1Impl.CellBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method public void fillFrom(androidx.slice.builders.GridRowBuilder.CellBuilder!);
-  }
-
-
-
-
-  public static class ListBuilderImpl.HeaderBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-  public static class ListBuilderImpl.InputRangeBuilderImpl extends androidx.slice.builders.impl.ListBuilderImpl.RangeBuilderImpl {
-  }
-
-  public static class ListBuilderImpl.RangeBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method public void apply(androidx.slice.Slice.Builder!);
-    field protected CharSequence! mContentDescr;
-    field protected int mLayoutDir;
-    field protected int mMax;
-    field protected int mMin;
-    field protected androidx.slice.builders.SliceAction! mPrimaryAction;
-    field protected CharSequence! mSubtitle;
-    field protected CharSequence! mTitle;
-    field protected int mValue;
-    field protected boolean mValueSet;
-  }
-
-  public static class ListBuilderImpl.RowBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method protected void addEndItem(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-    method protected void setSubtitle(CharSequence!);
-    method protected void setTitleItem(androidx.core.graphics.drawable.IconCompat!, int);
-  }
-
-
-  public static final class MessagingBasicImpl.MessageBuilder extends androidx.slice.builders.impl.TemplateBuilderImpl implements androidx.slice.builders.impl.MessagingBuilder.MessageBuilder {
-    ctor public MessagingBasicImpl.MessageBuilder(androidx.slice.builders.impl.MessagingBasicImpl!);
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-
-  public static interface MessagingBuilder.MessageBuilder {
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-  }
-
-
-  public static final class MessagingListV1Impl.MessageBuilder extends androidx.slice.builders.impl.TemplateBuilderImpl implements androidx.slice.builders.impl.MessagingBuilder.MessageBuilder {
-    ctor public MessagingListV1Impl.MessageBuilder(androidx.slice.builders.impl.MessagingListV1Impl!);
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-
-  public static final class MessagingV1Impl.MessageBuilder extends androidx.slice.builders.impl.TemplateBuilderImpl implements androidx.slice.builders.impl.MessagingBuilder.MessageBuilder {
-    ctor public MessagingV1Impl.MessageBuilder(androidx.slice.builders.impl.MessagingV1Impl!);
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-
-
-
-
-}
-
diff --git a/slices/builders/api/restricted_current.txt b/slices/builders/api/restricted_current.txt
index 17a84fa..b666f762b 100644
--- a/slices/builders/api/restricted_current.txt
+++ b/slices/builders/api/restricted_current.txt
@@ -5,7 +5,7 @@
     ctor public GridRowBuilder();
     method public androidx.slice.builders.GridRowBuilder addCell(androidx.slice.builders.GridRowBuilder.CellBuilder);
     method public androidx.slice.builders.GridRowBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.GridRowBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.GridRowBuilder setLayoutDirection(int);
     method public androidx.slice.builders.GridRowBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.GridRowBuilder setSeeMoreAction(android.app.PendingIntent);
     method public androidx.slice.builders.GridRowBuilder setSeeMoreAction(androidx.remotecallback.RemoteCallback);
@@ -14,8 +14,8 @@
 
   public static class GridRowBuilder.CellBuilder {
     ctor public GridRowBuilder.CellBuilder();
-    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int);
-    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat?, @androidx.slice.builders.ListBuilder.ImageMode int, boolean);
+    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat, int);
+    method public androidx.slice.builders.GridRowBuilder.CellBuilder addImage(androidx.core.graphics.drawable.IconCompat?, int, boolean);
     method public androidx.slice.builders.GridRowBuilder.CellBuilder addText(CharSequence);
     method public androidx.slice.builders.GridRowBuilder.CellBuilder addText(CharSequence?, boolean);
     method public androidx.slice.builders.GridRowBuilder.CellBuilder addTitleText(CharSequence);
@@ -38,7 +38,7 @@
     method public androidx.slice.builders.ListBuilder setHeader(androidx.slice.builders.ListBuilder.HeaderBuilder);
     method public androidx.slice.builders.ListBuilder setIsError(boolean);
     method public androidx.slice.builders.ListBuilder setKeywords(java.util.Set<java.lang.String!>!);
-    method public androidx.slice.builders.ListBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder setSeeMoreAction(android.app.PendingIntent);
     method public androidx.slice.builders.ListBuilder setSeeMoreAction(androidx.remotecallback.RemoteCallback);
     method public androidx.slice.builders.ListBuilder setSeeMoreRow(androidx.slice.builders.ListBuilder.RowBuilder);
@@ -53,7 +53,7 @@
     ctor public ListBuilder.HeaderBuilder();
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public ListBuilder.HeaderBuilder(android.net.Uri!);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.ListBuilder.HeaderBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.HeaderBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setSubtitle(CharSequence);
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setSubtitle(CharSequence, boolean);
@@ -63,13 +63,12 @@
     method public androidx.slice.builders.ListBuilder.HeaderBuilder setTitle(CharSequence, boolean);
   }
 
-
   public static class ListBuilder.InputRangeBuilder {
     ctor public ListBuilder.InputRangeBuilder();
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setContentDescription(CharSequence);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setInputAction(android.app.PendingIntent);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setInputAction(androidx.remotecallback.RemoteCallback);
-    method public androidx.slice.builders.ListBuilder.InputRangeBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.InputRangeBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setMax(int);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setMin(int);
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
@@ -79,11 +78,10 @@
     method public androidx.slice.builders.ListBuilder.InputRangeBuilder setValue(int);
   }
 
-
   public static class ListBuilder.RangeBuilder {
     ctor public ListBuilder.RangeBuilder();
     method public androidx.slice.builders.ListBuilder.RangeBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.ListBuilder.RangeBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.RangeBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.RangeBuilder setMax(int);
     method public androidx.slice.builders.ListBuilder.RangeBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RangeBuilder setSubtitle(CharSequence);
@@ -95,20 +93,20 @@
     ctor public ListBuilder.RowBuilder();
     ctor public ListBuilder.RowBuilder(android.net.Uri!);
     method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(long);
-    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int);
-    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat?, @androidx.slice.builders.ListBuilder.ImageMode int, boolean);
+    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat, int);
+    method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.core.graphics.drawable.IconCompat?, int, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RowBuilder addEndItem(androidx.slice.builders.SliceAction, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setContentDescription(CharSequence);
-    method public androidx.slice.builders.ListBuilder.RowBuilder setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.ListBuilder.RowBuilder setLayoutDirection(int);
     method public androidx.slice.builders.ListBuilder.RowBuilder setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RowBuilder setSubtitle(CharSequence);
     method public androidx.slice.builders.ListBuilder.RowBuilder setSubtitle(CharSequence?, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitle(CharSequence);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitle(CharSequence?, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(long);
-    method public androidx.slice.builders.ListBuilder.RowBuilder! setTitleItem(androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int);
-    method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.core.graphics.drawable.IconCompat?, @androidx.slice.builders.ListBuilder.ImageMode int, boolean);
+    method public androidx.slice.builders.ListBuilder.RowBuilder! setTitleItem(androidx.core.graphics.drawable.IconCompat, int);
+    method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.core.graphics.drawable.IconCompat?, int, boolean);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.ListBuilder.RowBuilder setTitleItem(androidx.slice.builders.SliceAction, boolean);
   }
@@ -134,7 +132,7 @@
     method public androidx.slice.builders.SelectionBuilder! setContentDescription(CharSequence?);
     method public androidx.slice.builders.SelectionBuilder! setInputAction(android.app.PendingIntent);
     method public androidx.slice.builders.SelectionBuilder! setInputAction(androidx.remotecallback.RemoteCallback);
-    method public androidx.slice.builders.SelectionBuilder! setLayoutDirection(@androidx.slice.builders.ListBuilder.LayoutDirection int);
+    method public androidx.slice.builders.SelectionBuilder! setLayoutDirection(int);
     method public androidx.slice.builders.SelectionBuilder! setPrimaryAction(androidx.slice.builders.SliceAction);
     method public androidx.slice.builders.SelectionBuilder! setSelectedOption(String!);
     method public androidx.slice.builders.SelectionBuilder! setSubtitle(CharSequence?);
@@ -142,13 +140,13 @@
   }
 
   @RequiresApi(19) public class SliceAction implements androidx.slice.core.SliceAction {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, CharSequence, boolean);
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceAction(android.app.PendingIntent, CharSequence, boolean);
-    method public static androidx.slice.builders.SliceAction! create(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
-    method public static androidx.slice.builders.SliceAction! create(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
-    method public static androidx.slice.builders.SliceAction! createDeeplink(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
-    method public static androidx.slice.builders.SliceAction! createDeeplink(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, @androidx.slice.builders.ListBuilder.ImageMode int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! create(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! create(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! createDeeplink(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
+    method public static androidx.slice.builders.SliceAction! createDeeplink(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence);
     method public static androidx.slice.builders.SliceAction! createToggle(android.app.PendingIntent, CharSequence, boolean);
     method public static androidx.slice.builders.SliceAction! createToggle(androidx.remotecallback.RemoteCallback, CharSequence, boolean);
     method public static androidx.slice.builders.SliceAction! createToggle(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat, CharSequence, boolean);
@@ -156,7 +154,7 @@
     method public android.app.PendingIntent getAction();
     method public CharSequence? getContentDescription();
     method public androidx.core.graphics.drawable.IconCompat? getIcon();
-    method @androidx.slice.builders.ListBuilder.ImageMode public int getImageMode();
+    method public int getImageMode();
     method public int getPriority();
     method public CharSequence getTitle();
     method public boolean isActivity();
@@ -174,80 +172,3 @@
 
 }
 
-package androidx.slice.builders.impl {
-
-
-  public static final class GridRowBuilderListV1Impl.CellBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method public void fillFrom(androidx.slice.builders.GridRowBuilder.CellBuilder!);
-  }
-
-
-
-
-  public static class ListBuilderImpl.HeaderBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-  public static class ListBuilderImpl.InputRangeBuilderImpl extends androidx.slice.builders.impl.ListBuilderImpl.RangeBuilderImpl {
-  }
-
-  public static class ListBuilderImpl.RangeBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method public void apply(androidx.slice.Slice.Builder!);
-    field protected CharSequence! mContentDescr;
-    field protected int mLayoutDir;
-    field protected int mMax;
-    field protected int mMin;
-    field protected androidx.slice.builders.SliceAction! mPrimaryAction;
-    field protected CharSequence! mSubtitle;
-    field protected CharSequence! mTitle;
-    field protected int mValue;
-    field protected boolean mValueSet;
-  }
-
-  public static class ListBuilderImpl.RowBuilderImpl extends androidx.slice.builders.impl.TemplateBuilderImpl {
-    method protected void addEndItem(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-    method protected void setSubtitle(CharSequence!);
-    method protected void setTitleItem(androidx.core.graphics.drawable.IconCompat!, int);
-  }
-
-
-  public static final class MessagingBasicImpl.MessageBuilder extends androidx.slice.builders.impl.TemplateBuilderImpl implements androidx.slice.builders.impl.MessagingBuilder.MessageBuilder {
-    ctor public MessagingBasicImpl.MessageBuilder(androidx.slice.builders.impl.MessagingBasicImpl!);
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-
-  public static interface MessagingBuilder.MessageBuilder {
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-  }
-
-
-  public static final class MessagingListV1Impl.MessageBuilder extends androidx.slice.builders.impl.TemplateBuilderImpl implements androidx.slice.builders.impl.MessagingBuilder.MessageBuilder {
-    ctor public MessagingListV1Impl.MessageBuilder(androidx.slice.builders.impl.MessagingListV1Impl!);
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-
-  public static final class MessagingV1Impl.MessageBuilder extends androidx.slice.builders.impl.TemplateBuilderImpl implements androidx.slice.builders.impl.MessagingBuilder.MessageBuilder {
-    ctor public MessagingV1Impl.MessageBuilder(androidx.slice.builders.impl.MessagingV1Impl!);
-    method @RequiresApi(23) public void addSource(android.graphics.drawable.Icon!);
-    method public void addText(CharSequence!);
-    method public void addTimestamp(long);
-    method public void apply(androidx.slice.Slice.Builder!);
-  }
-
-
-
-
-
-}
-
diff --git a/slices/builders/ktx/api/restricted_1.0.0-alpha08.txt b/slices/builders/ktx/api/restricted_1.0.0-alpha08.txt
index 9558146..d1c4426 100644
--- a/slices/builders/ktx/api/restricted_1.0.0-alpha08.txt
+++ b/slices/builders/ktx/api/restricted_1.0.0-alpha08.txt
@@ -1,11 +1,11 @@
 // Signature format: 3.0
 package androidx.slice.builders {
 
-  @androidx.slice.builders.SliceMarker public final class CellBuilderDsl extends androidx.slice.builders.GridRowBuilder.CellBuilder {
+  public final class CellBuilderDsl extends androidx.slice.builders.GridRowBuilder.CellBuilder {
     ctor public CellBuilderDsl();
   }
 
-  @androidx.slice.builders.SliceMarker public final class GridRowBuilderDsl extends androidx.slice.builders.GridRowBuilder {
+  public final class GridRowBuilderDsl extends androidx.slice.builders.GridRowBuilder {
     ctor public GridRowBuilderDsl();
   }
 
@@ -15,15 +15,15 @@
     method public static inline androidx.slice.builders.GridRowBuilder seeMoreCell(androidx.slice.builders.GridRowBuilderDsl, kotlin.jvm.functions.Function1<? super androidx.slice.builders.CellBuilderDsl,kotlin.Unit> buildCell);
   }
 
-  @androidx.slice.builders.SliceMarker public final class HeaderBuilderDsl extends androidx.slice.builders.ListBuilder.HeaderBuilder {
+  public final class HeaderBuilderDsl extends androidx.slice.builders.ListBuilder.HeaderBuilder {
     ctor public HeaderBuilderDsl();
   }
 
-  @androidx.slice.builders.SliceMarker public final class InputRangeBuilderDsl extends androidx.slice.builders.ListBuilder.InputRangeBuilder {
+  public final class InputRangeBuilderDsl extends androidx.slice.builders.ListBuilder.InputRangeBuilder {
     ctor public InputRangeBuilderDsl();
   }
 
-  @androidx.slice.builders.SliceMarker public final class ListBuilderDsl extends androidx.slice.builders.ListBuilder {
+  public final class ListBuilderDsl extends androidx.slice.builders.ListBuilder {
     ctor public ListBuilderDsl(android.content.Context context, android.net.Uri uri, long ttl);
   }
 
@@ -40,14 +40,13 @@
     method public static androidx.slice.builders.SliceAction toggleSliceAction(android.app.PendingIntent pendingIntent, androidx.core.graphics.drawable.IconCompat? icon = null, CharSequence title, boolean isChecked);
   }
 
-  @androidx.slice.builders.SliceMarker public final class RangeBuilderDsl extends androidx.slice.builders.ListBuilder.RangeBuilder {
+  public final class RangeBuilderDsl extends androidx.slice.builders.ListBuilder.RangeBuilder {
     ctor public RangeBuilderDsl();
   }
 
-  @androidx.slice.builders.SliceMarker public final class RowBuilderDsl extends androidx.slice.builders.ListBuilder.RowBuilder {
+  public final class RowBuilderDsl extends androidx.slice.builders.ListBuilder.RowBuilder {
     ctor public RowBuilderDsl();
   }
 
-
 }
 
diff --git a/slices/builders/ktx/api/restricted_current.txt b/slices/builders/ktx/api/restricted_current.txt
index 9558146..d1c4426 100644
--- a/slices/builders/ktx/api/restricted_current.txt
+++ b/slices/builders/ktx/api/restricted_current.txt
@@ -1,11 +1,11 @@
 // Signature format: 3.0
 package androidx.slice.builders {
 
-  @androidx.slice.builders.SliceMarker public final class CellBuilderDsl extends androidx.slice.builders.GridRowBuilder.CellBuilder {
+  public final class CellBuilderDsl extends androidx.slice.builders.GridRowBuilder.CellBuilder {
     ctor public CellBuilderDsl();
   }
 
-  @androidx.slice.builders.SliceMarker public final class GridRowBuilderDsl extends androidx.slice.builders.GridRowBuilder {
+  public final class GridRowBuilderDsl extends androidx.slice.builders.GridRowBuilder {
     ctor public GridRowBuilderDsl();
   }
 
@@ -15,15 +15,15 @@
     method public static inline androidx.slice.builders.GridRowBuilder seeMoreCell(androidx.slice.builders.GridRowBuilderDsl, kotlin.jvm.functions.Function1<? super androidx.slice.builders.CellBuilderDsl,kotlin.Unit> buildCell);
   }
 
-  @androidx.slice.builders.SliceMarker public final class HeaderBuilderDsl extends androidx.slice.builders.ListBuilder.HeaderBuilder {
+  public final class HeaderBuilderDsl extends androidx.slice.builders.ListBuilder.HeaderBuilder {
     ctor public HeaderBuilderDsl();
   }
 
-  @androidx.slice.builders.SliceMarker public final class InputRangeBuilderDsl extends androidx.slice.builders.ListBuilder.InputRangeBuilder {
+  public final class InputRangeBuilderDsl extends androidx.slice.builders.ListBuilder.InputRangeBuilder {
     ctor public InputRangeBuilderDsl();
   }
 
-  @androidx.slice.builders.SliceMarker public final class ListBuilderDsl extends androidx.slice.builders.ListBuilder {
+  public final class ListBuilderDsl extends androidx.slice.builders.ListBuilder {
     ctor public ListBuilderDsl(android.content.Context context, android.net.Uri uri, long ttl);
   }
 
@@ -40,14 +40,13 @@
     method public static androidx.slice.builders.SliceAction toggleSliceAction(android.app.PendingIntent pendingIntent, androidx.core.graphics.drawable.IconCompat? icon = null, CharSequence title, boolean isChecked);
   }
 
-  @androidx.slice.builders.SliceMarker public final class RangeBuilderDsl extends androidx.slice.builders.ListBuilder.RangeBuilder {
+  public final class RangeBuilderDsl extends androidx.slice.builders.ListBuilder.RangeBuilder {
     ctor public RangeBuilderDsl();
   }
 
-  @androidx.slice.builders.SliceMarker public final class RowBuilderDsl extends androidx.slice.builders.ListBuilder.RowBuilder {
+  public final class RowBuilderDsl extends androidx.slice.builders.ListBuilder.RowBuilder {
     ctor public RowBuilderDsl();
   }
 
-
 }
 
diff --git a/slices/core/api/restricted_1.1.0-alpha01.txt b/slices/core/api/restricted_1.1.0-alpha01.txt
index ea931d8..452751e 100644
--- a/slices/core/api/restricted_1.1.0-alpha01.txt
+++ b/slices/core/api/restricted_1.1.0-alpha01.txt
@@ -7,11 +7,11 @@
 
   @RequiresApi(19) public final class Slice extends androidx.versionedparcelable.CustomVersionedParcelable implements androidx.versionedparcelable.VersionedParcelable {
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.slice.Slice? bindSlice(android.content.Context!, android.net.Uri, java.util.Set<androidx.slice.SliceSpec!>!);
-    method @androidx.slice.Slice.SliceHint public java.util.List<java.lang.String!>! getHints();
+    method public java.util.List<java.lang.String!>! getHints();
     method public java.util.List<androidx.slice.SliceItem!>! getItems();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.SliceSpec? getSpec();
     method public android.net.Uri! getUri();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean hasHint(@androidx.slice.Slice.SliceHint String!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean hasHint(String!);
     field public static final String EXTRA_SELECTION = "android.app.slice.extra.SELECTION";
   }
 
@@ -20,46 +20,45 @@
     ctor public Slice.Builder(androidx.slice.Slice.Builder);
     method public androidx.slice.Slice.Builder! addAction(android.app.PendingIntent, androidx.slice.Slice, String?);
     method public androidx.slice.Slice.Builder! addAction(androidx.slice.SliceItem.ActionHandler, androidx.slice.Slice, String?);
-    method public androidx.slice.Slice.Builder! addHints(@androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addHints(@androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method public androidx.slice.Slice.Builder! addInt(int, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addInt(int, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addHints(java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addHints(java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addInt(int, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addInt(int, String?, java.util.List<java.lang.String!>!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.slice.Slice.Builder! addItem(androidx.slice.SliceItem!);
-    method public androidx.slice.Slice.Builder! addLong(long, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addLong(long, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addLong(long, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addLong(long, String?, java.util.List<java.lang.String!>!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, java.util.List<java.lang.String!>!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, java.lang.String!...);
     method public androidx.slice.Slice.Builder! addSubSlice(androidx.slice.Slice);
     method public androidx.slice.Slice.Builder! addSubSlice(androidx.slice.Slice, String!);
-    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method @Deprecated public androidx.slice.Slice.Builder! addTimestamp(long, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addTimestamp(long, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, java.util.List<java.lang.String!>!);
+    method @Deprecated public androidx.slice.Slice.Builder! addTimestamp(long, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addTimestamp(long, String?, java.util.List<java.lang.String!>!);
     method public androidx.slice.Slice! build();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! setSpec(androidx.slice.SliceSpec!);
   }
 
-
   @RequiresApi(28) public class SliceConvert {
     method public static android.app.slice.Slice! unwrap(androidx.slice.Slice!);
     method public static androidx.slice.Slice! wrap(android.app.slice.Slice!, android.content.Context!);
   }
 
   @RequiresApi(19) public final class SliceItem extends androidx.versionedparcelable.CustomVersionedParcelable {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, @androidx.slice.SliceItem.SliceType String!, String!, @androidx.slice.Slice.SliceHint String![]!);
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, @androidx.slice.SliceItem.SliceType String!, String!, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, String!, String!, String![]!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, String!, String!, java.util.List<java.lang.String!>!);
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem();
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(android.app.PendingIntent!, androidx.slice.Slice!, String!, String!, @androidx.slice.Slice.SliceHint String![]!);
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(androidx.slice.SliceItem.ActionHandler!, androidx.slice.Slice!, String!, String!, @androidx.slice.Slice.SliceHint String![]!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public void addHint(@androidx.slice.Slice.SliceHint String!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(android.app.PendingIntent!, androidx.slice.Slice!, String!, String!, String![]!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(androidx.slice.SliceItem.ActionHandler!, androidx.slice.Slice!, String!, String!, String![]!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public void addHint(String!);
     method public static android.text.ParcelableSpan createSensitiveSpan();
     method public void fireAction(android.content.Context?, android.content.Intent?) throws android.app.PendingIntent.CanceledException;
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean fireActionInternal(android.content.Context?, android.content.Intent?) throws android.app.PendingIntent.CanceledException;
     method public android.app.PendingIntent! getAction();
-    method @androidx.slice.SliceItem.SliceType public String! getFormat();
-    method @androidx.slice.Slice.SliceHint public java.util.List<java.lang.String!> getHints();
+    method public String! getFormat();
+    method public java.util.List<java.lang.String!> getHints();
     method public androidx.core.graphics.drawable.IconCompat! getIcon();
     method public int getInt();
     method public long getLong();
@@ -69,26 +68,14 @@
     method public androidx.slice.Slice! getSlice();
     method public String! getSubType();
     method public CharSequence! getText();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public boolean hasAnyHints(@androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public boolean hasHint(@androidx.slice.Slice.SliceHint String!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public boolean hasAnyHints(java.lang.String!...);
+    method public boolean hasHint(String!);
   }
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface SliceItem.ActionHandler {
     method public void onAction(androidx.slice.SliceItem!, android.content.Context!, android.content.Intent!);
   }
 
-
-
-  public static interface SliceItemHolder.HolderHandler {
-    method public void handle(androidx.slice.SliceItemHolder!, String!);
-  }
-
-  public static class SliceItemHolder.SliceItemPool {
-    ctor public SliceItemHolder.SliceItemPool();
-    method public androidx.slice.SliceItemHolder! get();
-    method public void release(androidx.slice.SliceItemHolder!);
-  }
-
   @RequiresApi(19) public abstract class SliceManager {
     method public abstract int checkSlicePermission(android.net.Uri, int, int);
     method public static androidx.slice.SliceManager getInstance(android.content.Context);
@@ -108,6 +95,7 @@
     method @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static java.util.Set<androidx.slice.SliceSpec!>! getCurrentSpecs();
     method @RequiresApi(19) public java.util.List<android.net.Uri!> getPinnedSlices();
     method public final String! getType(android.net.Uri!);
+    method @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) public Object! getWrapper();
     method public final android.net.Uri? insert(android.net.Uri, android.content.ContentValues?);
     method @RequiresApi(19) public abstract androidx.slice.Slice! onBindSlice(android.net.Uri!);
     method public final boolean onCreate();
@@ -152,16 +140,6 @@
 
 package androidx.slice.compat {
 
-
-  public static class CompatPermissionManager.PermissionState {
-    method public String! getKey();
-    method public boolean hasAccess(java.util.List<java.lang.String!>!);
-    method public boolean hasAllPermissions();
-    method public java.util.Set<java.lang.String!>! toPersistable();
-  }
-
-
-
   @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class SliceProviderCompat {
     ctor public SliceProviderCompat(androidx.slice.SliceProvider!, androidx.slice.compat.CompatPermissionManager!, android.content.Context!);
     method public static void addSpecs(android.os.Bundle!, java.util.Set<androidx.slice.SliceSpec!>!);
@@ -204,12 +182,6 @@
     field public static final String PERMS_PREFIX = "slice_perms_";
   }
 
-
-  @RequiresApi(28) public static class SliceProviderWrapperContainer.SliceProviderWrapper extends android.app.slice.SliceProvider {
-    ctor public SliceProviderWrapperContainer.SliceProviderWrapper(androidx.slice.SliceProvider!, String![]!);
-    method public boolean onCreate();
-  }
-
 }
 
 package androidx.slice.core {
diff --git a/slices/core/api/restricted_1.1.0-alpha02.txt b/slices/core/api/restricted_1.1.0-alpha02.txt
index a074e4a..0d361e3 100644
--- a/slices/core/api/restricted_1.1.0-alpha02.txt
+++ b/slices/core/api/restricted_1.1.0-alpha02.txt
@@ -7,11 +7,11 @@
 
   @RequiresApi(19) public final class Slice extends androidx.versionedparcelable.CustomVersionedParcelable implements androidx.versionedparcelable.VersionedParcelable {
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.slice.Slice? bindSlice(android.content.Context!, android.net.Uri, java.util.Set<androidx.slice.SliceSpec!>!);
-    method @androidx.slice.Slice.SliceHint public java.util.List<java.lang.String!>! getHints();
+    method public java.util.List<java.lang.String!>! getHints();
     method public java.util.List<androidx.slice.SliceItem!>! getItems();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.SliceSpec? getSpec();
     method public android.net.Uri! getUri();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean hasHint(@androidx.slice.Slice.SliceHint String!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean hasHint(String!);
     field public static final String EXTRA_SELECTION = "android.app.slice.extra.SELECTION";
   }
 
@@ -20,46 +20,45 @@
     ctor public Slice.Builder(androidx.slice.Slice.Builder);
     method public androidx.slice.Slice.Builder! addAction(android.app.PendingIntent, androidx.slice.Slice, String?);
     method public androidx.slice.Slice.Builder! addAction(androidx.slice.SliceItem.ActionHandler, androidx.slice.Slice, String?);
-    method public androidx.slice.Slice.Builder! addHints(@androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addHints(@androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method public androidx.slice.Slice.Builder! addInt(int, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addInt(int, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addHints(java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addHints(java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addInt(int, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addInt(int, String?, java.util.List<java.lang.String!>!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.slice.Slice.Builder! addItem(androidx.slice.SliceItem!);
-    method public androidx.slice.Slice.Builder! addLong(long, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addLong(long, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addLong(long, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addLong(long, String?, java.util.List<java.lang.String!>!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, java.util.List<java.lang.String!>!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, java.lang.String!...);
     method public androidx.slice.Slice.Builder! addSubSlice(androidx.slice.Slice);
     method public androidx.slice.Slice.Builder! addSubSlice(androidx.slice.Slice, String!);
-    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method @Deprecated public androidx.slice.Slice.Builder! addTimestamp(long, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addTimestamp(long, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, java.util.List<java.lang.String!>!);
+    method @Deprecated public androidx.slice.Slice.Builder! addTimestamp(long, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addTimestamp(long, String?, java.util.List<java.lang.String!>!);
     method public androidx.slice.Slice! build();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! setSpec(androidx.slice.SliceSpec!);
   }
 
-
   @RequiresApi(28) public class SliceConvert {
     method public static android.app.slice.Slice! unwrap(androidx.slice.Slice!);
     method public static androidx.slice.Slice! wrap(android.app.slice.Slice!, android.content.Context!);
   }
 
   @RequiresApi(19) public final class SliceItem extends androidx.versionedparcelable.CustomVersionedParcelable {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, @androidx.slice.SliceItem.SliceType String!, String!, @androidx.slice.Slice.SliceHint String![]!);
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, @androidx.slice.SliceItem.SliceType String!, String!, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, String!, String!, String![]!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, String!, String!, java.util.List<java.lang.String!>!);
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem();
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(android.app.PendingIntent!, androidx.slice.Slice!, String!, String!, @androidx.slice.Slice.SliceHint String![]!);
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(androidx.slice.SliceItem.ActionHandler!, androidx.slice.Slice!, String!, String!, @androidx.slice.Slice.SliceHint String![]!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public void addHint(@androidx.slice.Slice.SliceHint String!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(android.app.PendingIntent!, androidx.slice.Slice!, String!, String!, String![]!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(androidx.slice.SliceItem.ActionHandler!, androidx.slice.Slice!, String!, String!, String![]!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public void addHint(String!);
     method public static android.text.ParcelableSpan createSensitiveSpan();
     method public void fireAction(android.content.Context?, android.content.Intent?) throws android.app.PendingIntent.CanceledException;
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean fireActionInternal(android.content.Context?, android.content.Intent?) throws android.app.PendingIntent.CanceledException;
     method public android.app.PendingIntent! getAction();
-    method @androidx.slice.SliceItem.SliceType public String! getFormat();
-    method @androidx.slice.Slice.SliceHint public java.util.List<java.lang.String!> getHints();
+    method public String! getFormat();
+    method public java.util.List<java.lang.String!> getHints();
     method public androidx.core.graphics.drawable.IconCompat! getIcon();
     method public int getInt();
     method public long getLong();
@@ -69,26 +68,14 @@
     method public androidx.slice.Slice! getSlice();
     method public String! getSubType();
     method public CharSequence! getText();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public boolean hasAnyHints(@androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public boolean hasHint(@androidx.slice.Slice.SliceHint String!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public boolean hasAnyHints(java.lang.String!...);
+    method public boolean hasHint(String!);
   }
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface SliceItem.ActionHandler {
     method public void onAction(androidx.slice.SliceItem!, android.content.Context!, android.content.Intent!);
   }
 
-
-
-  public static interface SliceItemHolder.HolderHandler {
-    method public void handle(androidx.slice.SliceItemHolder!, String!);
-  }
-
-  public static class SliceItemHolder.SliceItemPool {
-    ctor public SliceItemHolder.SliceItemPool();
-    method public androidx.slice.SliceItemHolder! get();
-    method public void release(androidx.slice.SliceItemHolder!);
-  }
-
   @RequiresApi(19) public abstract class SliceManager {
     method public abstract int checkSlicePermission(android.net.Uri, int, int);
     method public static androidx.slice.SliceManager getInstance(android.content.Context);
@@ -108,6 +95,7 @@
     method @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static java.util.Set<androidx.slice.SliceSpec!>? getCurrentSpecs();
     method @RequiresApi(19) public java.util.List<android.net.Uri!> getPinnedSlices();
     method public final String? getType(android.net.Uri);
+    method @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) public Object? getWrapper();
     method public final android.net.Uri? insert(android.net.Uri, android.content.ContentValues?);
     method @RequiresApi(19) public abstract androidx.slice.Slice? onBindSlice(android.net.Uri);
     method public final boolean onCreate();
@@ -146,16 +134,6 @@
 
 package androidx.slice.compat {
 
-
-  public static class CompatPermissionManager.PermissionState {
-    method public String! getKey();
-    method public boolean hasAccess(java.util.List<java.lang.String!>!);
-    method public boolean hasAllPermissions();
-    method public java.util.Set<java.lang.String!>! toPersistable();
-  }
-
-
-
   @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class SliceProviderCompat {
     ctor public SliceProviderCompat(androidx.slice.SliceProvider, androidx.slice.compat.CompatPermissionManager, android.content.Context);
     method public static void addSpecs(android.os.Bundle, java.util.Set<androidx.slice.SliceSpec!>);
@@ -198,12 +176,6 @@
     field public static final String PERMS_PREFIX = "slice_perms_";
   }
 
-
-  @RequiresApi(28) public static class SliceProviderWrapperContainer.SliceProviderWrapper extends android.app.slice.SliceProvider {
-    ctor public SliceProviderWrapperContainer.SliceProviderWrapper(androidx.slice.SliceProvider!, String![]!);
-    method public boolean onCreate();
-  }
-
 }
 
 package androidx.slice.core {
diff --git a/slices/core/api/restricted_current.txt b/slices/core/api/restricted_current.txt
index a074e4a..0d361e3 100644
--- a/slices/core/api/restricted_current.txt
+++ b/slices/core/api/restricted_current.txt
@@ -7,11 +7,11 @@
 
   @RequiresApi(19) public final class Slice extends androidx.versionedparcelable.CustomVersionedParcelable implements androidx.versionedparcelable.VersionedParcelable {
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.slice.Slice? bindSlice(android.content.Context!, android.net.Uri, java.util.Set<androidx.slice.SliceSpec!>!);
-    method @androidx.slice.Slice.SliceHint public java.util.List<java.lang.String!>! getHints();
+    method public java.util.List<java.lang.String!>! getHints();
     method public java.util.List<androidx.slice.SliceItem!>! getItems();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.SliceSpec? getSpec();
     method public android.net.Uri! getUri();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean hasHint(@androidx.slice.Slice.SliceHint String!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean hasHint(String!);
     field public static final String EXTRA_SELECTION = "android.app.slice.extra.SELECTION";
   }
 
@@ -20,46 +20,45 @@
     ctor public Slice.Builder(androidx.slice.Slice.Builder);
     method public androidx.slice.Slice.Builder! addAction(android.app.PendingIntent, androidx.slice.Slice, String?);
     method public androidx.slice.Slice.Builder! addAction(androidx.slice.SliceItem.ActionHandler, androidx.slice.Slice, String?);
-    method public androidx.slice.Slice.Builder! addHints(@androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addHints(@androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method public androidx.slice.Slice.Builder! addInt(int, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addInt(int, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addHints(java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addHints(java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addIcon(androidx.core.graphics.drawable.IconCompat!, String?, java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addInt(int, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addInt(int, String?, java.util.List<java.lang.String!>!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.slice.Slice.Builder! addItem(androidx.slice.SliceItem!);
-    method public androidx.slice.Slice.Builder! addLong(long, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addLong(long, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addLong(long, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addLong(long, String?, java.util.List<java.lang.String!>!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, java.util.List<java.lang.String!>!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! addRemoteInput(android.app.RemoteInput!, String?, java.lang.String!...);
     method public androidx.slice.Slice.Builder! addSubSlice(androidx.slice.Slice);
     method public androidx.slice.Slice.Builder! addSubSlice(androidx.slice.Slice, String!);
-    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
-    method @Deprecated public androidx.slice.Slice.Builder! addTimestamp(long, String?, @androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public androidx.slice.Slice.Builder! addTimestamp(long, String?, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
+    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addText(CharSequence!, String?, java.util.List<java.lang.String!>!);
+    method @Deprecated public androidx.slice.Slice.Builder! addTimestamp(long, String?, java.lang.String!...);
+    method public androidx.slice.Slice.Builder! addTimestamp(long, String?, java.util.List<java.lang.String!>!);
     method public androidx.slice.Slice! build();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.slice.Slice.Builder! setSpec(androidx.slice.SliceSpec!);
   }
 
-
   @RequiresApi(28) public class SliceConvert {
     method public static android.app.slice.Slice! unwrap(androidx.slice.Slice!);
     method public static androidx.slice.Slice! wrap(android.app.slice.Slice!, android.content.Context!);
   }
 
   @RequiresApi(19) public final class SliceItem extends androidx.versionedparcelable.CustomVersionedParcelable {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, @androidx.slice.SliceItem.SliceType String!, String!, @androidx.slice.Slice.SliceHint String![]!);
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, @androidx.slice.SliceItem.SliceType String!, String!, @androidx.slice.Slice.SliceHint java.util.List<java.lang.String!>!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, String!, String!, String![]!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(Object!, String!, String!, java.util.List<java.lang.String!>!);
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem();
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(android.app.PendingIntent!, androidx.slice.Slice!, String!, String!, @androidx.slice.Slice.SliceHint String![]!);
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(androidx.slice.SliceItem.ActionHandler!, androidx.slice.Slice!, String!, String!, @androidx.slice.Slice.SliceHint String![]!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public void addHint(@androidx.slice.Slice.SliceHint String!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(android.app.PendingIntent!, androidx.slice.Slice!, String!, String!, String![]!);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public SliceItem(androidx.slice.SliceItem.ActionHandler!, androidx.slice.Slice!, String!, String!, String![]!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public void addHint(String!);
     method public static android.text.ParcelableSpan createSensitiveSpan();
     method public void fireAction(android.content.Context?, android.content.Intent?) throws android.app.PendingIntent.CanceledException;
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean fireActionInternal(android.content.Context?, android.content.Intent?) throws android.app.PendingIntent.CanceledException;
     method public android.app.PendingIntent! getAction();
-    method @androidx.slice.SliceItem.SliceType public String! getFormat();
-    method @androidx.slice.Slice.SliceHint public java.util.List<java.lang.String!> getHints();
+    method public String! getFormat();
+    method public java.util.List<java.lang.String!> getHints();
     method public androidx.core.graphics.drawable.IconCompat! getIcon();
     method public int getInt();
     method public long getLong();
@@ -69,26 +68,14 @@
     method public androidx.slice.Slice! getSlice();
     method public String! getSubType();
     method public CharSequence! getText();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public boolean hasAnyHints(@androidx.slice.Slice.SliceHint java.lang.String!...);
-    method public boolean hasHint(@androidx.slice.Slice.SliceHint String!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public boolean hasAnyHints(java.lang.String!...);
+    method public boolean hasHint(String!);
   }
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface SliceItem.ActionHandler {
     method public void onAction(androidx.slice.SliceItem!, android.content.Context!, android.content.Intent!);
   }
 
-
-
-  public static interface SliceItemHolder.HolderHandler {
-    method public void handle(androidx.slice.SliceItemHolder!, String!);
-  }
-
-  public static class SliceItemHolder.SliceItemPool {
-    ctor public SliceItemHolder.SliceItemPool();
-    method public androidx.slice.SliceItemHolder! get();
-    method public void release(androidx.slice.SliceItemHolder!);
-  }
-
   @RequiresApi(19) public abstract class SliceManager {
     method public abstract int checkSlicePermission(android.net.Uri, int, int);
     method public static androidx.slice.SliceManager getInstance(android.content.Context);
@@ -108,6 +95,7 @@
     method @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static java.util.Set<androidx.slice.SliceSpec!>? getCurrentSpecs();
     method @RequiresApi(19) public java.util.List<android.net.Uri!> getPinnedSlices();
     method public final String? getType(android.net.Uri);
+    method @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) public Object? getWrapper();
     method public final android.net.Uri? insert(android.net.Uri, android.content.ContentValues?);
     method @RequiresApi(19) public abstract androidx.slice.Slice? onBindSlice(android.net.Uri);
     method public final boolean onCreate();
@@ -146,16 +134,6 @@
 
 package androidx.slice.compat {
 
-
-  public static class CompatPermissionManager.PermissionState {
-    method public String! getKey();
-    method public boolean hasAccess(java.util.List<java.lang.String!>!);
-    method public boolean hasAllPermissions();
-    method public java.util.Set<java.lang.String!>! toPersistable();
-  }
-
-
-
   @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class SliceProviderCompat {
     ctor public SliceProviderCompat(androidx.slice.SliceProvider, androidx.slice.compat.CompatPermissionManager, android.content.Context);
     method public static void addSpecs(android.os.Bundle, java.util.Set<androidx.slice.SliceSpec!>);
@@ -198,12 +176,6 @@
     field public static final String PERMS_PREFIX = "slice_perms_";
   }
 
-
-  @RequiresApi(28) public static class SliceProviderWrapperContainer.SliceProviderWrapper extends android.app.slice.SliceProvider {
-    ctor public SliceProviderWrapperContainer.SliceProviderWrapper(androidx.slice.SliceProvider!, String![]!);
-    method public boolean onCreate();
-  }
-
 }
 
 package androidx.slice.core {
diff --git a/textclassifier/api/restricted_1.0.0-alpha03.txt b/textclassifier/api/restricted_1.0.0-alpha03.txt
index b28437c..bfa9d49 100644
--- a/textclassifier/api/restricted_1.0.0-alpha03.txt
+++ b/textclassifier/api/restricted_1.0.0-alpha03.txt
@@ -7,7 +7,7 @@
     method @FloatRange(from=0, to=1) public float getConfidenceScore();
     method public android.os.Bundle getExtras();
     method public CharSequence? getTextReply();
-    method @androidx.textclassifier.ConversationAction.ActionType public String getType();
+    method public String getType();
     method public android.os.Bundle toBundle();
     field public static final String TYPE_ADD_CONTACT = "add_contact";
     field public static final String TYPE_CALL_PHONE = "call_phone";
@@ -23,9 +23,8 @@
     field public static final String TYPE_VIEW_MAP = "view_map";
   }
 
-
   public static final class ConversationAction.Builder {
-    ctor public ConversationAction.Builder(@androidx.textclassifier.ConversationAction.ActionType String);
+    ctor public ConversationAction.Builder(String);
     method public androidx.textclassifier.ConversationAction build();
     method public androidx.textclassifier.ConversationAction.Builder setAction(androidx.core.app.RemoteActionCompat?);
     method public androidx.textclassifier.ConversationAction.Builder setConfidenceScore(@FloatRange(from=0, to=1) float);
@@ -64,7 +63,7 @@
     method public static androidx.textclassifier.ConversationActions.Request createFromBundle(android.os.Bundle);
     method public java.util.List<androidx.textclassifier.ConversationActions.Message!> getConversation();
     method public android.os.Bundle getExtras();
-    method @androidx.textclassifier.ConversationActions.Request.Hint public java.util.List<java.lang.String!> getHints();
+    method public java.util.List<java.lang.String!> getHints();
     method @IntRange(from=0xffffffff) public int getMaxSuggestions();
     method public androidx.textclassifier.TextClassifier.EntityConfig getTypeConfig();
     method public android.os.Bundle toBundle();
@@ -76,33 +75,31 @@
     ctor public ConversationActions.Request.Builder(java.util.List<androidx.textclassifier.ConversationActions.Message!>);
     method public androidx.textclassifier.ConversationActions.Request build();
     method public androidx.textclassifier.ConversationActions.Request.Builder setExtras(android.os.Bundle?);
-    method public androidx.textclassifier.ConversationActions.Request.Builder setHints(@androidx.textclassifier.ConversationActions.Request.Hint java.util.List<java.lang.String!>?);
+    method public androidx.textclassifier.ConversationActions.Request.Builder setHints(java.util.List<java.lang.String!>?);
     method public androidx.textclassifier.ConversationActions.Request.Builder setMaxSuggestions(@IntRange(from=0xffffffff) int);
     method public androidx.textclassifier.ConversationActions.Request.Builder setTypeConfig(androidx.textclassifier.TextClassifier.EntityConfig?);
   }
 
-
   public final class ExtrasUtils {
     method public static java.util.Locale? getTopLanguage(android.content.Intent?);
   }
 
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class SelectionEvent {
     method public static androidx.textclassifier.SelectionEvent createFromBundle(android.os.Bundle);
-    method public static androidx.textclassifier.SelectionEvent createSelectionActionEvent(int, int, @androidx.textclassifier.SelectionEvent.ActionType int);
-    method public static androidx.textclassifier.SelectionEvent createSelectionActionEvent(int, int, @androidx.textclassifier.SelectionEvent.ActionType int, androidx.textclassifier.TextClassification);
+    method public static androidx.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int);
+    method public static androidx.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int, androidx.textclassifier.TextClassification);
     method public static androidx.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int);
     method public static androidx.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, androidx.textclassifier.TextClassification);
     method public static androidx.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, androidx.textclassifier.TextSelection);
-    method public static androidx.textclassifier.SelectionEvent createSelectionStartedEvent(@androidx.textclassifier.SelectionEvent.InvocationMethod int, int);
+    method public static androidx.textclassifier.SelectionEvent createSelectionStartedEvent(int, int);
     method public long getDurationSincePreviousEvent();
     method public long getDurationSinceSessionStart();
     method public int getEnd();
     method public String getEntityType();
     method public int getEventIndex();
     method public long getEventTime();
-    method @androidx.textclassifier.SelectionEvent.EventType public int getEventType();
-    method @androidx.textclassifier.SelectionEvent.InvocationMethod public int getInvocationMethod();
+    method public int getEventType();
+    method public int getInvocationMethod();
     method public String getPackageName();
     method public String? getResultId();
     method public androidx.textclassifier.TextClassificationSessionId? getSessionId();
@@ -111,7 +108,7 @@
     method public int getStart();
     method public String getWidgetType();
     method public String? getWidgetVersion();
-    method public static boolean isTerminal(@androidx.textclassifier.SelectionEvent.EventType int);
+    method public static boolean isTerminal(int);
     method public android.os.Bundle toBundle();
     field public static final int ACTION_ABANDON = 107; // 0x6b
     field public static final int ACTION_COPY = 101; // 0x65
@@ -134,9 +131,6 @@
     field public static final int INVOCATION_UNKNOWN = 0; // 0x0
   }
 
-
-
-
   public final class TextClassification {
     method public static androidx.textclassifier.TextClassification createFromBundle(android.os.Bundle);
     method public java.util.List<androidx.core.app.RemoteActionCompat!> getActions();
@@ -252,7 +246,7 @@
   }
 
   public final class TextLinks {
-    method @androidx.textclassifier.TextLinks.Status public int apply(android.text.Spannable, androidx.textclassifier.TextClassifier, androidx.textclassifier.TextLinksParams);
+    method public int apply(android.text.Spannable, androidx.textclassifier.TextClassifier, androidx.textclassifier.TextLinksParams);
     method public static androidx.textclassifier.TextLinks createFromBundle(android.os.Bundle);
     method public android.os.Bundle getExtras();
     method public java.util.Collection<androidx.textclassifier.TextLinks.TextLink!> getLinks();
@@ -267,7 +261,6 @@
     field public static final int STATUS_UNKNOWN = -1; // 0xffffffff
   }
 
-
   public static final class TextLinks.Builder {
     ctor public TextLinks.Builder(CharSequence);
     method public androidx.textclassifier.TextLinks.Builder addLink(int, int, java.util.Map<java.lang.String!,java.lang.Float!>);
@@ -305,7 +298,6 @@
     method public androidx.textclassifier.TextLinks.TextLinkSpan! createSpan(androidx.textclassifier.TextLinks.TextLinkSpanData);
   }
 
-
   public static final class TextLinks.TextLink {
     method public static androidx.textclassifier.TextLinks.TextLink createFromBundle(android.os.Bundle);
     method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String!);
@@ -332,7 +324,7 @@
   public static final class TextLinksParams.Builder {
     ctor public TextLinksParams.Builder();
     method public androidx.textclassifier.TextLinksParams build();
-    method public androidx.textclassifier.TextLinksParams.Builder setApplyStrategy(@androidx.textclassifier.TextLinks.ApplyStrategy int);
+    method public androidx.textclassifier.TextLinksParams.Builder setApplyStrategy(int);
     method public androidx.textclassifier.TextLinksParams.Builder setDefaultLocales(androidx.core.os.LocaleListCompat?);
     method public androidx.textclassifier.TextLinksParams.Builder setEntityConfig(androidx.textclassifier.TextClassifier.EntityConfig?);
     method public androidx.textclassifier.TextLinksParams.Builder setReferenceTime(Long?);
diff --git a/textclassifier/api/restricted_current.txt b/textclassifier/api/restricted_current.txt
index b28437c..bfa9d49 100644
--- a/textclassifier/api/restricted_current.txt
+++ b/textclassifier/api/restricted_current.txt
@@ -7,7 +7,7 @@
     method @FloatRange(from=0, to=1) public float getConfidenceScore();
     method public android.os.Bundle getExtras();
     method public CharSequence? getTextReply();
-    method @androidx.textclassifier.ConversationAction.ActionType public String getType();
+    method public String getType();
     method public android.os.Bundle toBundle();
     field public static final String TYPE_ADD_CONTACT = "add_contact";
     field public static final String TYPE_CALL_PHONE = "call_phone";
@@ -23,9 +23,8 @@
     field public static final String TYPE_VIEW_MAP = "view_map";
   }
 
-
   public static final class ConversationAction.Builder {
-    ctor public ConversationAction.Builder(@androidx.textclassifier.ConversationAction.ActionType String);
+    ctor public ConversationAction.Builder(String);
     method public androidx.textclassifier.ConversationAction build();
     method public androidx.textclassifier.ConversationAction.Builder setAction(androidx.core.app.RemoteActionCompat?);
     method public androidx.textclassifier.ConversationAction.Builder setConfidenceScore(@FloatRange(from=0, to=1) float);
@@ -64,7 +63,7 @@
     method public static androidx.textclassifier.ConversationActions.Request createFromBundle(android.os.Bundle);
     method public java.util.List<androidx.textclassifier.ConversationActions.Message!> getConversation();
     method public android.os.Bundle getExtras();
-    method @androidx.textclassifier.ConversationActions.Request.Hint public java.util.List<java.lang.String!> getHints();
+    method public java.util.List<java.lang.String!> getHints();
     method @IntRange(from=0xffffffff) public int getMaxSuggestions();
     method public androidx.textclassifier.TextClassifier.EntityConfig getTypeConfig();
     method public android.os.Bundle toBundle();
@@ -76,33 +75,31 @@
     ctor public ConversationActions.Request.Builder(java.util.List<androidx.textclassifier.ConversationActions.Message!>);
     method public androidx.textclassifier.ConversationActions.Request build();
     method public androidx.textclassifier.ConversationActions.Request.Builder setExtras(android.os.Bundle?);
-    method public androidx.textclassifier.ConversationActions.Request.Builder setHints(@androidx.textclassifier.ConversationActions.Request.Hint java.util.List<java.lang.String!>?);
+    method public androidx.textclassifier.ConversationActions.Request.Builder setHints(java.util.List<java.lang.String!>?);
     method public androidx.textclassifier.ConversationActions.Request.Builder setMaxSuggestions(@IntRange(from=0xffffffff) int);
     method public androidx.textclassifier.ConversationActions.Request.Builder setTypeConfig(androidx.textclassifier.TextClassifier.EntityConfig?);
   }
 
-
   public final class ExtrasUtils {
     method public static java.util.Locale? getTopLanguage(android.content.Intent?);
   }
 
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class SelectionEvent {
     method public static androidx.textclassifier.SelectionEvent createFromBundle(android.os.Bundle);
-    method public static androidx.textclassifier.SelectionEvent createSelectionActionEvent(int, int, @androidx.textclassifier.SelectionEvent.ActionType int);
-    method public static androidx.textclassifier.SelectionEvent createSelectionActionEvent(int, int, @androidx.textclassifier.SelectionEvent.ActionType int, androidx.textclassifier.TextClassification);
+    method public static androidx.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int);
+    method public static androidx.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int, androidx.textclassifier.TextClassification);
     method public static androidx.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int);
     method public static androidx.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, androidx.textclassifier.TextClassification);
     method public static androidx.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, androidx.textclassifier.TextSelection);
-    method public static androidx.textclassifier.SelectionEvent createSelectionStartedEvent(@androidx.textclassifier.SelectionEvent.InvocationMethod int, int);
+    method public static androidx.textclassifier.SelectionEvent createSelectionStartedEvent(int, int);
     method public long getDurationSincePreviousEvent();
     method public long getDurationSinceSessionStart();
     method public int getEnd();
     method public String getEntityType();
     method public int getEventIndex();
     method public long getEventTime();
-    method @androidx.textclassifier.SelectionEvent.EventType public int getEventType();
-    method @androidx.textclassifier.SelectionEvent.InvocationMethod public int getInvocationMethod();
+    method public int getEventType();
+    method public int getInvocationMethod();
     method public String getPackageName();
     method public String? getResultId();
     method public androidx.textclassifier.TextClassificationSessionId? getSessionId();
@@ -111,7 +108,7 @@
     method public int getStart();
     method public String getWidgetType();
     method public String? getWidgetVersion();
-    method public static boolean isTerminal(@androidx.textclassifier.SelectionEvent.EventType int);
+    method public static boolean isTerminal(int);
     method public android.os.Bundle toBundle();
     field public static final int ACTION_ABANDON = 107; // 0x6b
     field public static final int ACTION_COPY = 101; // 0x65
@@ -134,9 +131,6 @@
     field public static final int INVOCATION_UNKNOWN = 0; // 0x0
   }
 
-
-
-
   public final class TextClassification {
     method public static androidx.textclassifier.TextClassification createFromBundle(android.os.Bundle);
     method public java.util.List<androidx.core.app.RemoteActionCompat!> getActions();
@@ -252,7 +246,7 @@
   }
 
   public final class TextLinks {
-    method @androidx.textclassifier.TextLinks.Status public int apply(android.text.Spannable, androidx.textclassifier.TextClassifier, androidx.textclassifier.TextLinksParams);
+    method public int apply(android.text.Spannable, androidx.textclassifier.TextClassifier, androidx.textclassifier.TextLinksParams);
     method public static androidx.textclassifier.TextLinks createFromBundle(android.os.Bundle);
     method public android.os.Bundle getExtras();
     method public java.util.Collection<androidx.textclassifier.TextLinks.TextLink!> getLinks();
@@ -267,7 +261,6 @@
     field public static final int STATUS_UNKNOWN = -1; // 0xffffffff
   }
 
-
   public static final class TextLinks.Builder {
     ctor public TextLinks.Builder(CharSequence);
     method public androidx.textclassifier.TextLinks.Builder addLink(int, int, java.util.Map<java.lang.String!,java.lang.Float!>);
@@ -305,7 +298,6 @@
     method public androidx.textclassifier.TextLinks.TextLinkSpan! createSpan(androidx.textclassifier.TextLinks.TextLinkSpanData);
   }
 
-
   public static final class TextLinks.TextLink {
     method public static androidx.textclassifier.TextLinks.TextLink createFromBundle(android.os.Bundle);
     method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String!);
@@ -332,7 +324,7 @@
   public static final class TextLinksParams.Builder {
     ctor public TextLinksParams.Builder();
     method public androidx.textclassifier.TextLinksParams build();
-    method public androidx.textclassifier.TextLinksParams.Builder setApplyStrategy(@androidx.textclassifier.TextLinks.ApplyStrategy int);
+    method public androidx.textclassifier.TextLinksParams.Builder setApplyStrategy(int);
     method public androidx.textclassifier.TextLinksParams.Builder setDefaultLocales(androidx.core.os.LocaleListCompat?);
     method public androidx.textclassifier.TextLinksParams.Builder setEntityConfig(androidx.textclassifier.TextClassifier.EntityConfig?);
     method public androidx.textclassifier.TextLinksParams.Builder setReferenceTime(Long?);
diff --git a/tv-provider/api/restricted_1.1.0-alpha01.txt b/tv-provider/api/restricted_1.1.0-alpha01.txt
index f4730b4..897bdb5 100644
--- a/tv-provider/api/restricted_1.1.0-alpha01.txt
+++ b/tv-provider/api/restricted_1.1.0-alpha01.txt
@@ -1,89 +1,6 @@
 // Signature format: 3.0
 package androidx.tvprovider.media.tv {
 
-
-  @IntDef({androidx.tvprovider.media.tv.BasePreviewProgram.ASPECT_RATIO_UNKNOWN, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_16_9, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_3_2, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_4_3, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_1_1, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_2_3, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_MOVIE_POSTER}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface BasePreviewProgram.AspectRatio {
-  }
-
-  @IntDef({androidx.tvprovider.media.tv.BasePreviewProgram.AVAILABILITY_UNKNOWN, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.AVAILABILITY_AVAILABLE, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.AVAILABILITY_FREE_WITH_SUBSCRIPTION, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.AVAILABILITY_PAID_CONTENT, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.AVAILABILITY_PURCHASED, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.AVAILABILITY_FREE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface BasePreviewProgram.Availability {
-  }
-
-  public abstract static class BasePreviewProgram.Builder<T extends androidx.tvprovider.media.tv.BasePreviewProgram.Builder> extends androidx.tvprovider.media.tv.BaseProgram.Builder<T> {
-    ctor public BasePreviewProgram.Builder();
-    ctor public BasePreviewProgram.Builder(androidx.tvprovider.media.tv.BasePreviewProgram!);
-    method public T! setAuthor(String!);
-    method public T! setAvailability(@androidx.tvprovider.media.tv.BasePreviewProgram.Availability int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public T! setBrowsable(boolean);
-    method public T! setContentId(String!);
-    method public T! setDurationMillis(int);
-    method public T! setEndTimeUtcMillis(long);
-    method public T! setGenre(String!);
-    method public T! setIntent(android.content.Intent!);
-    method public T! setIntentUri(android.net.Uri!);
-    method public T! setInteractionCount(long);
-    method public T! setInteractionType(@androidx.tvprovider.media.tv.BasePreviewProgram.InteractionType int);
-    method public T! setInternalProviderId(String!);
-    method public T! setItemCount(int);
-    method public T! setLastPlaybackPositionMillis(int);
-    method public T! setLive(boolean);
-    method public T! setLogoContentDescription(String!);
-    method public T! setLogoUri(android.net.Uri!);
-    method public T! setOfferPrice(String!);
-    method public T! setPosterArtAspectRatio(@androidx.tvprovider.media.tv.BasePreviewProgram.AspectRatio int);
-    method public T! setPreviewAudioUri(android.net.Uri!);
-    method public T! setPreviewVideoUri(android.net.Uri!);
-    method public T! setReleaseDate(String!);
-    method public T! setReleaseDate(java.util.Date!);
-    method public T! setStartTimeUtcMillis(long);
-    method public T! setStartingPrice(String!);
-    method public T! setThumbnailAspectRatio(@androidx.tvprovider.media.tv.BasePreviewProgram.AspectRatio int);
-    method public T! setTransient(boolean);
-    method public T! setTvSeriesItemType(@androidx.tvprovider.media.tv.BasePreviewProgram.TvSeriesItemType int);
-    method public T! setType(@androidx.tvprovider.media.tv.BasePreviewProgram.Type int);
-  }
-
-  @IntDef({androidx.tvprovider.media.tv.BasePreviewProgram.INTERACTION_TYPE_UNKNOWN, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_VIEWS, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_LISTENS, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_FOLLOWERS, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_FANS, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_LIKES, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_THUMBS, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_VIEWERS}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface BasePreviewProgram.InteractionType {
-  }
-
-  @IntDef({androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TV_SERIES_ITEM_TYPE_EPISODE, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TV_SERIES_ITEM_TYPE_CHAPTER}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface BasePreviewProgram.TvSeriesItemType {
-  }
-
-  @IntDef({androidx.tvprovider.media.tv.BasePreviewProgram.TYPE_UNKNOWN, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_MOVIE, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_TV_SERIES, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_TV_SEASON, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_TV_EPISODE, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_CLIP, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_EVENT, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_CHANNEL, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_TRACK, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_ALBUM, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_ARTIST, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_PLAYLIST, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_STATION, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_GAME}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface BasePreviewProgram.Type {
-  }
-
-
-  public abstract static class BaseProgram.Builder<T extends androidx.tvprovider.media.tv.BaseProgram.Builder> {
-    ctor public BaseProgram.Builder();
-    ctor public BaseProgram.Builder(androidx.tvprovider.media.tv.BaseProgram!);
-    method public T! setAudioLanguages(String![]!);
-    method public T! setCanonicalGenres(@androidx.tvprovider.media.tv.TvContractCompat.Programs.Genres.Genre String![]!);
-    method public T! setContentRatings(android.media.tv.TvContentRating![]!);
-    method public T! setDescription(String!);
-    method public T! setEpisodeNumber(int);
-    method public T! setEpisodeNumber(String!, int);
-    method public T! setEpisodeTitle(String!);
-    method public T! setId(long);
-    method public T! setInternalProviderData(byte[]!);
-    method public T! setInternalProviderFlag1(long);
-    method public T! setInternalProviderFlag2(long);
-    method public T! setInternalProviderFlag3(long);
-    method public T! setInternalProviderFlag4(long);
-    method public T! setLongDescription(String!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public T! setPackageName(String!);
-    method public T! setPosterArtUri(android.net.Uri!);
-    method public T! setReviewRating(String!);
-    method public T! setReviewRatingStyle(int);
-    method public T! setSearchable(boolean);
-    method public T! setSeasonNumber(int);
-    method public T! setSeasonNumber(String!, int);
-    method public T! setSeasonTitle(String!);
-    method public T! setThumbnailUri(android.net.Uri!);
-    method public T! setTitle(String!);
-    method public T! setVideoHeight(int);
-    method public T! setVideoWidth(int);
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected android.content.ContentValues! mValues;
-  }
-
   public final class Channel {
     method public static androidx.tvprovider.media.tv.Channel! fromCursor(android.database.Cursor!);
     method public int getAppLinkColor();
@@ -246,15 +163,69 @@
     method public void updateWatchNextProgram(androidx.tvprovider.media.tv.WatchNextProgram, long);
   }
 
-  public final class PreviewProgram extends androidx.tvprovider.media.tv.BasePreviewProgram {
+  public final class PreviewProgram {
     method public static androidx.tvprovider.media.tv.PreviewProgram! fromCursor(android.database.Cursor!);
+    method public String![]! getAudioLanguages();
+    method public String! getAuthor();
+    method public int getAvailability();
+    method public String![]! getCanonicalGenres();
     method public long getChannelId();
+    method public String! getContentId();
+    method public android.media.tv.TvContentRating![]! getContentRatings();
+    method public String! getDescription();
+    method public int getDurationMillis();
+    method public long getEndTimeUtcMillis();
+    method public String! getEpisodeNumber();
+    method public String! getEpisodeTitle();
+    method public String! getGenre();
+    method public long getId();
+    method public android.content.Intent! getIntent() throws java.net.URISyntaxException;
+    method public android.net.Uri! getIntentUri();
+    method public long getInteractionCount();
+    method public int getInteractionType();
+    method public byte[]! getInternalProviderDataByteArray();
+    method public Long! getInternalProviderFlag1();
+    method public Long! getInternalProviderFlag2();
+    method public Long! getInternalProviderFlag3();
+    method public Long! getInternalProviderFlag4();
+    method public String! getInternalProviderId();
+    method public int getItemCount();
+    method public int getLastPlaybackPositionMillis();
+    method public String! getLogoContentDescription();
+    method public android.net.Uri! getLogoUri();
+    method public String! getLongDescription();
+    method public String! getOfferPrice();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String! getPackageName();
+    method public int getPosterArtAspectRatio();
+    method public android.net.Uri! getPosterArtUri();
+    method public android.net.Uri! getPreviewAudioUri();
+    method public android.net.Uri! getPreviewVideoUri();
+    method public String! getReleaseDate();
+    method public String! getReviewRating();
+    method public int getReviewRatingStyle();
+    method public String! getSeasonNumber();
+    method public String! getSeasonTitle();
+    method public long getStartTimeUtcMillis();
+    method public String! getStartingPrice();
+    method public int getThumbnailAspectRatio();
+    method public android.net.Uri! getThumbnailUri();
+    method public String! getTitle();
+    method public int getTvSeriesItemType();
+    method public int getType();
+    method public int getVideoHeight();
+    method public int getVideoWidth();
     method public int getWeight();
     method public boolean hasAnyUpdatedValues(androidx.tvprovider.media.tv.PreviewProgram!);
+    method public boolean isBrowsable();
+    method public boolean isLive();
+    method public boolean isSearchable();
+    method public boolean isTransient();
+    method public android.content.ContentValues! toContentValues();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.ContentValues! toContentValues(boolean);
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String![]! PROJECTION;
   }
 
-  public static final class PreviewProgram.Builder extends androidx.tvprovider.media.tv.BasePreviewProgram.Builder<androidx.tvprovider.media.tv.PreviewProgram.Builder> {
+  public static final class PreviewProgram.Builder {
     ctor public PreviewProgram.Builder();
     ctor public PreviewProgram.Builder(androidx.tvprovider.media.tv.PreviewProgram!);
     method public androidx.tvprovider.media.tv.PreviewProgram! build();
@@ -262,22 +233,47 @@
     method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setWeight(int);
   }
 
-  public final class Program extends androidx.tvprovider.media.tv.BaseProgram implements java.lang.Comparable<androidx.tvprovider.media.tv.Program> {
+  public final class Program implements java.lang.Comparable<androidx.tvprovider.media.tv.Program> {
     method public int compareTo(androidx.tvprovider.media.tv.Program);
     method public static androidx.tvprovider.media.tv.Program! fromCursor(android.database.Cursor!);
+    method public String![]! getAudioLanguages();
     method public String![]! getBroadcastGenres();
+    method public String![]! getCanonicalGenres();
     method public long getChannelId();
+    method public android.media.tv.TvContentRating![]! getContentRatings();
+    method public String! getDescription();
     method public long getEndTimeUtcMillis();
+    method public String! getEpisodeNumber();
+    method public String! getEpisodeTitle();
+    method public long getId();
+    method public byte[]! getInternalProviderDataByteArray();
+    method public Long! getInternalProviderFlag1();
+    method public Long! getInternalProviderFlag2();
+    method public Long! getInternalProviderFlag3();
+    method public Long! getInternalProviderFlag4();
+    method public String! getLongDescription();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String! getPackageName();
+    method public android.net.Uri! getPosterArtUri();
+    method public String! getReviewRating();
+    method public int getReviewRatingStyle();
+    method public String! getSeasonNumber();
+    method public String! getSeasonTitle();
     method public long getStartTimeUtcMillis();
+    method public android.net.Uri! getThumbnailUri();
+    method public String! getTitle();
+    method public int getVideoHeight();
+    method public int getVideoWidth();
     method public boolean isRecordingProhibited();
+    method public boolean isSearchable();
+    method public android.content.ContentValues! toContentValues();
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String![]! PROJECTION;
   }
 
-  public static class Program.Builder extends androidx.tvprovider.media.tv.BaseProgram.Builder<androidx.tvprovider.media.tv.Program.Builder> {
+  public static class Program.Builder {
     ctor public Program.Builder();
     ctor public Program.Builder(androidx.tvprovider.media.tv.Program!);
     method public androidx.tvprovider.media.tv.Program! build();
-    method public androidx.tvprovider.media.tv.Program.Builder! setBroadcastGenres(@androidx.tvprovider.media.tv.TvContractCompat.Programs.Genres.Genre String![]!);
+    method public androidx.tvprovider.media.tv.Program.Builder! setBroadcastGenres(String![]!);
     method public androidx.tvprovider.media.tv.Program.Builder! setChannelId(long);
     method public androidx.tvprovider.media.tv.Program.Builder! setEndTimeUtcMillis(long);
     method public androidx.tvprovider.media.tv.Program.Builder! setRecordingProhibited(boolean);
@@ -571,8 +567,8 @@
   }
 
   public static final class TvContractCompat.Programs.Genres {
-    method @androidx.tvprovider.media.tv.TvContractCompat.Programs.Genres.Genre public static String![]! decode(String);
-    method public static String! encode(@androidx.tvprovider.media.tv.TvContractCompat.Programs.Genres.Genre java.lang.String!...);
+    method public static String![]! decode(String);
+    method public static String! encode(java.lang.String!...);
     method public static boolean isCanonical(String!);
     field public static final String ANIMAL_WILDLIFE = "ANIMAL_WILDLIFE";
     field public static final String ARTS = "ARTS";
@@ -593,7 +589,6 @@
     field public static final String TRAVEL = "TRAVEL";
   }
 
-
   public static final class TvContractCompat.RecordedPrograms implements androidx.tvprovider.media.tv.TvContractCompat.BaseTvColumns {
     field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
     field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
@@ -680,16 +675,70 @@
     method public static android.media.tv.TvContentRating![]! stringToContentRatings(String!);
   }
 
-  public final class WatchNextProgram extends androidx.tvprovider.media.tv.BasePreviewProgram {
+  public final class WatchNextProgram {
     method public static androidx.tvprovider.media.tv.WatchNextProgram! fromCursor(android.database.Cursor!);
+    method public String![]! getAudioLanguages();
+    method public String! getAuthor();
+    method public int getAvailability();
+    method public String![]! getCanonicalGenres();
+    method public String! getContentId();
+    method public android.media.tv.TvContentRating![]! getContentRatings();
+    method public String! getDescription();
+    method public int getDurationMillis();
+    method public long getEndTimeUtcMillis();
+    method public String! getEpisodeNumber();
+    method public String! getEpisodeTitle();
+    method public String! getGenre();
+    method public long getId();
+    method public android.content.Intent! getIntent() throws java.net.URISyntaxException;
+    method public android.net.Uri! getIntentUri();
+    method public long getInteractionCount();
+    method public int getInteractionType();
+    method public byte[]! getInternalProviderDataByteArray();
+    method public Long! getInternalProviderFlag1();
+    method public Long! getInternalProviderFlag2();
+    method public Long! getInternalProviderFlag3();
+    method public Long! getInternalProviderFlag4();
+    method public String! getInternalProviderId();
+    method public int getItemCount();
     method public long getLastEngagementTimeUtcMillis();
+    method public int getLastPlaybackPositionMillis();
+    method public String! getLogoContentDescription();
+    method public android.net.Uri! getLogoUri();
+    method public String! getLongDescription();
+    method public String! getOfferPrice();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String! getPackageName();
+    method public int getPosterArtAspectRatio();
+    method public android.net.Uri! getPosterArtUri();
+    method public android.net.Uri! getPreviewAudioUri();
+    method public android.net.Uri! getPreviewVideoUri();
+    method public String! getReleaseDate();
+    method public String! getReviewRating();
+    method public int getReviewRatingStyle();
+    method public String! getSeasonNumber();
+    method public String! getSeasonTitle();
+    method public long getStartTimeUtcMillis();
+    method public String! getStartingPrice();
+    method public int getThumbnailAspectRatio();
+    method public android.net.Uri! getThumbnailUri();
+    method public String! getTitle();
+    method public int getTvSeriesItemType();
+    method public int getType();
+    method public int getVideoHeight();
+    method public int getVideoWidth();
     method @androidx.tvprovider.media.tv.WatchNextProgram.WatchNextType public int getWatchNextType();
     method public boolean hasAnyUpdatedValues(androidx.tvprovider.media.tv.WatchNextProgram!);
+    method public boolean isBrowsable();
+    method public boolean isLive();
+    method public boolean isSearchable();
+    method public boolean isTransient();
+    method public android.content.ContentValues! toContentValues();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.ContentValues! toContentValues(boolean);
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String![]! PROJECTION;
     field public static final int WATCH_NEXT_TYPE_UNKNOWN = -1; // 0xffffffff
   }
 
-  public static final class WatchNextProgram.Builder extends androidx.tvprovider.media.tv.BasePreviewProgram.Builder<androidx.tvprovider.media.tv.WatchNextProgram.Builder> {
+  public static final class WatchNextProgram.Builder {
     ctor public WatchNextProgram.Builder();
     ctor public WatchNextProgram.Builder(androidx.tvprovider.media.tv.WatchNextProgram!);
     method public androidx.tvprovider.media.tv.WatchNextProgram! build();
diff --git a/tv-provider/api/restricted_current.txt b/tv-provider/api/restricted_current.txt
index f4730b4..897bdb5 100644
--- a/tv-provider/api/restricted_current.txt
+++ b/tv-provider/api/restricted_current.txt
@@ -1,89 +1,6 @@
 // Signature format: 3.0
 package androidx.tvprovider.media.tv {
 
-
-  @IntDef({androidx.tvprovider.media.tv.BasePreviewProgram.ASPECT_RATIO_UNKNOWN, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_16_9, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_3_2, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_4_3, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_1_1, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_2_3, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.ASPECT_RATIO_MOVIE_POSTER}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface BasePreviewProgram.AspectRatio {
-  }
-
-  @IntDef({androidx.tvprovider.media.tv.BasePreviewProgram.AVAILABILITY_UNKNOWN, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.AVAILABILITY_AVAILABLE, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.AVAILABILITY_FREE_WITH_SUBSCRIPTION, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.AVAILABILITY_PAID_CONTENT, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.AVAILABILITY_PURCHASED, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.AVAILABILITY_FREE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface BasePreviewProgram.Availability {
-  }
-
-  public abstract static class BasePreviewProgram.Builder<T extends androidx.tvprovider.media.tv.BasePreviewProgram.Builder> extends androidx.tvprovider.media.tv.BaseProgram.Builder<T> {
-    ctor public BasePreviewProgram.Builder();
-    ctor public BasePreviewProgram.Builder(androidx.tvprovider.media.tv.BasePreviewProgram!);
-    method public T! setAuthor(String!);
-    method public T! setAvailability(@androidx.tvprovider.media.tv.BasePreviewProgram.Availability int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public T! setBrowsable(boolean);
-    method public T! setContentId(String!);
-    method public T! setDurationMillis(int);
-    method public T! setEndTimeUtcMillis(long);
-    method public T! setGenre(String!);
-    method public T! setIntent(android.content.Intent!);
-    method public T! setIntentUri(android.net.Uri!);
-    method public T! setInteractionCount(long);
-    method public T! setInteractionType(@androidx.tvprovider.media.tv.BasePreviewProgram.InteractionType int);
-    method public T! setInternalProviderId(String!);
-    method public T! setItemCount(int);
-    method public T! setLastPlaybackPositionMillis(int);
-    method public T! setLive(boolean);
-    method public T! setLogoContentDescription(String!);
-    method public T! setLogoUri(android.net.Uri!);
-    method public T! setOfferPrice(String!);
-    method public T! setPosterArtAspectRatio(@androidx.tvprovider.media.tv.BasePreviewProgram.AspectRatio int);
-    method public T! setPreviewAudioUri(android.net.Uri!);
-    method public T! setPreviewVideoUri(android.net.Uri!);
-    method public T! setReleaseDate(String!);
-    method public T! setReleaseDate(java.util.Date!);
-    method public T! setStartTimeUtcMillis(long);
-    method public T! setStartingPrice(String!);
-    method public T! setThumbnailAspectRatio(@androidx.tvprovider.media.tv.BasePreviewProgram.AspectRatio int);
-    method public T! setTransient(boolean);
-    method public T! setTvSeriesItemType(@androidx.tvprovider.media.tv.BasePreviewProgram.TvSeriesItemType int);
-    method public T! setType(@androidx.tvprovider.media.tv.BasePreviewProgram.Type int);
-  }
-
-  @IntDef({androidx.tvprovider.media.tv.BasePreviewProgram.INTERACTION_TYPE_UNKNOWN, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_VIEWS, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_LISTENS, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_FOLLOWERS, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_FANS, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_LIKES, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_THUMBS, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.INTERACTION_TYPE_VIEWERS}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface BasePreviewProgram.InteractionType {
-  }
-
-  @IntDef({androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TV_SERIES_ITEM_TYPE_EPISODE, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TV_SERIES_ITEM_TYPE_CHAPTER}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface BasePreviewProgram.TvSeriesItemType {
-  }
-
-  @IntDef({androidx.tvprovider.media.tv.BasePreviewProgram.TYPE_UNKNOWN, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_MOVIE, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_TV_SERIES, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_TV_SEASON, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_TV_EPISODE, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_CLIP, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_EVENT, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_CHANNEL, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_TRACK, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_ALBUM, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_ARTIST, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_PLAYLIST, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_STATION, androidx.tvprovider.media.tv.TvContractCompat.PreviewProgramColumns.TYPE_GAME}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface BasePreviewProgram.Type {
-  }
-
-
-  public abstract static class BaseProgram.Builder<T extends androidx.tvprovider.media.tv.BaseProgram.Builder> {
-    ctor public BaseProgram.Builder();
-    ctor public BaseProgram.Builder(androidx.tvprovider.media.tv.BaseProgram!);
-    method public T! setAudioLanguages(String![]!);
-    method public T! setCanonicalGenres(@androidx.tvprovider.media.tv.TvContractCompat.Programs.Genres.Genre String![]!);
-    method public T! setContentRatings(android.media.tv.TvContentRating![]!);
-    method public T! setDescription(String!);
-    method public T! setEpisodeNumber(int);
-    method public T! setEpisodeNumber(String!, int);
-    method public T! setEpisodeTitle(String!);
-    method public T! setId(long);
-    method public T! setInternalProviderData(byte[]!);
-    method public T! setInternalProviderFlag1(long);
-    method public T! setInternalProviderFlag2(long);
-    method public T! setInternalProviderFlag3(long);
-    method public T! setInternalProviderFlag4(long);
-    method public T! setLongDescription(String!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public T! setPackageName(String!);
-    method public T! setPosterArtUri(android.net.Uri!);
-    method public T! setReviewRating(String!);
-    method public T! setReviewRatingStyle(int);
-    method public T! setSearchable(boolean);
-    method public T! setSeasonNumber(int);
-    method public T! setSeasonNumber(String!, int);
-    method public T! setSeasonTitle(String!);
-    method public T! setThumbnailUri(android.net.Uri!);
-    method public T! setTitle(String!);
-    method public T! setVideoHeight(int);
-    method public T! setVideoWidth(int);
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected android.content.ContentValues! mValues;
-  }
-
   public final class Channel {
     method public static androidx.tvprovider.media.tv.Channel! fromCursor(android.database.Cursor!);
     method public int getAppLinkColor();
@@ -246,15 +163,69 @@
     method public void updateWatchNextProgram(androidx.tvprovider.media.tv.WatchNextProgram, long);
   }
 
-  public final class PreviewProgram extends androidx.tvprovider.media.tv.BasePreviewProgram {
+  public final class PreviewProgram {
     method public static androidx.tvprovider.media.tv.PreviewProgram! fromCursor(android.database.Cursor!);
+    method public String![]! getAudioLanguages();
+    method public String! getAuthor();
+    method public int getAvailability();
+    method public String![]! getCanonicalGenres();
     method public long getChannelId();
+    method public String! getContentId();
+    method public android.media.tv.TvContentRating![]! getContentRatings();
+    method public String! getDescription();
+    method public int getDurationMillis();
+    method public long getEndTimeUtcMillis();
+    method public String! getEpisodeNumber();
+    method public String! getEpisodeTitle();
+    method public String! getGenre();
+    method public long getId();
+    method public android.content.Intent! getIntent() throws java.net.URISyntaxException;
+    method public android.net.Uri! getIntentUri();
+    method public long getInteractionCount();
+    method public int getInteractionType();
+    method public byte[]! getInternalProviderDataByteArray();
+    method public Long! getInternalProviderFlag1();
+    method public Long! getInternalProviderFlag2();
+    method public Long! getInternalProviderFlag3();
+    method public Long! getInternalProviderFlag4();
+    method public String! getInternalProviderId();
+    method public int getItemCount();
+    method public int getLastPlaybackPositionMillis();
+    method public String! getLogoContentDescription();
+    method public android.net.Uri! getLogoUri();
+    method public String! getLongDescription();
+    method public String! getOfferPrice();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String! getPackageName();
+    method public int getPosterArtAspectRatio();
+    method public android.net.Uri! getPosterArtUri();
+    method public android.net.Uri! getPreviewAudioUri();
+    method public android.net.Uri! getPreviewVideoUri();
+    method public String! getReleaseDate();
+    method public String! getReviewRating();
+    method public int getReviewRatingStyle();
+    method public String! getSeasonNumber();
+    method public String! getSeasonTitle();
+    method public long getStartTimeUtcMillis();
+    method public String! getStartingPrice();
+    method public int getThumbnailAspectRatio();
+    method public android.net.Uri! getThumbnailUri();
+    method public String! getTitle();
+    method public int getTvSeriesItemType();
+    method public int getType();
+    method public int getVideoHeight();
+    method public int getVideoWidth();
     method public int getWeight();
     method public boolean hasAnyUpdatedValues(androidx.tvprovider.media.tv.PreviewProgram!);
+    method public boolean isBrowsable();
+    method public boolean isLive();
+    method public boolean isSearchable();
+    method public boolean isTransient();
+    method public android.content.ContentValues! toContentValues();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.ContentValues! toContentValues(boolean);
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String![]! PROJECTION;
   }
 
-  public static final class PreviewProgram.Builder extends androidx.tvprovider.media.tv.BasePreviewProgram.Builder<androidx.tvprovider.media.tv.PreviewProgram.Builder> {
+  public static final class PreviewProgram.Builder {
     ctor public PreviewProgram.Builder();
     ctor public PreviewProgram.Builder(androidx.tvprovider.media.tv.PreviewProgram!);
     method public androidx.tvprovider.media.tv.PreviewProgram! build();
@@ -262,22 +233,47 @@
     method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setWeight(int);
   }
 
-  public final class Program extends androidx.tvprovider.media.tv.BaseProgram implements java.lang.Comparable<androidx.tvprovider.media.tv.Program> {
+  public final class Program implements java.lang.Comparable<androidx.tvprovider.media.tv.Program> {
     method public int compareTo(androidx.tvprovider.media.tv.Program);
     method public static androidx.tvprovider.media.tv.Program! fromCursor(android.database.Cursor!);
+    method public String![]! getAudioLanguages();
     method public String![]! getBroadcastGenres();
+    method public String![]! getCanonicalGenres();
     method public long getChannelId();
+    method public android.media.tv.TvContentRating![]! getContentRatings();
+    method public String! getDescription();
     method public long getEndTimeUtcMillis();
+    method public String! getEpisodeNumber();
+    method public String! getEpisodeTitle();
+    method public long getId();
+    method public byte[]! getInternalProviderDataByteArray();
+    method public Long! getInternalProviderFlag1();
+    method public Long! getInternalProviderFlag2();
+    method public Long! getInternalProviderFlag3();
+    method public Long! getInternalProviderFlag4();
+    method public String! getLongDescription();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String! getPackageName();
+    method public android.net.Uri! getPosterArtUri();
+    method public String! getReviewRating();
+    method public int getReviewRatingStyle();
+    method public String! getSeasonNumber();
+    method public String! getSeasonTitle();
     method public long getStartTimeUtcMillis();
+    method public android.net.Uri! getThumbnailUri();
+    method public String! getTitle();
+    method public int getVideoHeight();
+    method public int getVideoWidth();
     method public boolean isRecordingProhibited();
+    method public boolean isSearchable();
+    method public android.content.ContentValues! toContentValues();
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String![]! PROJECTION;
   }
 
-  public static class Program.Builder extends androidx.tvprovider.media.tv.BaseProgram.Builder<androidx.tvprovider.media.tv.Program.Builder> {
+  public static class Program.Builder {
     ctor public Program.Builder();
     ctor public Program.Builder(androidx.tvprovider.media.tv.Program!);
     method public androidx.tvprovider.media.tv.Program! build();
-    method public androidx.tvprovider.media.tv.Program.Builder! setBroadcastGenres(@androidx.tvprovider.media.tv.TvContractCompat.Programs.Genres.Genre String![]!);
+    method public androidx.tvprovider.media.tv.Program.Builder! setBroadcastGenres(String![]!);
     method public androidx.tvprovider.media.tv.Program.Builder! setChannelId(long);
     method public androidx.tvprovider.media.tv.Program.Builder! setEndTimeUtcMillis(long);
     method public androidx.tvprovider.media.tv.Program.Builder! setRecordingProhibited(boolean);
@@ -571,8 +567,8 @@
   }
 
   public static final class TvContractCompat.Programs.Genres {
-    method @androidx.tvprovider.media.tv.TvContractCompat.Programs.Genres.Genre public static String![]! decode(String);
-    method public static String! encode(@androidx.tvprovider.media.tv.TvContractCompat.Programs.Genres.Genre java.lang.String!...);
+    method public static String![]! decode(String);
+    method public static String! encode(java.lang.String!...);
     method public static boolean isCanonical(String!);
     field public static final String ANIMAL_WILDLIFE = "ANIMAL_WILDLIFE";
     field public static final String ARTS = "ARTS";
@@ -593,7 +589,6 @@
     field public static final String TRAVEL = "TRAVEL";
   }
 
-
   public static final class TvContractCompat.RecordedPrograms implements androidx.tvprovider.media.tv.TvContractCompat.BaseTvColumns {
     field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
     field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
@@ -680,16 +675,70 @@
     method public static android.media.tv.TvContentRating![]! stringToContentRatings(String!);
   }
 
-  public final class WatchNextProgram extends androidx.tvprovider.media.tv.BasePreviewProgram {
+  public final class WatchNextProgram {
     method public static androidx.tvprovider.media.tv.WatchNextProgram! fromCursor(android.database.Cursor!);
+    method public String![]! getAudioLanguages();
+    method public String! getAuthor();
+    method public int getAvailability();
+    method public String![]! getCanonicalGenres();
+    method public String! getContentId();
+    method public android.media.tv.TvContentRating![]! getContentRatings();
+    method public String! getDescription();
+    method public int getDurationMillis();
+    method public long getEndTimeUtcMillis();
+    method public String! getEpisodeNumber();
+    method public String! getEpisodeTitle();
+    method public String! getGenre();
+    method public long getId();
+    method public android.content.Intent! getIntent() throws java.net.URISyntaxException;
+    method public android.net.Uri! getIntentUri();
+    method public long getInteractionCount();
+    method public int getInteractionType();
+    method public byte[]! getInternalProviderDataByteArray();
+    method public Long! getInternalProviderFlag1();
+    method public Long! getInternalProviderFlag2();
+    method public Long! getInternalProviderFlag3();
+    method public Long! getInternalProviderFlag4();
+    method public String! getInternalProviderId();
+    method public int getItemCount();
     method public long getLastEngagementTimeUtcMillis();
+    method public int getLastPlaybackPositionMillis();
+    method public String! getLogoContentDescription();
+    method public android.net.Uri! getLogoUri();
+    method public String! getLongDescription();
+    method public String! getOfferPrice();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String! getPackageName();
+    method public int getPosterArtAspectRatio();
+    method public android.net.Uri! getPosterArtUri();
+    method public android.net.Uri! getPreviewAudioUri();
+    method public android.net.Uri! getPreviewVideoUri();
+    method public String! getReleaseDate();
+    method public String! getReviewRating();
+    method public int getReviewRatingStyle();
+    method public String! getSeasonNumber();
+    method public String! getSeasonTitle();
+    method public long getStartTimeUtcMillis();
+    method public String! getStartingPrice();
+    method public int getThumbnailAspectRatio();
+    method public android.net.Uri! getThumbnailUri();
+    method public String! getTitle();
+    method public int getTvSeriesItemType();
+    method public int getType();
+    method public int getVideoHeight();
+    method public int getVideoWidth();
     method @androidx.tvprovider.media.tv.WatchNextProgram.WatchNextType public int getWatchNextType();
     method public boolean hasAnyUpdatedValues(androidx.tvprovider.media.tv.WatchNextProgram!);
+    method public boolean isBrowsable();
+    method public boolean isLive();
+    method public boolean isSearchable();
+    method public boolean isTransient();
+    method public android.content.ContentValues! toContentValues();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.ContentValues! toContentValues(boolean);
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String![]! PROJECTION;
     field public static final int WATCH_NEXT_TYPE_UNKNOWN = -1; // 0xffffffff
   }
 
-  public static final class WatchNextProgram.Builder extends androidx.tvprovider.media.tv.BasePreviewProgram.Builder<androidx.tvprovider.media.tv.WatchNextProgram.Builder> {
+  public static final class WatchNextProgram.Builder {
     ctor public WatchNextProgram.Builder();
     ctor public WatchNextProgram.Builder(androidx.tvprovider.media.tv.WatchNextProgram!);
     method public androidx.tvprovider.media.tv.WatchNextProgram! build();
diff --git a/ui/ui-framework/OWNERS b/ui/ui-framework/OWNERS
index 78f2531..fd8f9ec 100644
--- a/ui/ui-framework/OWNERS
+++ b/ui/ui-framework/OWNERS
@@ -1,5 +1,6 @@
 [email protected]
 [email protected]
[email protected]
 
 # Semantics
 [email protected]
diff --git a/ui/ui-layout/api/0.1.0-dev04.txt b/ui/ui-layout/api/0.1.0-dev04.txt
index 312c8ea..2a59b89 100644
--- a/ui/ui-layout/api/0.1.0-dev04.txt
+++ b/ui/ui-layout/api/0.1.0-dev04.txt
@@ -449,13 +449,7 @@
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method public Object! getParentDimension();
-    method public Object! getSpreadDimension();
-    method public Object! getWrapDimension();
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    property public final Object! ParentDimension;
-    property public final Object! SpreadDimension;
-    property public final Object! WrapDimension;
     property public final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
   }
 
diff --git a/ui/ui-layout/api/api_lint.ignore b/ui/ui-layout/api/api_lint.ignore
index 011ece5..f4de926 100644
--- a/ui/ui-layout/api/api_lint.ignore
+++ b/ui/ui-layout/api/api_lint.ignore
@@ -1,19 +1,5 @@
 // Baseline format: 1.0
-ArrayReturn: androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope#createHorizontalChain(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference[], androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle) parameter #0:
-    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference[]`
-ArrayReturn: androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope#createVerticalChain(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference[], androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle) parameter #0:
-    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference[]`
-
-
 DocumentExceptions: androidx.ui.layout.FlexChildren#expanded(float, kotlin.jvm.functions.Function0<kotlin.Unit>):
     Method FlexChildren.expanded appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
 DocumentExceptions: androidx.ui.layout.FlexChildren#flexible(float, kotlin.jvm.functions.Function0<kotlin.Unit>):
     Method FlexChildren.flexible appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
-
-
-MissingNullability: androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope#getParentDimension():
-    Missing nullability on method `getParentDimension` return
-MissingNullability: androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope#getSpreadDimension():
-    Missing nullability on method `getSpreadDimension` return
-MissingNullability: androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope#getWrapDimension():
-    Missing nullability on method `getWrapDimension` return
diff --git a/ui/ui-layout/api/current.txt b/ui/ui-layout/api/current.txt
index 312c8ea..2a59b89 100644
--- a/ui/ui-layout/api/current.txt
+++ b/ui/ui-layout/api/current.txt
@@ -449,13 +449,7 @@
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method public Object! getParentDimension();
-    method public Object! getSpreadDimension();
-    method public Object! getWrapDimension();
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    property public final Object! ParentDimension;
-    property public final Object! SpreadDimension;
-    property public final Object! WrapDimension;
     property public final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
   }
 
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
index 312c8ea..2a59b89 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
@@ -449,13 +449,7 @@
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method public Object! getParentDimension();
-    method public Object! getSpreadDimension();
-    method public Object! getWrapDimension();
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    property public final Object! ParentDimension;
-    property public final Object! SpreadDimension;
-    property public final Object! WrapDimension;
     property public final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
   }
 
diff --git a/ui/ui-layout/api/public_plus_experimental_current.txt b/ui/ui-layout/api/public_plus_experimental_current.txt
index 312c8ea..2a59b89 100644
--- a/ui/ui-layout/api/public_plus_experimental_current.txt
+++ b/ui/ui-layout/api/public_plus_experimental_current.txt
@@ -449,13 +449,7 @@
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method public Object! getParentDimension();
-    method public Object! getSpreadDimension();
-    method public Object! getWrapDimension();
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    property public final Object! ParentDimension;
-    property public final Object! SpreadDimension;
-    property public final Object! WrapDimension;
     property public final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
   }
 
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev04.txt b/ui/ui-layout/api/restricted_0.1.0-dev04.txt
index 312c8ea..2a59b89 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev04.txt
@@ -449,13 +449,7 @@
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method public Object! getParentDimension();
-    method public Object! getSpreadDimension();
-    method public Object! getWrapDimension();
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    property public final Object! ParentDimension;
-    property public final Object! SpreadDimension;
-    property public final Object! WrapDimension;
     property public final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
   }
 
diff --git a/ui/ui-layout/api/restricted_current.txt b/ui/ui-layout/api/restricted_current.txt
index 312c8ea..2a59b89 100644
--- a/ui/ui-layout/api/restricted_current.txt
+++ b/ui/ui-layout/api/restricted_current.txt
@@ -449,13 +449,7 @@
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method public Object! getParentDimension();
-    method public Object! getSpreadDimension();
-    method public Object! getWrapDimension();
     method public androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    property public final Object! ParentDimension;
-    property public final Object! SpreadDimension;
-    property public final Object! WrapDimension;
     property public final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
   }
 
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/ConstraintLayout.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/ConstraintLayout.kt
index ed17888..1c9c0c6 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/ConstraintLayout.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/ConstraintLayout.kt
@@ -16,6 +16,7 @@
 
 package androidx.ui.layout.constraintlayout
 
+import android.annotation.SuppressLint
 import androidx.compose.Composable
 import androidx.compose.Immutable
 import androidx.compose.memo
@@ -364,6 +365,8 @@
      * Creates a horizontal chain including the referenced layouts.
      */
     fun createHorizontalChain(
+        // Suppress lint here to allow vararg parameter for elements. API likely to change.
+        @SuppressLint("ArrayReturn")
         vararg elements: ConstrainedLayoutReference,
         chainStyle: ChainStyle = ChainStyle.Spread
     ): HorizontalChain {
@@ -378,6 +381,8 @@
      * Creates a vertical chain including the referenced layouts.
      */
     fun createVerticalChain(
+        // Suppress lint here to allow vararg parameter for elements. API likely to change.
+        @SuppressLint("ArrayReturn")
         vararg elements: ConstrainedLayoutReference,
         chainStyle: ChainStyle = ChainStyle.Spread
     ): VerticalChain {
@@ -523,11 +528,6 @@
         return VerticalAnchor.BarrierAnchor(state, tag, barrier)
     }
 
-    // TODO(popam): support these
-    val WrapDimension = Dimension.WRAP_DIMENSION
-    val SpreadDimension = Dimension.SPREAD_DIMENSION
-    val ParentDimension = Dimension.PARENT_DIMENSION
-
     internal companion object {
         val verticalAnchorFunctions: Array<Array<ConstraintReference.(Any) -> Unit>> = arrayOf(
             arrayOf(
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt b/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
index 815ea6e..5d8d32b 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
@@ -35,6 +35,7 @@
 import androidx.ui.core.Placeable
 import androidx.ui.core.Px
 import androidx.ui.core.Text
+import androidx.ui.core.WithConstraints
 import androidx.ui.core.ambientDensity
 import androidx.ui.core.coerceIn
 import androidx.ui.core.dp
@@ -52,6 +53,7 @@
 import androidx.ui.graphics.Image
 import androidx.ui.layout.Container
 import androidx.ui.layout.FlexRow
+import androidx.ui.layout.LayoutExpandedWidth
 import androidx.ui.layout.LayoutGravity
 import androidx.ui.layout.Padding
 import androidx.ui.layout.Stack
@@ -138,7 +140,8 @@
             }
         }
 
-        WithExpandedWidth { width ->
+        WithConstraints { constraints ->
+            val width = constraints.maxWidth
             // TODO: force scrollable for tabs that will be too small if they take up equal space?
             if (scrollable) {
                 ScrollableTabRow(width, selectedIndex, tabs, indicatorContainer)
@@ -169,7 +172,7 @@
         TabRow.Divider(modifier)
     }
 
-    Stack {
+    Stack(LayoutExpandedWidth) {
         FlexRow(LayoutGravity.Center) {
             expanded(1f, tabs)
         }
@@ -197,8 +200,8 @@
         ScrollableTabData(selectedIndex, tabPositions, width, edgeOffset)
     }
 
-    scrollableTabData.selectedTab = selectedIndex
     scrollableTabData.tabPositions = tabPositions
+    scrollableTabData.selectedTab = selectedIndex
     scrollableTabData.visibleWidth = width
 
     val indicator = @Composable {
@@ -212,7 +215,10 @@
         TabRow.Divider()
     }
 
-    HorizontalScroller(scrollerPosition = scrollableTabData.position) {
+    HorizontalScroller(
+        scrollerPosition = scrollableTabData.position,
+        modifier = LayoutExpandedWidth
+    ) {
         Layout(tabs, indicator, divider) { measurables, constraints ->
             val tabPlaceables = mutableListOf<Pair<Placeable, IntPx>>()
             val minTabWidth = ScrollableTabRowMinimumTabWidth.toIntPx()
@@ -305,27 +311,6 @@
     }
 }
 
-// TODO: cleanup when expanded width layouts are supported natively b/140408477
-/**
- * A layout that is sized according to its [child]'s height, and all the available width.
- */
-@Composable
-private fun WithExpandedWidth(child: @Composable() (width: IntPx) -> Unit) {
-    // TODO: unfortunate 1f lag as we need to first measure total width and then recompose so the
-    // tab row knows the correct width
-    var widthState by +state { IntPx.Zero }
-    Layout({ child(widthState) }) { measurables, constraints ->
-        val width = constraints.maxWidth
-        if (widthState != width) widthState = width
-        val placeable = measurables.first().measure(constraints)
-        val height = placeable.height
-
-        layout(width, height) {
-            placeable.place(IntPx.Zero, IntPx.Zero)
-        }
-    }
-}
-
 object TabRow {
     private val IndicatorOffset = PxPropKey()
 
diff --git a/ui/ui-platform/OWNERS b/ui/ui-platform/OWNERS
index af392f8..8fee348 100644
--- a/ui/ui-platform/OWNERS
+++ b/ui/ui-platform/OWNERS
@@ -2,6 +2,7 @@
 [email protected]
 [email protected]
 [email protected]
[email protected]
 
 # For text input
 [email protected]
diff --git a/ui/ui-text/api/restricted_0.1.0-dev03.txt b/ui/ui-text/api/restricted_0.1.0-dev03.txt
index ea4d2ab..6ae0cb5 100644
--- a/ui/ui-text/api/restricted_0.1.0-dev03.txt
+++ b/ui/ui-text/api/restricted_0.1.0-dev03.txt
@@ -40,7 +40,6 @@
     method public void process(androidx.ui.input.EditingBuffer buffer);
   }
 
-
   public final class EditingBuffer {
     ctor public EditingBuffer(String initialText, androidx.ui.text.TextRange initialSelection);
     field public static final int NOWHERE = -1; // 0xffffffff
@@ -112,7 +111,6 @@
     property public final androidx.ui.input.OffsetMap identityOffsetMap;
   }
 
-
   public final class PasswordVisualTransformation implements androidx.ui.input.VisualTransformation {
     ctor public PasswordVisualTransformation(char mask);
     ctor public PasswordVisualTransformation();
@@ -463,7 +461,6 @@
     method public static String toUpperCase(String, androidx.ui.text.LocaleList localeList);
   }
 
-
   public final class TextDelegateKt {
     ctor public TextDelegateKt();
   }
diff --git a/ui/ui-text/api/restricted_0.1.0-dev04.txt b/ui/ui-text/api/restricted_0.1.0-dev04.txt
index a148272..6d8d470 100644
--- a/ui/ui-text/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-text/api/restricted_0.1.0-dev04.txt
@@ -40,7 +40,6 @@
     method public void process(androidx.ui.input.EditingBuffer buffer);
   }
 
-
   public final class EditingBuffer {
     ctor public EditingBuffer(String initialText, androidx.ui.text.TextRange initialSelection);
     field public static final int NOWHERE = -1; // 0xffffffff
@@ -112,7 +111,6 @@
     property public final androidx.ui.input.OffsetMap identityOffsetMap;
   }
 
-
   public final class PasswordVisualTransformation implements androidx.ui.input.VisualTransformation {
     ctor public PasswordVisualTransformation(char mask);
     ctor public PasswordVisualTransformation();
@@ -468,7 +466,6 @@
     method public static String toUpperCase(String, androidx.ui.text.LocaleList localeList);
   }
 
-
   public final class TextDelegateKt {
     ctor public TextDelegateKt();
   }
diff --git a/ui/ui-text/api/restricted_current.txt b/ui/ui-text/api/restricted_current.txt
index a148272..6d8d470 100644
--- a/ui/ui-text/api/restricted_current.txt
+++ b/ui/ui-text/api/restricted_current.txt
@@ -40,7 +40,6 @@
     method public void process(androidx.ui.input.EditingBuffer buffer);
   }
 
-
   public final class EditingBuffer {
     ctor public EditingBuffer(String initialText, androidx.ui.text.TextRange initialSelection);
     field public static final int NOWHERE = -1; // 0xffffffff
@@ -112,7 +111,6 @@
     property public final androidx.ui.input.OffsetMap identityOffsetMap;
   }
 
-
   public final class PasswordVisualTransformation implements androidx.ui.input.VisualTransformation {
     ctor public PasswordVisualTransformation(char mask);
     ctor public PasswordVisualTransformation();
@@ -468,7 +466,6 @@
     method public static String toUpperCase(String, androidx.ui.text.LocaleList localeList);
   }
 
-
   public final class TextDelegateKt {
     ctor public TextDelegateKt();
   }
diff --git a/versionedparcelable/api/restricted_1.0.0.txt b/versionedparcelable/api/restricted_1.0.0.txt
index 842ac52..591ffac 100644
--- a/versionedparcelable/api/restricted_1.0.0.txt
+++ b/versionedparcelable/api/restricted_1.0.0.txt
@@ -14,7 +14,6 @@
     method public abstract int value();
   }
 
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class ParcelUtils {
     method public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromInputStream(java.io.InputStream!);
     method public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromParcelable(android.os.Parcelable!);
diff --git a/versionedparcelable/api/restricted_1.1.0-alpha02.txt b/versionedparcelable/api/restricted_1.1.0-alpha02.txt
index ce3935d..db400ff 100644
--- a/versionedparcelable/api/restricted_1.1.0-alpha02.txt
+++ b/versionedparcelable/api/restricted_1.1.0-alpha02.txt
@@ -15,7 +15,6 @@
     method public abstract int value();
   }
 
-
   public class ParcelUtils {
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromInputStream(java.io.InputStream!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromParcelable(android.os.Parcelable!);
diff --git a/versionedparcelable/api/restricted_1.1.0-beta01.txt b/versionedparcelable/api/restricted_1.1.0-beta01.txt
index ec89d6a..22cda9a 100644
--- a/versionedparcelable/api/restricted_1.1.0-beta01.txt
+++ b/versionedparcelable/api/restricted_1.1.0-beta01.txt
@@ -15,7 +15,6 @@
     method public abstract int value();
   }
 
-
   public class ParcelUtils {
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromInputStream(java.io.InputStream!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromParcelable(android.os.Parcelable!);
diff --git a/versionedparcelable/api/restricted_1.1.0-rc01.txt b/versionedparcelable/api/restricted_1.1.0-rc01.txt
index ec89d6a..22cda9a 100644
--- a/versionedparcelable/api/restricted_1.1.0-rc01.txt
+++ b/versionedparcelable/api/restricted_1.1.0-rc01.txt
@@ -15,7 +15,6 @@
     method public abstract int value();
   }
 
-
   public class ParcelUtils {
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromInputStream(java.io.InputStream!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromParcelable(android.os.Parcelable!);
diff --git a/versionedparcelable/api/restricted_1.2.0-alpha01.txt b/versionedparcelable/api/restricted_1.2.0-alpha01.txt
index 3c0023a..6ec671d 100644
--- a/versionedparcelable/api/restricted_1.2.0-alpha01.txt
+++ b/versionedparcelable/api/restricted_1.2.0-alpha01.txt
@@ -15,7 +15,6 @@
     method public abstract int value();
   }
 
-
   public class ParcelUtils {
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromInputStream(java.io.InputStream!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromParcelable(android.os.Parcelable!);
diff --git a/versionedparcelable/api/restricted_current.txt b/versionedparcelable/api/restricted_current.txt
index 3c0023a..6ec671d 100644
--- a/versionedparcelable/api/restricted_current.txt
+++ b/versionedparcelable/api/restricted_current.txt
@@ -15,7 +15,6 @@
     method public abstract int value();
   }
 
-
   public class ParcelUtils {
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromInputStream(java.io.InputStream!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T extends androidx.versionedparcelable.VersionedParcelable> T! fromParcelable(android.os.Parcelable!);