Merge "Set background to PreviewView." into androidx-master-dev am: 3a255c31b7

Change-Id: I850df67082f2dce827a00479b1c6736756b59f40
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 0b2bc45..a0ba71e 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -7,4 +7,3 @@
 [Builtin Hooks]
 commit_msg_changeid_field = true
 commit_msg_test_field = true
-commit_msg_relnote_field_format = true
\ No newline at end of file
diff --git a/ads/ads-identifier-benchmark/src/androidTest/java/androidx/ads/identifier/benchmark/AdvertisingIdBenchmark.java b/ads/ads-identifier-benchmark/src/androidTest/java/androidx/ads/identifier/benchmark/AdvertisingIdBenchmark.java
index 01f1016..417ca5a 100644
--- a/ads/ads-identifier-benchmark/src/androidTest/java/androidx/ads/identifier/benchmark/AdvertisingIdBenchmark.java
+++ b/ads/ads-identifier-benchmark/src/androidTest/java/androidx/ads/identifier/benchmark/AdvertisingIdBenchmark.java
@@ -26,7 +26,6 @@
 import android.content.ContextWrapper;
 import android.content.Intent;
 import android.content.pm.PackageManager;
-import android.os.AsyncTask;
 
 import androidx.ads.identifier.AdvertisingIdClient;
 import androidx.ads.identifier.AdvertisingIdInfo;
@@ -173,19 +172,21 @@
     }
 
     @Test
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public void getAdvertisingIdInfo_asyncTask() throws Exception {
         final BenchmarkState state = mBenchmarkRule.getState();
         while (state.keepRunning()) {
-            AdvertisingIdInfo advertisingIdInfo = new AsyncTask<Void, Void, AdvertisingIdInfo>() {
-                @Override
-                protected AdvertisingIdInfo doInBackground(Void... voids) {
-                    try {
-                        return AdvertisingIdClient.getAdvertisingIdInfo(mContext).get();
-                    } catch (Exception e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            }.execute().get();
+            AdvertisingIdInfo advertisingIdInfo =
+                    new android.os.AsyncTask<Void, Void, AdvertisingIdInfo>() {
+                        @Override
+                        protected AdvertisingIdInfo doInBackground(Void... voids) {
+                            try {
+                                return AdvertisingIdClient.getAdvertisingIdInfo(mContext).get();
+                            } catch (Exception e) {
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    }.execute().get();
             assertThat(advertisingIdInfo.getId()).isEqualTo(DUMMY_AD_ID);
         }
     }
diff --git a/appcompat/appcompat-resources/api/1.2.0-rc01.txt b/appcompat/appcompat-resources/api/1.2.0-rc01.txt
deleted file mode 100644
index 7de85f8..0000000
--- a/appcompat/appcompat-resources/api/1.2.0-rc01.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-// Signature format: 3.0
-package androidx.appcompat.content.res {
-
-  public final class AppCompatResources {
-    method public static android.content.res.ColorStateList! getColorStateList(android.content.Context, @ColorRes int);
-    method public static android.graphics.drawable.Drawable? getDrawable(android.content.Context, @DrawableRes int);
-  }
-
-}
-
-package androidx.appcompat.graphics.drawable {
-
-  public class AnimatedStateListDrawableCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public AnimatedStateListDrawableCompat();
-    method public void addState(int[], android.graphics.drawable.Drawable, int);
-    method public void addState(int[]!, android.graphics.drawable.Drawable!);
-    method public <T extends android.graphics.drawable.Drawable & android.graphics.drawable.Animatable> void addTransition(int, int, T, boolean);
-    method public static androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat? create(android.content.Context, @DrawableRes int, android.content.res.Resources.Theme?);
-    method public static androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat! createFromXmlInner(android.content.Context, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void draw(android.graphics.Canvas);
-    method public final android.graphics.drawable.Drawable.ConstantState! getConstantState();
-    method public int getOpacity();
-    method public void inflate(android.content.Context, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void invalidateDrawable(android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setDither(boolean);
-    method public void setEnterFadeDuration(int);
-    method public void setExitFadeDuration(int);
-    method public void unscheduleDrawable(android.graphics.drawable.Drawable, Runnable);
-  }
-
-}
-
diff --git a/appcompat/appcompat-resources/api/public_plus_experimental_1.2.0-rc01.txt b/appcompat/appcompat-resources/api/public_plus_experimental_1.2.0-rc01.txt
deleted file mode 100644
index 990b059..0000000
--- a/appcompat/appcompat-resources/api/public_plus_experimental_1.2.0-rc01.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-// Signature format: 3.0
-package androidx.appcompat.content.res {
-
-  public final class AppCompatResources {
-    method public static android.content.res.ColorStateList! getColorStateList(android.content.Context, @ColorRes int);
-    method public static android.graphics.drawable.Drawable? getDrawable(android.content.Context, @DrawableRes int);
-  }
-
-}
-
-package androidx.appcompat.graphics.drawable {
-
-  public class AnimatedStateListDrawableCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback androidx.core.graphics.drawable.TintAwareDrawable {
-    ctor public AnimatedStateListDrawableCompat();
-    method public void addState(int[], android.graphics.drawable.Drawable, int);
-    method public void addState(int[]!, android.graphics.drawable.Drawable!);
-    method public <T extends android.graphics.drawable.Drawable & android.graphics.drawable.Animatable> void addTransition(int, int, T, boolean);
-    method public static androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat? create(android.content.Context, @DrawableRes int, android.content.res.Resources.Theme?);
-    method public static androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat! createFromXmlInner(android.content.Context, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void draw(android.graphics.Canvas);
-    method public final android.graphics.drawable.Drawable.ConstantState! getConstantState();
-    method public int getOpacity();
-    method public void inflate(android.content.Context, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void invalidateDrawable(android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setDither(boolean);
-    method public void setEnterFadeDuration(int);
-    method public void setExitFadeDuration(int);
-    method public void unscheduleDrawable(android.graphics.drawable.Drawable, Runnable);
-  }
-
-}
-
diff --git a/appcompat/appcompat-resources/api/restricted_1.2.0-rc01.txt b/appcompat/appcompat-resources/api/restricted_1.2.0-rc01.txt
deleted file mode 100644
index 1f32e40..0000000
--- a/appcompat/appcompat-resources/api/restricted_1.2.0-rc01.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-// Signature format: 3.0
-package androidx.appcompat.content.res {
-
-  public final class AppCompatResources {
-    method public static android.content.res.ColorStateList! getColorStateList(android.content.Context, @ColorRes int);
-    method public static android.graphics.drawable.Drawable? getDrawable(android.content.Context, @DrawableRes int);
-  }
-
-}
-
-package androidx.appcompat.graphics.drawable {
-
-  public class AnimatedStateListDrawableCompat extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback androidx.core.graphics.drawable.TintAwareDrawable {
-    ctor public AnimatedStateListDrawableCompat();
-    method public void addState(int[], android.graphics.drawable.Drawable, int);
-    method public void addState(int[]!, android.graphics.drawable.Drawable!);
-    method public <T extends android.graphics.drawable.Drawable & android.graphics.drawable.Animatable> void addTransition(int, int, T, boolean);
-    method public static androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat? create(android.content.Context, @DrawableRes int, android.content.res.Resources.Theme?);
-    method public static androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat! createFromXmlInner(android.content.Context, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void draw(android.graphics.Canvas);
-    method public final android.graphics.drawable.Drawable.ConstantState! getConstantState();
-    method public int getOpacity();
-    method public void inflate(android.content.Context, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void invalidateDrawable(android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setDither(boolean);
-    method public void setEnterFadeDuration(int);
-    method public void setExitFadeDuration(int);
-    method public void unscheduleDrawable(android.graphics.drawable.Drawable, Runnable);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class DrawableWrapper extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public DrawableWrapper(android.graphics.drawable.Drawable!);
-    method public void draw(android.graphics.Canvas!);
-    method public int getOpacity();
-    method public android.graphics.drawable.Drawable! getWrappedDrawable();
-    method public void invalidateDrawable(android.graphics.drawable.Drawable!);
-    method public void scheduleDrawable(android.graphics.drawable.Drawable!, Runnable!, long);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setDither(boolean);
-    method public void setWrappedDrawable(android.graphics.drawable.Drawable!);
-    method public void unscheduleDrawable(android.graphics.drawable.Drawable!, Runnable!);
-  }
-
-}
-
-package androidx.appcompat.widget {
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class DrawableUtils {
-    method public static boolean canSafelyMutateDrawable(android.graphics.drawable.Drawable);
-    method public static android.graphics.Rect! getOpticalBounds(android.graphics.drawable.Drawable!);
-    method public static android.graphics.PorterDuff.Mode! parseTintMode(int, android.graphics.PorterDuff.Mode!);
-    field public static final android.graphics.Rect! INSETS_NONE;
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class ResourceManagerInternal {
-    ctor public ResourceManagerInternal();
-    method public static androidx.appcompat.widget.ResourceManagerInternal! get();
-    method public android.graphics.drawable.Drawable! getDrawable(android.content.Context, @DrawableRes int);
-    method public static android.graphics.PorterDuffColorFilter! getPorterDuffColorFilter(int, android.graphics.PorterDuff.Mode!);
-    method public void onConfigurationChanged(android.content.Context);
-    method public void setHooks(androidx.appcompat.widget.ResourceManagerInternal.ResourceManagerHooks!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TintContextWrapper extends android.content.ContextWrapper {
-    method public static android.content.Context! wrap(android.content.Context);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TintInfo {
-    ctor public TintInfo();
-    field public boolean mHasTintList;
-    field public boolean mHasTintMode;
-    field public android.content.res.ColorStateList! mTintList;
-    field public android.graphics.PorterDuff.Mode! mTintMode;
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class VectorEnabledTintResources extends android.content.res.Resources {
-    ctor public VectorEnabledTintResources(android.content.Context, android.content.res.Resources);
-    method public android.graphics.drawable.Drawable! getDrawable(int) throws android.content.res.Resources.NotFoundException;
-    method public static boolean isCompatVectorFromResourcesEnabled();
-    method public static void setCompatVectorFromResourcesEnabled(boolean);
-    method public static boolean shouldBeUsed();
-    field public static final int MAX_SDK_WHERE_REQUIRED = 20; // 0x14
-  }
-
-}
-
diff --git a/appcompat/appcompat/api/1.2.0-rc01.txt b/appcompat/appcompat/api/1.2.0-rc01.txt
deleted file mode 100644
index aed2d02..0000000
--- a/appcompat/appcompat/api/1.2.0-rc01.txt
+++ /dev/null
@@ -1,979 +0,0 @@
-// Signature format: 3.0
-package androidx.appcompat.app {
-
-  public abstract class ActionBar {
-    ctor public ActionBar();
-    method public abstract void addOnMenuVisibilityListener(androidx.appcompat.app.ActionBar.OnMenuVisibilityListener!);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!, boolean);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!, int);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!, int, boolean);
-    method public abstract android.view.View! getCustomView();
-    method public abstract int getDisplayOptions();
-    method public float getElevation();
-    method public abstract int getHeight();
-    method public int getHideOffset();
-    method @Deprecated public abstract int getNavigationItemCount();
-    method @Deprecated public abstract int getNavigationMode();
-    method @Deprecated public abstract int getSelectedNavigationIndex();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab? getSelectedTab();
-    method public abstract CharSequence? getSubtitle();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! getTabAt(int);
-    method @Deprecated public abstract int getTabCount();
-    method public android.content.Context! getThemedContext();
-    method public abstract CharSequence? getTitle();
-    method public abstract void hide();
-    method public boolean isHideOnContentScrollEnabled();
-    method public abstract boolean isShowing();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! newTab();
-    method @Deprecated public abstract void removeAllTabs();
-    method public abstract void removeOnMenuVisibilityListener(androidx.appcompat.app.ActionBar.OnMenuVisibilityListener!);
-    method @Deprecated public abstract void removeTab(androidx.appcompat.app.ActionBar.Tab!);
-    method @Deprecated public abstract void removeTabAt(int);
-    method @Deprecated public abstract void selectTab(androidx.appcompat.app.ActionBar.Tab!);
-    method public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable?);
-    method public abstract void setCustomView(android.view.View!);
-    method public abstract void setCustomView(android.view.View!, androidx.appcompat.app.ActionBar.LayoutParams!);
-    method public abstract void setCustomView(int);
-    method public abstract void setDisplayHomeAsUpEnabled(boolean);
-    method public abstract void setDisplayOptions(int);
-    method public abstract void setDisplayOptions(int, int);
-    method public abstract void setDisplayShowCustomEnabled(boolean);
-    method public abstract void setDisplayShowHomeEnabled(boolean);
-    method public abstract void setDisplayShowTitleEnabled(boolean);
-    method public abstract void setDisplayUseLogoEnabled(boolean);
-    method public void setElevation(float);
-    method public void setHideOffset(int);
-    method public void setHideOnContentScrollEnabled(boolean);
-    method public void setHomeActionContentDescription(CharSequence?);
-    method public void setHomeActionContentDescription(@StringRes int);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable?);
-    method public void setHomeAsUpIndicator(@DrawableRes int);
-    method public void setHomeButtonEnabled(boolean);
-    method public abstract void setIcon(@DrawableRes int);
-    method public abstract void setIcon(android.graphics.drawable.Drawable!);
-    method @Deprecated public abstract void setListNavigationCallbacks(android.widget.SpinnerAdapter!, androidx.appcompat.app.ActionBar.OnNavigationListener!);
-    method public abstract void setLogo(@DrawableRes int);
-    method public abstract void setLogo(android.graphics.drawable.Drawable!);
-    method @Deprecated public abstract void setNavigationMode(int);
-    method @Deprecated public abstract void setSelectedNavigationItem(int);
-    method public void setSplitBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setStackedBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public abstract void setSubtitle(CharSequence!);
-    method public abstract void setSubtitle(int);
-    method public abstract void setTitle(CharSequence!);
-    method public abstract void setTitle(@StringRes int);
-    method public abstract void show();
-    field public static final int DISPLAY_HOME_AS_UP = 4; // 0x4
-    field public static final int DISPLAY_SHOW_CUSTOM = 16; // 0x10
-    field public static final int DISPLAY_SHOW_HOME = 2; // 0x2
-    field public static final int DISPLAY_SHOW_TITLE = 8; // 0x8
-    field public static final int DISPLAY_USE_LOGO = 1; // 0x1
-    field @Deprecated public static final int NAVIGATION_MODE_LIST = 1; // 0x1
-    field @Deprecated public static final int NAVIGATION_MODE_STANDARD = 0; // 0x0
-    field @Deprecated public static final int NAVIGATION_MODE_TABS = 2; // 0x2
-  }
-
-  public static class ActionBar.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public ActionBar.LayoutParams(android.content.Context, android.util.AttributeSet!);
-    ctor public ActionBar.LayoutParams(int, int);
-    ctor public ActionBar.LayoutParams(int, int, int);
-    ctor public ActionBar.LayoutParams(int);
-    ctor public ActionBar.LayoutParams(androidx.appcompat.app.ActionBar.LayoutParams!);
-    ctor public ActionBar.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    field public int gravity;
-  }
-
-  public static interface ActionBar.OnMenuVisibilityListener {
-    method public void onMenuVisibilityChanged(boolean);
-  }
-
-  @Deprecated public static interface ActionBar.OnNavigationListener {
-    method @Deprecated public boolean onNavigationItemSelected(int, long);
-  }
-
-  @Deprecated public abstract static class ActionBar.Tab {
-    ctor @Deprecated public ActionBar.Tab();
-    method @Deprecated public abstract CharSequence! getContentDescription();
-    method @Deprecated public abstract android.view.View! getCustomView();
-    method @Deprecated public abstract android.graphics.drawable.Drawable! getIcon();
-    method @Deprecated public abstract int getPosition();
-    method @Deprecated public abstract Object! getTag();
-    method @Deprecated public abstract CharSequence! getText();
-    method @Deprecated public abstract void select();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setContentDescription(@StringRes int);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setContentDescription(CharSequence!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setCustomView(android.view.View!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setCustomView(int);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setIcon(android.graphics.drawable.Drawable!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setIcon(@DrawableRes int);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setTabListener(androidx.appcompat.app.ActionBar.TabListener!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setTag(Object!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setText(CharSequence!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setText(int);
-    field @Deprecated public static final int INVALID_POSITION = -1; // 0xffffffff
-  }
-
-  @Deprecated public static interface ActionBar.TabListener {
-    method @Deprecated public void onTabReselected(androidx.appcompat.app.ActionBar.Tab!, androidx.fragment.app.FragmentTransaction!);
-    method @Deprecated public void onTabSelected(androidx.appcompat.app.ActionBar.Tab!, androidx.fragment.app.FragmentTransaction!);
-    method @Deprecated public void onTabUnselected(androidx.appcompat.app.ActionBar.Tab!, androidx.fragment.app.FragmentTransaction!);
-  }
-
-  public class ActionBarDrawerToggle implements androidx.drawerlayout.widget.DrawerLayout.DrawerListener {
-    ctor public ActionBarDrawerToggle(android.app.Activity!, androidx.drawerlayout.widget.DrawerLayout!, @StringRes int, @StringRes int);
-    ctor public ActionBarDrawerToggle(android.app.Activity!, androidx.drawerlayout.widget.DrawerLayout!, androidx.appcompat.widget.Toolbar!, @StringRes int, @StringRes int);
-    method public androidx.appcompat.graphics.drawable.DrawerArrowDrawable getDrawerArrowDrawable();
-    method public android.view.View.OnClickListener! getToolbarNavigationClickListener();
-    method public boolean isDrawerIndicatorEnabled();
-    method public boolean isDrawerSlideAnimationEnabled();
-    method public void onConfigurationChanged(android.content.res.Configuration!);
-    method public void onDrawerClosed(android.view.View!);
-    method public void onDrawerOpened(android.view.View!);
-    method public void onDrawerSlide(android.view.View!, float);
-    method public void onDrawerStateChanged(int);
-    method public boolean onOptionsItemSelected(android.view.MenuItem!);
-    method public void setDrawerArrowDrawable(androidx.appcompat.graphics.drawable.DrawerArrowDrawable);
-    method public void setDrawerIndicatorEnabled(boolean);
-    method public void setDrawerSlideAnimationEnabled(boolean);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable!);
-    method public void setHomeAsUpIndicator(int);
-    method public void setToolbarNavigationClickListener(android.view.View.OnClickListener!);
-    method public void syncState();
-  }
-
-  public static interface ActionBarDrawerToggle.Delegate {
-    method public android.content.Context! getActionBarThemedContext();
-    method public android.graphics.drawable.Drawable! getThemeUpIndicator();
-    method public boolean isNavigationVisible();
-    method public void setActionBarDescription(@StringRes int);
-    method public void setActionBarUpIndicator(android.graphics.drawable.Drawable!, @StringRes int);
-  }
-
-  public static interface ActionBarDrawerToggle.DelegateProvider {
-    method public androidx.appcompat.app.ActionBarDrawerToggle.Delegate? getDrawerToggleDelegate();
-  }
-
-  public class AlertDialog extends androidx.appcompat.app.AppCompatDialog implements android.content.DialogInterface {
-    ctor protected AlertDialog(android.content.Context);
-    ctor protected AlertDialog(android.content.Context, @StyleRes int);
-    ctor protected AlertDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener?);
-    method public android.widget.Button! getButton(int);
-    method public android.widget.ListView! getListView();
-    method public void setButton(int, CharSequence!, android.os.Message!);
-    method public void setButton(int, CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public void setButton(int, CharSequence!, android.graphics.drawable.Drawable!, android.content.DialogInterface.OnClickListener!);
-    method public void setCustomTitle(android.view.View!);
-    method public void setIcon(int);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setIconAttribute(int);
-    method public void setMessage(CharSequence!);
-    method public void setView(android.view.View!);
-    method public void setView(android.view.View!, int, int, int, int);
-  }
-
-  public static class AlertDialog.Builder {
-    ctor public AlertDialog.Builder(android.content.Context);
-    ctor public AlertDialog.Builder(android.content.Context, @StyleRes int);
-    method public androidx.appcompat.app.AlertDialog create();
-    method public android.content.Context getContext();
-    method public androidx.appcompat.app.AlertDialog.Builder! setAdapter(android.widget.ListAdapter!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setCancelable(boolean);
-    method public androidx.appcompat.app.AlertDialog.Builder! setCursor(android.database.Cursor!, android.content.DialogInterface.OnClickListener!, String!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setCustomTitle(android.view.View?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setIcon(@DrawableRes int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setIcon(android.graphics.drawable.Drawable?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setIconAttribute(@AttrRes int);
-    method @Deprecated public androidx.appcompat.app.AlertDialog.Builder! setInverseBackgroundForced(boolean);
-    method public androidx.appcompat.app.AlertDialog.Builder! setItems(@ArrayRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setItems(CharSequence![]!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMessage(@StringRes int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMessage(CharSequence?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMultiChoiceItems(@ArrayRes int, boolean[]!, android.content.DialogInterface.OnMultiChoiceClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMultiChoiceItems(CharSequence![]!, boolean[]!, android.content.DialogInterface.OnMultiChoiceClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMultiChoiceItems(android.database.Cursor!, String!, String!, android.content.DialogInterface.OnMultiChoiceClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNegativeButton(@StringRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNegativeButton(CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNegativeButtonIcon(android.graphics.drawable.Drawable!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNeutralButton(@StringRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNeutralButton(CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNeutralButtonIcon(android.graphics.drawable.Drawable!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnCancelListener(android.content.DialogInterface.OnCancelListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnDismissListener(android.content.DialogInterface.OnDismissListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnKeyListener(android.content.DialogInterface.OnKeyListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setPositiveButton(@StringRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setPositiveButton(CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setPositiveButtonIcon(android.graphics.drawable.Drawable!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(@ArrayRes int, int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(android.database.Cursor!, int, String!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(CharSequence![]!, int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(android.widget.ListAdapter!, int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setTitle(@StringRes int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setTitle(CharSequence?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setView(int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setView(android.view.View!);
-    method public androidx.appcompat.app.AlertDialog! show();
-  }
-
-  public class AppCompatActivity extends androidx.fragment.app.FragmentActivity implements androidx.appcompat.app.ActionBarDrawerToggle.DelegateProvider androidx.appcompat.app.AppCompatCallback androidx.lifecycle.LifecycleOwner androidx.core.app.TaskStackBuilder.SupportParentable {
-    ctor public AppCompatActivity();
-    ctor @ContentView public AppCompatActivity(@LayoutRes int);
-    method public androidx.appcompat.app.AppCompatDelegate getDelegate();
-    method public androidx.appcompat.app.ActionBarDrawerToggle.Delegate? getDrawerToggleDelegate();
-    method public androidx.appcompat.app.ActionBar? getSupportActionBar();
-    method public android.content.Intent? getSupportParentActivityIntent();
-    method public void onCreateSupportNavigateUpTaskStack(androidx.core.app.TaskStackBuilder);
-    method public final boolean onMenuItemSelected(int, android.view.MenuItem);
-    method protected void onNightModeChanged(int);
-    method public void onPrepareSupportNavigateUpTaskStack(androidx.core.app.TaskStackBuilder);
-    method @CallSuper public void onSupportActionModeFinished(androidx.appcompat.view.ActionMode);
-    method @CallSuper public void onSupportActionModeStarted(androidx.appcompat.view.ActionMode);
-    method @Deprecated public void onSupportContentChanged();
-    method public boolean onSupportNavigateUp();
-    method public androidx.appcompat.view.ActionMode? onWindowStartingSupportActionMode(androidx.appcompat.view.ActionMode.Callback);
-    method public void setSupportActionBar(androidx.appcompat.widget.Toolbar?);
-    method @Deprecated public void setSupportProgress(int);
-    method @Deprecated public void setSupportProgressBarIndeterminate(boolean);
-    method @Deprecated public void setSupportProgressBarIndeterminateVisibility(boolean);
-    method @Deprecated public void setSupportProgressBarVisibility(boolean);
-    method public androidx.appcompat.view.ActionMode? startSupportActionMode(androidx.appcompat.view.ActionMode.Callback);
-    method public void supportInvalidateOptionsMenu();
-    method public void supportNavigateUpTo(android.content.Intent);
-    method public boolean supportRequestWindowFeature(int);
-    method public boolean supportShouldUpRecreateTask(android.content.Intent);
-  }
-
-  public interface AppCompatCallback {
-    method public void onSupportActionModeFinished(androidx.appcompat.view.ActionMode!);
-    method public void onSupportActionModeStarted(androidx.appcompat.view.ActionMode!);
-    method public androidx.appcompat.view.ActionMode? onWindowStartingSupportActionMode(androidx.appcompat.view.ActionMode.Callback!);
-  }
-
-  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 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?);
-    method public static androidx.appcompat.app.AppCompatDelegate create(android.content.Context, android.app.Activity, androidx.appcompat.app.AppCompatCallback?);
-    method public abstract android.view.View! createView(android.view.View?, String!, android.content.Context, android.util.AttributeSet);
-    method public abstract <T extends android.view.View> T! findViewById(@IdRes int);
-    method public static int getDefaultNightMode();
-    method public abstract androidx.appcompat.app.ActionBarDrawerToggle.Delegate? getDrawerToggleDelegate();
-    method public int getLocalNightMode();
-    method public abstract android.view.MenuInflater! getMenuInflater();
-    method public abstract androidx.appcompat.app.ActionBar? getSupportActionBar();
-    method public abstract boolean hasWindowFeature(int);
-    method public abstract void installViewFactory();
-    method public abstract void invalidateOptionsMenu();
-    method public static boolean isCompatVectorFromResourcesEnabled();
-    method public abstract boolean isHandleNativeActionModesEnabled();
-    method public abstract void onConfigurationChanged(android.content.res.Configuration!);
-    method public abstract void onCreate(android.os.Bundle!);
-    method public abstract void onDestroy();
-    method public abstract void onPostCreate(android.os.Bundle!);
-    method public abstract void onPostResume();
-    method public abstract void onSaveInstanceState(android.os.Bundle!);
-    method public abstract void onStart();
-    method public abstract void onStop();
-    method public abstract boolean requestWindowFeature(int);
-    method public static void setCompatVectorFromResourcesEnabled(boolean);
-    method public abstract void setContentView(android.view.View!);
-    method public abstract void setContentView(@LayoutRes int);
-    method public abstract void setContentView(android.view.View!, android.view.ViewGroup.LayoutParams!);
-    method public static void setDefaultNightMode(int);
-    method public abstract void setHandleNativeActionModesEnabled(boolean);
-    method @RequiresApi(17) public abstract void setLocalNightMode(int);
-    method public abstract void setSupportActionBar(androidx.appcompat.widget.Toolbar?);
-    method public void setTheme(@StyleRes int);
-    method public abstract void setTitle(CharSequence?);
-    method public abstract androidx.appcompat.view.ActionMode? startSupportActionMode(androidx.appcompat.view.ActionMode.Callback);
-    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
-    field public static final int FEATURE_SUPPORT_ACTION_BAR = 108; // 0x6c
-    field public static final int FEATURE_SUPPORT_ACTION_BAR_OVERLAY = 109; // 0x6d
-    field @Deprecated public static final int MODE_NIGHT_AUTO = 0; // 0x0
-    field public static final int MODE_NIGHT_AUTO_BATTERY = 3; // 0x3
-    field @Deprecated public static final int MODE_NIGHT_AUTO_TIME = 0; // 0x0
-    field public static final int MODE_NIGHT_FOLLOW_SYSTEM = -1; // 0xffffffff
-    field public static final int MODE_NIGHT_NO = 1; // 0x1
-    field public static final int MODE_NIGHT_UNSPECIFIED = -100; // 0xffffff9c
-    field public static final int MODE_NIGHT_YES = 2; // 0x2
-  }
-
-  public class AppCompatDialog extends android.app.Dialog implements androidx.appcompat.app.AppCompatCallback {
-    ctor public AppCompatDialog(android.content.Context!);
-    ctor public AppCompatDialog(android.content.Context!, int);
-    ctor protected AppCompatDialog(android.content.Context!, boolean, android.content.DialogInterface.OnCancelListener!);
-    method public androidx.appcompat.app.AppCompatDelegate! getDelegate();
-    method public androidx.appcompat.app.ActionBar! getSupportActionBar();
-    method public void onSupportActionModeFinished(androidx.appcompat.view.ActionMode!);
-    method public void onSupportActionModeStarted(androidx.appcompat.view.ActionMode!);
-    method public androidx.appcompat.view.ActionMode? onWindowStartingSupportActionMode(androidx.appcompat.view.ActionMode.Callback!);
-    method public boolean supportRequestWindowFeature(int);
-  }
-
-  public class AppCompatDialogFragment extends androidx.fragment.app.DialogFragment {
-    ctor public AppCompatDialogFragment();
-  }
-
-  public class AppCompatViewInflater {
-    ctor public AppCompatViewInflater();
-    method protected androidx.appcompat.widget.AppCompatAutoCompleteTextView createAutoCompleteTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatButton createButton(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatCheckBox createCheckBox(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatCheckedTextView createCheckedTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatEditText createEditText(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatImageButton createImageButton(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatImageView createImageView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView createMultiAutoCompleteTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatRadioButton createRadioButton(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatRatingBar createRatingBar(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatSeekBar createSeekBar(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatSpinner createSpinner(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatTextView createTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatToggleButton createToggleButton(android.content.Context!, android.util.AttributeSet!);
-    method protected android.view.View? createView(android.content.Context!, String!, android.util.AttributeSet!);
-  }
-
-}
-
-package androidx.appcompat.graphics.drawable {
-
-  public class DrawerArrowDrawable extends android.graphics.drawable.Drawable {
-    ctor public DrawerArrowDrawable(android.content.Context!);
-    method public void draw(android.graphics.Canvas!);
-    method public float getArrowHeadLength();
-    method public float getArrowShaftLength();
-    method public float getBarLength();
-    method public float getBarThickness();
-    method @ColorInt public int getColor();
-    method public int getDirection();
-    method public float getGapSize();
-    method public int getOpacity();
-    method public final android.graphics.Paint! getPaint();
-    method @FloatRange(from=0.0, to=1.0) public float getProgress();
-    method public boolean isSpinEnabled();
-    method public void setAlpha(int);
-    method public void setArrowHeadLength(float);
-    method public void setArrowShaftLength(float);
-    method public void setBarLength(float);
-    method public void setBarThickness(float);
-    method public void setColor(@ColorInt int);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setDirection(int);
-    method public void setGapSize(float);
-    method public void setProgress(@FloatRange(from=0.0, to=1.0) float);
-    method public void setSpinEnabled(boolean);
-    method public void setVerticalMirror(boolean);
-    field public static final int ARROW_DIRECTION_END = 3; // 0x3
-    field public static final int ARROW_DIRECTION_LEFT = 0; // 0x0
-    field public static final int ARROW_DIRECTION_RIGHT = 1; // 0x1
-    field public static final int ARROW_DIRECTION_START = 2; // 0x2
-  }
-
-}
-
-package androidx.appcompat.view {
-
-  public abstract class ActionMode {
-    ctor public ActionMode();
-    method public abstract void finish();
-    method public abstract android.view.View! getCustomView();
-    method public abstract android.view.Menu! getMenu();
-    method public abstract android.view.MenuInflater! getMenuInflater();
-    method public abstract CharSequence! getSubtitle();
-    method public Object! getTag();
-    method public abstract CharSequence! getTitle();
-    method public boolean getTitleOptionalHint();
-    method public abstract void invalidate();
-    method public boolean isTitleOptional();
-    method public abstract void setCustomView(android.view.View!);
-    method public abstract void setSubtitle(CharSequence!);
-    method public abstract void setSubtitle(int);
-    method public void setTag(Object!);
-    method public abstract void setTitle(CharSequence!);
-    method public abstract void setTitle(int);
-    method public void setTitleOptionalHint(boolean);
-  }
-
-  public static interface ActionMode.Callback {
-    method public boolean onActionItemClicked(androidx.appcompat.view.ActionMode!, android.view.MenuItem!);
-    method public boolean onCreateActionMode(androidx.appcompat.view.ActionMode!, android.view.Menu!);
-    method public void onDestroyActionMode(androidx.appcompat.view.ActionMode!);
-    method public boolean onPrepareActionMode(androidx.appcompat.view.ActionMode!, android.view.Menu!);
-  }
-
-  @Deprecated public interface CollapsibleActionView {
-    method @Deprecated public void onActionViewCollapsed();
-    method @Deprecated public void onActionViewExpanded();
-  }
-
-  public class ContextThemeWrapper extends android.content.ContextWrapper {
-    ctor public ContextThemeWrapper();
-    ctor public ContextThemeWrapper(android.content.Context!, @StyleRes int);
-    ctor public ContextThemeWrapper(android.content.Context!, android.content.res.Resources.Theme!);
-    method public void applyOverrideConfiguration(android.content.res.Configuration!);
-    method public int getThemeResId();
-    method protected void onApplyThemeResource(android.content.res.Resources.Theme!, int, boolean);
-  }
-
-}
-
-package androidx.appcompat.widget {
-
-  public class ActionMenuView extends androidx.appcompat.widget.LinearLayoutCompat {
-    ctor public ActionMenuView(android.content.Context);
-    ctor public ActionMenuView(android.content.Context, android.util.AttributeSet?);
-    method public void dismissPopupMenus();
-    method protected androidx.appcompat.widget.ActionMenuView.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.appcompat.widget.ActionMenuView.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.ActionMenuView.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
-    method public android.view.Menu! getMenu();
-    method public android.graphics.drawable.Drawable? getOverflowIcon();
-    method public int getPopupTheme();
-    method public boolean hideOverflowMenu();
-    method public boolean isOverflowMenuShowing();
-    method public void onConfigurationChanged(android.content.res.Configuration!);
-    method public void onDetachedFromWindow();
-    method public void setOnMenuItemClickListener(androidx.appcompat.widget.ActionMenuView.OnMenuItemClickListener!);
-    method public void setOverflowIcon(android.graphics.drawable.Drawable?);
-    method public void setPopupTheme(@StyleRes int);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class ActionMenuView.LayoutParams extends androidx.appcompat.widget.LinearLayoutCompat.LayoutParams {
-    ctor public ActionMenuView.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    ctor public ActionMenuView.LayoutParams(androidx.appcompat.widget.ActionMenuView.LayoutParams!);
-    ctor public ActionMenuView.LayoutParams(int, int);
-    field @android.view.ViewDebug.ExportedProperty public int cellsUsed;
-    field @android.view.ViewDebug.ExportedProperty public boolean expandable;
-    field @android.view.ViewDebug.ExportedProperty public int extraPixels;
-    field @android.view.ViewDebug.ExportedProperty public boolean isOverflowButton;
-    field @android.view.ViewDebug.ExportedProperty public boolean preventEdgeOffset;
-  }
-
-  public static interface ActionMenuView.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem!);
-  }
-
-  public class AppCompatAutoCompleteTextView extends android.widget.AutoCompleteTextView implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatAutoCompleteTextView(android.content.Context);
-    ctor public AppCompatAutoCompleteTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatAutoCompleteTextView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatButton extends android.widget.Button implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundDrawablesView {
-    ctor public AppCompatButton(android.content.Context);
-    ctor public AppCompatButton(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatButton(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) throws java.lang.IllegalArgumentException;
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithPresetSizes(int[], int) throws java.lang.IllegalArgumentException;
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setSupportAllCaps(boolean);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatCheckBox extends android.widget.CheckBox implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundButton {
-    ctor public AppCompatCheckBox(android.content.Context);
-    ctor public AppCompatCheckBox(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatCheckBox(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportButtonTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatCheckedTextView extends android.widget.CheckedTextView {
-    ctor public AppCompatCheckedTextView(android.content.Context);
-    ctor public AppCompatCheckedTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatCheckedTextView(android.content.Context, android.util.AttributeSet?, int);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatEditText extends android.widget.EditText implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatEditText(android.content.Context);
-    ctor public AppCompatEditText(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatEditText(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatImageButton extends android.widget.ImageButton implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatImageButton(android.content.Context);
-    ctor public AppCompatImageButton(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatImageButton(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatImageView extends android.widget.ImageView implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatImageView(android.content.Context);
-    ctor public AppCompatImageView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatImageView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatMultiAutoCompleteTextView extends android.widget.MultiAutoCompleteTextView implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context);
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatRadioButton extends android.widget.RadioButton implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundButton {
-    ctor public AppCompatRadioButton(android.content.Context!);
-    ctor public AppCompatRadioButton(android.content.Context!, android.util.AttributeSet?);
-    ctor public AppCompatRadioButton(android.content.Context!, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportButtonTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatRatingBar extends android.widget.RatingBar {
-    ctor public AppCompatRatingBar(android.content.Context);
-    ctor public AppCompatRatingBar(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatRatingBar(android.content.Context, android.util.AttributeSet?, int);
-  }
-
-  public class AppCompatSeekBar extends android.widget.SeekBar {
-    ctor public AppCompatSeekBar(android.content.Context);
-    ctor public AppCompatSeekBar(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatSeekBar(android.content.Context, android.util.AttributeSet?, int);
-  }
-
-  public class AppCompatSpinner extends android.widget.Spinner implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatSpinner(android.content.Context);
-    ctor public AppCompatSpinner(android.content.Context, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?, int, int, android.content.res.Resources.Theme!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatTextView extends android.widget.TextView implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundDrawablesView {
-    ctor public AppCompatTextView(android.content.Context);
-    ctor public AppCompatTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatTextView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
-    method public androidx.core.text.PrecomputedTextCompat.Params getTextMetricsParamsCompat();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) throws java.lang.IllegalArgumentException;
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithPresetSizes(int[], int) throws java.lang.IllegalArgumentException;
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setPrecomputedText(androidx.core.text.PrecomputedTextCompat);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-    method public void setTextFuture(java.util.concurrent.Future<androidx.core.text.PrecomputedTextCompat!>?);
-    method public void setTextMetricsParamsCompat(androidx.core.text.PrecomputedTextCompat.Params);
-  }
-
-  public class AppCompatToggleButton extends android.widget.ToggleButton {
-    ctor public AppCompatToggleButton(android.content.Context);
-    ctor public AppCompatToggleButton(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatToggleButton(android.content.Context, android.util.AttributeSet?, int);
-  }
-
-  public class LinearLayoutCompat extends android.view.ViewGroup {
-    ctor public LinearLayoutCompat(android.content.Context);
-    ctor public LinearLayoutCompat(android.content.Context, android.util.AttributeSet?);
-    ctor public LinearLayoutCompat(android.content.Context, android.util.AttributeSet?, int);
-    method protected androidx.appcompat.widget.LinearLayoutCompat.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.appcompat.widget.LinearLayoutCompat.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.LinearLayoutCompat.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
-    method public int getBaselineAlignedChildIndex();
-    method public android.graphics.drawable.Drawable! getDividerDrawable();
-    method public int getDividerPadding();
-    method public int getGravity();
-    method public int getOrientation();
-    method public int getShowDividers();
-    method public float getWeightSum();
-    method public boolean isBaselineAligned();
-    method public boolean isMeasureWithLargestChildEnabled();
-    method public void setBaselineAligned(boolean);
-    method public void setBaselineAlignedChildIndex(int);
-    method public void setDividerDrawable(android.graphics.drawable.Drawable!);
-    method public void setDividerPadding(int);
-    method public void setGravity(int);
-    method public void setHorizontalGravity(int);
-    method public void setMeasureWithLargestChildEnabled(boolean);
-    method public void setOrientation(int);
-    method public void setShowDividers(int);
-    method public void setVerticalGravity(int);
-    method public void setWeightSum(float);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int SHOW_DIVIDER_BEGINNING = 1; // 0x1
-    field public static final int SHOW_DIVIDER_END = 4; // 0x4
-    field public static final int SHOW_DIVIDER_MIDDLE = 2; // 0x2
-    field public static final int SHOW_DIVIDER_NONE = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public static class LinearLayoutCompat.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public LinearLayoutCompat.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public LinearLayoutCompat.LayoutParams(int, int);
-    ctor public LinearLayoutCompat.LayoutParams(int, int, float);
-    ctor public LinearLayoutCompat.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    ctor public LinearLayoutCompat.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
-    ctor public LinearLayoutCompat.LayoutParams(androidx.appcompat.widget.LinearLayoutCompat.LayoutParams!);
-    field public int gravity;
-    field public float weight;
-  }
-
-  public class ListPopupWindow {
-    ctor public ListPopupWindow(android.content.Context);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet?);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet?, @AttrRes int);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet?, @AttrRes int, @StyleRes int);
-    method public void clearListSelection();
-    method public android.view.View.OnTouchListener! createDragToOpenListener(android.view.View!);
-    method public void dismiss();
-    method public android.view.View? getAnchorView();
-    method @StyleRes public int getAnimationStyle();
-    method public android.graphics.drawable.Drawable? getBackground();
-    method public android.graphics.Rect? getEpicenterBounds();
-    method public int getHeight();
-    method public int getHorizontalOffset();
-    method public int getInputMethodMode();
-    method public android.widget.ListView? getListView();
-    method public int getPromptPosition();
-    method public Object? getSelectedItem();
-    method public long getSelectedItemId();
-    method public int getSelectedItemPosition();
-    method public android.view.View? getSelectedView();
-    method public int getSoftInputMode();
-    method public int getVerticalOffset();
-    method public int getWidth();
-    method public boolean isInputMethodNotNeeded();
-    method public boolean isModal();
-    method public boolean isShowing();
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyPreIme(int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public boolean performItemClick(int);
-    method public void postShow();
-    method public void setAdapter(android.widget.ListAdapter?);
-    method public void setAnchorView(android.view.View?);
-    method public void setAnimationStyle(@StyleRes int);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable?);
-    method public void setContentWidth(int);
-    method public void setDropDownGravity(int);
-    method public void setEpicenterBounds(android.graphics.Rect?);
-    method public void setHeight(int);
-    method public void setHorizontalOffset(int);
-    method public void setInputMethodMode(int);
-    method public void setListSelector(android.graphics.drawable.Drawable!);
-    method public void setModal(boolean);
-    method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener?);
-    method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener?);
-    method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener?);
-    method public void setPromptPosition(int);
-    method public void setPromptView(android.view.View?);
-    method public void setSelection(int);
-    method public void setSoftInputMode(int);
-    method public void setVerticalOffset(int);
-    method public void setWidth(int);
-    method public void setWindowLayoutType(int);
-    method public void show();
-    field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
-    field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
-    field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int POSITION_PROMPT_ABOVE = 0; // 0x0
-    field public static final int POSITION_PROMPT_BELOW = 1; // 0x1
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  public class PopupMenu {
-    ctor public PopupMenu(android.content.Context, android.view.View);
-    ctor public PopupMenu(android.content.Context, android.view.View, int);
-    ctor public PopupMenu(android.content.Context, android.view.View, int, @AttrRes int, @StyleRes int);
-    method public void dismiss();
-    method public android.view.View.OnTouchListener getDragToOpenListener();
-    method public int getGravity();
-    method public android.view.Menu getMenu();
-    method public android.view.MenuInflater getMenuInflater();
-    method public void inflate(@MenuRes int);
-    method public void setGravity(int);
-    method public void setOnDismissListener(androidx.appcompat.widget.PopupMenu.OnDismissListener?);
-    method public void setOnMenuItemClickListener(androidx.appcompat.widget.PopupMenu.OnMenuItemClickListener?);
-    method public void show();
-  }
-
-  public static interface PopupMenu.OnDismissListener {
-    method public void onDismiss(androidx.appcompat.widget.PopupMenu!);
-  }
-
-  public static interface PopupMenu.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem!);
-  }
-
-  public class SearchView extends androidx.appcompat.widget.LinearLayoutCompat implements androidx.appcompat.view.CollapsibleActionView {
-    ctor public SearchView(android.content.Context);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet?);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet?, int);
-    method public int getImeOptions();
-    method public int getInputType();
-    method public int getMaxWidth();
-    method public CharSequence! getQuery();
-    method public CharSequence? getQueryHint();
-    method public androidx.cursoradapter.widget.CursorAdapter! getSuggestionsAdapter();
-    method public boolean isIconfiedByDefault();
-    method public boolean isIconified();
-    method public boolean isQueryRefinementEnabled();
-    method public boolean isSubmitButtonEnabled();
-    method public void onActionViewCollapsed();
-    method public void onActionViewExpanded();
-    method public void setIconified(boolean);
-    method public void setIconifiedByDefault(boolean);
-    method public void setImeOptions(int);
-    method public void setInputType(int);
-    method public void setMaxWidth(int);
-    method public void setOnCloseListener(androidx.appcompat.widget.SearchView.OnCloseListener!);
-    method public void setOnQueryTextFocusChangeListener(android.view.View.OnFocusChangeListener!);
-    method public void setOnQueryTextListener(androidx.appcompat.widget.SearchView.OnQueryTextListener!);
-    method public void setOnSearchClickListener(android.view.View.OnClickListener!);
-    method public void setOnSuggestionListener(androidx.appcompat.widget.SearchView.OnSuggestionListener!);
-    method public void setQuery(CharSequence!, boolean);
-    method public void setQueryHint(CharSequence?);
-    method public void setQueryRefinementEnabled(boolean);
-    method public void setSearchableInfo(android.app.SearchableInfo!);
-    method public void setSubmitButtonEnabled(boolean);
-    method public void setSuggestionsAdapter(androidx.cursoradapter.widget.CursorAdapter!);
-  }
-
-  public static interface SearchView.OnCloseListener {
-    method public boolean onClose();
-  }
-
-  public static interface SearchView.OnQueryTextListener {
-    method public boolean onQueryTextChange(String!);
-    method public boolean onQueryTextSubmit(String!);
-  }
-
-  public static interface SearchView.OnSuggestionListener {
-    method public boolean onSuggestionClick(int);
-    method public boolean onSuggestionSelect(int);
-  }
-
-  public class ShareActionProvider extends androidx.core.view.ActionProvider {
-    ctor public ShareActionProvider(android.content.Context!);
-    method public android.view.View! onCreateActionView();
-    method public void setOnShareTargetSelectedListener(androidx.appcompat.widget.ShareActionProvider.OnShareTargetSelectedListener!);
-    method public void setShareHistoryFileName(String!);
-    method public void setShareIntent(android.content.Intent!);
-    field public static final String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml";
-  }
-
-  public static interface ShareActionProvider.OnShareTargetSelectedListener {
-    method public boolean onShareTargetSelected(androidx.appcompat.widget.ShareActionProvider!, android.content.Intent!);
-  }
-
-  public class SwitchCompat extends android.widget.CompoundButton {
-    ctor public SwitchCompat(android.content.Context);
-    ctor public SwitchCompat(android.content.Context, android.util.AttributeSet?);
-    ctor public SwitchCompat(android.content.Context, android.util.AttributeSet?, int);
-    method public boolean getShowText();
-    method public boolean getSplitTrack();
-    method public int getSwitchMinWidth();
-    method public int getSwitchPadding();
-    method public CharSequence! getTextOff();
-    method public CharSequence! getTextOn();
-    method public android.graphics.drawable.Drawable! getThumbDrawable();
-    method public int getThumbTextPadding();
-    method public android.content.res.ColorStateList? getThumbTintList();
-    method public android.graphics.PorterDuff.Mode? getThumbTintMode();
-    method public android.graphics.drawable.Drawable! getTrackDrawable();
-    method public android.content.res.ColorStateList? getTrackTintList();
-    method public android.graphics.PorterDuff.Mode? getTrackTintMode();
-    method public void onMeasure(int, int);
-    method public void setShowText(boolean);
-    method public void setSplitTrack(boolean);
-    method public void setSwitchMinWidth(int);
-    method public void setSwitchPadding(int);
-    method public void setSwitchTextAppearance(android.content.Context!, int);
-    method public void setSwitchTypeface(android.graphics.Typeface!, int);
-    method public void setSwitchTypeface(android.graphics.Typeface!);
-    method public void setTextOff(CharSequence!);
-    method public void setTextOn(CharSequence!);
-    method public void setThumbDrawable(android.graphics.drawable.Drawable!);
-    method public void setThumbResource(int);
-    method public void setThumbTextPadding(int);
-    method public void setThumbTintList(android.content.res.ColorStateList?);
-    method public void setThumbTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTrackDrawable(android.graphics.drawable.Drawable!);
-    method public void setTrackResource(int);
-    method public void setTrackTintList(android.content.res.ColorStateList?);
-    method public void setTrackTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public interface ThemedSpinnerAdapter extends android.widget.SpinnerAdapter {
-    method public android.content.res.Resources.Theme? getDropDownViewTheme();
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme?);
-  }
-
-  public static final class ThemedSpinnerAdapter.Helper {
-    ctor public ThemedSpinnerAdapter.Helper(android.content.Context);
-    method public android.view.LayoutInflater getDropDownViewInflater();
-    method public android.content.res.Resources.Theme? getDropDownViewTheme();
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme?);
-  }
-
-  public class Toolbar extends android.view.ViewGroup {
-    ctor public Toolbar(android.content.Context);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet?);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet?, int);
-    method public void collapseActionView();
-    method public void dismissPopupMenus();
-    method protected androidx.appcompat.widget.Toolbar.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.appcompat.widget.Toolbar.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.Toolbar.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
-    method public CharSequence? getCollapseContentDescription();
-    method public android.graphics.drawable.Drawable? getCollapseIcon();
-    method public int getContentInsetEnd();
-    method public int getContentInsetEndWithActions();
-    method public int getContentInsetLeft();
-    method public int getContentInsetRight();
-    method public int getContentInsetStart();
-    method public int getContentInsetStartWithNavigation();
-    method public int getCurrentContentInsetEnd();
-    method public int getCurrentContentInsetLeft();
-    method public int getCurrentContentInsetRight();
-    method public int getCurrentContentInsetStart();
-    method public android.graphics.drawable.Drawable! getLogo();
-    method public CharSequence! getLogoDescription();
-    method public android.view.Menu! getMenu();
-    method public CharSequence? getNavigationContentDescription();
-    method public android.graphics.drawable.Drawable? getNavigationIcon();
-    method public android.graphics.drawable.Drawable? getOverflowIcon();
-    method public int getPopupTheme();
-    method public CharSequence! getSubtitle();
-    method public CharSequence! getTitle();
-    method public int getTitleMarginBottom();
-    method public int getTitleMarginEnd();
-    method public int getTitleMarginStart();
-    method public int getTitleMarginTop();
-    method public boolean hasExpandedActionView();
-    method public boolean hideOverflowMenu();
-    method public void inflateMenu(@MenuRes int);
-    method public boolean isOverflowMenuShowing();
-    method public void setCollapseContentDescription(@StringRes int);
-    method public void setCollapseContentDescription(CharSequence?);
-    method public void setCollapseIcon(@DrawableRes int);
-    method public void setCollapseIcon(android.graphics.drawable.Drawable?);
-    method public void setContentInsetEndWithActions(int);
-    method public void setContentInsetStartWithNavigation(int);
-    method public void setContentInsetsAbsolute(int, int);
-    method public void setContentInsetsRelative(int, int);
-    method public void setLogo(@DrawableRes int);
-    method public void setLogo(android.graphics.drawable.Drawable!);
-    method public void setLogoDescription(@StringRes int);
-    method public void setLogoDescription(CharSequence!);
-    method public void setNavigationContentDescription(@StringRes int);
-    method public void setNavigationContentDescription(CharSequence?);
-    method public void setNavigationIcon(@DrawableRes int);
-    method public void setNavigationIcon(android.graphics.drawable.Drawable?);
-    method public void setNavigationOnClickListener(android.view.View.OnClickListener!);
-    method public void setOnMenuItemClickListener(androidx.appcompat.widget.Toolbar.OnMenuItemClickListener!);
-    method public void setOverflowIcon(android.graphics.drawable.Drawable?);
-    method public void setPopupTheme(@StyleRes int);
-    method public void setSubtitle(@StringRes int);
-    method public void setSubtitle(CharSequence!);
-    method public void setSubtitleTextAppearance(android.content.Context!, @StyleRes int);
-    method public void setSubtitleTextColor(@ColorInt int);
-    method public void setSubtitleTextColor(android.content.res.ColorStateList);
-    method public void setTitle(@StringRes int);
-    method public void setTitle(CharSequence!);
-    method public void setTitleMargin(int, int, int, int);
-    method public void setTitleMarginBottom(int);
-    method public void setTitleMarginEnd(int);
-    method public void setTitleMarginStart(int);
-    method public void setTitleMarginTop(int);
-    method public void setTitleTextAppearance(android.content.Context!, @StyleRes int);
-    method public void setTitleTextColor(@ColorInt int);
-    method public void setTitleTextColor(android.content.res.ColorStateList);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class Toolbar.LayoutParams extends androidx.appcompat.app.ActionBar.LayoutParams {
-    ctor public Toolbar.LayoutParams(android.content.Context, android.util.AttributeSet!);
-    ctor public Toolbar.LayoutParams(int, int);
-    ctor public Toolbar.LayoutParams(int, int, int);
-    ctor public Toolbar.LayoutParams(int);
-    ctor public Toolbar.LayoutParams(androidx.appcompat.widget.Toolbar.LayoutParams!);
-    ctor public Toolbar.LayoutParams(androidx.appcompat.app.ActionBar.LayoutParams!);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.LayoutParams!);
-  }
-
-  public static interface Toolbar.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem!);
-  }
-
-  public static class Toolbar.SavedState extends androidx.customview.view.AbsSavedState {
-    ctor public Toolbar.SavedState(android.os.Parcel!);
-    ctor public Toolbar.SavedState(android.os.Parcel!, ClassLoader!);
-    ctor public Toolbar.SavedState(android.os.Parcelable!);
-    field public static final android.os.Parcelable.Creator<androidx.appcompat.widget.Toolbar.SavedState!>! CREATOR;
-  }
-
-  public class TooltipCompat {
-    method public static void setTooltipText(android.view.View, CharSequence?);
-  }
-
-}
-
diff --git a/appcompat/appcompat/api/public_plus_experimental_1.2.0-rc01.txt b/appcompat/appcompat/api/public_plus_experimental_1.2.0-rc01.txt
deleted file mode 100644
index 6f176e4..0000000
--- a/appcompat/appcompat/api/public_plus_experimental_1.2.0-rc01.txt
+++ /dev/null
@@ -1,987 +0,0 @@
-// Signature format: 3.0
-package androidx.appcompat.app {
-
-  public abstract class ActionBar {
-    ctor public ActionBar();
-    method public abstract void addOnMenuVisibilityListener(androidx.appcompat.app.ActionBar.OnMenuVisibilityListener!);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!, boolean);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!, int);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!, int, boolean);
-    method public abstract android.view.View! getCustomView();
-    method public abstract int getDisplayOptions();
-    method public float getElevation();
-    method public abstract int getHeight();
-    method public int getHideOffset();
-    method @Deprecated public abstract int getNavigationItemCount();
-    method @Deprecated public abstract int getNavigationMode();
-    method @Deprecated public abstract int getSelectedNavigationIndex();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab? getSelectedTab();
-    method public abstract CharSequence? getSubtitle();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! getTabAt(int);
-    method @Deprecated public abstract int getTabCount();
-    method public android.content.Context! getThemedContext();
-    method public abstract CharSequence? getTitle();
-    method public abstract void hide();
-    method public boolean isHideOnContentScrollEnabled();
-    method public abstract boolean isShowing();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! newTab();
-    method @Deprecated public abstract void removeAllTabs();
-    method public abstract void removeOnMenuVisibilityListener(androidx.appcompat.app.ActionBar.OnMenuVisibilityListener!);
-    method @Deprecated public abstract void removeTab(androidx.appcompat.app.ActionBar.Tab!);
-    method @Deprecated public abstract void removeTabAt(int);
-    method @Deprecated public abstract void selectTab(androidx.appcompat.app.ActionBar.Tab!);
-    method public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable?);
-    method public abstract void setCustomView(android.view.View!);
-    method public abstract void setCustomView(android.view.View!, androidx.appcompat.app.ActionBar.LayoutParams!);
-    method public abstract void setCustomView(int);
-    method public abstract void setDisplayHomeAsUpEnabled(boolean);
-    method public abstract void setDisplayOptions(int);
-    method public abstract void setDisplayOptions(int, int);
-    method public abstract void setDisplayShowCustomEnabled(boolean);
-    method public abstract void setDisplayShowHomeEnabled(boolean);
-    method public abstract void setDisplayShowTitleEnabled(boolean);
-    method public abstract void setDisplayUseLogoEnabled(boolean);
-    method public void setElevation(float);
-    method public void setHideOffset(int);
-    method public void setHideOnContentScrollEnabled(boolean);
-    method public void setHomeActionContentDescription(CharSequence?);
-    method public void setHomeActionContentDescription(@StringRes int);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable?);
-    method public void setHomeAsUpIndicator(@DrawableRes int);
-    method public void setHomeButtonEnabled(boolean);
-    method public abstract void setIcon(@DrawableRes int);
-    method public abstract void setIcon(android.graphics.drawable.Drawable!);
-    method @Deprecated public abstract void setListNavigationCallbacks(android.widget.SpinnerAdapter!, androidx.appcompat.app.ActionBar.OnNavigationListener!);
-    method public abstract void setLogo(@DrawableRes int);
-    method public abstract void setLogo(android.graphics.drawable.Drawable!);
-    method @Deprecated public abstract void setNavigationMode(int);
-    method @Deprecated public abstract void setSelectedNavigationItem(int);
-    method public void setSplitBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setStackedBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public abstract void setSubtitle(CharSequence!);
-    method public abstract void setSubtitle(int);
-    method public abstract void setTitle(CharSequence!);
-    method public abstract void setTitle(@StringRes int);
-    method public abstract void show();
-    field public static final int DISPLAY_HOME_AS_UP = 4; // 0x4
-    field public static final int DISPLAY_SHOW_CUSTOM = 16; // 0x10
-    field public static final int DISPLAY_SHOW_HOME = 2; // 0x2
-    field public static final int DISPLAY_SHOW_TITLE = 8; // 0x8
-    field public static final int DISPLAY_USE_LOGO = 1; // 0x1
-    field @Deprecated public static final int NAVIGATION_MODE_LIST = 1; // 0x1
-    field @Deprecated public static final int NAVIGATION_MODE_STANDARD = 0; // 0x0
-    field @Deprecated public static final int NAVIGATION_MODE_TABS = 2; // 0x2
-  }
-
-  public static class ActionBar.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public ActionBar.LayoutParams(android.content.Context, android.util.AttributeSet!);
-    ctor public ActionBar.LayoutParams(int, int);
-    ctor public ActionBar.LayoutParams(int, int, int);
-    ctor public ActionBar.LayoutParams(int);
-    ctor public ActionBar.LayoutParams(androidx.appcompat.app.ActionBar.LayoutParams!);
-    ctor public ActionBar.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    field public int gravity;
-  }
-
-  public static interface ActionBar.OnMenuVisibilityListener {
-    method public void onMenuVisibilityChanged(boolean);
-  }
-
-  @Deprecated public static interface ActionBar.OnNavigationListener {
-    method @Deprecated public boolean onNavigationItemSelected(int, long);
-  }
-
-  @Deprecated public abstract static class ActionBar.Tab {
-    ctor @Deprecated public ActionBar.Tab();
-    method @Deprecated public abstract CharSequence! getContentDescription();
-    method @Deprecated public abstract android.view.View! getCustomView();
-    method @Deprecated public abstract android.graphics.drawable.Drawable! getIcon();
-    method @Deprecated public abstract int getPosition();
-    method @Deprecated public abstract Object! getTag();
-    method @Deprecated public abstract CharSequence! getText();
-    method @Deprecated public abstract void select();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setContentDescription(@StringRes int);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setContentDescription(CharSequence!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setCustomView(android.view.View!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setCustomView(int);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setIcon(android.graphics.drawable.Drawable!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setIcon(@DrawableRes int);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setTabListener(androidx.appcompat.app.ActionBar.TabListener!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setTag(Object!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setText(CharSequence!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setText(int);
-    field @Deprecated public static final int INVALID_POSITION = -1; // 0xffffffff
-  }
-
-  @Deprecated public static interface ActionBar.TabListener {
-    method @Deprecated public void onTabReselected(androidx.appcompat.app.ActionBar.Tab!, androidx.fragment.app.FragmentTransaction!);
-    method @Deprecated public void onTabSelected(androidx.appcompat.app.ActionBar.Tab!, androidx.fragment.app.FragmentTransaction!);
-    method @Deprecated public void onTabUnselected(androidx.appcompat.app.ActionBar.Tab!, androidx.fragment.app.FragmentTransaction!);
-  }
-
-  public class ActionBarDrawerToggle implements androidx.drawerlayout.widget.DrawerLayout.DrawerListener {
-    ctor public ActionBarDrawerToggle(android.app.Activity!, androidx.drawerlayout.widget.DrawerLayout!, @StringRes int, @StringRes int);
-    ctor public ActionBarDrawerToggle(android.app.Activity!, androidx.drawerlayout.widget.DrawerLayout!, androidx.appcompat.widget.Toolbar!, @StringRes int, @StringRes int);
-    method public androidx.appcompat.graphics.drawable.DrawerArrowDrawable getDrawerArrowDrawable();
-    method public android.view.View.OnClickListener! getToolbarNavigationClickListener();
-    method public boolean isDrawerIndicatorEnabled();
-    method public boolean isDrawerSlideAnimationEnabled();
-    method public void onConfigurationChanged(android.content.res.Configuration!);
-    method public void onDrawerClosed(android.view.View!);
-    method public void onDrawerOpened(android.view.View!);
-    method public void onDrawerSlide(android.view.View!, float);
-    method public void onDrawerStateChanged(int);
-    method public boolean onOptionsItemSelected(android.view.MenuItem!);
-    method public void setDrawerArrowDrawable(androidx.appcompat.graphics.drawable.DrawerArrowDrawable);
-    method public void setDrawerIndicatorEnabled(boolean);
-    method public void setDrawerSlideAnimationEnabled(boolean);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable!);
-    method public void setHomeAsUpIndicator(int);
-    method public void setToolbarNavigationClickListener(android.view.View.OnClickListener!);
-    method public void syncState();
-  }
-
-  public static interface ActionBarDrawerToggle.Delegate {
-    method public android.content.Context! getActionBarThemedContext();
-    method public android.graphics.drawable.Drawable! getThemeUpIndicator();
-    method public boolean isNavigationVisible();
-    method public void setActionBarDescription(@StringRes int);
-    method public void setActionBarUpIndicator(android.graphics.drawable.Drawable!, @StringRes int);
-  }
-
-  public static interface ActionBarDrawerToggle.DelegateProvider {
-    method public androidx.appcompat.app.ActionBarDrawerToggle.Delegate? getDrawerToggleDelegate();
-  }
-
-  public class AlertDialog extends androidx.appcompat.app.AppCompatDialog implements android.content.DialogInterface {
-    ctor protected AlertDialog(android.content.Context);
-    ctor protected AlertDialog(android.content.Context, @StyleRes int);
-    ctor protected AlertDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener?);
-    method public android.widget.Button! getButton(int);
-    method public android.widget.ListView! getListView();
-    method public void setButton(int, CharSequence!, android.os.Message!);
-    method public void setButton(int, CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public void setButton(int, CharSequence!, android.graphics.drawable.Drawable!, android.content.DialogInterface.OnClickListener!);
-    method public void setCustomTitle(android.view.View!);
-    method public void setIcon(int);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setIconAttribute(int);
-    method public void setMessage(CharSequence!);
-    method public void setView(android.view.View!);
-    method public void setView(android.view.View!, int, int, int, int);
-  }
-
-  public static class AlertDialog.Builder {
-    ctor public AlertDialog.Builder(android.content.Context);
-    ctor public AlertDialog.Builder(android.content.Context, @StyleRes int);
-    method public androidx.appcompat.app.AlertDialog create();
-    method public android.content.Context getContext();
-    method public androidx.appcompat.app.AlertDialog.Builder! setAdapter(android.widget.ListAdapter!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setCancelable(boolean);
-    method public androidx.appcompat.app.AlertDialog.Builder! setCursor(android.database.Cursor!, android.content.DialogInterface.OnClickListener!, String!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setCustomTitle(android.view.View?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setIcon(@DrawableRes int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setIcon(android.graphics.drawable.Drawable?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setIconAttribute(@AttrRes int);
-    method @Deprecated public androidx.appcompat.app.AlertDialog.Builder! setInverseBackgroundForced(boolean);
-    method public androidx.appcompat.app.AlertDialog.Builder! setItems(@ArrayRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setItems(CharSequence![]!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMessage(@StringRes int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMessage(CharSequence?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMultiChoiceItems(@ArrayRes int, boolean[]!, android.content.DialogInterface.OnMultiChoiceClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMultiChoiceItems(CharSequence![]!, boolean[]!, android.content.DialogInterface.OnMultiChoiceClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMultiChoiceItems(android.database.Cursor!, String!, String!, android.content.DialogInterface.OnMultiChoiceClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNegativeButton(@StringRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNegativeButton(CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNegativeButtonIcon(android.graphics.drawable.Drawable!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNeutralButton(@StringRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNeutralButton(CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNeutralButtonIcon(android.graphics.drawable.Drawable!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnCancelListener(android.content.DialogInterface.OnCancelListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnDismissListener(android.content.DialogInterface.OnDismissListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnKeyListener(android.content.DialogInterface.OnKeyListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setPositiveButton(@StringRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setPositiveButton(CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setPositiveButtonIcon(android.graphics.drawable.Drawable!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(@ArrayRes int, int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(android.database.Cursor!, int, String!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(CharSequence![]!, int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(android.widget.ListAdapter!, int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setTitle(@StringRes int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setTitle(CharSequence?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setView(int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setView(android.view.View!);
-    method public androidx.appcompat.app.AlertDialog! show();
-  }
-
-  public class AppCompatActivity extends androidx.fragment.app.FragmentActivity implements androidx.appcompat.app.ActionBarDrawerToggle.DelegateProvider androidx.appcompat.app.AppCompatCallback androidx.core.app.TaskStackBuilder.SupportParentable {
-    ctor public AppCompatActivity();
-    ctor @ContentView public AppCompatActivity(@LayoutRes int);
-    method public androidx.appcompat.app.AppCompatDelegate getDelegate();
-    method public androidx.appcompat.app.ActionBarDrawerToggle.Delegate? getDrawerToggleDelegate();
-    method public androidx.appcompat.app.ActionBar? getSupportActionBar();
-    method public android.content.Intent? getSupportParentActivityIntent();
-    method public void onCreateSupportNavigateUpTaskStack(androidx.core.app.TaskStackBuilder);
-    method public final boolean onMenuItemSelected(int, android.view.MenuItem);
-    method protected void onNightModeChanged(int);
-    method public void onPrepareSupportNavigateUpTaskStack(androidx.core.app.TaskStackBuilder);
-    method @CallSuper public void onSupportActionModeFinished(androidx.appcompat.view.ActionMode);
-    method @CallSuper public void onSupportActionModeStarted(androidx.appcompat.view.ActionMode);
-    method @Deprecated public void onSupportContentChanged();
-    method public boolean onSupportNavigateUp();
-    method public androidx.appcompat.view.ActionMode? onWindowStartingSupportActionMode(androidx.appcompat.view.ActionMode.Callback);
-    method public void setSupportActionBar(androidx.appcompat.widget.Toolbar?);
-    method @Deprecated public void setSupportProgress(int);
-    method @Deprecated public void setSupportProgressBarIndeterminate(boolean);
-    method @Deprecated public void setSupportProgressBarIndeterminateVisibility(boolean);
-    method @Deprecated public void setSupportProgressBarVisibility(boolean);
-    method public androidx.appcompat.view.ActionMode? startSupportActionMode(androidx.appcompat.view.ActionMode.Callback);
-    method public void supportInvalidateOptionsMenu();
-    method public void supportNavigateUpTo(android.content.Intent);
-    method public boolean supportRequestWindowFeature(int);
-    method public boolean supportShouldUpRecreateTask(android.content.Intent);
-  }
-
-  public interface AppCompatCallback {
-    method public void onSupportActionModeFinished(androidx.appcompat.view.ActionMode!);
-    method public void onSupportActionModeStarted(androidx.appcompat.view.ActionMode!);
-    method public androidx.appcompat.view.ActionMode? onWindowStartingSupportActionMode(androidx.appcompat.view.ActionMode.Callback!);
-  }
-
-  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 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?);
-    method public static androidx.appcompat.app.AppCompatDelegate create(android.content.Context, android.app.Activity, androidx.appcompat.app.AppCompatCallback?);
-    method public abstract android.view.View! createView(android.view.View?, String!, android.content.Context, android.util.AttributeSet);
-    method public abstract <T extends android.view.View> T! findViewById(@IdRes int);
-    method public static int getDefaultNightMode();
-    method public abstract androidx.appcompat.app.ActionBarDrawerToggle.Delegate? getDrawerToggleDelegate();
-    method public int getLocalNightMode();
-    method public abstract android.view.MenuInflater! getMenuInflater();
-    method public abstract androidx.appcompat.app.ActionBar? getSupportActionBar();
-    method public abstract boolean hasWindowFeature(int);
-    method public abstract void installViewFactory();
-    method public abstract void invalidateOptionsMenu();
-    method public static boolean isCompatVectorFromResourcesEnabled();
-    method public abstract boolean isHandleNativeActionModesEnabled();
-    method public abstract void onConfigurationChanged(android.content.res.Configuration!);
-    method public abstract void onCreate(android.os.Bundle!);
-    method public abstract void onDestroy();
-    method public abstract void onPostCreate(android.os.Bundle!);
-    method public abstract void onPostResume();
-    method public abstract void onSaveInstanceState(android.os.Bundle!);
-    method public abstract void onStart();
-    method public abstract void onStop();
-    method public abstract boolean requestWindowFeature(int);
-    method public static void setCompatVectorFromResourcesEnabled(boolean);
-    method public abstract void setContentView(android.view.View!);
-    method public abstract void setContentView(@LayoutRes int);
-    method public abstract void setContentView(android.view.View!, android.view.ViewGroup.LayoutParams!);
-    method public static void setDefaultNightMode(int);
-    method public abstract void setHandleNativeActionModesEnabled(boolean);
-    method @RequiresApi(17) public abstract void setLocalNightMode(int);
-    method public abstract void setSupportActionBar(androidx.appcompat.widget.Toolbar?);
-    method public void setTheme(@StyleRes int);
-    method public abstract void setTitle(CharSequence?);
-    method public abstract androidx.appcompat.view.ActionMode? startSupportActionMode(androidx.appcompat.view.ActionMode.Callback);
-    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
-    field public static final int FEATURE_SUPPORT_ACTION_BAR = 108; // 0x6c
-    field public static final int FEATURE_SUPPORT_ACTION_BAR_OVERLAY = 109; // 0x6d
-    field @Deprecated public static final int MODE_NIGHT_AUTO = 0; // 0x0
-    field public static final int MODE_NIGHT_AUTO_BATTERY = 3; // 0x3
-    field @Deprecated public static final int MODE_NIGHT_AUTO_TIME = 0; // 0x0
-    field public static final int MODE_NIGHT_FOLLOW_SYSTEM = -1; // 0xffffffff
-    field public static final int MODE_NIGHT_NO = 1; // 0x1
-    field public static final int MODE_NIGHT_UNSPECIFIED = -100; // 0xffffff9c
-    field public static final int MODE_NIGHT_YES = 2; // 0x2
-  }
-
-  public class AppCompatDialog extends android.app.Dialog implements androidx.appcompat.app.AppCompatCallback {
-    ctor public AppCompatDialog(android.content.Context!);
-    ctor public AppCompatDialog(android.content.Context!, int);
-    ctor protected AppCompatDialog(android.content.Context!, boolean, android.content.DialogInterface.OnCancelListener!);
-    method public androidx.appcompat.app.AppCompatDelegate! getDelegate();
-    method public androidx.appcompat.app.ActionBar! getSupportActionBar();
-    method public void onSupportActionModeFinished(androidx.appcompat.view.ActionMode!);
-    method public void onSupportActionModeStarted(androidx.appcompat.view.ActionMode!);
-    method public androidx.appcompat.view.ActionMode? onWindowStartingSupportActionMode(androidx.appcompat.view.ActionMode.Callback!);
-    method public boolean supportRequestWindowFeature(int);
-  }
-
-  public class AppCompatDialogFragment extends androidx.fragment.app.DialogFragment {
-    ctor public AppCompatDialogFragment();
-  }
-
-  public class AppCompatViewInflater {
-    ctor public AppCompatViewInflater();
-    method protected androidx.appcompat.widget.AppCompatAutoCompleteTextView createAutoCompleteTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatButton createButton(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatCheckBox createCheckBox(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatCheckedTextView createCheckedTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatEditText createEditText(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatImageButton createImageButton(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatImageView createImageView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView createMultiAutoCompleteTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatRadioButton createRadioButton(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatRatingBar createRatingBar(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatSeekBar createSeekBar(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatSpinner createSpinner(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatTextView createTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatToggleButton createToggleButton(android.content.Context!, android.util.AttributeSet!);
-    method protected android.view.View? createView(android.content.Context!, String!, android.util.AttributeSet!);
-  }
-
-}
-
-package androidx.appcompat.graphics.drawable {
-
-  public class DrawerArrowDrawable extends android.graphics.drawable.Drawable {
-    ctor public DrawerArrowDrawable(android.content.Context!);
-    method public void draw(android.graphics.Canvas!);
-    method public float getArrowHeadLength();
-    method public float getArrowShaftLength();
-    method public float getBarLength();
-    method public float getBarThickness();
-    method @ColorInt public int getColor();
-    method public int getDirection();
-    method public float getGapSize();
-    method public int getOpacity();
-    method public final android.graphics.Paint! getPaint();
-    method @FloatRange(from=0.0, to=1.0) public float getProgress();
-    method public boolean isSpinEnabled();
-    method public void setAlpha(int);
-    method public void setArrowHeadLength(float);
-    method public void setArrowShaftLength(float);
-    method public void setBarLength(float);
-    method public void setBarThickness(float);
-    method public void setColor(@ColorInt int);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setDirection(int);
-    method public void setGapSize(float);
-    method public void setProgress(@FloatRange(from=0.0, to=1.0) float);
-    method public void setSpinEnabled(boolean);
-    method public void setVerticalMirror(boolean);
-    field public static final int ARROW_DIRECTION_END = 3; // 0x3
-    field public static final int ARROW_DIRECTION_LEFT = 0; // 0x0
-    field public static final int ARROW_DIRECTION_RIGHT = 1; // 0x1
-    field public static final int ARROW_DIRECTION_START = 2; // 0x2
-  }
-
-}
-
-package androidx.appcompat.view {
-
-  public abstract class ActionMode {
-    ctor public ActionMode();
-    method public abstract void finish();
-    method public abstract android.view.View! getCustomView();
-    method public abstract android.view.Menu! getMenu();
-    method public abstract android.view.MenuInflater! getMenuInflater();
-    method public abstract CharSequence! getSubtitle();
-    method public Object! getTag();
-    method public abstract CharSequence! getTitle();
-    method public boolean getTitleOptionalHint();
-    method public abstract void invalidate();
-    method public boolean isTitleOptional();
-    method public abstract void setCustomView(android.view.View!);
-    method public abstract void setSubtitle(CharSequence!);
-    method public abstract void setSubtitle(int);
-    method public void setTag(Object!);
-    method public abstract void setTitle(CharSequence!);
-    method public abstract void setTitle(int);
-    method public void setTitleOptionalHint(boolean);
-  }
-
-  public static interface ActionMode.Callback {
-    method public boolean onActionItemClicked(androidx.appcompat.view.ActionMode!, android.view.MenuItem!);
-    method public boolean onCreateActionMode(androidx.appcompat.view.ActionMode!, android.view.Menu!);
-    method public void onDestroyActionMode(androidx.appcompat.view.ActionMode!);
-    method public boolean onPrepareActionMode(androidx.appcompat.view.ActionMode!, android.view.Menu!);
-  }
-
-  @Deprecated public interface CollapsibleActionView {
-    method @Deprecated public void onActionViewCollapsed();
-    method @Deprecated public void onActionViewExpanded();
-  }
-
-  public class ContextThemeWrapper extends android.content.ContextWrapper {
-    ctor public ContextThemeWrapper();
-    ctor public ContextThemeWrapper(android.content.Context!, @StyleRes int);
-    ctor public ContextThemeWrapper(android.content.Context!, android.content.res.Resources.Theme!);
-    method public void applyOverrideConfiguration(android.content.res.Configuration!);
-    method public int getThemeResId();
-    method protected void onApplyThemeResource(android.content.res.Resources.Theme!, int, boolean);
-  }
-
-}
-
-package androidx.appcompat.widget {
-
-  public class ActionMenuView extends androidx.appcompat.widget.LinearLayoutCompat {
-    ctor public ActionMenuView(android.content.Context);
-    ctor public ActionMenuView(android.content.Context, android.util.AttributeSet?);
-    method public void dismissPopupMenus();
-    method protected androidx.appcompat.widget.ActionMenuView.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.appcompat.widget.ActionMenuView.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.ActionMenuView.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
-    method public android.view.Menu! getMenu();
-    method public android.graphics.drawable.Drawable? getOverflowIcon();
-    method public int getPopupTheme();
-    method public boolean hideOverflowMenu();
-    method public boolean isOverflowMenuShowing();
-    method public void onConfigurationChanged(android.content.res.Configuration!);
-    method public void onDetachedFromWindow();
-    method public void setOnMenuItemClickListener(androidx.appcompat.widget.ActionMenuView.OnMenuItemClickListener!);
-    method public void setOverflowIcon(android.graphics.drawable.Drawable?);
-    method public void setPopupTheme(@StyleRes int);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class ActionMenuView.LayoutParams extends androidx.appcompat.widget.LinearLayoutCompat.LayoutParams {
-    ctor public ActionMenuView.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    ctor public ActionMenuView.LayoutParams(androidx.appcompat.widget.ActionMenuView.LayoutParams!);
-    ctor public ActionMenuView.LayoutParams(int, int);
-    field @android.view.ViewDebug.ExportedProperty public int cellsUsed;
-    field @android.view.ViewDebug.ExportedProperty public boolean expandable;
-    field @android.view.ViewDebug.ExportedProperty public int extraPixels;
-    field @android.view.ViewDebug.ExportedProperty public boolean isOverflowButton;
-    field @android.view.ViewDebug.ExportedProperty public boolean preventEdgeOffset;
-  }
-
-  public static interface ActionMenuView.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem!);
-  }
-
-  public class AppCompatAutoCompleteTextView extends android.widget.AutoCompleteTextView implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatAutoCompleteTextView(android.content.Context);
-    ctor public AppCompatAutoCompleteTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatAutoCompleteTextView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatButton extends android.widget.Button implements androidx.core.widget.AutoSizeableTextView androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundDrawablesView {
-    ctor public AppCompatButton(android.content.Context);
-    ctor public AppCompatButton(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatButton(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) throws java.lang.IllegalArgumentException;
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithPresetSizes(int[], int) throws java.lang.IllegalArgumentException;
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setSupportAllCaps(boolean);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatCheckBox extends android.widget.CheckBox implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundButton {
-    ctor public AppCompatCheckBox(android.content.Context);
-    ctor public AppCompatCheckBox(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatCheckBox(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportButtonTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatCheckedTextView extends android.widget.CheckedTextView {
-    ctor public AppCompatCheckedTextView(android.content.Context);
-    ctor public AppCompatCheckedTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatCheckedTextView(android.content.Context, android.util.AttributeSet?, int);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatEditText extends android.widget.EditText implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatEditText(android.content.Context);
-    ctor public AppCompatEditText(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatEditText(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatImageButton extends android.widget.ImageButton implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableImageSourceView {
-    ctor public AppCompatImageButton(android.content.Context);
-    ctor public AppCompatImageButton(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatImageButton(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportImageTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportImageTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportImageTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportImageTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatImageView extends android.widget.ImageView implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableImageSourceView {
-    ctor public AppCompatImageView(android.content.Context);
-    ctor public AppCompatImageView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatImageView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportImageTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportImageTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportImageTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportImageTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatMultiAutoCompleteTextView extends android.widget.MultiAutoCompleteTextView implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context);
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatRadioButton extends android.widget.RadioButton implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundButton {
-    ctor public AppCompatRadioButton(android.content.Context!);
-    ctor public AppCompatRadioButton(android.content.Context!, android.util.AttributeSet?);
-    ctor public AppCompatRadioButton(android.content.Context!, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportButtonTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatRatingBar extends android.widget.RatingBar {
-    ctor public AppCompatRatingBar(android.content.Context);
-    ctor public AppCompatRatingBar(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatRatingBar(android.content.Context, android.util.AttributeSet?, int);
-  }
-
-  public class AppCompatSeekBar extends android.widget.SeekBar {
-    ctor public AppCompatSeekBar(android.content.Context);
-    ctor public AppCompatSeekBar(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatSeekBar(android.content.Context, android.util.AttributeSet?, int);
-  }
-
-  public class AppCompatSpinner extends android.widget.Spinner implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatSpinner(android.content.Context);
-    ctor public AppCompatSpinner(android.content.Context, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?, int, int, android.content.res.Resources.Theme!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatTextView extends android.widget.TextView implements androidx.core.widget.AutoSizeableTextView androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundDrawablesView {
-    ctor public AppCompatTextView(android.content.Context);
-    ctor public AppCompatTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatTextView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
-    method public androidx.core.text.PrecomputedTextCompat.Params getTextMetricsParamsCompat();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) throws java.lang.IllegalArgumentException;
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithPresetSizes(int[], int) throws java.lang.IllegalArgumentException;
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setPrecomputedText(androidx.core.text.PrecomputedTextCompat);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-    method public void setTextFuture(java.util.concurrent.Future<androidx.core.text.PrecomputedTextCompat!>?);
-    method public void setTextMetricsParamsCompat(androidx.core.text.PrecomputedTextCompat.Params);
-  }
-
-  public class AppCompatToggleButton extends android.widget.ToggleButton {
-    ctor public AppCompatToggleButton(android.content.Context);
-    ctor public AppCompatToggleButton(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatToggleButton(android.content.Context, android.util.AttributeSet?, int);
-  }
-
-  public class LinearLayoutCompat extends android.view.ViewGroup {
-    ctor public LinearLayoutCompat(android.content.Context);
-    ctor public LinearLayoutCompat(android.content.Context, android.util.AttributeSet?);
-    ctor public LinearLayoutCompat(android.content.Context, android.util.AttributeSet?, int);
-    method protected androidx.appcompat.widget.LinearLayoutCompat.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.appcompat.widget.LinearLayoutCompat.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.LinearLayoutCompat.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
-    method public int getBaselineAlignedChildIndex();
-    method public android.graphics.drawable.Drawable! getDividerDrawable();
-    method public int getDividerPadding();
-    method public int getGravity();
-    method public int getOrientation();
-    method public int getShowDividers();
-    method public float getWeightSum();
-    method public boolean isBaselineAligned();
-    method public boolean isMeasureWithLargestChildEnabled();
-    method public void setBaselineAligned(boolean);
-    method public void setBaselineAlignedChildIndex(int);
-    method public void setDividerDrawable(android.graphics.drawable.Drawable!);
-    method public void setDividerPadding(int);
-    method public void setGravity(int);
-    method public void setHorizontalGravity(int);
-    method public void setMeasureWithLargestChildEnabled(boolean);
-    method public void setOrientation(int);
-    method public void setShowDividers(int);
-    method public void setVerticalGravity(int);
-    method public void setWeightSum(float);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int SHOW_DIVIDER_BEGINNING = 1; // 0x1
-    field public static final int SHOW_DIVIDER_END = 4; // 0x4
-    field public static final int SHOW_DIVIDER_MIDDLE = 2; // 0x2
-    field public static final int SHOW_DIVIDER_NONE = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public static class LinearLayoutCompat.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public LinearLayoutCompat.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public LinearLayoutCompat.LayoutParams(int, int);
-    ctor public LinearLayoutCompat.LayoutParams(int, int, float);
-    ctor public LinearLayoutCompat.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    ctor public LinearLayoutCompat.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
-    ctor public LinearLayoutCompat.LayoutParams(androidx.appcompat.widget.LinearLayoutCompat.LayoutParams!);
-    field public int gravity;
-    field public float weight;
-  }
-
-  public class ListPopupWindow {
-    ctor public ListPopupWindow(android.content.Context);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet?);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet?, @AttrRes int);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet?, @AttrRes int, @StyleRes int);
-    method public void clearListSelection();
-    method public android.view.View.OnTouchListener! createDragToOpenListener(android.view.View!);
-    method public void dismiss();
-    method public android.view.View? getAnchorView();
-    method @StyleRes public int getAnimationStyle();
-    method public android.graphics.drawable.Drawable? getBackground();
-    method public android.graphics.Rect? getEpicenterBounds();
-    method public int getHeight();
-    method public int getHorizontalOffset();
-    method public int getInputMethodMode();
-    method public android.widget.ListView? getListView();
-    method public int getPromptPosition();
-    method public Object? getSelectedItem();
-    method public long getSelectedItemId();
-    method public int getSelectedItemPosition();
-    method public android.view.View? getSelectedView();
-    method public int getSoftInputMode();
-    method public int getVerticalOffset();
-    method public int getWidth();
-    method public boolean isInputMethodNotNeeded();
-    method public boolean isModal();
-    method public boolean isShowing();
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyPreIme(int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public boolean performItemClick(int);
-    method public void postShow();
-    method public void setAdapter(android.widget.ListAdapter?);
-    method public void setAnchorView(android.view.View?);
-    method public void setAnimationStyle(@StyleRes int);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable?);
-    method public void setContentWidth(int);
-    method public void setDropDownGravity(int);
-    method public void setEpicenterBounds(android.graphics.Rect?);
-    method public void setHeight(int);
-    method public void setHorizontalOffset(int);
-    method public void setInputMethodMode(int);
-    method public void setListSelector(android.graphics.drawable.Drawable!);
-    method public void setModal(boolean);
-    method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener?);
-    method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener?);
-    method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener?);
-    method public void setPromptPosition(int);
-    method public void setPromptView(android.view.View?);
-    method public void setSelection(int);
-    method public void setSoftInputMode(int);
-    method public void setVerticalOffset(int);
-    method public void setWidth(int);
-    method public void setWindowLayoutType(int);
-    method public void show();
-    field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
-    field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
-    field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int POSITION_PROMPT_ABOVE = 0; // 0x0
-    field public static final int POSITION_PROMPT_BELOW = 1; // 0x1
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  public class PopupMenu {
-    ctor public PopupMenu(android.content.Context, android.view.View);
-    ctor public PopupMenu(android.content.Context, android.view.View, int);
-    ctor public PopupMenu(android.content.Context, android.view.View, int, @AttrRes int, @StyleRes int);
-    method public void dismiss();
-    method public android.view.View.OnTouchListener getDragToOpenListener();
-    method public int getGravity();
-    method public android.view.Menu getMenu();
-    method public android.view.MenuInflater getMenuInflater();
-    method public void inflate(@MenuRes int);
-    method public void setGravity(int);
-    method public void setOnDismissListener(androidx.appcompat.widget.PopupMenu.OnDismissListener?);
-    method public void setOnMenuItemClickListener(androidx.appcompat.widget.PopupMenu.OnMenuItemClickListener?);
-    method public void show();
-  }
-
-  public static interface PopupMenu.OnDismissListener {
-    method public void onDismiss(androidx.appcompat.widget.PopupMenu!);
-  }
-
-  public static interface PopupMenu.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem!);
-  }
-
-  public class SearchView extends androidx.appcompat.widget.LinearLayoutCompat implements androidx.appcompat.view.CollapsibleActionView {
-    ctor public SearchView(android.content.Context);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet?);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet?, int);
-    method public int getImeOptions();
-    method public int getInputType();
-    method public int getMaxWidth();
-    method public CharSequence! getQuery();
-    method public CharSequence? getQueryHint();
-    method public androidx.cursoradapter.widget.CursorAdapter! getSuggestionsAdapter();
-    method public boolean isIconfiedByDefault();
-    method public boolean isIconified();
-    method public boolean isQueryRefinementEnabled();
-    method public boolean isSubmitButtonEnabled();
-    method public void onActionViewCollapsed();
-    method public void onActionViewExpanded();
-    method public void setIconified(boolean);
-    method public void setIconifiedByDefault(boolean);
-    method public void setImeOptions(int);
-    method public void setInputType(int);
-    method public void setMaxWidth(int);
-    method public void setOnCloseListener(androidx.appcompat.widget.SearchView.OnCloseListener!);
-    method public void setOnQueryTextFocusChangeListener(android.view.View.OnFocusChangeListener!);
-    method public void setOnQueryTextListener(androidx.appcompat.widget.SearchView.OnQueryTextListener!);
-    method public void setOnSearchClickListener(android.view.View.OnClickListener!);
-    method public void setOnSuggestionListener(androidx.appcompat.widget.SearchView.OnSuggestionListener!);
-    method public void setQuery(CharSequence!, boolean);
-    method public void setQueryHint(CharSequence?);
-    method public void setQueryRefinementEnabled(boolean);
-    method public void setSearchableInfo(android.app.SearchableInfo!);
-    method public void setSubmitButtonEnabled(boolean);
-    method public void setSuggestionsAdapter(androidx.cursoradapter.widget.CursorAdapter!);
-  }
-
-  public static interface SearchView.OnCloseListener {
-    method public boolean onClose();
-  }
-
-  public static interface SearchView.OnQueryTextListener {
-    method public boolean onQueryTextChange(String!);
-    method public boolean onQueryTextSubmit(String!);
-  }
-
-  public static interface SearchView.OnSuggestionListener {
-    method public boolean onSuggestionClick(int);
-    method public boolean onSuggestionSelect(int);
-  }
-
-  public class ShareActionProvider extends androidx.core.view.ActionProvider {
-    ctor public ShareActionProvider(android.content.Context!);
-    method public android.view.View! onCreateActionView();
-    method public void setOnShareTargetSelectedListener(androidx.appcompat.widget.ShareActionProvider.OnShareTargetSelectedListener!);
-    method public void setShareHistoryFileName(String!);
-    method public void setShareIntent(android.content.Intent!);
-    field public static final String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml";
-  }
-
-  public static interface ShareActionProvider.OnShareTargetSelectedListener {
-    method public boolean onShareTargetSelected(androidx.appcompat.widget.ShareActionProvider!, android.content.Intent!);
-  }
-
-  public class SwitchCompat extends android.widget.CompoundButton {
-    ctor public SwitchCompat(android.content.Context);
-    ctor public SwitchCompat(android.content.Context, android.util.AttributeSet?);
-    ctor public SwitchCompat(android.content.Context, android.util.AttributeSet?, int);
-    method public boolean getShowText();
-    method public boolean getSplitTrack();
-    method public int getSwitchMinWidth();
-    method public int getSwitchPadding();
-    method public CharSequence! getTextOff();
-    method public CharSequence! getTextOn();
-    method public android.graphics.drawable.Drawable! getThumbDrawable();
-    method public int getThumbTextPadding();
-    method public android.content.res.ColorStateList? getThumbTintList();
-    method public android.graphics.PorterDuff.Mode? getThumbTintMode();
-    method public android.graphics.drawable.Drawable! getTrackDrawable();
-    method public android.content.res.ColorStateList? getTrackTintList();
-    method public android.graphics.PorterDuff.Mode? getTrackTintMode();
-    method public void onMeasure(int, int);
-    method public void setShowText(boolean);
-    method public void setSplitTrack(boolean);
-    method public void setSwitchMinWidth(int);
-    method public void setSwitchPadding(int);
-    method public void setSwitchTextAppearance(android.content.Context!, int);
-    method public void setSwitchTypeface(android.graphics.Typeface!, int);
-    method public void setSwitchTypeface(android.graphics.Typeface!);
-    method public void setTextOff(CharSequence!);
-    method public void setTextOn(CharSequence!);
-    method public void setThumbDrawable(android.graphics.drawable.Drawable!);
-    method public void setThumbResource(int);
-    method public void setThumbTextPadding(int);
-    method public void setThumbTintList(android.content.res.ColorStateList?);
-    method public void setThumbTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTrackDrawable(android.graphics.drawable.Drawable!);
-    method public void setTrackResource(int);
-    method public void setTrackTintList(android.content.res.ColorStateList?);
-    method public void setTrackTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public interface ThemedSpinnerAdapter extends android.widget.SpinnerAdapter {
-    method public android.content.res.Resources.Theme? getDropDownViewTheme();
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme?);
-  }
-
-  public static final class ThemedSpinnerAdapter.Helper {
-    ctor public ThemedSpinnerAdapter.Helper(android.content.Context);
-    method public android.view.LayoutInflater getDropDownViewInflater();
-    method public android.content.res.Resources.Theme? getDropDownViewTheme();
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme?);
-  }
-
-  public class Toolbar extends android.view.ViewGroup {
-    ctor public Toolbar(android.content.Context);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet?);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet?, int);
-    method public void collapseActionView();
-    method public void dismissPopupMenus();
-    method protected androidx.appcompat.widget.Toolbar.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.appcompat.widget.Toolbar.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.Toolbar.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
-    method public CharSequence? getCollapseContentDescription();
-    method public android.graphics.drawable.Drawable? getCollapseIcon();
-    method public int getContentInsetEnd();
-    method public int getContentInsetEndWithActions();
-    method public int getContentInsetLeft();
-    method public int getContentInsetRight();
-    method public int getContentInsetStart();
-    method public int getContentInsetStartWithNavigation();
-    method public int getCurrentContentInsetEnd();
-    method public int getCurrentContentInsetLeft();
-    method public int getCurrentContentInsetRight();
-    method public int getCurrentContentInsetStart();
-    method public android.graphics.drawable.Drawable! getLogo();
-    method public CharSequence! getLogoDescription();
-    method public android.view.Menu! getMenu();
-    method public CharSequence? getNavigationContentDescription();
-    method public android.graphics.drawable.Drawable? getNavigationIcon();
-    method public android.graphics.drawable.Drawable? getOverflowIcon();
-    method public int getPopupTheme();
-    method public CharSequence! getSubtitle();
-    method public CharSequence! getTitle();
-    method public int getTitleMarginBottom();
-    method public int getTitleMarginEnd();
-    method public int getTitleMarginStart();
-    method public int getTitleMarginTop();
-    method public boolean hasExpandedActionView();
-    method public boolean hideOverflowMenu();
-    method public void inflateMenu(@MenuRes int);
-    method public boolean isOverflowMenuShowing();
-    method public void setCollapseContentDescription(@StringRes int);
-    method public void setCollapseContentDescription(CharSequence?);
-    method public void setCollapseIcon(@DrawableRes int);
-    method public void setCollapseIcon(android.graphics.drawable.Drawable?);
-    method public void setContentInsetEndWithActions(int);
-    method public void setContentInsetStartWithNavigation(int);
-    method public void setContentInsetsAbsolute(int, int);
-    method public void setContentInsetsRelative(int, int);
-    method public void setLogo(@DrawableRes int);
-    method public void setLogo(android.graphics.drawable.Drawable!);
-    method public void setLogoDescription(@StringRes int);
-    method public void setLogoDescription(CharSequence!);
-    method public void setNavigationContentDescription(@StringRes int);
-    method public void setNavigationContentDescription(CharSequence?);
-    method public void setNavigationIcon(@DrawableRes int);
-    method public void setNavigationIcon(android.graphics.drawable.Drawable?);
-    method public void setNavigationOnClickListener(android.view.View.OnClickListener!);
-    method public void setOnMenuItemClickListener(androidx.appcompat.widget.Toolbar.OnMenuItemClickListener!);
-    method public void setOverflowIcon(android.graphics.drawable.Drawable?);
-    method public void setPopupTheme(@StyleRes int);
-    method public void setSubtitle(@StringRes int);
-    method public void setSubtitle(CharSequence!);
-    method public void setSubtitleTextAppearance(android.content.Context!, @StyleRes int);
-    method public void setSubtitleTextColor(@ColorInt int);
-    method public void setSubtitleTextColor(android.content.res.ColorStateList);
-    method public void setTitle(@StringRes int);
-    method public void setTitle(CharSequence!);
-    method public void setTitleMargin(int, int, int, int);
-    method public void setTitleMarginBottom(int);
-    method public void setTitleMarginEnd(int);
-    method public void setTitleMarginStart(int);
-    method public void setTitleMarginTop(int);
-    method public void setTitleTextAppearance(android.content.Context!, @StyleRes int);
-    method public void setTitleTextColor(@ColorInt int);
-    method public void setTitleTextColor(android.content.res.ColorStateList);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class Toolbar.LayoutParams extends androidx.appcompat.app.ActionBar.LayoutParams {
-    ctor public Toolbar.LayoutParams(android.content.Context, android.util.AttributeSet!);
-    ctor public Toolbar.LayoutParams(int, int);
-    ctor public Toolbar.LayoutParams(int, int, int);
-    ctor public Toolbar.LayoutParams(int);
-    ctor public Toolbar.LayoutParams(androidx.appcompat.widget.Toolbar.LayoutParams!);
-    ctor public Toolbar.LayoutParams(androidx.appcompat.app.ActionBar.LayoutParams!);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.LayoutParams!);
-  }
-
-  public static interface Toolbar.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem!);
-  }
-
-  public static class Toolbar.SavedState extends androidx.customview.view.AbsSavedState {
-    ctor public Toolbar.SavedState(android.os.Parcel!);
-    ctor public Toolbar.SavedState(android.os.Parcel!, ClassLoader!);
-    ctor public Toolbar.SavedState(android.os.Parcelable!);
-    field public static final android.os.Parcelable.Creator<androidx.appcompat.widget.Toolbar.SavedState!>! CREATOR;
-  }
-
-  public class TooltipCompat {
-    method public static void setTooltipText(android.view.View, CharSequence?);
-  }
-
-}
-
diff --git a/appcompat/appcompat/api/res-1.2.0-rc01.txt b/appcompat/appcompat/api/res-1.2.0-rc01.txt
deleted file mode 100644
index cb8c1e3..0000000
--- a/appcompat/appcompat/api/res-1.2.0-rc01.txt
+++ /dev/null
@@ -1,366 +0,0 @@
-attr actionBarDivider
-attr actionBarItemBackground
-attr actionBarPopupTheme
-attr actionBarSize
-attr actionBarSplitStyle
-attr actionBarStyle
-attr actionBarTabBarStyle
-attr actionBarTabStyle
-attr actionBarTabTextStyle
-attr actionBarTheme
-attr actionBarWidgetTheme
-attr actionButtonStyle
-attr actionDropDownStyle
-attr actionLayout
-attr actionMenuTextAppearance
-attr actionMenuTextColor
-attr actionModeBackground
-attr actionModeCloseButtonStyle
-attr actionModeCloseDrawable
-attr actionModeCopyDrawable
-attr actionModeCutDrawable
-attr actionModeFindDrawable
-attr actionModePasteDrawable
-attr actionModeSelectAllDrawable
-attr actionModeShareDrawable
-attr actionModeSplitBackground
-attr actionModeStyle
-attr actionModeWebSearchDrawable
-attr actionOverflowButtonStyle
-attr actionOverflowMenuStyle
-attr actionProviderClass
-attr actionViewClass
-attr alertDialogStyle
-attr alertDialogTheme
-attr arrowHeadLength
-attr arrowShaftLength
-attr autoCompleteTextViewStyle
-attr autoSizeMaxTextSize
-attr autoSizeMinTextSize
-attr autoSizePresetSizes
-attr autoSizeStepGranularity
-attr autoSizeTextType
-attr background
-attr backgroundSplit
-attr backgroundStacked
-attr backgroundTint
-attr backgroundTintMode
-attr barLength
-attr borderlessButtonStyle
-attr buttonBarButtonStyle
-attr buttonBarNegativeButtonStyle
-attr buttonBarNeutralButtonStyle
-attr buttonBarPositiveButtonStyle
-attr buttonBarStyle
-attr buttonGravity
-attr buttonStyle
-attr buttonStyleSmall
-attr buttonTint
-attr buttonTintMode
-attr checkboxStyle
-attr checkedTextViewStyle
-attr closeIcon
-attr closeItemLayout
-attr collapseContentDescription
-attr collapseIcon
-attr color
-attr colorAccent
-attr colorBackgroundFloating
-attr colorButtonNormal
-attr colorControlActivated
-attr colorControlHighlight
-attr colorControlNormal
-attr colorError
-attr colorPrimary
-attr colorPrimaryDark
-attr commitIcon
-attr contentInsetEnd
-attr contentInsetEndWithActions
-attr contentInsetLeft
-attr contentInsetRight
-attr contentInsetStart
-attr contentInsetStartWithNavigation
-attr customNavigationLayout
-attr dialogCornerRadius
-attr dialogPreferredPadding
-attr dialogTheme
-attr displayOptions
-attr divider
-attr dividerHorizontal
-attr dividerPadding
-attr dividerVertical
-attr drawableSize
-attr drawerArrowStyle
-attr dropDownListViewStyle
-attr editTextBackground
-attr editTextColor
-attr editTextStyle
-attr elevation
-attr firstBaselineToTopHeight
-attr fontFamily
-attr fontVariationSettings
-attr gapBetweenBars
-attr goIcon
-attr height
-attr hideOnContentScroll
-attr homeAsUpIndicator
-attr homeLayout
-attr icon
-attr iconTint
-attr iconTintMode
-attr iconifiedByDefault
-attr imageButtonStyle
-attr indeterminateProgressStyle
-attr isLightTheme
-attr itemPadding
-attr lastBaselineToBottomHeight
-attr layout
-attr lineHeight
-attr listChoiceBackgroundIndicator
-attr listChoiceIndicatorMultipleAnimated
-attr listChoiceIndicatorSingleAnimated
-attr listDividerAlertDialog
-attr listPopupWindowStyle
-attr listPreferredItemHeight
-attr listPreferredItemHeightLarge
-attr listPreferredItemHeightSmall
-attr listPreferredItemPaddingEnd
-attr listPreferredItemPaddingLeft
-attr listPreferredItemPaddingRight
-attr listPreferredItemPaddingStart
-attr logo
-attr logoDescription
-attr maxButtonHeight
-attr measureWithLargestChild
-attr navigationContentDescription
-attr navigationIcon
-attr navigationMode
-attr overlapAnchor
-attr paddingEnd
-attr paddingStart
-attr panelBackground
-attr popupMenuStyle
-attr popupTheme
-attr popupWindowStyle
-attr preserveIconSpacing
-attr progressBarPadding
-attr progressBarStyle
-attr queryBackground
-attr queryHint
-attr radioButtonStyle
-attr ratingBarStyle
-attr ratingBarStyleIndicator
-attr ratingBarStyleSmall
-attr searchHintIcon
-attr searchIcon
-attr searchViewStyle
-attr seekBarStyle
-attr selectableItemBackground
-attr selectableItemBackgroundBorderless
-attr showAsAction
-attr showDividers
-attr showText
-attr spinBars
-attr spinnerDropDownItemStyle
-attr spinnerStyle
-attr splitTrack
-attr srcCompat
-attr state_above_anchor
-attr submitBackground
-attr subtitle
-attr subtitleTextAppearance
-attr subtitleTextColor
-attr subtitleTextStyle
-attr suggestionRowLayout
-attr switchMinWidth
-attr switchPadding
-attr switchStyle
-attr switchTextAppearance
-attr textAllCaps
-attr textAppearanceLargePopupMenu
-attr textAppearanceListItem
-attr textAppearanceListItemSecondary
-attr textAppearanceListItemSmall
-attr textAppearancePopupMenuHeader
-attr textAppearanceSearchResultSubtitle
-attr textAppearanceSearchResultTitle
-attr textAppearanceSmallPopupMenu
-attr textColorAlertDialogListItem
-attr textLocale
-attr theme
-attr thickness
-attr thumbTextPadding
-attr thumbTint
-attr thumbTintMode
-attr tickMark
-attr tickMarkTint
-attr tickMarkTintMode
-attr tint
-attr tintMode
-attr title
-attr titleMargin
-attr titleMarginBottom
-attr titleMarginEnd
-attr titleMarginStart
-attr titleMarginTop
-attr titleMargins
-attr titleTextAppearance
-attr titleTextColor
-attr titleTextStyle
-attr toolbarNavigationButtonStyle
-attr toolbarStyle
-attr track
-attr trackTint
-attr trackTintMode
-attr voiceIcon
-attr windowActionBar
-attr windowActionBarOverlay
-attr windowActionModeOverlay
-attr windowNoTitle
-layout support_simple_spinner_dropdown_item
-style TextAppearance_AppCompat
-style TextAppearance_AppCompat_Body1
-style TextAppearance_AppCompat_Body2
-style TextAppearance_AppCompat_Button
-style TextAppearance_AppCompat_Caption
-style TextAppearance_AppCompat_Display1
-style TextAppearance_AppCompat_Display2
-style TextAppearance_AppCompat_Display3
-style TextAppearance_AppCompat_Display4
-style TextAppearance_AppCompat_Headline
-style TextAppearance_AppCompat_Inverse
-style TextAppearance_AppCompat_Large
-style TextAppearance_AppCompat_Large_Inverse
-style TextAppearance_AppCompat_Light_SearchResult_Subtitle
-style TextAppearance_AppCompat_Light_SearchResult_Title
-style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large
-style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small
-style TextAppearance_AppCompat_Medium
-style TextAppearance_AppCompat_Medium_Inverse
-style TextAppearance_AppCompat_Menu
-style TextAppearance_AppCompat_SearchResult_Subtitle
-style TextAppearance_AppCompat_SearchResult_Title
-style TextAppearance_AppCompat_Small
-style TextAppearance_AppCompat_Small_Inverse
-style TextAppearance_AppCompat_Subhead
-style TextAppearance_AppCompat_Subhead_Inverse
-style TextAppearance_AppCompat_Title
-style TextAppearance_AppCompat_Title_Inverse
-style TextAppearance_AppCompat_Widget_ActionBar_Menu
-style TextAppearance_AppCompat_Widget_ActionBar_Subtitle
-style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse
-style TextAppearance_AppCompat_Widget_ActionBar_Title
-style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse
-style TextAppearance_AppCompat_Widget_ActionMode_Subtitle
-style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse
-style TextAppearance_AppCompat_Widget_ActionMode_Title
-style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse
-style TextAppearance_AppCompat_Widget_Button
-style TextAppearance_AppCompat_Widget_Button_Borderless_Colored
-style TextAppearance_AppCompat_Widget_Button_Colored
-style TextAppearance_AppCompat_Widget_Button_Inverse
-style TextAppearance_AppCompat_Widget_DropDownItem
-style TextAppearance_AppCompat_Widget_PopupMenu_Header
-style TextAppearance_AppCompat_Widget_PopupMenu_Large
-style TextAppearance_AppCompat_Widget_PopupMenu_Small
-style TextAppearance_AppCompat_Widget_Switch
-style TextAppearance_AppCompat_Widget_TextView_SpinnerItem
-style ThemeOverlay_AppCompat
-style ThemeOverlay_AppCompat_ActionBar
-style ThemeOverlay_AppCompat_Dark
-style ThemeOverlay_AppCompat_Dark_ActionBar
-style ThemeOverlay_AppCompat_DayNight
-style ThemeOverlay_AppCompat_DayNight_ActionBar
-style ThemeOverlay_AppCompat_Dialog
-style ThemeOverlay_AppCompat_Dialog_Alert
-style ThemeOverlay_AppCompat_Light
-style Theme_AppCompat
-style Theme_AppCompat_DayNight
-style Theme_AppCompat_DayNight_DarkActionBar
-style Theme_AppCompat_DayNight_Dialog
-style Theme_AppCompat_DayNight_DialogWhenLarge
-style Theme_AppCompat_DayNight_Dialog_Alert
-style Theme_AppCompat_DayNight_Dialog_MinWidth
-style Theme_AppCompat_DayNight_NoActionBar
-style Theme_AppCompat_Dialog
-style Theme_AppCompat_DialogWhenLarge
-style Theme_AppCompat_Dialog_Alert
-style Theme_AppCompat_Dialog_MinWidth
-style Theme_AppCompat_Light
-style Theme_AppCompat_Light_DarkActionBar
-style Theme_AppCompat_Light_Dialog
-style Theme_AppCompat_Light_DialogWhenLarge
-style Theme_AppCompat_Light_Dialog_Alert
-style Theme_AppCompat_Light_Dialog_MinWidth
-style Theme_AppCompat_Light_NoActionBar
-style Theme_AppCompat_NoActionBar
-style Widget_AppCompat_ActionBar
-style Widget_AppCompat_ActionBar_Solid
-style Widget_AppCompat_ActionBar_TabBar
-style Widget_AppCompat_ActionBar_TabText
-style Widget_AppCompat_ActionBar_TabView
-style Widget_AppCompat_ActionButton
-style Widget_AppCompat_ActionButton_CloseMode
-style Widget_AppCompat_ActionButton_Overflow
-style Widget_AppCompat_ActionMode
-style Widget_AppCompat_AutoCompleteTextView
-style Widget_AppCompat_Button
-style Widget_AppCompat_ButtonBar
-style Widget_AppCompat_ButtonBar_AlertDialog
-style Widget_AppCompat_Button_Borderless
-style Widget_AppCompat_Button_Borderless_Colored
-style Widget_AppCompat_Button_ButtonBar_AlertDialog
-style Widget_AppCompat_Button_Colored
-style Widget_AppCompat_Button_Small
-style Widget_AppCompat_CompoundButton_CheckBox
-style Widget_AppCompat_CompoundButton_RadioButton
-style Widget_AppCompat_CompoundButton_Switch
-style Widget_AppCompat_DrawerArrowToggle
-style Widget_AppCompat_DropDownItem_Spinner
-style Widget_AppCompat_EditText
-style Widget_AppCompat_ImageButton
-style Widget_AppCompat_Light_ActionBar
-style Widget_AppCompat_Light_ActionBar_Solid
-style Widget_AppCompat_Light_ActionBar_Solid_Inverse
-style Widget_AppCompat_Light_ActionBar_TabBar
-style Widget_AppCompat_Light_ActionBar_TabBar_Inverse
-style Widget_AppCompat_Light_ActionBar_TabText
-style Widget_AppCompat_Light_ActionBar_TabText_Inverse
-style Widget_AppCompat_Light_ActionBar_TabView
-style Widget_AppCompat_Light_ActionBar_TabView_Inverse
-style Widget_AppCompat_Light_ActionButton
-style Widget_AppCompat_Light_ActionButton_CloseMode
-style Widget_AppCompat_Light_ActionButton_Overflow
-style Widget_AppCompat_Light_ActionMode_Inverse
-style Widget_AppCompat_Light_AutoCompleteTextView
-style Widget_AppCompat_Light_DropDownItem_Spinner
-style Widget_AppCompat_Light_ListPopupWindow
-style Widget_AppCompat_Light_ListView_DropDown
-style Widget_AppCompat_Light_PopupMenu
-style Widget_AppCompat_Light_PopupMenu_Overflow
-style Widget_AppCompat_Light_SearchView
-style Widget_AppCompat_Light_Spinner_DropDown_ActionBar
-style Widget_AppCompat_ListPopupWindow
-style Widget_AppCompat_ListView
-style Widget_AppCompat_ListView_DropDown
-style Widget_AppCompat_ListView_Menu
-style Widget_AppCompat_PopupMenu
-style Widget_AppCompat_PopupMenu_Overflow
-style Widget_AppCompat_PopupWindow
-style Widget_AppCompat_ProgressBar
-style Widget_AppCompat_ProgressBar_Horizontal
-style Widget_AppCompat_RatingBar
-style Widget_AppCompat_RatingBar_Indicator
-style Widget_AppCompat_RatingBar_Small
-style Widget_AppCompat_SearchView
-style Widget_AppCompat_SearchView_ActionBar
-style Widget_AppCompat_SeekBar
-style Widget_AppCompat_SeekBar_Discrete
-style Widget_AppCompat_Spinner
-style Widget_AppCompat_Spinner_DropDown
-style Widget_AppCompat_Spinner_DropDown_ActionBar
-style Widget_AppCompat_Spinner_Underlined
-style Widget_AppCompat_TextView
-style Widget_AppCompat_TextView_SpinnerItem
-style Widget_AppCompat_Toolbar
-style Widget_AppCompat_Toolbar_Button_Navigation
diff --git a/appcompat/appcompat/api/restricted_1.2.0-alpha03.txt b/appcompat/appcompat/api/restricted_1.2.0-alpha03.txt
index 05e8e4a..34f0d38 100644
--- a/appcompat/appcompat/api/restricted_1.2.0-alpha03.txt
+++ b/appcompat/appcompat/api/restricted_1.2.0-alpha03.txt
@@ -1218,6 +1218,7 @@
     method public void onNestedScrollAccepted(android.view.View!, android.view.View!, int, int);
     method public boolean onStartNestedScroll(android.view.View!, android.view.View!, int, int);
     method public void onStopNestedScroll(android.view.View!, int);
+    method public void onWindowSystemUiVisibilityChanged(int);
     method public void restoreToolbarHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
     method public void saveToolbarHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
     method public void setActionBarHideOffset(int);
diff --git a/appcompat/appcompat/api/restricted_1.2.0-alpha04.txt b/appcompat/appcompat/api/restricted_1.2.0-alpha04.txt
index 05e8e4a..34f0d38 100644
--- a/appcompat/appcompat/api/restricted_1.2.0-alpha04.txt
+++ b/appcompat/appcompat/api/restricted_1.2.0-alpha04.txt
@@ -1218,6 +1218,7 @@
     method public void onNestedScrollAccepted(android.view.View!, android.view.View!, int, int);
     method public boolean onStartNestedScroll(android.view.View!, android.view.View!, int, int);
     method public void onStopNestedScroll(android.view.View!, int);
+    method public void onWindowSystemUiVisibilityChanged(int);
     method public void restoreToolbarHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
     method public void saveToolbarHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
     method public void setActionBarHideOffset(int);
diff --git a/appcompat/appcompat/api/restricted_1.2.0-beta01.txt b/appcompat/appcompat/api/restricted_1.2.0-beta01.txt
index 10b05b7..eee24ce 100644
--- a/appcompat/appcompat/api/restricted_1.2.0-beta01.txt
+++ b/appcompat/appcompat/api/restricted_1.2.0-beta01.txt
@@ -439,8 +439,8 @@
     method public void invalidate();
     method public void onCloseMenu(androidx.appcompat.view.menu.MenuBuilder!, boolean);
     method public void onCloseSubMenu(androidx.appcompat.view.menu.SubMenuBuilder!);
-    method public boolean onMenuItemSelected(androidx.appcompat.view.menu.MenuBuilder, android.view.MenuItem);
-    method public void onMenuModeChange(androidx.appcompat.view.menu.MenuBuilder);
+    method public boolean onMenuItemSelected(androidx.appcompat.view.menu.MenuBuilder!, android.view.MenuItem!);
+    method public void onMenuModeChange(androidx.appcompat.view.menu.MenuBuilder!);
     method public boolean onSubMenuSelected(androidx.appcompat.view.menu.SubMenuBuilder!);
     method public void setCustomView(android.view.View!);
     method public void setSubtitle(CharSequence!);
@@ -590,8 +590,8 @@
     method public void invalidate();
     method public void onCloseMenu(androidx.appcompat.view.menu.MenuBuilder!, boolean);
     method public void onCloseSubMenu(androidx.appcompat.view.menu.SubMenuBuilder!);
-    method public boolean onMenuItemSelected(androidx.appcompat.view.menu.MenuBuilder, android.view.MenuItem);
-    method public void onMenuModeChange(androidx.appcompat.view.menu.MenuBuilder);
+    method public boolean onMenuItemSelected(androidx.appcompat.view.menu.MenuBuilder!, android.view.MenuItem!);
+    method public void onMenuModeChange(androidx.appcompat.view.menu.MenuBuilder!);
     method public boolean onSubMenuSelected(androidx.appcompat.view.menu.SubMenuBuilder!);
     method public void setCustomView(android.view.View!);
     method public void setSubtitle(CharSequence!);
@@ -918,8 +918,8 @@
   }
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface MenuBuilder.Callback {
-    method public boolean onMenuItemSelected(androidx.appcompat.view.menu.MenuBuilder, android.view.MenuItem);
-    method public void onMenuModeChange(androidx.appcompat.view.menu.MenuBuilder);
+    method public boolean onMenuItemSelected(androidx.appcompat.view.menu.MenuBuilder!, android.view.MenuItem!);
+    method public void onMenuModeChange(androidx.appcompat.view.menu.MenuBuilder!);
   }
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface MenuBuilder.ItemInvoker {
@@ -1074,8 +1074,8 @@
   }
 
   public static interface MenuPresenter.Callback {
-    method public void onCloseMenu(androidx.appcompat.view.menu.MenuBuilder, boolean);
-    method public boolean onOpenSubMenu(androidx.appcompat.view.menu.MenuBuilder);
+    method public void onCloseMenu(androidx.appcompat.view.menu.MenuBuilder!, boolean);
+    method public boolean onOpenSubMenu(androidx.appcompat.view.menu.MenuBuilder!);
   }
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface MenuView {
diff --git a/appcompat/appcompat/api/restricted_1.2.0-rc01.txt b/appcompat/appcompat/api/restricted_1.2.0-rc01.txt
deleted file mode 100644
index 10b05b7..0000000
--- a/appcompat/appcompat/api/restricted_1.2.0-rc01.txt
+++ /dev/null
@@ -1,2204 +0,0 @@
-// Signature format: 3.0
-package androidx.appcompat.app {
-
-  public abstract class ActionBar {
-    ctor public ActionBar();
-    method public abstract void addOnMenuVisibilityListener(androidx.appcompat.app.ActionBar.OnMenuVisibilityListener!);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!, boolean);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!, int);
-    method @Deprecated public abstract void addTab(androidx.appcompat.app.ActionBar.Tab!, int, boolean);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean closeOptionsMenu();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean collapseActionView();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void dispatchMenuVisibilityChanged(boolean);
-    method public abstract android.view.View! getCustomView();
-    method @androidx.appcompat.app.ActionBar.DisplayOptions public abstract int getDisplayOptions();
-    method public float getElevation();
-    method public abstract int getHeight();
-    method public int getHideOffset();
-    method @Deprecated public abstract int getNavigationItemCount();
-    method @Deprecated @androidx.appcompat.app.ActionBar.NavigationMode public abstract int getNavigationMode();
-    method @Deprecated public abstract int getSelectedNavigationIndex();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab? getSelectedTab();
-    method public abstract CharSequence? getSubtitle();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! getTabAt(int);
-    method @Deprecated public abstract int getTabCount();
-    method public android.content.Context! getThemedContext();
-    method public abstract CharSequence? getTitle();
-    method public abstract void hide();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean invalidateOptionsMenu();
-    method public boolean isHideOnContentScrollEnabled();
-    method public abstract boolean isShowing();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean isTitleTruncated();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! newTab();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void onConfigurationChanged(android.content.res.Configuration!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean onKeyShortcut(int, android.view.KeyEvent!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean onMenuKeyEvent(android.view.KeyEvent!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean openOptionsMenu();
-    method @Deprecated public abstract void removeAllTabs();
-    method public abstract void removeOnMenuVisibilityListener(androidx.appcompat.app.ActionBar.OnMenuVisibilityListener!);
-    method @Deprecated public abstract void removeTab(androidx.appcompat.app.ActionBar.Tab!);
-    method @Deprecated public abstract void removeTabAt(int);
-    method @Deprecated public abstract void selectTab(androidx.appcompat.app.ActionBar.Tab!);
-    method public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable?);
-    method public abstract void setCustomView(android.view.View!);
-    method public abstract void setCustomView(android.view.View!, androidx.appcompat.app.ActionBar.LayoutParams!);
-    method public abstract void setCustomView(int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setDefaultDisplayHomeAsUpEnabled(boolean);
-    method public abstract void setDisplayHomeAsUpEnabled(boolean);
-    method public abstract void setDisplayOptions(@androidx.appcompat.app.ActionBar.DisplayOptions int);
-    method public abstract void setDisplayOptions(@androidx.appcompat.app.ActionBar.DisplayOptions int, @androidx.appcompat.app.ActionBar.DisplayOptions int);
-    method public abstract void setDisplayShowCustomEnabled(boolean);
-    method public abstract void setDisplayShowHomeEnabled(boolean);
-    method public abstract void setDisplayShowTitleEnabled(boolean);
-    method public abstract void setDisplayUseLogoEnabled(boolean);
-    method public void setElevation(float);
-    method public void setHideOffset(int);
-    method public void setHideOnContentScrollEnabled(boolean);
-    method public void setHomeActionContentDescription(CharSequence?);
-    method public void setHomeActionContentDescription(@StringRes int);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable?);
-    method public void setHomeAsUpIndicator(@DrawableRes int);
-    method public void setHomeButtonEnabled(boolean);
-    method public abstract void setIcon(@DrawableRes int);
-    method public abstract void setIcon(android.graphics.drawable.Drawable!);
-    method @Deprecated public abstract void setListNavigationCallbacks(android.widget.SpinnerAdapter!, androidx.appcompat.app.ActionBar.OnNavigationListener!);
-    method public abstract void setLogo(@DrawableRes int);
-    method public abstract void setLogo(android.graphics.drawable.Drawable!);
-    method @Deprecated public abstract void setNavigationMode(@androidx.appcompat.app.ActionBar.NavigationMode int);
-    method @Deprecated public abstract void setSelectedNavigationItem(int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setShowHideAnimationEnabled(boolean);
-    method public void setSplitBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setStackedBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public abstract void setSubtitle(CharSequence!);
-    method public abstract void setSubtitle(int);
-    method public abstract void setTitle(CharSequence!);
-    method public abstract void setTitle(@StringRes int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setWindowTitle(CharSequence!);
-    method public abstract void show();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.appcompat.view.ActionMode! startActionMode(androidx.appcompat.view.ActionMode.Callback!);
-    field public static final int DISPLAY_HOME_AS_UP = 4; // 0x4
-    field public static final int DISPLAY_SHOW_CUSTOM = 16; // 0x10
-    field public static final int DISPLAY_SHOW_HOME = 2; // 0x2
-    field public static final int DISPLAY_SHOW_TITLE = 8; // 0x8
-    field public static final int DISPLAY_USE_LOGO = 1; // 0x1
-    field @Deprecated public static final int NAVIGATION_MODE_LIST = 1; // 0x1
-    field @Deprecated public static final int NAVIGATION_MODE_STANDARD = 0; // 0x0
-    field @Deprecated public static final int NAVIGATION_MODE_TABS = 2; // 0x2
-  }
-
-  @IntDef(flag=true, value={androidx.appcompat.app.ActionBar.DISPLAY_USE_LOGO, androidx.appcompat.app.ActionBar.DISPLAY_SHOW_HOME, androidx.appcompat.app.ActionBar.DISPLAY_HOME_AS_UP, androidx.appcompat.app.ActionBar.DISPLAY_SHOW_TITLE, androidx.appcompat.app.ActionBar.DISPLAY_SHOW_CUSTOM}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ActionBar.DisplayOptions {
-  }
-
-  public static class ActionBar.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public ActionBar.LayoutParams(android.content.Context, android.util.AttributeSet!);
-    ctor public ActionBar.LayoutParams(int, int);
-    ctor public ActionBar.LayoutParams(int, int, int);
-    ctor public ActionBar.LayoutParams(int);
-    ctor public ActionBar.LayoutParams(androidx.appcompat.app.ActionBar.LayoutParams!);
-    ctor public ActionBar.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    field public int gravity;
-  }
-
-  @IntDef({androidx.appcompat.app.ActionBar.NAVIGATION_MODE_STANDARD, androidx.appcompat.app.ActionBar.NAVIGATION_MODE_LIST, androidx.appcompat.app.ActionBar.NAVIGATION_MODE_TABS}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ActionBar.NavigationMode {
-  }
-
-  public static interface ActionBar.OnMenuVisibilityListener {
-    method public void onMenuVisibilityChanged(boolean);
-  }
-
-  @Deprecated public static interface ActionBar.OnNavigationListener {
-    method @Deprecated public boolean onNavigationItemSelected(int, long);
-  }
-
-  @Deprecated public abstract static class ActionBar.Tab {
-    ctor @Deprecated public ActionBar.Tab();
-    method @Deprecated public abstract CharSequence! getContentDescription();
-    method @Deprecated public abstract android.view.View! getCustomView();
-    method @Deprecated public abstract android.graphics.drawable.Drawable! getIcon();
-    method @Deprecated public abstract int getPosition();
-    method @Deprecated public abstract Object! getTag();
-    method @Deprecated public abstract CharSequence! getText();
-    method @Deprecated public abstract void select();
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setContentDescription(@StringRes int);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setContentDescription(CharSequence!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setCustomView(android.view.View!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setCustomView(int);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setIcon(android.graphics.drawable.Drawable!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setIcon(@DrawableRes int);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setTabListener(androidx.appcompat.app.ActionBar.TabListener!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setTag(Object!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setText(CharSequence!);
-    method @Deprecated public abstract androidx.appcompat.app.ActionBar.Tab! setText(int);
-    field @Deprecated public static final int INVALID_POSITION = -1; // 0xffffffff
-  }
-
-  @Deprecated public static interface ActionBar.TabListener {
-    method @Deprecated public void onTabReselected(androidx.appcompat.app.ActionBar.Tab!, androidx.fragment.app.FragmentTransaction!);
-    method @Deprecated public void onTabSelected(androidx.appcompat.app.ActionBar.Tab!, androidx.fragment.app.FragmentTransaction!);
-    method @Deprecated public void onTabUnselected(androidx.appcompat.app.ActionBar.Tab!, androidx.fragment.app.FragmentTransaction!);
-  }
-
-  public class ActionBarDrawerToggle implements androidx.drawerlayout.widget.DrawerLayout.DrawerListener {
-    ctor public ActionBarDrawerToggle(android.app.Activity!, androidx.drawerlayout.widget.DrawerLayout!, @StringRes int, @StringRes int);
-    ctor public ActionBarDrawerToggle(android.app.Activity!, androidx.drawerlayout.widget.DrawerLayout!, androidx.appcompat.widget.Toolbar!, @StringRes int, @StringRes int);
-    method public androidx.appcompat.graphics.drawable.DrawerArrowDrawable getDrawerArrowDrawable();
-    method public android.view.View.OnClickListener! getToolbarNavigationClickListener();
-    method public boolean isDrawerIndicatorEnabled();
-    method public boolean isDrawerSlideAnimationEnabled();
-    method public void onConfigurationChanged(android.content.res.Configuration!);
-    method public void onDrawerClosed(android.view.View!);
-    method public void onDrawerOpened(android.view.View!);
-    method public void onDrawerSlide(android.view.View!, float);
-    method public void onDrawerStateChanged(int);
-    method public boolean onOptionsItemSelected(android.view.MenuItem!);
-    method public void setDrawerArrowDrawable(androidx.appcompat.graphics.drawable.DrawerArrowDrawable);
-    method public void setDrawerIndicatorEnabled(boolean);
-    method public void setDrawerSlideAnimationEnabled(boolean);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable!);
-    method public void setHomeAsUpIndicator(int);
-    method public void setToolbarNavigationClickListener(android.view.View.OnClickListener!);
-    method public void syncState();
-  }
-
-  public static interface ActionBarDrawerToggle.Delegate {
-    method public android.content.Context! getActionBarThemedContext();
-    method public android.graphics.drawable.Drawable! getThemeUpIndicator();
-    method public boolean isNavigationVisible();
-    method public void setActionBarDescription(@StringRes int);
-    method public void setActionBarUpIndicator(android.graphics.drawable.Drawable!, @StringRes int);
-  }
-
-  public static interface ActionBarDrawerToggle.DelegateProvider {
-    method public androidx.appcompat.app.ActionBarDrawerToggle.Delegate? getDrawerToggleDelegate();
-  }
-
-  public class AlertDialog extends androidx.appcompat.app.AppCompatDialog implements android.content.DialogInterface {
-    ctor protected AlertDialog(android.content.Context);
-    ctor protected AlertDialog(android.content.Context, @StyleRes int);
-    ctor protected AlertDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener?);
-    method public android.widget.Button! getButton(int);
-    method public android.widget.ListView! getListView();
-    method public void setButton(int, CharSequence!, android.os.Message!);
-    method public void setButton(int, CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public void setButton(int, CharSequence!, android.graphics.drawable.Drawable!, android.content.DialogInterface.OnClickListener!);
-    method public void setCustomTitle(android.view.View!);
-    method public void setIcon(int);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setIconAttribute(int);
-    method public void setMessage(CharSequence!);
-    method public void setView(android.view.View!);
-    method public void setView(android.view.View!, int, int, int, int);
-  }
-
-  public static class AlertDialog.Builder {
-    ctor public AlertDialog.Builder(android.content.Context);
-    ctor public AlertDialog.Builder(android.content.Context, @StyleRes int);
-    method public androidx.appcompat.app.AlertDialog create();
-    method public android.content.Context getContext();
-    method public androidx.appcompat.app.AlertDialog.Builder! setAdapter(android.widget.ListAdapter!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setCancelable(boolean);
-    method public androidx.appcompat.app.AlertDialog.Builder! setCursor(android.database.Cursor!, android.content.DialogInterface.OnClickListener!, String!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setCustomTitle(android.view.View?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setIcon(@DrawableRes int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setIcon(android.graphics.drawable.Drawable?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setIconAttribute(@AttrRes int);
-    method @Deprecated public androidx.appcompat.app.AlertDialog.Builder! setInverseBackgroundForced(boolean);
-    method public androidx.appcompat.app.AlertDialog.Builder! setItems(@ArrayRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setItems(CharSequence![]!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMessage(@StringRes int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMessage(CharSequence?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMultiChoiceItems(@ArrayRes int, boolean[]!, android.content.DialogInterface.OnMultiChoiceClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMultiChoiceItems(CharSequence![]!, boolean[]!, android.content.DialogInterface.OnMultiChoiceClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setMultiChoiceItems(android.database.Cursor!, String!, String!, android.content.DialogInterface.OnMultiChoiceClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNegativeButton(@StringRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNegativeButton(CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNegativeButtonIcon(android.graphics.drawable.Drawable!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNeutralButton(@StringRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNeutralButton(CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setNeutralButtonIcon(android.graphics.drawable.Drawable!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnCancelListener(android.content.DialogInterface.OnCancelListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnDismissListener(android.content.DialogInterface.OnDismissListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setOnKeyListener(android.content.DialogInterface.OnKeyListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setPositiveButton(@StringRes int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setPositiveButton(CharSequence!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setPositiveButtonIcon(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.appcompat.app.AlertDialog.Builder! setRecycleOnMeasureEnabled(boolean);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(@ArrayRes int, int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(android.database.Cursor!, int, String!, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(CharSequence![]!, int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setSingleChoiceItems(android.widget.ListAdapter!, int, android.content.DialogInterface.OnClickListener!);
-    method public androidx.appcompat.app.AlertDialog.Builder! setTitle(@StringRes int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setTitle(CharSequence?);
-    method public androidx.appcompat.app.AlertDialog.Builder! setView(int);
-    method public androidx.appcompat.app.AlertDialog.Builder! setView(android.view.View!);
-    method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.appcompat.app.AlertDialog.Builder! setView(android.view.View!, int, int, int, int);
-    method public androidx.appcompat.app.AlertDialog! show();
-  }
-
-  public class AppCompatActivity extends androidx.fragment.app.FragmentActivity implements androidx.appcompat.app.ActionBarDrawerToggle.DelegateProvider androidx.appcompat.app.AppCompatCallback androidx.core.app.TaskStackBuilder.SupportParentable {
-    ctor public AppCompatActivity();
-    ctor @ContentView public AppCompatActivity(@LayoutRes int);
-    method public androidx.appcompat.app.AppCompatDelegate getDelegate();
-    method public androidx.appcompat.app.ActionBarDrawerToggle.Delegate? getDrawerToggleDelegate();
-    method public androidx.appcompat.app.ActionBar? getSupportActionBar();
-    method public android.content.Intent? getSupportParentActivityIntent();
-    method public void onCreateSupportNavigateUpTaskStack(androidx.core.app.TaskStackBuilder);
-    method public final boolean onMenuItemSelected(int, android.view.MenuItem);
-    method protected void onNightModeChanged(@androidx.appcompat.app.AppCompatDelegate.NightMode int);
-    method public void onPrepareSupportNavigateUpTaskStack(androidx.core.app.TaskStackBuilder);
-    method @CallSuper public void onSupportActionModeFinished(androidx.appcompat.view.ActionMode);
-    method @CallSuper public void onSupportActionModeStarted(androidx.appcompat.view.ActionMode);
-    method @Deprecated public void onSupportContentChanged();
-    method public boolean onSupportNavigateUp();
-    method public androidx.appcompat.view.ActionMode? onWindowStartingSupportActionMode(androidx.appcompat.view.ActionMode.Callback);
-    method public void setSupportActionBar(androidx.appcompat.widget.Toolbar?);
-    method @Deprecated public void setSupportProgress(int);
-    method @Deprecated public void setSupportProgressBarIndeterminate(boolean);
-    method @Deprecated public void setSupportProgressBarIndeterminateVisibility(boolean);
-    method @Deprecated public void setSupportProgressBarVisibility(boolean);
-    method public androidx.appcompat.view.ActionMode? startSupportActionMode(androidx.appcompat.view.ActionMode.Callback);
-    method public void supportInvalidateOptionsMenu();
-    method public void supportNavigateUpTo(android.content.Intent);
-    method public boolean supportRequestWindowFeature(int);
-    method public boolean supportShouldUpRecreateTask(android.content.Intent);
-  }
-
-  public interface AppCompatCallback {
-    method public void onSupportActionModeFinished(androidx.appcompat.view.ActionMode!);
-    method public void onSupportActionModeStarted(androidx.appcompat.view.ActionMode!);
-    method public androidx.appcompat.view.ActionMode? onWindowStartingSupportActionMode(androidx.appcompat.view.ActionMode.Callback!);
-  }
-
-  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 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?);
-    method public static androidx.appcompat.app.AppCompatDelegate create(android.content.Context, android.app.Activity, androidx.appcompat.app.AppCompatCallback?);
-    method public abstract android.view.View! createView(android.view.View?, String!, android.content.Context, android.util.AttributeSet);
-    method public abstract <T extends android.view.View> T! findViewById(@IdRes int);
-    method @androidx.appcompat.app.AppCompatDelegate.NightMode public static int getDefaultNightMode();
-    method public abstract androidx.appcompat.app.ActionBarDrawerToggle.Delegate? getDrawerToggleDelegate();
-    method @androidx.appcompat.app.AppCompatDelegate.NightMode public int getLocalNightMode();
-    method public abstract android.view.MenuInflater! getMenuInflater();
-    method public abstract androidx.appcompat.app.ActionBar? getSupportActionBar();
-    method public abstract boolean hasWindowFeature(int);
-    method public abstract void installViewFactory();
-    method public abstract void invalidateOptionsMenu();
-    method public static boolean isCompatVectorFromResourcesEnabled();
-    method public abstract boolean isHandleNativeActionModesEnabled();
-    method public abstract void onConfigurationChanged(android.content.res.Configuration!);
-    method public abstract void onCreate(android.os.Bundle!);
-    method public abstract void onDestroy();
-    method public abstract void onPostCreate(android.os.Bundle!);
-    method public abstract void onPostResume();
-    method public abstract void onSaveInstanceState(android.os.Bundle!);
-    method public abstract void onStart();
-    method public abstract void onStop();
-    method public abstract boolean requestWindowFeature(int);
-    method public static void setCompatVectorFromResourcesEnabled(boolean);
-    method public abstract void setContentView(android.view.View!);
-    method public abstract void setContentView(@LayoutRes int);
-    method public abstract void setContentView(android.view.View!, android.view.ViewGroup.LayoutParams!);
-    method public static void setDefaultNightMode(@androidx.appcompat.app.AppCompatDelegate.NightMode int);
-    method public abstract void setHandleNativeActionModesEnabled(boolean);
-    method @RequiresApi(17) public abstract void setLocalNightMode(@androidx.appcompat.app.AppCompatDelegate.NightMode int);
-    method public abstract void setSupportActionBar(androidx.appcompat.widget.Toolbar?);
-    method public void setTheme(@StyleRes int);
-    method public abstract void setTitle(CharSequence?);
-    method public abstract androidx.appcompat.view.ActionMode? startSupportActionMode(androidx.appcompat.view.ActionMode.Callback);
-    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
-    field public static final int FEATURE_SUPPORT_ACTION_BAR = 108; // 0x6c
-    field public static final int FEATURE_SUPPORT_ACTION_BAR_OVERLAY = 109; // 0x6d
-    field @Deprecated public static final int MODE_NIGHT_AUTO = 0; // 0x0
-    field public static final int MODE_NIGHT_AUTO_BATTERY = 3; // 0x3
-    field @Deprecated public static final int MODE_NIGHT_AUTO_TIME = 0; // 0x0
-    field public static final int MODE_NIGHT_FOLLOW_SYSTEM = -1; // 0xffffffff
-    field public static final int MODE_NIGHT_NO = 1; // 0x1
-    field public static final int MODE_NIGHT_UNSPECIFIED = -100; // 0xffffff9c
-    field public static final int MODE_NIGHT_YES = 2; // 0x2
-  }
-
-  @IntDef({androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO, androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES, androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_TIME, androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM, androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_UNSPECIFIED, androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface AppCompatDelegate.NightMode {
-  }
-
-  public class AppCompatDialog extends android.app.Dialog implements androidx.appcompat.app.AppCompatCallback {
-    ctor public AppCompatDialog(android.content.Context!);
-    ctor public AppCompatDialog(android.content.Context!, int);
-    ctor protected AppCompatDialog(android.content.Context!, boolean, android.content.DialogInterface.OnCancelListener!);
-    method public androidx.appcompat.app.AppCompatDelegate! getDelegate();
-    method public androidx.appcompat.app.ActionBar! getSupportActionBar();
-    method public void onSupportActionModeFinished(androidx.appcompat.view.ActionMode!);
-    method public void onSupportActionModeStarted(androidx.appcompat.view.ActionMode!);
-    method public androidx.appcompat.view.ActionMode? onWindowStartingSupportActionMode(androidx.appcompat.view.ActionMode.Callback!);
-    method public boolean supportRequestWindowFeature(int);
-  }
-
-  public class AppCompatDialogFragment extends androidx.fragment.app.DialogFragment {
-    ctor public AppCompatDialogFragment();
-  }
-
-  public class AppCompatViewInflater {
-    ctor public AppCompatViewInflater();
-    method protected androidx.appcompat.widget.AppCompatAutoCompleteTextView createAutoCompleteTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatButton createButton(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatCheckBox createCheckBox(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatCheckedTextView createCheckedTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatEditText createEditText(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatImageButton createImageButton(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatImageView createImageView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView createMultiAutoCompleteTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatRadioButton createRadioButton(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatRatingBar createRatingBar(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatSeekBar createSeekBar(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatSpinner createSpinner(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatTextView createTextView(android.content.Context!, android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.AppCompatToggleButton createToggleButton(android.content.Context!, android.util.AttributeSet!);
-    method protected android.view.View? createView(android.content.Context!, String!, android.util.AttributeSet!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class WindowDecorActionBar extends androidx.appcompat.app.ActionBar implements androidx.appcompat.widget.ActionBarOverlayLayout.ActionBarVisibilityCallback {
-    ctor public WindowDecorActionBar(android.app.Activity!, boolean);
-    ctor public WindowDecorActionBar(android.app.Dialog!);
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public WindowDecorActionBar(android.view.View!);
-    method public void addOnMenuVisibilityListener(androidx.appcompat.app.ActionBar.OnMenuVisibilityListener!);
-    method public void addTab(androidx.appcompat.app.ActionBar.Tab!);
-    method public void addTab(androidx.appcompat.app.ActionBar.Tab!, int);
-    method public void addTab(androidx.appcompat.app.ActionBar.Tab!, boolean);
-    method public void addTab(androidx.appcompat.app.ActionBar.Tab!, int, boolean);
-    method public void animateToMode(boolean);
-    method public void doHide(boolean);
-    method public void doShow(boolean);
-    method public void enableContentAnimations(boolean);
-    method public android.view.View! getCustomView();
-    method public int getDisplayOptions();
-    method public int getHeight();
-    method public int getNavigationItemCount();
-    method public int getNavigationMode();
-    method public int getSelectedNavigationIndex();
-    method public androidx.appcompat.app.ActionBar.Tab! getSelectedTab();
-    method public CharSequence! getSubtitle();
-    method public androidx.appcompat.app.ActionBar.Tab! getTabAt(int);
-    method public int getTabCount();
-    method public CharSequence! getTitle();
-    method public boolean hasIcon();
-    method public boolean hasLogo();
-    method public void hide();
-    method public void hideForSystem();
-    method public boolean isShowing();
-    method public androidx.appcompat.app.ActionBar.Tab! newTab();
-    method public void onContentScrollStarted();
-    method public void onContentScrollStopped();
-    method public void onWindowVisibilityChanged(int);
-    method public void removeAllTabs();
-    method public void removeOnMenuVisibilityListener(androidx.appcompat.app.ActionBar.OnMenuVisibilityListener!);
-    method public void removeTab(androidx.appcompat.app.ActionBar.Tab!);
-    method public void removeTabAt(int);
-    method public boolean requestFocus();
-    method public void selectTab(androidx.appcompat.app.ActionBar.Tab!);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setCustomView(int);
-    method public void setCustomView(android.view.View!);
-    method public void setCustomView(android.view.View!, androidx.appcompat.app.ActionBar.LayoutParams!);
-    method public void setDisplayHomeAsUpEnabled(boolean);
-    method public void setDisplayOptions(int);
-    method public void setDisplayOptions(int, int);
-    method public void setDisplayShowCustomEnabled(boolean);
-    method public void setDisplayShowHomeEnabled(boolean);
-    method public void setDisplayShowTitleEnabled(boolean);
-    method public void setDisplayUseLogoEnabled(boolean);
-    method public void setIcon(int);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setListNavigationCallbacks(android.widget.SpinnerAdapter!, androidx.appcompat.app.ActionBar.OnNavigationListener!);
-    method public void setLogo(int);
-    method public void setLogo(android.graphics.drawable.Drawable!);
-    method public void setNavigationMode(int);
-    method public void setSelectedNavigationItem(int);
-    method public void setSubtitle(int);
-    method public void setSubtitle(CharSequence!);
-    method public void setTitle(int);
-    method public void setTitle(CharSequence!);
-    method public void show();
-    method public void showForSystem();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class WindowDecorActionBar.ActionModeImpl extends androidx.appcompat.view.ActionMode implements androidx.appcompat.view.menu.MenuBuilder.Callback {
-    ctor public WindowDecorActionBar.ActionModeImpl(android.content.Context!, androidx.appcompat.view.ActionMode.Callback!);
-    method public boolean dispatchOnCreate();
-    method public void finish();
-    method public android.view.View! getCustomView();
-    method public android.view.Menu! getMenu();
-    method public android.view.MenuInflater! getMenuInflater();
-    method public CharSequence! getSubtitle();
-    method public CharSequence! getTitle();
-    method public void invalidate();
-    method public void onCloseMenu(androidx.appcompat.view.menu.MenuBuilder!, boolean);
-    method public void onCloseSubMenu(androidx.appcompat.view.menu.SubMenuBuilder!);
-    method public boolean onMenuItemSelected(androidx.appcompat.view.menu.MenuBuilder, android.view.MenuItem);
-    method public void onMenuModeChange(androidx.appcompat.view.menu.MenuBuilder);
-    method public boolean onSubMenuSelected(androidx.appcompat.view.menu.SubMenuBuilder!);
-    method public void setCustomView(android.view.View!);
-    method public void setSubtitle(CharSequence!);
-    method public void setSubtitle(int);
-    method public void setTitle(CharSequence!);
-    method public void setTitle(int);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class WindowDecorActionBar.TabImpl extends androidx.appcompat.app.ActionBar.Tab {
-    ctor public WindowDecorActionBar.TabImpl();
-    method public androidx.appcompat.app.ActionBar.TabListener! getCallback();
-    method public CharSequence! getContentDescription();
-    method public android.view.View! getCustomView();
-    method public android.graphics.drawable.Drawable! getIcon();
-    method public int getPosition();
-    method public Object! getTag();
-    method public CharSequence! getText();
-    method public void select();
-    method public androidx.appcompat.app.ActionBar.Tab! setContentDescription(int);
-    method public androidx.appcompat.app.ActionBar.Tab! setContentDescription(CharSequence!);
-    method public androidx.appcompat.app.ActionBar.Tab! setCustomView(android.view.View!);
-    method public androidx.appcompat.app.ActionBar.Tab! setCustomView(int);
-    method public androidx.appcompat.app.ActionBar.Tab! setIcon(android.graphics.drawable.Drawable!);
-    method public androidx.appcompat.app.ActionBar.Tab! setIcon(int);
-    method public void setPosition(int);
-    method public androidx.appcompat.app.ActionBar.Tab! setTabListener(androidx.appcompat.app.ActionBar.TabListener!);
-    method public androidx.appcompat.app.ActionBar.Tab! setTag(Object!);
-    method public androidx.appcompat.app.ActionBar.Tab! setText(CharSequence!);
-    method public androidx.appcompat.app.ActionBar.Tab! setText(int);
-  }
-
-}
-
-package androidx.appcompat.graphics.drawable {
-
-  public class DrawerArrowDrawable extends android.graphics.drawable.Drawable {
-    ctor public DrawerArrowDrawable(android.content.Context!);
-    method public void draw(android.graphics.Canvas!);
-    method public float getArrowHeadLength();
-    method public float getArrowShaftLength();
-    method public float getBarLength();
-    method public float getBarThickness();
-    method @ColorInt public int getColor();
-    method @androidx.appcompat.graphics.drawable.DrawerArrowDrawable.ArrowDirection public int getDirection();
-    method public float getGapSize();
-    method public int getOpacity();
-    method public final android.graphics.Paint! getPaint();
-    method @FloatRange(from=0.0, to=1.0) public float getProgress();
-    method public boolean isSpinEnabled();
-    method public void setAlpha(int);
-    method public void setArrowHeadLength(float);
-    method public void setArrowShaftLength(float);
-    method public void setBarLength(float);
-    method public void setBarThickness(float);
-    method public void setColor(@ColorInt int);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setDirection(@androidx.appcompat.graphics.drawable.DrawerArrowDrawable.ArrowDirection int);
-    method public void setGapSize(float);
-    method public void setProgress(@FloatRange(from=0.0, to=1.0) float);
-    method public void setSpinEnabled(boolean);
-    method public void setVerticalMirror(boolean);
-    field public static final int ARROW_DIRECTION_END = 3; // 0x3
-    field public static final int ARROW_DIRECTION_LEFT = 0; // 0x0
-    field public static final int ARROW_DIRECTION_RIGHT = 1; // 0x1
-    field public static final int ARROW_DIRECTION_START = 2; // 0x2
-  }
-
-  @IntDef({androidx.appcompat.graphics.drawable.DrawerArrowDrawable.ARROW_DIRECTION_LEFT, androidx.appcompat.graphics.drawable.DrawerArrowDrawable.ARROW_DIRECTION_RIGHT, androidx.appcompat.graphics.drawable.DrawerArrowDrawable.ARROW_DIRECTION_START, androidx.appcompat.graphics.drawable.DrawerArrowDrawable.ARROW_DIRECTION_END}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface DrawerArrowDrawable.ArrowDirection {
-  }
-
-}
-
-package androidx.appcompat.text {
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class AllCapsTransformationMethod implements android.text.method.TransformationMethod {
-    ctor public AllCapsTransformationMethod(android.content.Context!);
-    method public CharSequence! getTransformation(CharSequence!, android.view.View!);
-    method public void onFocusChanged(android.view.View!, CharSequence!, boolean, int, android.graphics.Rect!);
-  }
-
-}
-
-package androidx.appcompat.view {
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ActionBarPolicy {
-    method public boolean enableHomeButtonByDefault();
-    method public static androidx.appcompat.view.ActionBarPolicy! get(android.content.Context!);
-    method public int getEmbeddedMenuWidthLimit();
-    method public int getMaxActionButtons();
-    method public int getStackedTabMaxWidth();
-    method public int getTabContainerHeight();
-    method public boolean hasEmbeddedTabs();
-    method public boolean showsOverflowMenuButton();
-  }
-
-  public abstract class ActionMode {
-    ctor public ActionMode();
-    method public abstract void finish();
-    method public abstract android.view.View! getCustomView();
-    method public abstract android.view.Menu! getMenu();
-    method public abstract android.view.MenuInflater! getMenuInflater();
-    method public abstract CharSequence! getSubtitle();
-    method public Object! getTag();
-    method public abstract CharSequence! getTitle();
-    method public boolean getTitleOptionalHint();
-    method public abstract void invalidate();
-    method public boolean isTitleOptional();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean isUiFocusable();
-    method public abstract void setCustomView(android.view.View!);
-    method public abstract void setSubtitle(CharSequence!);
-    method public abstract void setSubtitle(int);
-    method public void setTag(Object!);
-    method public abstract void setTitle(CharSequence!);
-    method public abstract void setTitle(int);
-    method public void setTitleOptionalHint(boolean);
-  }
-
-  public static interface ActionMode.Callback {
-    method public boolean onActionItemClicked(androidx.appcompat.view.ActionMode!, android.view.MenuItem!);
-    method public boolean onCreateActionMode(androidx.appcompat.view.ActionMode!, android.view.Menu!);
-    method public void onDestroyActionMode(androidx.appcompat.view.ActionMode!);
-    method public boolean onPrepareActionMode(androidx.appcompat.view.ActionMode!, android.view.Menu!);
-  }
-
-  @Deprecated public interface CollapsibleActionView {
-    method @Deprecated public void onActionViewCollapsed();
-    method @Deprecated public void onActionViewExpanded();
-  }
-
-  public class ContextThemeWrapper extends android.content.ContextWrapper {
-    ctor public ContextThemeWrapper();
-    ctor public ContextThemeWrapper(android.content.Context!, @StyleRes int);
-    ctor public ContextThemeWrapper(android.content.Context!, android.content.res.Resources.Theme!);
-    method public void applyOverrideConfiguration(android.content.res.Configuration!);
-    method public int getThemeResId();
-    method protected void onApplyThemeResource(android.content.res.Resources.Theme!, int, boolean);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class StandaloneActionMode extends androidx.appcompat.view.ActionMode implements androidx.appcompat.view.menu.MenuBuilder.Callback {
-    ctor public StandaloneActionMode(android.content.Context!, androidx.appcompat.widget.ActionBarContextView!, androidx.appcompat.view.ActionMode.Callback!, boolean);
-    method public void finish();
-    method public android.view.View! getCustomView();
-    method public android.view.Menu! getMenu();
-    method public android.view.MenuInflater! getMenuInflater();
-    method public CharSequence! getSubtitle();
-    method public CharSequence! getTitle();
-    method public void invalidate();
-    method public void onCloseMenu(androidx.appcompat.view.menu.MenuBuilder!, boolean);
-    method public void onCloseSubMenu(androidx.appcompat.view.menu.SubMenuBuilder!);
-    method public boolean onMenuItemSelected(androidx.appcompat.view.menu.MenuBuilder, android.view.MenuItem);
-    method public void onMenuModeChange(androidx.appcompat.view.menu.MenuBuilder);
-    method public boolean onSubMenuSelected(androidx.appcompat.view.menu.SubMenuBuilder!);
-    method public void setCustomView(android.view.View!);
-    method public void setSubtitle(CharSequence!);
-    method public void setSubtitle(int);
-    method public void setTitle(CharSequence!);
-    method public void setTitle(int);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SupportActionModeWrapper extends android.view.ActionMode {
-    ctor public SupportActionModeWrapper(android.content.Context!, androidx.appcompat.view.ActionMode!);
-    method public void finish();
-    method public android.view.View! getCustomView();
-    method public android.view.Menu! getMenu();
-    method public android.view.MenuInflater! getMenuInflater();
-    method public CharSequence! getSubtitle();
-    method public CharSequence! getTitle();
-    method public void invalidate();
-    method public void setCustomView(android.view.View!);
-    method public void setSubtitle(CharSequence!);
-    method public void setSubtitle(int);
-    method public void setTitle(CharSequence!);
-    method public void setTitle(int);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static class SupportActionModeWrapper.CallbackWrapper implements androidx.appcompat.view.ActionMode.Callback {
-    ctor public SupportActionModeWrapper.CallbackWrapper(android.content.Context!, android.view.ActionMode.Callback!);
-    method public android.view.ActionMode! getActionModeWrapper(androidx.appcompat.view.ActionMode!);
-    method public boolean onActionItemClicked(androidx.appcompat.view.ActionMode!, android.view.MenuItem!);
-    method public boolean onCreateActionMode(androidx.appcompat.view.ActionMode!, android.view.Menu!);
-    method public void onDestroyActionMode(androidx.appcompat.view.ActionMode!);
-    method public boolean onPrepareActionMode(androidx.appcompat.view.ActionMode!, android.view.Menu!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SupportMenuInflater extends android.view.MenuInflater {
-    ctor public SupportMenuInflater(android.content.Context!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ViewPropertyAnimatorCompatSet {
-    ctor public ViewPropertyAnimatorCompatSet();
-    method public void cancel();
-    method public androidx.appcompat.view.ViewPropertyAnimatorCompatSet! play(androidx.core.view.ViewPropertyAnimatorCompat!);
-    method public androidx.appcompat.view.ViewPropertyAnimatorCompatSet! playSequentially(androidx.core.view.ViewPropertyAnimatorCompat!, androidx.core.view.ViewPropertyAnimatorCompat!);
-    method public androidx.appcompat.view.ViewPropertyAnimatorCompatSet! setDuration(long);
-    method public androidx.appcompat.view.ViewPropertyAnimatorCompatSet! setInterpolator(android.view.animation.Interpolator!);
-    method public androidx.appcompat.view.ViewPropertyAnimatorCompatSet! setListener(androidx.core.view.ViewPropertyAnimatorListener!);
-    method public void start();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class WindowCallbackWrapper implements android.view.Window.Callback {
-    ctor public WindowCallbackWrapper(android.view.Window.Callback!);
-    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent!);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent!);
-    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent!);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent!);
-    method public boolean dispatchTouchEvent(android.view.MotionEvent!);
-    method public boolean dispatchTrackballEvent(android.view.MotionEvent!);
-    method public final android.view.Window.Callback! getWrapped();
-    method public void onActionModeFinished(android.view.ActionMode!);
-    method public void onActionModeStarted(android.view.ActionMode!);
-    method public void onAttachedToWindow();
-    method public void onContentChanged();
-    method public boolean onCreatePanelMenu(int, android.view.Menu!);
-    method public android.view.View! onCreatePanelView(int);
-    method public void onDetachedFromWindow();
-    method public boolean onMenuItemSelected(int, android.view.MenuItem!);
-    method public boolean onMenuOpened(int, android.view.Menu!);
-    method public void onPanelClosed(int, android.view.Menu!);
-    method public boolean onPreparePanel(int, android.view.View!, android.view.Menu!);
-    method @RequiresApi(23) public boolean onSearchRequested(android.view.SearchEvent!);
-    method public boolean onSearchRequested();
-    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams!);
-    method public void onWindowFocusChanged(boolean);
-    method public android.view.ActionMode! onWindowStartingActionMode(android.view.ActionMode.Callback!);
-    method @RequiresApi(23) public android.view.ActionMode! onWindowStartingActionMode(android.view.ActionMode.Callback!, int);
-  }
-
-}
-
-package androidx.appcompat.view.menu {
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ActionMenuItem implements androidx.core.internal.view.SupportMenuItem {
-    ctor public ActionMenuItem(android.content.Context!, int, int, int, int, CharSequence!);
-    method public boolean collapseActionView();
-    method public boolean expandActionView();
-    method public android.view.ActionProvider! getActionProvider();
-    method public android.view.View! getActionView();
-    method public char getAlphabeticShortcut();
-    method public int getGroupId();
-    method public android.graphics.drawable.Drawable! getIcon();
-    method public android.content.Intent! getIntent();
-    method public int getItemId();
-    method public android.view.ContextMenu.ContextMenuInfo! getMenuInfo();
-    method public char getNumericShortcut();
-    method public int getOrder();
-    method public android.view.SubMenu! getSubMenu();
-    method public androidx.core.view.ActionProvider! getSupportActionProvider();
-    method public CharSequence! getTitle();
-    method public CharSequence! getTitleCondensed();
-    method public boolean hasSubMenu();
-    method public boolean invoke();
-    method public boolean isActionViewExpanded();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isEnabled();
-    method public boolean isVisible();
-    method public boolean requiresActionButton();
-    method public boolean requiresOverflow();
-    method public android.view.MenuItem! setActionProvider(android.view.ActionProvider!);
-    method public androidx.core.internal.view.SupportMenuItem! setActionView(android.view.View!);
-    method public androidx.core.internal.view.SupportMenuItem! setActionView(int);
-    method public android.view.MenuItem! setAlphabeticShortcut(char);
-    method public android.view.MenuItem! setCheckable(boolean);
-    method public android.view.MenuItem! setChecked(boolean);
-    method public androidx.core.internal.view.SupportMenuItem! setContentDescription(CharSequence!);
-    method public android.view.MenuItem! setEnabled(boolean);
-    method public androidx.appcompat.view.menu.ActionMenuItem! setExclusiveCheckable(boolean);
-    method public android.view.MenuItem! setIcon(android.graphics.drawable.Drawable!);
-    method public android.view.MenuItem! setIcon(int);
-    method public android.view.MenuItem! setIntent(android.content.Intent!);
-    method public android.view.MenuItem! setNumericShortcut(char);
-    method public android.view.MenuItem! setOnActionExpandListener(android.view.MenuItem.OnActionExpandListener!);
-    method public android.view.MenuItem! setOnMenuItemClickListener(android.view.MenuItem.OnMenuItemClickListener!);
-    method public android.view.MenuItem! setShortcut(char, char);
-    method public void setShowAsAction(int);
-    method public androidx.core.internal.view.SupportMenuItem! setShowAsActionFlags(int);
-    method public androidx.core.internal.view.SupportMenuItem! setSupportActionProvider(androidx.core.view.ActionProvider!);
-    method public android.view.MenuItem! setTitle(CharSequence!);
-    method public android.view.MenuItem! setTitle(int);
-    method public android.view.MenuItem! setTitleCondensed(CharSequence!);
-    method public androidx.core.internal.view.SupportMenuItem! setTooltipText(CharSequence!);
-    method public android.view.MenuItem! setVisible(boolean);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ActionMenuItemView extends androidx.appcompat.widget.AppCompatTextView implements androidx.appcompat.widget.ActionMenuView.ActionMenuChildView androidx.appcompat.view.menu.MenuView.ItemView android.view.View.OnClickListener {
-    ctor public ActionMenuItemView(android.content.Context!);
-    ctor public ActionMenuItemView(android.content.Context!, android.util.AttributeSet!);
-    ctor public ActionMenuItemView(android.content.Context!, android.util.AttributeSet!, int);
-    method public androidx.appcompat.view.menu.MenuItemImpl! getItemData();
-    method public boolean hasText();
-    method public void initialize(androidx.appcompat.view.menu.MenuItemImpl!, int);
-    method public boolean needsDividerAfter();
-    method public boolean needsDividerBefore();
-    method public void onClick(android.view.View!);
-    method public void onConfigurationChanged(android.content.res.Configuration!);
-    method public boolean prefersCondensedTitle();
-    method public void setCheckable(boolean);
-    method public void setChecked(boolean);
-    method public void setExpandedFormat(boolean);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setItemInvoker(androidx.appcompat.view.menu.MenuBuilder.ItemInvoker!);
-    method public void setPopupCallback(androidx.appcompat.view.menu.ActionMenuItemView.PopupCallback!);
-    method public void setShortcut(boolean, char);
-    method public void setTitle(CharSequence!);
-    method public boolean showsIcon();
-  }
-
-  public abstract static class ActionMenuItemView.PopupCallback {
-    ctor public ActionMenuItemView.PopupCallback();
-    method public abstract androidx.appcompat.view.menu.ShowableListMenu! getPopup();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class BaseMenuPresenter implements androidx.appcompat.view.menu.MenuPresenter {
-    ctor public BaseMenuPresenter(android.content.Context!, int, int);
-    method protected void addItemView(android.view.View!, int);
-    method public abstract void bindItemView(androidx.appcompat.view.menu.MenuItemImpl!, androidx.appcompat.view.menu.MenuView.ItemView!);
-    method public boolean collapseItemActionView(androidx.appcompat.view.menu.MenuBuilder!, androidx.appcompat.view.menu.MenuItemImpl!);
-    method public androidx.appcompat.view.menu.MenuView.ItemView! createItemView(android.view.ViewGroup!);
-    method public boolean expandItemActionView(androidx.appcompat.view.menu.MenuBuilder!, androidx.appcompat.view.menu.MenuItemImpl!);
-    method protected boolean filterLeftoverView(android.view.ViewGroup!, int);
-    method public boolean flagActionItems();
-    method public androidx.appcompat.view.menu.MenuPresenter.Callback! getCallback();
-    method public int getId();
-    method public android.view.View! getItemView(androidx.appcompat.view.menu.MenuItemImpl!, android.view.View!, android.view.ViewGroup!);
-    method public androidx.appcompat.view.menu.MenuView! getMenuView(android.view.ViewGroup!);
-    method public void initForMenu(android.content.Context!, androidx.appcompat.view.menu.MenuBuilder!);
-    method public void onCloseMenu(androidx.appcompat.view.menu.MenuBuilder!, boolean);
-    method public boolean onSubMenuSelected(androidx.appcompat.view.menu.SubMenuBuilder!);
-    method public void setCallback(androidx.appcompat.view.menu.MenuPresenter.Callback!);
-    method public void setId(int);
-    method public boolean shouldIncludeItem(int, androidx.appcompat.view.menu.MenuItemImpl!);
-    method public void updateMenuView(boolean);
-    field protected android.content.Context! mContext;
-    field protected android.view.LayoutInflater! mInflater;
-    field protected androidx.appcompat.view.menu.MenuBuilder! mMenu;
-    field protected androidx.appcompat.view.menu.MenuView! mMenuView;
-    field protected android.content.Context! mSystemContext;
-    field protected android.view.LayoutInflater! mSystemInflater;
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class ExpandedMenuView extends android.widget.ListView implements android.widget.AdapterView.OnItemClickListener androidx.appcompat.view.menu.MenuBuilder.ItemInvoker androidx.appcompat.view.menu.MenuView {
-    ctor public ExpandedMenuView(android.content.Context!, android.util.AttributeSet!);
-    ctor public ExpandedMenuView(android.content.Context!, android.util.AttributeSet!, int);
-    method public int getWindowAnimations();
-    method public void initialize(androidx.appcompat.view.menu.MenuBuilder!);
-    method public boolean invokeItem(androidx.appcompat.view.menu.MenuItemImpl!);
-    method public void onItemClick(android.widget.AdapterView!, android.view.View!, int, long);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ListMenuItemView extends android.widget.LinearLayout implements android.widget.AbsListView.SelectionBoundsAdjuster androidx.appcompat.view.menu.MenuView.ItemView {
-    ctor public ListMenuItemView(android.content.Context!, android.util.AttributeSet!);
-    ctor public ListMenuItemView(android.content.Context!, android.util.AttributeSet!, int);
-    method public void adjustListItemSelectionBounds(android.graphics.Rect!);
-    method public androidx.appcompat.view.menu.MenuItemImpl! getItemData();
-    method public void initialize(androidx.appcompat.view.menu.MenuItemImpl!, int);
-    method public boolean prefersCondensedTitle();
-    method public void setCheckable(boolean);
-    method public void setChecked(boolean);
-    method public void setForceShowIcon(boolean);
-    method public void setGroupDividerEnabled(boolean);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setShortcut(boolean, char);
-    method public void setTitle(CharSequence!);
-    method public boolean showsIcon();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ListMenuPresenter implements android.widget.AdapterView.OnItemClickListener androidx.appcompat.view.menu.MenuPresenter {
-    ctor public ListMenuPresenter(android.content.Context!, int);
-    ctor public ListMenuPresenter(int, int);
-    method public boolean collapseItemActionView(androidx.appcompat.view.menu.MenuBuilder!, androidx.appcompat.view.menu.MenuItemImpl!);
-    method public boolean expandItemActionView(androidx.appcompat.view.menu.MenuBuilder!, androidx.appcompat.view.menu.MenuItemImpl!);
-    method public boolean flagActionItems();
-    method public android.widget.ListAdapter! getAdapter();
-    method public int getId();
-    method public androidx.appcompat.view.menu.MenuView! getMenuView(android.view.ViewGroup!);
-    method public void initForMenu(android.content.Context!, androidx.appcompat.view.menu.MenuBuilder!);
-    method public void onCloseMenu(androidx.appcompat.view.menu.MenuBuilder!, boolean);
-    method public void onItemClick(android.widget.AdapterView<?>!, android.view.View!, int, long);
-    method public void onRestoreInstanceState(android.os.Parcelable!);
-    method public android.os.Parcelable! onSaveInstanceState();
-    method public boolean onSubMenuSelected(androidx.appcompat.view.menu.SubMenuBuilder!);
-    method public void restoreHierarchyState(android.os.Bundle!);
-    method public void saveHierarchyState(android.os.Bundle!);
-    method public void setCallback(androidx.appcompat.view.menu.MenuPresenter.Callback!);
-    method public void setId(int);
-    method public void setItemIndexOffset(int);
-    method public void updateMenuView(boolean);
-    field public static final String VIEWS_TAG = "android:menu:list";
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class MenuAdapter extends android.widget.BaseAdapter {
-    ctor public MenuAdapter(androidx.appcompat.view.menu.MenuBuilder!, android.view.LayoutInflater!, boolean, int);
-    method public androidx.appcompat.view.menu.MenuBuilder! getAdapterMenu();
-    method public int getCount();
-    method public boolean getForceShowIcon();
-    method public androidx.appcompat.view.menu.MenuItemImpl! getItem(int);
-    method public long getItemId(int);
-    method public android.view.View! getView(int, android.view.View!, android.view.ViewGroup!);
-    method public void setForceShowIcon(boolean);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class MenuBuilder implements androidx.core.internal.view.SupportMenu {
-    ctor public MenuBuilder(android.content.Context!);
-    method public android.view.MenuItem! add(CharSequence!);
-    method public android.view.MenuItem! add(int);
-    method public android.view.MenuItem! add(int, int, int, CharSequence!);
-    method public android.view.MenuItem! add(int, int, int, int);
-    method public int addIntentOptions(int, int, int, android.content.ComponentName!, android.content.Intent![]!, android.content.Intent!, int, android.view.MenuItem![]!);
-    method protected android.view.MenuItem! addInternal(int, int, int, CharSequence!);
-    method public void addMenuPresenter(androidx.appcompat.view.menu.MenuPresenter!);
-    method public void addMenuPresenter(androidx.appcompat.view.menu.MenuPresenter!, android.content.Context!);
-    method public android.view.SubMenu! addSubMenu(CharSequence!);
-    method public android.view.SubMenu! addSubMenu(int);
-    method public android.view.SubMenu! addSubMenu(int, int, int, CharSequence!);
-    method public android.view.SubMenu! addSubMenu(int, int, int, int);
-    method public void changeMenuMode();
-    method public void clear();
-    method public void clearAll();
-    method public void clearHeader();
-    method public final void close(boolean);
-    method public void close();
-    method public boolean collapseItemActionView(androidx.appcompat.view.menu.MenuItemImpl!);
-    method public boolean expandItemActionView(androidx.appcompat.view.menu.MenuItemImpl!);
-    method public int findGroupIndex(int);
-    method public int findGroupIndex(int, int);
-    method public android.view.MenuItem! findItem(int);
-    method public int findItemIndex(int);
-    method public void flagActionItems();
-    method public java.util.ArrayList<androidx.appcompat.view.menu.MenuItemImpl!>! getActionItems();
-    method protected String! getActionViewStatesKey();
-    method public android.content.Context! getContext();
-    method public androidx.appcompat.view.menu.MenuItemImpl! getExpandedItem();
-    method public android.graphics.drawable.Drawable! getHeaderIcon();
-    method public CharSequence! getHeaderTitle();
-    method public android.view.View! getHeaderView();
-    method public android.view.MenuItem! getItem(int);
-    method public java.util.ArrayList<androidx.appcompat.view.menu.MenuItemImpl!>! getNonActionItems();
-    method public androidx.appcompat.view.menu.MenuBuilder! getRootMenu();
-    method public java.util.ArrayList<androidx.appcompat.view.menu.MenuItemImpl!> getVisibleItems();
-    method public boolean hasVisibleItems();
-    method public boolean isGroupDividerEnabled();
-    method public boolean isShortcutKey(int, android.view.KeyEvent!);
-    method public boolean isShortcutsVisible();
-    method public void onItemsChanged(boolean);
-    method public boolean performIdentifierAction(int, int);
-    method public boolean performItemAction(android.view.MenuItem!, int);
-    method public boolean performItemAction(android.view.MenuItem!, androidx.appcompat.view.menu.MenuPresenter!, int);
-    method public boolean performShortcut(int, android.view.KeyEvent!, int);
-    method public void removeGroup(int);
-    method public void removeItem(int);
-    method public void removeItemAt(int);
-    method public void removeMenuPresenter(androidx.appcompat.view.menu.MenuPresenter!);
-    method public void restoreActionViewStates(android.os.Bundle!);
-    method public void restorePresenterStates(android.os.Bundle!);
-    method public void saveActionViewStates(android.os.Bundle!);
-    method public void savePresenterStates(android.os.Bundle!);
-    method public void setCallback(androidx.appcompat.view.menu.MenuBuilder.Callback!);
-    method public void setCurrentMenuInfo(android.view.ContextMenu.ContextMenuInfo!);
-    method public androidx.appcompat.view.menu.MenuBuilder! setDefaultShowAsAction(int);
-    method public void setGroupCheckable(int, boolean, boolean);
-    method public void setGroupEnabled(int, boolean);
-    method public void setGroupVisible(int, boolean);
-    method protected androidx.appcompat.view.menu.MenuBuilder! setHeaderIconInt(android.graphics.drawable.Drawable!);
-    method protected androidx.appcompat.view.menu.MenuBuilder! setHeaderIconInt(int);
-    method protected androidx.appcompat.view.menu.MenuBuilder! setHeaderTitleInt(CharSequence!);
-    method protected androidx.appcompat.view.menu.MenuBuilder! setHeaderTitleInt(int);
-    method protected androidx.appcompat.view.menu.MenuBuilder! setHeaderViewInt(android.view.View!);
-    method public void setOptionalIconsVisible(boolean);
-    method public void setOverrideVisibleItems(boolean);
-    method public void setQwertyMode(boolean);
-    method public void setShortcutsVisible(boolean);
-    method public int size();
-    method public void startDispatchingItemsChanged();
-    method public void stopDispatchingItemsChanged();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface MenuBuilder.Callback {
-    method public boolean onMenuItemSelected(androidx.appcompat.view.menu.MenuBuilder, android.view.MenuItem);
-    method public void onMenuModeChange(androidx.appcompat.view.menu.MenuBuilder);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface MenuBuilder.ItemInvoker {
-    method public boolean invokeItem(androidx.appcompat.view.menu.MenuItemImpl!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class MenuItemImpl implements androidx.core.internal.view.SupportMenuItem {
-    method public void actionFormatChanged();
-    method public boolean collapseActionView();
-    method public boolean expandActionView();
-    method public android.view.ActionProvider! getActionProvider();
-    method public android.view.View! getActionView();
-    method public char getAlphabeticShortcut();
-    method public int getGroupId();
-    method public android.graphics.drawable.Drawable! getIcon();
-    method public android.content.Intent! getIntent();
-    method @android.view.ViewDebug.CapturedViewProperty public int getItemId();
-    method public android.view.ContextMenu.ContextMenuInfo! getMenuInfo();
-    method public char getNumericShortcut();
-    method public int getOrder();
-    method public int getOrdering();
-    method public android.view.SubMenu! getSubMenu();
-    method public androidx.core.view.ActionProvider! getSupportActionProvider();
-    method @android.view.ViewDebug.CapturedViewProperty public CharSequence! getTitle();
-    method public CharSequence! getTitleCondensed();
-    method public boolean hasCollapsibleActionView();
-    method public boolean hasSubMenu();
-    method public boolean invoke();
-    method public boolean isActionButton();
-    method public boolean isActionViewExpanded();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isEnabled();
-    method public boolean isExclusiveCheckable();
-    method public boolean isVisible();
-    method public boolean requestsActionButton();
-    method public boolean requiresActionButton();
-    method public boolean requiresOverflow();
-    method public android.view.MenuItem! setActionProvider(android.view.ActionProvider!);
-    method public androidx.core.internal.view.SupportMenuItem! setActionView(android.view.View!);
-    method public androidx.core.internal.view.SupportMenuItem! setActionView(int);
-    method public void setActionViewExpanded(boolean);
-    method public android.view.MenuItem! setAlphabeticShortcut(char);
-    method public android.view.MenuItem! setCallback(Runnable!);
-    method public android.view.MenuItem! setCheckable(boolean);
-    method public android.view.MenuItem! setChecked(boolean);
-    method public androidx.core.internal.view.SupportMenuItem! setContentDescription(CharSequence!);
-    method public android.view.MenuItem! setEnabled(boolean);
-    method public void setExclusiveCheckable(boolean);
-    method public android.view.MenuItem! setIcon(android.graphics.drawable.Drawable!);
-    method public android.view.MenuItem! setIcon(int);
-    method public android.view.MenuItem! setIntent(android.content.Intent!);
-    method public void setIsActionButton(boolean);
-    method public android.view.MenuItem! setNumericShortcut(char);
-    method public android.view.MenuItem! setOnActionExpandListener(android.view.MenuItem.OnActionExpandListener!);
-    method public android.view.MenuItem! setOnMenuItemClickListener(android.view.MenuItem.OnMenuItemClickListener!);
-    method public android.view.MenuItem! setShortcut(char, char);
-    method public void setShowAsAction(int);
-    method public androidx.core.internal.view.SupportMenuItem! setShowAsActionFlags(int);
-    method public void setSubMenu(androidx.appcompat.view.menu.SubMenuBuilder!);
-    method public androidx.core.internal.view.SupportMenuItem! setSupportActionProvider(androidx.core.view.ActionProvider!);
-    method public android.view.MenuItem! setTitle(CharSequence!);
-    method public android.view.MenuItem! setTitle(int);
-    method public android.view.MenuItem! setTitleCondensed(CharSequence!);
-    method public androidx.core.internal.view.SupportMenuItem! setTooltipText(CharSequence!);
-    method public android.view.MenuItem! setVisible(boolean);
-    method public boolean shouldShowIcon();
-    method public boolean showsTextAsAction();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class MenuItemWrapperICS implements android.view.MenuItem {
-    ctor public MenuItemWrapperICS(android.content.Context!, androidx.core.internal.view.SupportMenuItem!);
-    method public boolean collapseActionView();
-    method public boolean expandActionView();
-    method public android.view.ActionProvider! getActionProvider();
-    method public android.view.View! getActionView();
-    method public char getAlphabeticShortcut();
-    method public int getGroupId();
-    method public android.graphics.drawable.Drawable! getIcon();
-    method public android.content.Intent! getIntent();
-    method public int getItemId();
-    method public android.view.ContextMenu.ContextMenuInfo! getMenuInfo();
-    method public char getNumericShortcut();
-    method public int getOrder();
-    method public android.view.SubMenu! getSubMenu();
-    method public CharSequence! getTitle();
-    method public CharSequence! getTitleCondensed();
-    method public boolean hasSubMenu();
-    method public boolean isActionViewExpanded();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isEnabled();
-    method public boolean isVisible();
-    method public android.view.MenuItem! setActionProvider(android.view.ActionProvider!);
-    method public android.view.MenuItem! setActionView(android.view.View!);
-    method public android.view.MenuItem! setActionView(int);
-    method public android.view.MenuItem! setAlphabeticShortcut(char);
-    method public android.view.MenuItem! setCheckable(boolean);
-    method public android.view.MenuItem! setChecked(boolean);
-    method public android.view.MenuItem! setEnabled(boolean);
-    method public void setExclusiveCheckable(boolean);
-    method public android.view.MenuItem! setIcon(android.graphics.drawable.Drawable!);
-    method public android.view.MenuItem! setIcon(int);
-    method public android.view.MenuItem! setIntent(android.content.Intent!);
-    method public android.view.MenuItem! setNumericShortcut(char);
-    method public android.view.MenuItem! setOnActionExpandListener(android.view.MenuItem.OnActionExpandListener!);
-    method public android.view.MenuItem! setOnMenuItemClickListener(android.view.MenuItem.OnMenuItemClickListener!);
-    method public android.view.MenuItem! setShortcut(char, char);
-    method public void setShowAsAction(int);
-    method public android.view.MenuItem! setShowAsActionFlags(int);
-    method public android.view.MenuItem! setTitle(CharSequence!);
-    method public android.view.MenuItem! setTitle(int);
-    method public android.view.MenuItem! setTitleCondensed(CharSequence!);
-    method public android.view.MenuItem! setVisible(boolean);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class MenuPopupHelper {
-    ctor public MenuPopupHelper(android.content.Context, androidx.appcompat.view.menu.MenuBuilder);
-    ctor public MenuPopupHelper(android.content.Context, androidx.appcompat.view.menu.MenuBuilder, android.view.View);
-    ctor public MenuPopupHelper(android.content.Context, androidx.appcompat.view.menu.MenuBuilder, android.view.View, boolean, @AttrRes int);
-    ctor public MenuPopupHelper(android.content.Context, androidx.appcompat.view.menu.MenuBuilder, android.view.View, boolean, @AttrRes int, @StyleRes int);
-    method public void dismiss();
-    method public int getGravity();
-    method public android.widget.ListView! getListView();
-    method public androidx.appcompat.view.menu.MenuPopup getPopup();
-    method public boolean isShowing();
-    method protected void onDismiss();
-    method public void setAnchorView(android.view.View);
-    method public void setForceShowIcon(boolean);
-    method public void setGravity(int);
-    method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener?);
-    method public void setPresenterCallback(androidx.appcompat.view.menu.MenuPresenter.Callback?);
-    method public void show();
-    method public void show(int, int);
-    method public boolean tryShow();
-    method public boolean tryShow(int, int);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface MenuPresenter {
-    method public boolean collapseItemActionView(androidx.appcompat.view.menu.MenuBuilder!, androidx.appcompat.view.menu.MenuItemImpl!);
-    method public boolean expandItemActionView(androidx.appcompat.view.menu.MenuBuilder!, androidx.appcompat.view.menu.MenuItemImpl!);
-    method public boolean flagActionItems();
-    method public int getId();
-    method public androidx.appcompat.view.menu.MenuView! getMenuView(android.view.ViewGroup!);
-    method public void initForMenu(android.content.Context!, androidx.appcompat.view.menu.MenuBuilder!);
-    method public void onCloseMenu(androidx.appcompat.view.menu.MenuBuilder!, boolean);
-    method public void onRestoreInstanceState(android.os.Parcelable!);
-    method public android.os.Parcelable! onSaveInstanceState();
-    method public boolean onSubMenuSelected(androidx.appcompat.view.menu.SubMenuBuilder!);
-    method public void setCallback(androidx.appcompat.view.menu.MenuPresenter.Callback!);
-    method public void updateMenuView(boolean);
-  }
-
-  public static interface MenuPresenter.Callback {
-    method public void onCloseMenu(androidx.appcompat.view.menu.MenuBuilder, boolean);
-    method public boolean onOpenSubMenu(androidx.appcompat.view.menu.MenuBuilder);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface MenuView {
-    method public int getWindowAnimations();
-    method public void initialize(androidx.appcompat.view.menu.MenuBuilder!);
-  }
-
-  public static interface MenuView.ItemView {
-    method public androidx.appcompat.view.menu.MenuItemImpl! getItemData();
-    method public void initialize(androidx.appcompat.view.menu.MenuItemImpl!, int);
-    method public boolean prefersCondensedTitle();
-    method public void setCheckable(boolean);
-    method public void setChecked(boolean);
-    method public void setEnabled(boolean);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setShortcut(boolean, char);
-    method public void setTitle(CharSequence!);
-    method public boolean showsIcon();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class MenuWrapperICS implements android.view.Menu {
-    ctor public MenuWrapperICS(android.content.Context!, androidx.core.internal.view.SupportMenu!);
-    method public android.view.MenuItem! add(CharSequence!);
-    method public android.view.MenuItem! add(int);
-    method public android.view.MenuItem! add(int, int, int, CharSequence!);
-    method public android.view.MenuItem! add(int, int, int, int);
-    method public int addIntentOptions(int, int, int, android.content.ComponentName!, android.content.Intent![]!, android.content.Intent!, int, android.view.MenuItem![]!);
-    method public android.view.SubMenu! addSubMenu(CharSequence!);
-    method public android.view.SubMenu! addSubMenu(int);
-    method public android.view.SubMenu! addSubMenu(int, int, int, CharSequence!);
-    method public android.view.SubMenu! addSubMenu(int, int, int, int);
-    method public void clear();
-    method public void close();
-    method public android.view.MenuItem! findItem(int);
-    method public android.view.MenuItem! getItem(int);
-    method public boolean hasVisibleItems();
-    method public boolean isShortcutKey(int, android.view.KeyEvent!);
-    method public boolean performIdentifierAction(int, int);
-    method public boolean performShortcut(int, android.view.KeyEvent!, int);
-    method public void removeGroup(int);
-    method public void removeItem(int);
-    method public void setGroupCheckable(int, boolean, boolean);
-    method public void setGroupEnabled(int, boolean);
-    method public void setGroupVisible(int, boolean);
-    method public void setQwertyMode(boolean);
-    method public int size();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface ShowableListMenu {
-    method public void dismiss();
-    method public android.widget.ListView! getListView();
-    method public boolean isShowing();
-    method public void show();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SubMenuBuilder extends androidx.appcompat.view.menu.MenuBuilder implements android.view.SubMenu {
-    ctor public SubMenuBuilder(android.content.Context!, androidx.appcompat.view.menu.MenuBuilder!, androidx.appcompat.view.menu.MenuItemImpl!);
-    method public String! getActionViewStatesKey();
-    method public android.view.MenuItem! getItem();
-    method public android.view.Menu! getParentMenu();
-    method public boolean isQwertyMode();
-    method public android.view.SubMenu! setHeaderIcon(android.graphics.drawable.Drawable!);
-    method public android.view.SubMenu! setHeaderIcon(int);
-    method public android.view.SubMenu! setHeaderTitle(CharSequence!);
-    method public android.view.SubMenu! setHeaderTitle(int);
-    method public android.view.SubMenu! setHeaderView(android.view.View!);
-    method public android.view.SubMenu! setIcon(android.graphics.drawable.Drawable!);
-    method public android.view.SubMenu! setIcon(int);
-  }
-
-}
-
-package androidx.appcompat.widget {
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ActionBarContainer extends android.widget.FrameLayout {
-    ctor public ActionBarContainer(android.content.Context!);
-    ctor public ActionBarContainer(android.content.Context!, android.util.AttributeSet!);
-    method public android.view.View! getTabContainer();
-    method public void onFinishInflate();
-    method public void onLayout(boolean, int, int, int, int);
-    method public void onMeasure(int, int);
-    method public void setPrimaryBackground(android.graphics.drawable.Drawable!);
-    method public void setSplitBackground(android.graphics.drawable.Drawable!);
-    method public void setStackedBackground(android.graphics.drawable.Drawable!);
-    method public void setTabContainer(androidx.appcompat.widget.ScrollingTabContainerView!);
-    method public void setTransitioning(boolean);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ActionBarContextView extends android.view.ViewGroup {
-    ctor public ActionBarContextView(android.content.Context);
-    ctor public ActionBarContextView(android.content.Context, android.util.AttributeSet?);
-    ctor public ActionBarContextView(android.content.Context, android.util.AttributeSet?, int);
-    method public void animateToVisibility(int);
-    method public boolean canShowOverflowMenu();
-    method public void closeMode();
-    method public void dismissPopupMenus();
-    method public int getAnimatedVisibility();
-    method public int getContentHeight();
-    method public CharSequence! getSubtitle();
-    method public CharSequence! getTitle();
-    method public boolean hideOverflowMenu();
-    method public void initForMode(androidx.appcompat.view.ActionMode!);
-    method public boolean isOverflowMenuShowPending();
-    method public boolean isOverflowMenuShowing();
-    method public boolean isOverflowReserved();
-    method public boolean isTitleOptional();
-    method public void killMode();
-    method public void onDetachedFromWindow();
-    method public void postShowOverflowMenu();
-    method public void setContentHeight(int);
-    method public void setCustomView(android.view.View!);
-    method public void setSubtitle(CharSequence!);
-    method public void setTitle(CharSequence!);
-    method public void setTitleOptional(boolean);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setupAnimatorToVisibility(int, long);
-    method public boolean showOverflowMenu();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ActionBarOverlayLayout extends android.view.ViewGroup implements androidx.appcompat.widget.DecorContentParent androidx.core.view.NestedScrollingParent androidx.core.view.NestedScrollingParent2 androidx.core.view.NestedScrollingParent3 {
-    ctor public ActionBarOverlayLayout(android.content.Context);
-    ctor public ActionBarOverlayLayout(android.content.Context, android.util.AttributeSet?);
-    method public boolean canShowOverflowMenu();
-    method public void dismissPopups();
-    method protected boolean fitSystemWindows(android.graphics.Rect!);
-    method protected androidx.appcompat.widget.ActionBarOverlayLayout.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.appcompat.widget.ActionBarOverlayLayout.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method public int getActionBarHideOffset();
-    method public CharSequence! getTitle();
-    method public boolean hasIcon();
-    method public boolean hasLogo();
-    method public boolean hideOverflowMenu();
-    method public void initFeature(int);
-    method public boolean isHideOnContentScrollEnabled();
-    method public boolean isInOverlayMode();
-    method public boolean isOverflowMenuShowPending();
-    method public boolean isOverflowMenuShowing();
-    method public void onNestedPreScroll(android.view.View!, int, int, int[]!, int);
-    method public void onNestedScroll(android.view.View!, int, int, int, int, int, int[]!);
-    method public void onNestedScroll(android.view.View!, int, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View!, android.view.View!, int, int);
-    method public boolean onStartNestedScroll(android.view.View!, android.view.View!, int, int);
-    method public void onStopNestedScroll(android.view.View!, int);
-    method public void restoreToolbarHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
-    method public void saveToolbarHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
-    method public void setActionBarHideOffset(int);
-    method public void setActionBarVisibilityCallback(androidx.appcompat.widget.ActionBarOverlayLayout.ActionBarVisibilityCallback!);
-    method public void setHasNonEmbeddedTabs(boolean);
-    method public void setHideOnContentScrollEnabled(boolean);
-    method public void setIcon(int);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setLogo(int);
-    method public void setMenu(android.view.Menu!, androidx.appcompat.view.menu.MenuPresenter.Callback!);
-    method public void setMenuPrepared();
-    method public void setOverlayMode(boolean);
-    method public void setShowingForActionMode(boolean);
-    method public void setUiOptions(int);
-    method public void setWindowCallback(android.view.Window.Callback!);
-    method public void setWindowTitle(CharSequence!);
-    method public boolean showOverflowMenu();
-  }
-
-  public static interface ActionBarOverlayLayout.ActionBarVisibilityCallback {
-    method public void enableContentAnimations(boolean);
-    method public void hideForSystem();
-    method public void onContentScrollStarted();
-    method public void onContentScrollStopped();
-    method public void onWindowVisibilityChanged(int);
-    method public void showForSystem();
-  }
-
-  public static class ActionBarOverlayLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public ActionBarOverlayLayout.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public ActionBarOverlayLayout.LayoutParams(int, int);
-    ctor public ActionBarOverlayLayout.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    ctor public ActionBarOverlayLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
-  }
-
-  public class ActionMenuView extends androidx.appcompat.widget.LinearLayoutCompat implements androidx.appcompat.view.menu.MenuBuilder.ItemInvoker androidx.appcompat.view.menu.MenuView {
-    ctor public ActionMenuView(android.content.Context);
-    ctor public ActionMenuView(android.content.Context, android.util.AttributeSet?);
-    method public void dismissPopupMenus();
-    method protected androidx.appcompat.widget.ActionMenuView.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.appcompat.widget.ActionMenuView.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.ActionMenuView.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.appcompat.widget.ActionMenuView.LayoutParams! generateOverflowButtonLayoutParams();
-    method public android.view.Menu! getMenu();
-    method public android.graphics.drawable.Drawable? getOverflowIcon();
-    method public int getPopupTheme();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int getWindowAnimations();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected boolean hasSupportDividerBeforeChildAt(int);
-    method public boolean hideOverflowMenu();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void initialize(androidx.appcompat.view.menu.MenuBuilder!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean invokeItem(androidx.appcompat.view.menu.MenuItemImpl!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean isOverflowMenuShowPending();
-    method public boolean isOverflowMenuShowing();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean isOverflowReserved();
-    method public void onConfigurationChanged(android.content.res.Configuration!);
-    method public void onDetachedFromWindow();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.appcompat.view.menu.MenuBuilder! peekMenu();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setExpandedActionViewsExclusive(boolean);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setMenuCallbacks(androidx.appcompat.view.menu.MenuPresenter.Callback!, androidx.appcompat.view.menu.MenuBuilder.Callback!);
-    method public void setOnMenuItemClickListener(androidx.appcompat.widget.ActionMenuView.OnMenuItemClickListener!);
-    method public void setOverflowIcon(android.graphics.drawable.Drawable?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setOverflowReserved(boolean);
-    method public void setPopupTheme(@StyleRes int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setPresenter(androidx.appcompat.widget.ActionMenuPresenter!);
-    method public boolean showOverflowMenu();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface ActionMenuView.ActionMenuChildView {
-    method public boolean needsDividerAfter();
-    method public boolean needsDividerBefore();
-  }
-
-  public static class ActionMenuView.LayoutParams extends androidx.appcompat.widget.LinearLayoutCompat.LayoutParams {
-    ctor public ActionMenuView.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    ctor public ActionMenuView.LayoutParams(androidx.appcompat.widget.ActionMenuView.LayoutParams!);
-    ctor public ActionMenuView.LayoutParams(int, int);
-    field @android.view.ViewDebug.ExportedProperty public int cellsUsed;
-    field @android.view.ViewDebug.ExportedProperty public boolean expandable;
-    field @android.view.ViewDebug.ExportedProperty public int extraPixels;
-    field @android.view.ViewDebug.ExportedProperty public boolean isOverflowButton;
-    field @android.view.ViewDebug.ExportedProperty public boolean preventEdgeOffset;
-  }
-
-  public static interface ActionMenuView.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ActivityChooserView extends android.view.ViewGroup {
-    ctor public ActivityChooserView(android.content.Context);
-    ctor public ActivityChooserView(android.content.Context, android.util.AttributeSet?);
-    ctor public ActivityChooserView(android.content.Context, android.util.AttributeSet?, int);
-    method public boolean dismissPopup();
-    method public androidx.appcompat.widget.ActivityChooserModel! getDataModel();
-    method public boolean isShowingPopup();
-    method public void setActivityChooserModel(androidx.appcompat.widget.ActivityChooserModel!);
-    method public void setDefaultActionButtonContentDescription(int);
-    method public void setExpandActivityOverflowButtonContentDescription(int);
-    method public void setExpandActivityOverflowButtonDrawable(android.graphics.drawable.Drawable!);
-    method public void setInitialActivityCount(int);
-    method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setProvider(androidx.core.view.ActionProvider!);
-    method public boolean showPopup();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static class ActivityChooserView.InnerLayout extends android.widget.LinearLayout {
-    ctor public ActivityChooserView.InnerLayout(android.content.Context!, android.util.AttributeSet!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class AlertDialogLayout extends androidx.appcompat.widget.LinearLayoutCompat {
-    ctor public AlertDialogLayout(android.content.Context?);
-    ctor public AlertDialogLayout(android.content.Context?, android.util.AttributeSet?);
-  }
-
-  public class AppCompatAutoCompleteTextView extends android.widget.AutoCompleteTextView implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatAutoCompleteTextView(android.content.Context);
-    ctor public AppCompatAutoCompleteTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatAutoCompleteTextView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatButton extends android.widget.Button implements androidx.core.widget.AutoSizeableTextView androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundDrawablesView {
-    ctor public AppCompatButton(android.content.Context);
-    ctor public AppCompatButton(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatButton(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) throws java.lang.IllegalArgumentException;
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithPresetSizes(int[], int) throws java.lang.IllegalArgumentException;
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setSupportAllCaps(boolean);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatCheckBox extends android.widget.CheckBox implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundButton {
-    ctor public AppCompatCheckBox(android.content.Context);
-    ctor public AppCompatCheckBox(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatCheckBox(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportButtonTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatCheckedTextView extends android.widget.CheckedTextView {
-    ctor public AppCompatCheckedTextView(android.content.Context);
-    ctor public AppCompatCheckedTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatCheckedTextView(android.content.Context, android.util.AttributeSet?, int);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class AppCompatDrawableManager {
-    ctor public AppCompatDrawableManager();
-    method public static androidx.appcompat.widget.AppCompatDrawableManager! get();
-    method public android.graphics.drawable.Drawable! getDrawable(android.content.Context, @DrawableRes int);
-    method public static android.graphics.PorterDuffColorFilter! getPorterDuffColorFilter(int, android.graphics.PorterDuff.Mode!);
-    method public void onConfigurationChanged(android.content.Context);
-    method public static void preload();
-  }
-
-  public class AppCompatEditText extends android.widget.EditText implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatEditText(android.content.Context);
-    ctor public AppCompatEditText(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatEditText(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatImageButton extends android.widget.ImageButton implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableImageSourceView {
-    ctor public AppCompatImageButton(android.content.Context);
-    ctor public AppCompatImageButton(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatImageButton(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportImageTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportImageTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportImageTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportImageTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class AppCompatImageHelper {
-    ctor public AppCompatImageHelper(android.widget.ImageView);
-    method public void loadFromAttributes(android.util.AttributeSet!, int);
-    method public void setImageResource(int);
-  }
-
-  public class AppCompatImageView extends android.widget.ImageView implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableImageSourceView {
-    ctor public AppCompatImageView(android.content.Context);
-    ctor public AppCompatImageView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatImageView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportImageTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportImageTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportImageTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportImageTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatMultiAutoCompleteTextView extends android.widget.MultiAutoCompleteTextView implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context);
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatMultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-  }
-
-  public class AppCompatRadioButton extends android.widget.RadioButton implements androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundButton {
-    ctor public AppCompatRadioButton(android.content.Context!);
-    ctor public AppCompatRadioButton(android.content.Context!, android.util.AttributeSet?);
-    ctor public AppCompatRadioButton(android.content.Context!, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportButtonTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatRatingBar extends android.widget.RatingBar {
-    ctor public AppCompatRatingBar(android.content.Context);
-    ctor public AppCompatRatingBar(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatRatingBar(android.content.Context, android.util.AttributeSet?, int);
-  }
-
-  public class AppCompatSeekBar extends android.widget.SeekBar {
-    ctor public AppCompatSeekBar(android.content.Context);
-    ctor public AppCompatSeekBar(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatSeekBar(android.content.Context, android.util.AttributeSet?, int);
-  }
-
-  public class AppCompatSpinner extends android.widget.Spinner implements androidx.core.view.TintableBackgroundView {
-    ctor public AppCompatSpinner(android.content.Context);
-    ctor public AppCompatSpinner(android.content.Context, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public AppCompatSpinner(android.content.Context, android.util.AttributeSet?, int, int, android.content.res.Resources.Theme!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public class AppCompatTextView extends android.widget.TextView implements androidx.core.widget.AutoSizeableTextView androidx.core.view.TintableBackgroundView androidx.core.widget.TintableCompoundDrawablesView {
-    ctor public AppCompatTextView(android.content.Context);
-    ctor public AppCompatTextView(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatTextView(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
-    method public androidx.core.text.PrecomputedTextCompat.Params getTextMetricsParamsCompat();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) throws java.lang.IllegalArgumentException;
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAutoSizeTextTypeUniformWithPresetSizes(int[], int) throws java.lang.IllegalArgumentException;
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setPrecomputedText(androidx.core.text.PrecomputedTextCompat);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTextAppearance(android.content.Context!, int);
-    method public void setTextFuture(java.util.concurrent.Future<androidx.core.text.PrecomputedTextCompat!>?);
-    method public void setTextMetricsParamsCompat(androidx.core.text.PrecomputedTextCompat.Params);
-  }
-
-  public class AppCompatToggleButton extends android.widget.ToggleButton {
-    ctor public AppCompatToggleButton(android.content.Context);
-    ctor public AppCompatToggleButton(android.content.Context, android.util.AttributeSet?);
-    ctor public AppCompatToggleButton(android.content.Context, android.util.AttributeSet?, int);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ButtonBarLayout extends android.widget.LinearLayout {
-    ctor public ButtonBarLayout(android.content.Context, android.util.AttributeSet?);
-    method public void setAllowStacking(boolean);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface DecorContentParent {
-    method public boolean canShowOverflowMenu();
-    method public void dismissPopups();
-    method public CharSequence! getTitle();
-    method public boolean hasIcon();
-    method public boolean hasLogo();
-    method public boolean hideOverflowMenu();
-    method public void initFeature(int);
-    method public boolean isOverflowMenuShowPending();
-    method public boolean isOverflowMenuShowing();
-    method public void restoreToolbarHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
-    method public void saveToolbarHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
-    method public void setIcon(int);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setLogo(int);
-    method public void setMenu(android.view.Menu!, androidx.appcompat.view.menu.MenuPresenter.Callback!);
-    method public void setMenuPrepared();
-    method public void setUiOptions(int);
-    method public void setWindowCallback(android.view.Window.Callback!);
-    method public void setWindowTitle(CharSequence!);
-    method public boolean showOverflowMenu();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface DecorToolbar {
-    method public void animateToVisibility(int);
-    method public boolean canShowOverflowMenu();
-    method public void collapseActionView();
-    method public void dismissPopupMenus();
-    method public android.content.Context! getContext();
-    method public android.view.View! getCustomView();
-    method public int getDisplayOptions();
-    method public int getDropdownItemCount();
-    method public int getDropdownSelectedPosition();
-    method public int getHeight();
-    method public android.view.Menu! getMenu();
-    method public int getNavigationMode();
-    method public CharSequence! getSubtitle();
-    method public CharSequence! getTitle();
-    method public android.view.ViewGroup! getViewGroup();
-    method public int getVisibility();
-    method public boolean hasEmbeddedTabs();
-    method public boolean hasExpandedActionView();
-    method public boolean hasIcon();
-    method public boolean hasLogo();
-    method public boolean hideOverflowMenu();
-    method public void initIndeterminateProgress();
-    method public void initProgress();
-    method public boolean isOverflowMenuShowPending();
-    method public boolean isOverflowMenuShowing();
-    method public boolean isTitleTruncated();
-    method public void restoreHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
-    method public void saveHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setCollapsible(boolean);
-    method public void setCustomView(android.view.View!);
-    method public void setDefaultNavigationContentDescription(int);
-    method public void setDefaultNavigationIcon(android.graphics.drawable.Drawable!);
-    method public void setDisplayOptions(int);
-    method public void setDropdownParams(android.widget.SpinnerAdapter!, android.widget.AdapterView.OnItemSelectedListener!);
-    method public void setDropdownSelectedPosition(int);
-    method public void setEmbeddedTabView(androidx.appcompat.widget.ScrollingTabContainerView!);
-    method public void setHomeButtonEnabled(boolean);
-    method public void setIcon(int);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setLogo(int);
-    method public void setLogo(android.graphics.drawable.Drawable!);
-    method public void setMenu(android.view.Menu!, androidx.appcompat.view.menu.MenuPresenter.Callback!);
-    method public void setMenuCallbacks(androidx.appcompat.view.menu.MenuPresenter.Callback!, androidx.appcompat.view.menu.MenuBuilder.Callback!);
-    method public void setMenuPrepared();
-    method public void setNavigationContentDescription(CharSequence!);
-    method public void setNavigationContentDescription(int);
-    method public void setNavigationIcon(android.graphics.drawable.Drawable!);
-    method public void setNavigationIcon(int);
-    method public void setNavigationMode(int);
-    method public void setSubtitle(CharSequence!);
-    method public void setTitle(CharSequence!);
-    method public void setVisibility(int);
-    method public void setWindowCallback(android.view.Window.Callback!);
-    method public void setWindowTitle(CharSequence!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setupAnimatorToVisibility(int, long);
-    method public boolean showOverflowMenu();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class DialogTitle extends androidx.appcompat.widget.AppCompatTextView {
-    ctor public DialogTitle(android.content.Context, android.util.AttributeSet?, int);
-    ctor public DialogTitle(android.content.Context, android.util.AttributeSet?);
-    ctor public DialogTitle(android.content.Context);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class FitWindowsFrameLayout extends android.widget.FrameLayout implements androidx.appcompat.widget.FitWindowsViewGroup {
-    ctor public FitWindowsFrameLayout(android.content.Context);
-    ctor public FitWindowsFrameLayout(android.content.Context, android.util.AttributeSet?);
-    method protected boolean fitSystemWindows(android.graphics.Rect!);
-    method public void setOnFitSystemWindowsListener(androidx.appcompat.widget.FitWindowsViewGroup.OnFitSystemWindowsListener!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class FitWindowsLinearLayout extends android.widget.LinearLayout implements androidx.appcompat.widget.FitWindowsViewGroup {
-    ctor public FitWindowsLinearLayout(android.content.Context);
-    ctor public FitWindowsLinearLayout(android.content.Context, android.util.AttributeSet?);
-    method protected boolean fitSystemWindows(android.graphics.Rect!);
-    method public void setOnFitSystemWindowsListener(androidx.appcompat.widget.FitWindowsViewGroup.OnFitSystemWindowsListener!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface FitWindowsViewGroup {
-    method public void setOnFitSystemWindowsListener(androidx.appcompat.widget.FitWindowsViewGroup.OnFitSystemWindowsListener!);
-  }
-
-  public static interface FitWindowsViewGroup.OnFitSystemWindowsListener {
-    method public void onFitSystemWindows(android.graphics.Rect!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class ForwardingListener implements android.view.View.OnAttachStateChangeListener android.view.View.OnTouchListener {
-    ctor public ForwardingListener(android.view.View!);
-    method public abstract androidx.appcompat.view.menu.ShowableListMenu! getPopup();
-    method protected boolean onForwardingStarted();
-    method protected boolean onForwardingStopped();
-    method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
-    method public void onViewAttachedToWindow(android.view.View!);
-    method public void onViewDetachedFromWindow(android.view.View!);
-  }
-
-  public class LinearLayoutCompat extends android.view.ViewGroup {
-    ctor public LinearLayoutCompat(android.content.Context);
-    ctor public LinearLayoutCompat(android.content.Context, android.util.AttributeSet?);
-    ctor public LinearLayoutCompat(android.content.Context, android.util.AttributeSet?, int);
-    method protected androidx.appcompat.widget.LinearLayoutCompat.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.appcompat.widget.LinearLayoutCompat.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.LinearLayoutCompat.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
-    method public int getBaselineAlignedChildIndex();
-    method public android.graphics.drawable.Drawable! getDividerDrawable();
-    method public int getDividerPadding();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int getDividerWidth();
-    method public int getGravity();
-    method @androidx.appcompat.widget.LinearLayoutCompat.OrientationMode public int getOrientation();
-    method @androidx.appcompat.widget.LinearLayoutCompat.DividerMode public int getShowDividers();
-    method public float getWeightSum();
-    method public boolean isBaselineAligned();
-    method public boolean isMeasureWithLargestChildEnabled();
-    method public void setBaselineAligned(boolean);
-    method public void setBaselineAlignedChildIndex(int);
-    method public void setDividerDrawable(android.graphics.drawable.Drawable!);
-    method public void setDividerPadding(int);
-    method public void setGravity(int);
-    method public void setHorizontalGravity(int);
-    method public void setMeasureWithLargestChildEnabled(boolean);
-    method public void setOrientation(@androidx.appcompat.widget.LinearLayoutCompat.OrientationMode int);
-    method public void setShowDividers(@androidx.appcompat.widget.LinearLayoutCompat.DividerMode int);
-    method public void setVerticalGravity(int);
-    method public void setWeightSum(float);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int SHOW_DIVIDER_BEGINNING = 1; // 0x1
-    field public static final int SHOW_DIVIDER_END = 4; // 0x4
-    field public static final int SHOW_DIVIDER_MIDDLE = 2; // 0x2
-    field public static final int SHOW_DIVIDER_NONE = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  @IntDef(flag=true, value={androidx.appcompat.widget.LinearLayoutCompat.SHOW_DIVIDER_NONE, androidx.appcompat.widget.LinearLayoutCompat.SHOW_DIVIDER_BEGINNING, androidx.appcompat.widget.LinearLayoutCompat.SHOW_DIVIDER_MIDDLE, androidx.appcompat.widget.LinearLayoutCompat.SHOW_DIVIDER_END}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface LinearLayoutCompat.DividerMode {
-  }
-
-  public static class LinearLayoutCompat.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public LinearLayoutCompat.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public LinearLayoutCompat.LayoutParams(int, int);
-    ctor public LinearLayoutCompat.LayoutParams(int, int, float);
-    ctor public LinearLayoutCompat.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    ctor public LinearLayoutCompat.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
-    ctor public LinearLayoutCompat.LayoutParams(androidx.appcompat.widget.LinearLayoutCompat.LayoutParams!);
-    field public int gravity;
-    field public float weight;
-  }
-
-  @IntDef({androidx.appcompat.widget.LinearLayoutCompat.HORIZONTAL, androidx.appcompat.widget.LinearLayoutCompat.VERTICAL}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface LinearLayoutCompat.OrientationMode {
-  }
-
-  public class ListPopupWindow implements androidx.appcompat.view.menu.ShowableListMenu {
-    ctor public ListPopupWindow(android.content.Context);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet?);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet?, @AttrRes int);
-    ctor public ListPopupWindow(android.content.Context, android.util.AttributeSet?, @AttrRes int, @StyleRes int);
-    method public void clearListSelection();
-    method public android.view.View.OnTouchListener! createDragToOpenListener(android.view.View!);
-    method public void dismiss();
-    method public android.view.View? getAnchorView();
-    method @StyleRes public int getAnimationStyle();
-    method public android.graphics.drawable.Drawable? getBackground();
-    method public android.graphics.Rect? getEpicenterBounds();
-    method public int getHeight();
-    method public int getHorizontalOffset();
-    method public int getInputMethodMode();
-    method public android.widget.ListView? getListView();
-    method public int getPromptPosition();
-    method public Object? getSelectedItem();
-    method public long getSelectedItemId();
-    method public int getSelectedItemPosition();
-    method public android.view.View? getSelectedView();
-    method public int getSoftInputMode();
-    method public int getVerticalOffset();
-    method public int getWidth();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean isDropDownAlwaysVisible();
-    method public boolean isInputMethodNotNeeded();
-    method public boolean isModal();
-    method public boolean isShowing();
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyPreIme(int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public boolean performItemClick(int);
-    method public void postShow();
-    method public void setAdapter(android.widget.ListAdapter?);
-    method public void setAnchorView(android.view.View?);
-    method public void setAnimationStyle(@StyleRes int);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable?);
-    method public void setContentWidth(int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setDropDownAlwaysVisible(boolean);
-    method public void setDropDownGravity(int);
-    method public void setEpicenterBounds(android.graphics.Rect?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setForceIgnoreOutsideTouch(boolean);
-    method public void setHeight(int);
-    method public void setHorizontalOffset(int);
-    method public void setInputMethodMode(int);
-    method public void setListSelector(android.graphics.drawable.Drawable!);
-    method public void setModal(boolean);
-    method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener?);
-    method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener?);
-    method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setOverlapAnchor(boolean);
-    method public void setPromptPosition(int);
-    method public void setPromptView(android.view.View?);
-    method public void setSelection(int);
-    method public void setSoftInputMode(int);
-    method public void setVerticalOffset(int);
-    method public void setWidth(int);
-    method public void setWindowLayoutType(int);
-    method public void show();
-    field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
-    field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
-    field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int POSITION_PROMPT_ABOVE = 0; // 0x0
-    field public static final int POSITION_PROMPT_BELOW = 1; // 0x1
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface MenuItemHoverListener {
-    method public void onItemHoverEnter(androidx.appcompat.view.menu.MenuBuilder, android.view.MenuItem);
-    method public void onItemHoverExit(androidx.appcompat.view.menu.MenuBuilder, android.view.MenuItem);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class MenuPopupWindow extends androidx.appcompat.widget.ListPopupWindow implements androidx.appcompat.widget.MenuItemHoverListener {
-    ctor public MenuPopupWindow(android.content.Context, android.util.AttributeSet?, int, int);
-    method public void onItemHoverEnter(androidx.appcompat.view.menu.MenuBuilder, android.view.MenuItem);
-    method public void onItemHoverExit(androidx.appcompat.view.menu.MenuBuilder, android.view.MenuItem);
-    method public void setEnterTransition(Object!);
-    method public void setExitTransition(Object!);
-    method public void setHoverListener(androidx.appcompat.widget.MenuItemHoverListener!);
-    method public void setTouchModal(boolean);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static class MenuPopupWindow.MenuDropDownListView extends android.widget.ListView {
-    ctor public MenuPopupWindow.MenuDropDownListView(android.content.Context!, boolean);
-    method public void clearSelection();
-    method public int lookForSelectablePosition(int, boolean);
-    method public int measureHeightOfChildrenCompat(int, int, int, int, int);
-    method public boolean onForwardedEvent(android.view.MotionEvent!, int);
-    method public void setHoverListener(androidx.appcompat.widget.MenuItemHoverListener!);
-    field public static final int INVALID_POSITION = -1; // 0xffffffff
-    field public static final int NO_POSITION = -1; // 0xffffffff
-  }
-
-  public class PopupMenu {
-    ctor public PopupMenu(android.content.Context, android.view.View);
-    ctor public PopupMenu(android.content.Context, android.view.View, int);
-    ctor public PopupMenu(android.content.Context, android.view.View, int, @AttrRes int, @StyleRes int);
-    method public void dismiss();
-    method public android.view.View.OnTouchListener getDragToOpenListener();
-    method public int getGravity();
-    method public android.view.Menu getMenu();
-    method public android.view.MenuInflater getMenuInflater();
-    method public void inflate(@MenuRes int);
-    method public void setGravity(int);
-    method public void setOnDismissListener(androidx.appcompat.widget.PopupMenu.OnDismissListener?);
-    method public void setOnMenuItemClickListener(androidx.appcompat.widget.PopupMenu.OnMenuItemClickListener?);
-    method public void show();
-  }
-
-  public static interface PopupMenu.OnDismissListener {
-    method public void onDismiss(androidx.appcompat.widget.PopupMenu!);
-  }
-
-  public static interface PopupMenu.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ScrollingTabContainerView extends android.widget.HorizontalScrollView implements android.widget.AdapterView.OnItemSelectedListener {
-    ctor public ScrollingTabContainerView(android.content.Context);
-    method public void addTab(androidx.appcompat.app.ActionBar.Tab!, boolean);
-    method public void addTab(androidx.appcompat.app.ActionBar.Tab!, int, boolean);
-    method public void animateToTab(int);
-    method public void animateToVisibility(int);
-    method public void onAttachedToWindow();
-    method public void onDetachedFromWindow();
-    method public void onItemSelected(android.widget.AdapterView<?>!, android.view.View!, int, long);
-    method public void onMeasure(int, int);
-    method public void onNothingSelected(android.widget.AdapterView<?>!);
-    method public void removeAllTabs();
-    method public void removeTabAt(int);
-    method public void setAllowCollapse(boolean);
-    method public void setContentHeight(int);
-    method public void setTabSelected(int);
-    method public void updateTab(int);
-    field protected final androidx.appcompat.widget.ScrollingTabContainerView.VisibilityAnimListener! mVisAnimListener;
-    field protected android.view.ViewPropertyAnimator! mVisibilityAnim;
-  }
-
-  protected class ScrollingTabContainerView.VisibilityAnimListener extends android.animation.AnimatorListenerAdapter {
-    ctor protected ScrollingTabContainerView.VisibilityAnimListener();
-    method public androidx.appcompat.widget.ScrollingTabContainerView.VisibilityAnimListener! withFinalVisibility(android.view.ViewPropertyAnimator!, int);
-  }
-
-  public class SearchView extends androidx.appcompat.widget.LinearLayoutCompat implements androidx.appcompat.view.CollapsibleActionView {
-    ctor public SearchView(android.content.Context);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet?);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet?, int);
-    method public int getImeOptions();
-    method public int getInputType();
-    method public int getMaxWidth();
-    method public CharSequence! getQuery();
-    method public CharSequence? getQueryHint();
-    method public androidx.cursoradapter.widget.CursorAdapter! getSuggestionsAdapter();
-    method public boolean isIconfiedByDefault();
-    method public boolean isIconified();
-    method public boolean isQueryRefinementEnabled();
-    method public boolean isSubmitButtonEnabled();
-    method public void onActionViewCollapsed();
-    method public void onActionViewExpanded();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setAppSearchData(android.os.Bundle!);
-    method public void setIconified(boolean);
-    method public void setIconifiedByDefault(boolean);
-    method public void setImeOptions(int);
-    method public void setInputType(int);
-    method public void setMaxWidth(int);
-    method public void setOnCloseListener(androidx.appcompat.widget.SearchView.OnCloseListener!);
-    method public void setOnQueryTextFocusChangeListener(android.view.View.OnFocusChangeListener!);
-    method public void setOnQueryTextListener(androidx.appcompat.widget.SearchView.OnQueryTextListener!);
-    method public void setOnSearchClickListener(android.view.View.OnClickListener!);
-    method public void setOnSuggestionListener(androidx.appcompat.widget.SearchView.OnSuggestionListener!);
-    method public void setQuery(CharSequence!, boolean);
-    method public void setQueryHint(CharSequence?);
-    method public void setQueryRefinementEnabled(boolean);
-    method public void setSearchableInfo(android.app.SearchableInfo!);
-    method public void setSubmitButtonEnabled(boolean);
-    method public void setSuggestionsAdapter(androidx.cursoradapter.widget.CursorAdapter!);
-  }
-
-  public static interface SearchView.OnCloseListener {
-    method public boolean onClose();
-  }
-
-  public static interface SearchView.OnQueryTextListener {
-    method public boolean onQueryTextChange(String!);
-    method public boolean onQueryTextSubmit(String!);
-  }
-
-  public static interface SearchView.OnSuggestionListener {
-    method public boolean onSuggestionClick(int);
-    method public boolean onSuggestionSelect(int);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static class SearchView.SearchAutoComplete extends androidx.appcompat.widget.AppCompatAutoCompleteTextView {
-    ctor public SearchView.SearchAutoComplete(android.content.Context!);
-    ctor public SearchView.SearchAutoComplete(android.content.Context!, android.util.AttributeSet!);
-    ctor public SearchView.SearchAutoComplete(android.content.Context!, android.util.AttributeSet!, int);
-  }
-
-  public class ShareActionProvider extends androidx.core.view.ActionProvider {
-    ctor public ShareActionProvider(android.content.Context!);
-    method public android.view.View! onCreateActionView();
-    method public void setOnShareTargetSelectedListener(androidx.appcompat.widget.ShareActionProvider.OnShareTargetSelectedListener!);
-    method public void setShareHistoryFileName(String!);
-    method public void setShareIntent(android.content.Intent!);
-    field public static final String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml";
-  }
-
-  public static interface ShareActionProvider.OnShareTargetSelectedListener {
-    method public boolean onShareTargetSelected(androidx.appcompat.widget.ShareActionProvider!, android.content.Intent!);
-  }
-
-  public class SwitchCompat extends android.widget.CompoundButton {
-    ctor public SwitchCompat(android.content.Context);
-    ctor public SwitchCompat(android.content.Context, android.util.AttributeSet?);
-    ctor public SwitchCompat(android.content.Context, android.util.AttributeSet?, int);
-    method public boolean getShowText();
-    method public boolean getSplitTrack();
-    method public int getSwitchMinWidth();
-    method public int getSwitchPadding();
-    method public CharSequence! getTextOff();
-    method public CharSequence! getTextOn();
-    method public android.graphics.drawable.Drawable! getThumbDrawable();
-    method public int getThumbTextPadding();
-    method public android.content.res.ColorStateList? getThumbTintList();
-    method public android.graphics.PorterDuff.Mode? getThumbTintMode();
-    method public android.graphics.drawable.Drawable! getTrackDrawable();
-    method public android.content.res.ColorStateList? getTrackTintList();
-    method public android.graphics.PorterDuff.Mode? getTrackTintMode();
-    method public void onMeasure(int, int);
-    method public void setShowText(boolean);
-    method public void setSplitTrack(boolean);
-    method public void setSwitchMinWidth(int);
-    method public void setSwitchPadding(int);
-    method public void setSwitchTextAppearance(android.content.Context!, int);
-    method public void setSwitchTypeface(android.graphics.Typeface!, int);
-    method public void setSwitchTypeface(android.graphics.Typeface!);
-    method public void setTextOff(CharSequence!);
-    method public void setTextOn(CharSequence!);
-    method public void setThumbDrawable(android.graphics.drawable.Drawable!);
-    method public void setThumbResource(int);
-    method public void setThumbTextPadding(int);
-    method public void setThumbTintList(android.content.res.ColorStateList?);
-    method public void setThumbTintMode(android.graphics.PorterDuff.Mode?);
-    method public void setTrackDrawable(android.graphics.drawable.Drawable!);
-    method public void setTrackResource(int);
-    method public void setTrackTintList(android.content.res.ColorStateList?);
-    method public void setTrackTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public interface ThemedSpinnerAdapter extends android.widget.SpinnerAdapter {
-    method public android.content.res.Resources.Theme? getDropDownViewTheme();
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme?);
-  }
-
-  public static final class ThemedSpinnerAdapter.Helper {
-    ctor public ThemedSpinnerAdapter.Helper(android.content.Context);
-    method public android.view.LayoutInflater getDropDownViewInflater();
-    method public android.content.res.Resources.Theme? getDropDownViewTheme();
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme?);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TintTypedArray {
-    method public boolean getBoolean(int, boolean);
-    method @RequiresApi(21) public int getChangingConfigurations();
-    method public int getColor(int, int);
-    method public android.content.res.ColorStateList! getColorStateList(int);
-    method public float getDimension(int, float);
-    method public int getDimensionPixelOffset(int, int);
-    method public int getDimensionPixelSize(int, int);
-    method public android.graphics.drawable.Drawable! getDrawable(int);
-    method public android.graphics.drawable.Drawable! getDrawableIfKnown(int);
-    method public float getFloat(int, float);
-    method public android.graphics.Typeface? getFont(@StyleableRes int, int, androidx.core.content.res.ResourcesCompat.FontCallback?);
-    method public float getFraction(int, int, int, float);
-    method public int getIndex(int);
-    method public int getIndexCount();
-    method public int getInt(int, int);
-    method public int getInteger(int, int);
-    method public int getLayoutDimension(int, String!);
-    method public int getLayoutDimension(int, int);
-    method public String! getNonResourceString(int);
-    method public String! getPositionDescription();
-    method public int getResourceId(int, int);
-    method public android.content.res.Resources! getResources();
-    method public String! getString(int);
-    method public CharSequence! getText(int);
-    method public CharSequence![]! getTextArray(int);
-    method public int getType(int);
-    method public boolean getValue(int, android.util.TypedValue!);
-    method public android.content.res.TypedArray! getWrappedTypeArray();
-    method public boolean hasValue(int);
-    method public int length();
-    method public static androidx.appcompat.widget.TintTypedArray! obtainStyledAttributes(android.content.Context!, android.util.AttributeSet!, int[]!);
-    method public static androidx.appcompat.widget.TintTypedArray! obtainStyledAttributes(android.content.Context!, android.util.AttributeSet!, int[]!, int, int);
-    method public static androidx.appcompat.widget.TintTypedArray! obtainStyledAttributes(android.content.Context!, int, int[]!);
-    method public android.util.TypedValue! peekValue(int);
-    method public void recycle();
-  }
-
-  public class Toolbar extends android.view.ViewGroup {
-    ctor public Toolbar(android.content.Context);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet?);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean canShowOverflowMenu();
-    method public void collapseActionView();
-    method public void dismissPopupMenus();
-    method protected androidx.appcompat.widget.Toolbar.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.appcompat.widget.Toolbar.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method protected androidx.appcompat.widget.Toolbar.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
-    method public CharSequence? getCollapseContentDescription();
-    method public android.graphics.drawable.Drawable? getCollapseIcon();
-    method public int getContentInsetEnd();
-    method public int getContentInsetEndWithActions();
-    method public int getContentInsetLeft();
-    method public int getContentInsetRight();
-    method public int getContentInsetStart();
-    method public int getContentInsetStartWithNavigation();
-    method public int getCurrentContentInsetEnd();
-    method public int getCurrentContentInsetLeft();
-    method public int getCurrentContentInsetRight();
-    method public int getCurrentContentInsetStart();
-    method public android.graphics.drawable.Drawable! getLogo();
-    method public CharSequence! getLogoDescription();
-    method public android.view.Menu! getMenu();
-    method public CharSequence? getNavigationContentDescription();
-    method public android.graphics.drawable.Drawable? getNavigationIcon();
-    method public android.graphics.drawable.Drawable? getOverflowIcon();
-    method public int getPopupTheme();
-    method public CharSequence! getSubtitle();
-    method public CharSequence! getTitle();
-    method public int getTitleMarginBottom();
-    method public int getTitleMarginEnd();
-    method public int getTitleMarginStart();
-    method public int getTitleMarginTop();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.appcompat.widget.DecorToolbar! getWrapper();
-    method public boolean hasExpandedActionView();
-    method public boolean hideOverflowMenu();
-    method public void inflateMenu(@MenuRes int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean isOverflowMenuShowPending();
-    method public boolean isOverflowMenuShowing();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean isTitleTruncated();
-    method public void setCollapseContentDescription(@StringRes int);
-    method public void setCollapseContentDescription(CharSequence?);
-    method public void setCollapseIcon(@DrawableRes int);
-    method public void setCollapseIcon(android.graphics.drawable.Drawable?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setCollapsible(boolean);
-    method public void setContentInsetEndWithActions(int);
-    method public void setContentInsetStartWithNavigation(int);
-    method public void setContentInsetsAbsolute(int, int);
-    method public void setContentInsetsRelative(int, int);
-    method public void setLogo(@DrawableRes int);
-    method public void setLogo(android.graphics.drawable.Drawable!);
-    method public void setLogoDescription(@StringRes int);
-    method public void setLogoDescription(CharSequence!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setMenu(androidx.appcompat.view.menu.MenuBuilder!, androidx.appcompat.widget.ActionMenuPresenter!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setMenuCallbacks(androidx.appcompat.view.menu.MenuPresenter.Callback!, androidx.appcompat.view.menu.MenuBuilder.Callback!);
-    method public void setNavigationContentDescription(@StringRes int);
-    method public void setNavigationContentDescription(CharSequence?);
-    method public void setNavigationIcon(@DrawableRes int);
-    method public void setNavigationIcon(android.graphics.drawable.Drawable?);
-    method public void setNavigationOnClickListener(android.view.View.OnClickListener!);
-    method public void setOnMenuItemClickListener(androidx.appcompat.widget.Toolbar.OnMenuItemClickListener!);
-    method public void setOverflowIcon(android.graphics.drawable.Drawable?);
-    method public void setPopupTheme(@StyleRes int);
-    method public void setSubtitle(@StringRes int);
-    method public void setSubtitle(CharSequence!);
-    method public void setSubtitleTextAppearance(android.content.Context!, @StyleRes int);
-    method public void setSubtitleTextColor(@ColorInt int);
-    method public void setSubtitleTextColor(android.content.res.ColorStateList);
-    method public void setTitle(@StringRes int);
-    method public void setTitle(CharSequence!);
-    method public void setTitleMargin(int, int, int, int);
-    method public void setTitleMarginBottom(int);
-    method public void setTitleMarginEnd(int);
-    method public void setTitleMarginStart(int);
-    method public void setTitleMarginTop(int);
-    method public void setTitleTextAppearance(android.content.Context!, @StyleRes int);
-    method public void setTitleTextColor(@ColorInt int);
-    method public void setTitleTextColor(android.content.res.ColorStateList);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class Toolbar.LayoutParams extends androidx.appcompat.app.ActionBar.LayoutParams {
-    ctor public Toolbar.LayoutParams(android.content.Context, android.util.AttributeSet!);
-    ctor public Toolbar.LayoutParams(int, int);
-    ctor public Toolbar.LayoutParams(int, int, int);
-    ctor public Toolbar.LayoutParams(int);
-    ctor public Toolbar.LayoutParams(androidx.appcompat.widget.Toolbar.LayoutParams!);
-    ctor public Toolbar.LayoutParams(androidx.appcompat.app.ActionBar.LayoutParams!);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.LayoutParams!);
-  }
-
-  public static interface Toolbar.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem!);
-  }
-
-  public static class Toolbar.SavedState extends androidx.customview.view.AbsSavedState {
-    ctor public Toolbar.SavedState(android.os.Parcel!);
-    ctor public Toolbar.SavedState(android.os.Parcel!, ClassLoader!);
-    ctor public Toolbar.SavedState(android.os.Parcelable!);
-    field public static final android.os.Parcelable.Creator<androidx.appcompat.widget.Toolbar.SavedState!>! CREATOR;
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ToolbarWidgetWrapper implements androidx.appcompat.widget.DecorToolbar {
-    ctor public ToolbarWidgetWrapper(androidx.appcompat.widget.Toolbar!, boolean);
-    ctor public ToolbarWidgetWrapper(androidx.appcompat.widget.Toolbar!, boolean, int, int);
-    method public void animateToVisibility(int);
-    method public boolean canShowOverflowMenu();
-    method public void collapseActionView();
-    method public void dismissPopupMenus();
-    method public android.content.Context! getContext();
-    method public android.view.View! getCustomView();
-    method public int getDisplayOptions();
-    method public int getDropdownItemCount();
-    method public int getDropdownSelectedPosition();
-    method public int getHeight();
-    method public android.view.Menu! getMenu();
-    method public int getNavigationMode();
-    method public CharSequence! getSubtitle();
-    method public CharSequence! getTitle();
-    method public android.view.ViewGroup! getViewGroup();
-    method public int getVisibility();
-    method public boolean hasEmbeddedTabs();
-    method public boolean hasExpandedActionView();
-    method public boolean hasIcon();
-    method public boolean hasLogo();
-    method public boolean hideOverflowMenu();
-    method public void initIndeterminateProgress();
-    method public void initProgress();
-    method public boolean isOverflowMenuShowPending();
-    method public boolean isOverflowMenuShowing();
-    method public boolean isTitleTruncated();
-    method public void restoreHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
-    method public void saveHierarchyState(android.util.SparseArray<android.os.Parcelable!>!);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable!);
-    method public void setCollapsible(boolean);
-    method public void setCustomView(android.view.View!);
-    method public void setDefaultNavigationContentDescription(int);
-    method public void setDefaultNavigationIcon(android.graphics.drawable.Drawable!);
-    method public void setDisplayOptions(int);
-    method public void setDropdownParams(android.widget.SpinnerAdapter!, android.widget.AdapterView.OnItemSelectedListener!);
-    method public void setDropdownSelectedPosition(int);
-    method public void setEmbeddedTabView(androidx.appcompat.widget.ScrollingTabContainerView!);
-    method public void setHomeButtonEnabled(boolean);
-    method public void setIcon(int);
-    method public void setIcon(android.graphics.drawable.Drawable!);
-    method public void setLogo(int);
-    method public void setLogo(android.graphics.drawable.Drawable!);
-    method public void setMenu(android.view.Menu!, androidx.appcompat.view.menu.MenuPresenter.Callback!);
-    method public void setMenuCallbacks(androidx.appcompat.view.menu.MenuPresenter.Callback!, androidx.appcompat.view.menu.MenuBuilder.Callback!);
-    method public void setMenuPrepared();
-    method public void setNavigationContentDescription(CharSequence!);
-    method public void setNavigationContentDescription(int);
-    method public void setNavigationIcon(android.graphics.drawable.Drawable!);
-    method public void setNavigationIcon(int);
-    method public void setNavigationMode(int);
-    method public void setSubtitle(CharSequence!);
-    method public void setTitle(CharSequence!);
-    method public void setVisibility(int);
-    method public void setWindowCallback(android.view.Window.Callback!);
-    method public void setWindowTitle(CharSequence!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setupAnimatorToVisibility(int, long);
-    method public boolean showOverflowMenu();
-  }
-
-  public class TooltipCompat {
-    method public static void setTooltipText(android.view.View, CharSequence?);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class ViewStubCompat extends android.view.View {
-    ctor public ViewStubCompat(android.content.Context, android.util.AttributeSet?);
-    ctor public ViewStubCompat(android.content.Context, android.util.AttributeSet?, int);
-    method public int getInflatedId();
-    method public android.view.LayoutInflater! getLayoutInflater();
-    method public int getLayoutResource();
-    method public android.view.View! inflate();
-    method public void setInflatedId(int);
-    method public void setLayoutInflater(android.view.LayoutInflater!);
-    method public void setLayoutResource(int);
-    method public void setOnInflateListener(androidx.appcompat.widget.ViewStubCompat.OnInflateListener!);
-  }
-
-  public static interface ViewStubCompat.OnInflateListener {
-    method public void onInflate(androidx.appcompat.widget.ViewStubCompat!, android.view.View!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ViewUtils {
-    method public static void computeFitSystemWindows(android.view.View!, android.graphics.Rect!, android.graphics.Rect!);
-    method public static boolean isLayoutRtl(android.view.View!);
-    method public static void makeOptionalFitsSystemWindows(android.view.View!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface WithHint {
-    method public CharSequence? getHint();
-  }
-
-}
-
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/BaseBasicsTestCase.java b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/BaseBasicsTestCase.java
index c10c37c..48f46ec 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/BaseBasicsTestCase.java
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/BaseBasicsTestCase.java
@@ -131,6 +131,7 @@
     @Test
     @SdkSuppress(minSdkVersion = 16, maxSdkVersion = 20)
     @RequiresApi(16)
+    @SuppressWarnings("deprecation") /* SYSTEM_UI_FLAG_LAYOUT_* */
     public void testFitSystemWindowsReachesContent() {
         final FitWindowsContentLayout content =
                 mActivityTestRule.getActivity().findViewById(R.id.test_content);
@@ -150,6 +151,7 @@
 
     @Test
     @SdkSuppress(minSdkVersion = 21)
+    @RequiresApi(21)
     public void testOnApplyWindowInsetsReachesContent() throws Throwable {
         final A activity = mActivityTestRule.getActivity();
         if (!canShowSystemUi(activity)) {
@@ -189,6 +191,7 @@
     @Test
     @SdkSuppress(minSdkVersion = 28)
     @RequiresApi(28)
+    @SuppressWarnings("deprecation") /* SYSTEM_UI_FLAG_LAYOUT_* */
     public void testOnApplyWindowInsetsReachesContent_withDisplayCutout() throws Throwable {
         final A activity = mActivityTestRule.getActivity();
         if (!canShowSystemUi(activity)) {
@@ -354,6 +357,7 @@
     }
 
     @RequiresApi(16)
+    @SuppressWarnings("deprecation") /* SYSTEM_UI_FLAG_LAYOUT_* */
     private WindowInsetsCompat waitForWindowInsets(@NonNull final View view) throws Throwable {
         final CountDownLatch latch = new CountDownLatch(1);
         final AtomicReference<WindowInsetsCompat> received = new AtomicReference<>();
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/view/menu/MenuPopupHelper.java b/appcompat/appcompat/src/main/java/androidx/appcompat/view/menu/MenuPopupHelper.java
index 9bc4584..e3e5129 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/view/menu/MenuPopupHelper.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/view/menu/MenuPopupHelper.java
@@ -220,6 +220,7 @@
      * @return an initialized popup
      */
     @NonNull
+    @SuppressWarnings("deprecation") /* getDefaultDisplay */
     private MenuPopup createPopup() {
         final WindowManager windowManager = (WindowManager) mContext.getSystemService(
                 Context.WINDOW_SERVICE);
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ActionBarOverlayLayout.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ActionBarOverlayLayout.java
index 606e12a..5239315 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ActionBarOverlayLayout.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ActionBarOverlayLayout.java
@@ -243,7 +243,12 @@
         ViewCompat.requestApplyInsets(this);
     }
 
+    /**
+     * @deprecated see {@link View#onWindowSystemUiVisibilityChanged(int)}
+     */
+    @Deprecated
     @Override
+    @SuppressWarnings("deprecation") /* SYSTEM_UI_FLAG_LAYOUT_* */
     public void onWindowSystemUiVisibilityChanged(int visible) {
         if (Build.VERSION.SDK_INT >= 16) {
             super.onWindowSystemUiVisibilityChanged(visible);
@@ -400,6 +405,7 @@
     }
 
     @Override
+    @SuppressWarnings("deprecation") /* SYSTEM_UI_FLAG_LAYOUT_* */
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         pullChildren();
 
diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ActivityChooserModel.java b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ActivityChooserModel.java
index d4832d2..89e3bb9 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ActivityChooserModel.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/widget/ActivityChooserModel.java
@@ -21,7 +21,6 @@
 import android.content.Intent;
 import android.content.pm.ResolveInfo;
 import android.database.DataSetObservable;
-import android.os.AsyncTask;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.Xml;
@@ -571,8 +570,9 @@
         }
         mHistoricalRecordsChanged = false;
         if (!TextUtils.isEmpty(mHistoryFileName)) {
-            new PersistHistoryAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
-                    new ArrayList<HistoricalRecord>(mHistoricalRecords), mHistoryFileName);
+            new PersistHistoryAsyncTask().executeOnExecutor(
+                    android.os.AsyncTask.THREAD_POOL_EXECUTOR,
+                    new ArrayList<>(mHistoricalRecords), mHistoryFileName);
         }
     }
 
@@ -1034,10 +1034,10 @@
     /**
      * Command for persisting the historical records to a file off the UI thread.
      */
-    private final class PersistHistoryAsyncTask extends AsyncTask<Object, Void, Void> {
+    @SuppressWarnings("deprecation") /* AsyncTask */
+    private final class PersistHistoryAsyncTask extends android.os.AsyncTask<Object, Void, Void> {
 
-        PersistHistoryAsyncTask() {
-        }
+        PersistHistoryAsyncTask() {}
 
         @Override
         @SuppressWarnings("unchecked")
diff --git a/biometric/biometric/src/main/java/androidx/biometric/BiometricFragment.java b/biometric/biometric/src/main/java/androidx/biometric/BiometricFragment.java
index d1633e0..153f147 100644
--- a/biometric/biometric/src/main/java/androidx/biometric/BiometricFragment.java
+++ b/biometric/biometric/src/main/java/androidx/biometric/BiometricFragment.java
@@ -258,6 +258,7 @@
 
     @Override
     @Nullable
+    @SuppressWarnings("deprecation") /* setDeviceCredentialAllowed */
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
             @Nullable Bundle savedInstanceState) {
         // Start the actual authentication when the fragment is attached.
diff --git a/browser/browser/src/androidTest/java/androidx/browser/customtabs/PostMessageTest.java b/browser/browser/src/androidTest/java/androidx/browser/customtabs/PostMessageTest.java
index 5d68340..ee74d68 100644
--- a/browser/browser/src/androidTest/java/androidx/browser/customtabs/PostMessageTest.java
+++ b/browser/browser/src/androidTest/java/androidx/browser/customtabs/PostMessageTest.java
@@ -24,7 +24,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Bundle;
 
 import androidx.annotation.NonNull;
@@ -71,6 +70,7 @@
     private CustomTabsSession mSession;
 
     @Before
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public void setup() {
         // Bind to PostMessageService only after CustomTabsService sends the callback to do so. This
         // callback is sent after requestPostMessageChannel is called.
@@ -79,7 +79,7 @@
             public void extraCallback(@NonNull String callbackName, Bundle args) {
                 if (TestCustomTabsService.CALLBACK_BIND_TO_POST_MESSAGE.equals(callbackName)) {
                     // This gets run on the UI thread, where mServiceRule.bindService will not work.
-                    AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
+                    android.os.AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
                         @Override
                         public void run() {
                             try {
diff --git a/browser/browser/src/androidTest/java/androidx/browser/trusted/TrustedWebActivityServiceConnectionPoolTest.java b/browser/browser/src/androidTest/java/androidx/browser/trusted/TrustedWebActivityServiceConnectionPoolTest.java
index e16d431..e465ab3 100644
--- a/browser/browser/src/androidTest/java/androidx/browser/trusted/TrustedWebActivityServiceConnectionPoolTest.java
+++ b/browser/browser/src/androidTest/java/androidx/browser/trusted/TrustedWebActivityServiceConnectionPoolTest.java
@@ -23,7 +23,6 @@
 
 import android.content.Context;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.RemoteException;
 
 import androidx.browser.customtabs.EnableComponentsTestRule;
@@ -49,6 +48,7 @@
 
 @RunWith(AndroidJUnit4.class)
 @MediumTest
+@SuppressWarnings("deprecation") /* AsyncTask */
 public class TrustedWebActivityServiceConnectionPoolTest {
     private static final Uri GOOD_SCOPE = Uri.parse("https://www.example.com/notifications");
     private static final Uri BAD_SCOPE = Uri.parse("https://www.notexample.com");
@@ -84,7 +84,8 @@
         final AtomicBoolean connected = new AtomicBoolean();
 
         ListenableFuture<TrustedWebActivityServiceConnection> serviceFuture =
-                mManager.connect(GOOD_SCOPE, mTrustedPackages, AsyncTask.THREAD_POOL_EXECUTOR);
+                mManager.connect(GOOD_SCOPE, mTrustedPackages,
+                        android.os.AsyncTask.THREAD_POOL_EXECUTOR);
 
         serviceFuture.addListener(() -> {
             try {
@@ -94,7 +95,7 @@
             } catch (RemoteException | ExecutionException | InterruptedException e) {
                 throw new RuntimeException(e);
             }
-        }, AsyncTask.THREAD_POOL_EXECUTOR);
+        }, android.os.AsyncTask.THREAD_POOL_EXECUTOR);
 
         PollingCheck.waitFor(connected::get);
     }
@@ -104,7 +105,8 @@
         assertFalse(mManager.serviceExistsForScope(BAD_SCOPE, mTrustedPackages));
 
         ListenableFuture<TrustedWebActivityServiceConnection> serviceFuture =
-                mManager.connect(BAD_SCOPE, mTrustedPackages, AsyncTask.THREAD_POOL_EXECUTOR);
+                mManager.connect(BAD_SCOPE, mTrustedPackages,
+                        android.os.AsyncTask.THREAD_POOL_EXECUTOR);
 
         try {
             serviceFuture.get();
@@ -120,10 +122,10 @@
     public void testMultipleExecutions() {
         final AtomicInteger count = new AtomicInteger();
 
-        mManager.connect(GOOD_SCOPE, mTrustedPackages, AsyncTask.THREAD_POOL_EXECUTOR)
-                .addListener(count::incrementAndGet, AsyncTask.THREAD_POOL_EXECUTOR);
-        mManager.connect(GOOD_SCOPE, mTrustedPackages, AsyncTask.THREAD_POOL_EXECUTOR)
-                .addListener(count::incrementAndGet, AsyncTask.THREAD_POOL_EXECUTOR);
+        mManager.connect(GOOD_SCOPE, mTrustedPackages, android.os.AsyncTask.THREAD_POOL_EXECUTOR)
+                .addListener(count::incrementAndGet, android.os.AsyncTask.THREAD_POOL_EXECUTOR);
+        mManager.connect(GOOD_SCOPE, mTrustedPackages, android.os.AsyncTask.THREAD_POOL_EXECUTOR)
+                .addListener(count::incrementAndGet, android.os.AsyncTask.THREAD_POOL_EXECUTOR);
 
         PollingCheck.waitFor(() -> count.get() == 2);
     }
diff --git a/browser/browser/src/main/java/androidx/browser/browseractions/BrowserServiceFileProvider.java b/browser/browser/src/main/java/androidx/browser/browseractions/BrowserServiceFileProvider.java
index 319f162..3bde75d 100644
--- a/browser/browser/src/main/java/androidx/browser/browseractions/BrowserServiceFileProvider.java
+++ b/browser/browser/src/main/java/androidx/browser/browseractions/BrowserServiceFileProvider.java
@@ -27,7 +27,6 @@
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Build;
 import android.os.ParcelFileDescriptor;
 import android.util.Log;
@@ -61,6 +60,7 @@
  */
 @Deprecated
 @RestrictTo(LIBRARY)
+@SuppressWarnings("deprecation") /* AsyncTask */
 public final class BrowserServiceFileProvider extends FileProvider {
     private static final String TAG = "BrowserServiceFP";
     private static final String AUTHORITY_SUFFIX = ".image_provider";
@@ -74,7 +74,7 @@
     @SuppressWarnings("WeakerAccess") /* synthetic access */
     static Object sFileCleanupLock = new Object();
 
-    private static class FileCleanupTask extends AsyncTask<Void, Void, Void> {
+    private static class FileCleanupTask extends android.os.AsyncTask<Void, Void, Void> {
         private final Context mAppContext;
         private static final long IMAGE_RETENTION_DURATION = TimeUnit.DAYS.toMillis(7);
         private static final long CLEANUP_REQUIRED_TIME_SPAN = TimeUnit.DAYS.toMillis(7);
@@ -130,7 +130,7 @@
         }
     }
 
-    private static class FileSaveTask extends AsyncTask<String, Void, Void> {
+    private static class FileSaveTask extends android.os.AsyncTask<String, Void, Void> {
         private final Context mAppContext;
         private final String mFilename;
         private final Bitmap mBitmap;
@@ -155,7 +155,8 @@
 
         @Override
         protected void onPostExecute(Void result) {
-            new FileCleanupTask(mAppContext).executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
+            new FileCleanupTask(mAppContext)
+                    .executeOnExecutor(android.os.AsyncTask.SERIAL_EXECUTOR);
         }
 
         private void saveFileIfNeededBlocking() {
@@ -221,6 +222,7 @@
      */
     @UiThread
     @NonNull
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public static ResolvableFuture<Uri> saveBitmap(@NonNull Context context, @NonNull Bitmap bitmap,
             @NonNull String name, int version) {
         String filename = name + "_" + Integer.toString(version);
@@ -228,7 +230,7 @@
 
         ResolvableFuture<Uri> result = ResolvableFuture.create();
         new FileSaveTask(context, filename, bitmap, uri, result)
-                .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+                .executeOnExecutor(android.os.AsyncTask.THREAD_POOL_EXECUTOR);
         return result;
     }
 
@@ -268,11 +270,12 @@
      *         completed or with an IOException describing the reason for failure.
      */
     @NonNull
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public static ListenableFuture<Bitmap> loadBitmap(@NonNull final ContentResolver resolver,
             @NonNull final Uri uri) {
         final ResolvableFuture<Bitmap> result = ResolvableFuture.create();
 
-        AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
+        android.os.AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
             @Override
             public void run() {
                 try {
diff --git a/browser/browser/src/main/java/androidx/browser/trusted/TrustedWebActivityServiceConnectionPool.java b/browser/browser/src/main/java/androidx/browser/trusted/TrustedWebActivityServiceConnectionPool.java
index 2110f57..691d1ce 100644
--- a/browser/browser/src/main/java/androidx/browser/trusted/TrustedWebActivityServiceConnectionPool.java
+++ b/browser/browser/src/main/java/androidx/browser/trusted/TrustedWebActivityServiceConnectionPool.java
@@ -22,7 +22,6 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.util.Log;
 
 import androidx.annotation.MainThread;
@@ -100,6 +99,7 @@
      */
     @MainThread
     @NonNull
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public ListenableFuture<TrustedWebActivityServiceConnection> connect(
             @NonNull final Uri scope,
             @NonNull Set<Token> possiblePackages,
@@ -128,7 +128,8 @@
         return newConnection.getServiceWrapper();
     }
 
-    static class BindToServiceAsyncTask extends AsyncTask<Void, Void, Exception> {
+    @SuppressWarnings("deprecation") /* AsyncTask */
+    static class BindToServiceAsyncTask extends android.os.AsyncTask<Void, Void, Exception> {
         private final Context mAppContext;
         private final Intent mIntent;
         private final ConnectionHolder mConnection;
diff --git a/browser/browser/src/test/java/androidx/browser/trusted/ConnectionHolderTest.java b/browser/browser/src/test/java/androidx/browser/trusted/ConnectionHolderTest.java
index 9460530..99ac592 100644
--- a/browser/browser/src/test/java/androidx/browser/trusted/ConnectionHolderTest.java
+++ b/browser/browser/src/test/java/androidx/browser/trusted/ConnectionHolderTest.java
@@ -23,7 +23,6 @@
 import static org.mockito.Mockito.when;
 
 import android.content.ComponentName;
-import android.os.AsyncTask;
 import android.os.IBinder;
 import android.os.RemoteException;
 
@@ -140,6 +139,7 @@
     }
 
     @Test
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public void futureSetWithCorrectObject() throws InterruptedException, RemoteException {
         final int smallIconId = 56;
 
@@ -163,7 +163,7 @@
             } catch (ExecutionException | InterruptedException | RemoteException e) {
                 e.printStackTrace();
             }
-        }, AsyncTask.THREAD_POOL_EXECUTOR);
+        }, android.os.AsyncTask.THREAD_POOL_EXECUTOR);
 
         assertTrue(methodCalledLatch.await(200, TimeUnit.MILLISECONDS));
         assertTrue(noExceptionLatch.await(200, TimeUnit.MILLISECONDS));
diff --git a/buildSrc/src/main/kotlin/androidx/build/AndroidXExtension.kt b/buildSrc/src/main/kotlin/androidx/build/AndroidXExtension.kt
index a20f32e..b8c0212 100644
--- a/buildSrc/src/main/kotlin/androidx/build/AndroidXExtension.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/AndroidXExtension.kt
@@ -78,7 +78,7 @@
     var url = SUPPORT_URL
     private var licenses: MutableCollection<License> = ArrayList()
     var publish: Publish = Publish.NONE
-    var failOnDeprecationWarnings = true
+    var failOnDeprecationWarnings = false // TODO: Set back to true before upstreaming to AOSP
 
     var compilationTarget: CompilationTarget = CompilationTarget.DEVICE
 
diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
index 506c660..dc384079 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
@@ -102,7 +102,7 @@
     val STARTUP = Version("1.0.0-alpha01")
     val SQLITE = Version("2.1.0-rc01")
     val SQLITE_INSPECTOR = Version("2.1.0-alpha01")
-    val SWIPEREFRESHLAYOUT = Version("1.2.0-alpha01")
+    val SWIPEREFRESHLAYOUT = Version("1.1.0-rc01")
     val TESTSCREENSHOT = Version("1.0.0-alpha01")
     val TEXTCLASSIFIER = Version("1.0.0-alpha03")
     val TRACING = Version("1.0.0-alpha01")
diff --git a/buildSrc/src/main/kotlin/androidx/build/SupportConfig.kt b/buildSrc/src/main/kotlin/androidx/build/SupportConfig.kt
index 92b340b..640f3af 100644
--- a/buildSrc/src/main/kotlin/androidx/build/SupportConfig.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/SupportConfig.kt
@@ -31,7 +31,7 @@
      * Either an integer value or a pre-release platform code, prefixed with "android-" (ex.
      * "android-28" or "android-Q") as you would see within the SDK's platforms directory.
      */
-    const val COMPILE_SDK_VERSION = "android-29"
+    const val COMPILE_SDK_VERSION = "android-R"
 
     /**
      * The Android SDK version to use for targetSdkVersion meta-data.
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
index 1963490..79a7d07 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
@@ -42,7 +42,6 @@
 import android.media.Image;
 import android.media.ImageReader;
 import android.media.ImageReader.OnImageAvailableListener;
-import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.view.Surface;
@@ -657,6 +656,7 @@
     }
 
     @Test
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public void cancelOpenCaptureSessionListenableFuture_shouldNoop() {
         CaptureSession captureSession = createCaptureSession(mTestParameters0);
         captureSession.setSessionConfig(mTestParameters0.mSessionConfig);
@@ -665,7 +665,8 @@
         ArgumentCaptor<Throwable> throwableCaptor = ArgumentCaptor.forClass(Throwable.class);
         ListenableFuture<Void> openingFuture = captureSession.open(mTestParameters0.mSessionConfig,
                 mCameraDeviceHolder.get());
-        Futures.addCallback(openingFuture, mockFutureCallback, AsyncTask.THREAD_POOL_EXECUTOR);
+        Futures.addCallback(openingFuture, mockFutureCallback,
+                android.os.AsyncTask.THREAD_POOL_EXECUTOR);
         openingFuture.cancel(true);
 
         // The captureSession opening should callback onFailure with a CancellationException.
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatDeviceTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatDeviceTest.java
index 2ee8d44..bc553f9 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatDeviceTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatDeviceTest.java
@@ -30,7 +30,6 @@
 import android.hardware.camera2.CameraDevice;
 import android.hardware.camera2.CameraManager;
 import android.hardware.camera2.params.StreamConfigurationMap;
-import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.util.Size;
@@ -155,6 +154,7 @@
     }
 
     @Test
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public void canConfigureCaptureSession() throws CameraAccessException {
         OutputConfigurationCompat outputConfig = new OutputConfigurationCompat(mSurface);
 
@@ -163,7 +163,7 @@
 
         SessionConfigurationCompat sessionConfig = new SessionConfigurationCompat(
                 SessionConfigurationCompat.SESSION_REGULAR,
-                Collections.singletonList(outputConfig), AsyncTask.THREAD_POOL_EXECUTOR,
+                Collections.singletonList(outputConfig), android.os.AsyncTask.THREAD_POOL_EXECUTOR,
                 stateCallback);
 
         CameraDeviceCompat deviceCompat = CameraDeviceCompat.toCameraDeviceCompat(mCameraDevice,
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ImageAnalysisConfigProvider.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ImageAnalysisConfigProvider.java
index 9069061..c9f9b72 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ImageAnalysisConfigProvider.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ImageAnalysisConfigProvider.java
@@ -46,6 +46,7 @@
 
     @Override
     @NonNull
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     public ImageAnalysisConfig getConfig(@Nullable CameraInfo cameraInfo) {
         ImageAnalysis.Builder builder = ImageAnalysis.Builder.fromConfig(
                 ImageAnalysis.DEFAULT_CONFIG.getConfig(cameraInfo));
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ImageCaptureConfigProvider.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ImageCaptureConfigProvider.java
index fb303dd..7ebc13e2 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ImageCaptureConfigProvider.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ImageCaptureConfigProvider.java
@@ -46,6 +46,7 @@
 
     @Override
     @NonNull
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     public ImageCaptureConfig getConfig(@Nullable CameraInfo cameraInfo) {
         ImageCapture.Builder builder = ImageCapture.Builder.fromConfig(
                 ImageCapture.DEFAULT_CONFIG.getConfig(cameraInfo));
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/PreviewConfigProvider.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/PreviewConfigProvider.java
index ab6bbca..d05ea1e 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/PreviewConfigProvider.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/PreviewConfigProvider.java
@@ -46,6 +46,7 @@
 
     @Override
     @NonNull
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     public PreviewConfig getConfig(@Nullable CameraInfo cameraInfo) {
         Preview.Builder builder = Preview.Builder.fromConfig(
                 Preview.DEFAULT_CONFIG.getConfig(cameraInfo));
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SupportedSurfaceCombination.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SupportedSurfaceCombination.java
index ffd508b..a0bb2e1 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SupportedSurfaceCombination.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SupportedSurfaceCombination.java
@@ -1110,6 +1110,7 @@
      * PREVIEW refers to the best size match to the device's screen resolution, or to 1080p
      * (1920x1080), whichever is smaller.
      */
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     private Size getPreviewSize(WindowManager windowManager) {
         Point displaySize = new Point();
         windowManager.getDefaultDisplay().getRealSize(displaySize);
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/VideoCaptureConfigProvider.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/VideoCaptureConfigProvider.java
index d6a3e1b..87de342 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/VideoCaptureConfigProvider.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/VideoCaptureConfigProvider.java
@@ -46,6 +46,7 @@
 
     @Override
     @NonNull
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     public VideoCaptureConfig getConfig(@Nullable CameraInfo cameraInfo) {
         VideoCaptureConfig.Builder builder =
                 VideoCaptureConfig.Builder.fromConfig(
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatApi23Impl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatApi23Impl.java
index e10b4b5..6950152e 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatApi23Impl.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatApi23Impl.java
@@ -33,6 +33,7 @@
 import java.util.List;
 
 @RequiresApi(23)
+@SuppressWarnings("deprecation")
 class CameraDeviceCompatApi23Impl extends CameraDeviceCompatBaseImpl {
 
     CameraDeviceCompatApi23Impl(@NonNull CameraDevice cameraDevice, @Nullable Object implParams) {
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatApi24Impl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatApi24Impl.java
index 8adcb08..a58b8e5 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatApi24Impl.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatApi24Impl.java
@@ -33,6 +33,7 @@
 import java.util.List;
 
 @RequiresApi(24)
+@SuppressWarnings("deprecation")
 class CameraDeviceCompatApi24Impl extends CameraDeviceCompatApi23Impl {
 
     CameraDeviceCompatApi24Impl(@NonNull CameraDevice cameraDevice, @Nullable Object implParams) {
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatBaseImpl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatBaseImpl.java
index 0f26f8d..c05d416 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatBaseImpl.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraDeviceCompatBaseImpl.java
@@ -100,6 +100,7 @@
         }
     }
 
+    @SuppressWarnings("deprecation") /* createCaptureSession */
     void createBaseCaptureSession(@NonNull CameraDevice device, @NonNull List<Surface> surfaces,
             @NonNull CameraCaptureSession.StateCallback cb, @NonNull Handler handler)
             throws CameraAccessException {
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2DeviceSurfaceManagerTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2DeviceSurfaceManagerTest.java
index 234bcfb..84bcd6c 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2DeviceSurfaceManagerTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2DeviceSurfaceManagerTest.java
@@ -136,6 +136,7 @@
     private FakeCameraFactory mCameraFactory;
 
     @Before
+    @SuppressWarnings("deprecation")  /* defaultDisplay */
     public void setUp() {
         WindowManager windowManager =
                 (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.java
index 50f50ac..d685bd9 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.java
@@ -154,6 +154,7 @@
     private FakeCameraFactory mCameraFactory;
 
     @Before
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     public void setUp() {
         WindowManager windowManager =
                 (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/DeferrableSurfacesTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/DeferrableSurfacesTest.java
index 2199ee2..389990c 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/DeferrableSurfacesTest.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/DeferrableSurfacesTest.java
@@ -22,7 +22,6 @@
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 
-import android.os.AsyncTask;
 import android.view.Surface;
 
 import androidx.annotation.NonNull;
@@ -77,16 +76,18 @@
 
     @Test
     @MediumTest
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public void getSurfaceTimeoutTest() {
         DeferrableSurface fakeDeferrableSurface = getFakeDeferrableSurface();
 
         List<DeferrableSurface> surfaces = Arrays.asList(fakeDeferrableSurface);
         ListenableFuture<List<Surface>> listenableFuture =
                 DeferrableSurfaces.surfaceListWithTimeout(surfaces, false, 50,
-                        AsyncTask.THREAD_POOL_EXECUTOR, mScheduledExecutorService);
+                        android.os.AsyncTask.THREAD_POOL_EXECUTOR, mScheduledExecutorService);
 
         FutureCallback<List<Surface>> mockFutureCallback = mock(FutureCallback.class);
-        Futures.addCallback(listenableFuture, mockFutureCallback, AsyncTask.THREAD_POOL_EXECUTOR);
+        Futures.addCallback(listenableFuture, mockFutureCallback,
+                android.os.AsyncTask.THREAD_POOL_EXECUTOR);
 
         ArgumentCaptor<Throwable> throwableCaptor = ArgumentCaptor.forClass(Throwable.class);
         verify(mockFutureCallback, timeout(3000).times(1)).onFailure(throwableCaptor.capture());
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/DeferrableSurfacesUtil.java b/camera/camera-testing/src/main/java/androidx/camera/testing/DeferrableSurfacesUtil.java
index f7e8554..0ee14f3 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/DeferrableSurfacesUtil.java
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/DeferrableSurfacesUtil.java
@@ -16,7 +16,6 @@
 
 package androidx.camera.testing;
 
-import android.os.AsyncTask;
 import android.os.Looper;
 import android.view.Surface;
 
@@ -56,6 +55,7 @@
      * @param removeNullSurfaces If true remove all Surfaces that were not retrieved.
      */
     @NonNull
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public static List<Surface> surfaceList(
             @NonNull Collection<DeferrableSurface> deferrableSurfaces, boolean removeNullSurfaces) {
         ScheduledExecutorService scheduledExecutorService =
@@ -63,7 +63,7 @@
                         HandlerCompat.createAsync(Looper.getMainLooper()));
         try {
             return DeferrableSurfaces.surfaceListWithTimeout(deferrableSurfaces, removeNullSurfaces,
-                    Long.MAX_VALUE, AsyncTask.THREAD_POOL_EXECUTOR,
+                    Long.MAX_VALUE, android.os.AsyncTask.THREAD_POOL_EXECUTOR,
                     scheduledExecutorService).get();
         } catch (InterruptedException | ExecutionException e) {
             return Collections.unmodifiableList(Collections.emptyList());
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/activity/Camera2TestActivity.java b/camera/camera-testing/src/main/java/androidx/camera/testing/activity/Camera2TestActivity.java
index ed43db7..ce72f7e 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/activity/Camera2TestActivity.java
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/activity/Camera2TestActivity.java
@@ -230,6 +230,7 @@
     /**
      * Creates a new {@link CameraCaptureSession} for camera preview.
      */
+    @SuppressWarnings("deprecation") /* createCaptureSession */
     void createCameraPreviewSession() {
         try {
             SurfaceTexture texture = mTextureView.getSurfaceTexture();
diff --git a/camera/camera-view/src/androidTest/java/androidx/camera/view/TextureViewMeteringPointFactoryTest.java b/camera/camera-view/src/androidTest/java/androidx/camera/view/TextureViewMeteringPointFactoryTest.java
index 5b390e9..0447a80 100644
--- a/camera/camera-view/src/androidTest/java/androidx/camera/view/TextureViewMeteringPointFactoryTest.java
+++ b/camera/camera-view/src/androidTest/java/androidx/camera/view/TextureViewMeteringPointFactoryTest.java
@@ -102,6 +102,7 @@
     private int mHeight;
 
     @Before
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     public void setUp() throws Throwable {
         assumeTrue(CameraUtil.deviceHasCamera());
         CoreAppTestUtil.assumeCompatibleDevice();
diff --git a/appcompat/appcompat-resources/api/res-1.2.0-rc01.txt b/camera/camera-view/src/androidTest/java/androidx/camera/view/TransformableSurfaceViewTest.java
similarity index 100%
rename from appcompat/appcompat-resources/api/res-1.2.0-rc01.txt
rename to camera/camera-view/src/androidTest/java/androidx/camera/view/TransformableSurfaceViewTest.java
diff --git a/appcompat/appcompat-resources/api/res-1.2.0-rc01.txt b/camera/camera-view/src/main/java/androidx/camera/view/SurfaceRotation.java
similarity index 100%
copy from appcompat/appcompat-resources/api/res-1.2.0-rc01.txt
copy to camera/camera-view/src/main/java/androidx/camera/view/SurfaceRotation.java
diff --git a/appcompat/appcompat-resources/api/res-1.2.0-rc01.txt b/camera/camera-view/src/main/java/androidx/camera/view/TransformableSurfaceView.java
similarity index 100%
copy from appcompat/appcompat-resources/api/res-1.2.0-rc01.txt
copy to camera/camera-view/src/main/java/androidx/camera/view/TransformableSurfaceView.java
diff --git a/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/CameraXActivity.java b/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/CameraXActivity.java
index 84717c2..1184ee0 100644
--- a/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/CameraXActivity.java
+++ b/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/CameraXActivity.java
@@ -347,6 +347,7 @@
     }
 
     /** @return One of 0, 90, 180, 270. */
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     private int getDisplayRotation() {
         int displayRotation = getWindowManager().getDefaultDisplay().getRotation();
 
diff --git a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/ImageUtils.kt b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/ImageUtils.kt
index 678e8d8..60c4280 100644
--- a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/ImageUtils.kt
+++ b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/ImageUtils.kt
@@ -31,12 +31,12 @@
 import androidx.camera.core.ImageCapture
 import androidx.camera.core.ImageCaptureException
 import androidx.camera.core.ImageProxy
-import androidx.exifinterface.media.ExifInterface
 import androidx.camera.integration.antelope.MainActivity.Companion.PHOTOS_DIR
 import androidx.camera.integration.antelope.MainActivity.Companion.logd
 import androidx.camera.integration.antelope.cameracontrollers.CameraState
 import androidx.camera.integration.antelope.cameracontrollers.closeCameraX
 import androidx.camera.integration.antelope.cameracontrollers.closePreviewAndCamera
+import androidx.exifinterface.media.ExifInterface
 import java.io.ByteArrayInputStream
 import java.io.File
 import java.io.FileOutputStream
@@ -71,6 +71,7 @@
         when (image.format) {
             ImageFormat.JPEG -> {
                 // Orientation
+                @Suppress("DEPRECATION") /* defaultDisplay */
                 val rotation = activity.windowManager.defaultDisplay.rotation
                 val capturedImageRotation = getOrientation(params, rotation)
 
diff --git a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/Camera2Controller.kt b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/Camera2Controller.kt
index 2a626c1..7a1faa0 100644
--- a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/Camera2Controller.kt
+++ b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/Camera2Controller.kt
@@ -110,6 +110,7 @@
             params.captureRequestBuilder?.removeTarget(params.previewSurfaceView?.holder?.surface!!)
         params.captureRequestBuilder?.addTarget(surface)
 
+        @Suppress("DEPRECATION")
         params.device?.createCaptureSession(Arrays.asList(surface, imageSurface),
             Camera2PreviewSessionStateCallback(activity, params, testConfig), null)
     } catch (e: CameraAccessException) {
@@ -222,6 +223,7 @@
 /**
  * Make a still capture request. At this point, AF and AE should be converged or unnecessary.
  */
+@Suppress("DEPRECATION") /* defaultDisplay */
 fun captureStillPicture(activity: MainActivity, params: CameraParams, testConfig: TestConfig) {
     if (!params.isOpen) {
         return
@@ -260,6 +262,7 @@
             }
 
             // Orientation
+            @Suppress("DEPRECATION") /* defaultDisplay */
             val rotation = activity.windowManager.defaultDisplay.rotation
             val capturedImageRotation = getOrientation(params, rotation)
             params.captureRequestBuilder
diff --git a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/Camera2PreviewSessionStateCallback.kt b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/Camera2PreviewSessionStateCallback.kt
index 2a1afbf..63760c7 100644
--- a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/Camera2PreviewSessionStateCallback.kt
+++ b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/Camera2PreviewSessionStateCallback.kt
@@ -171,6 +171,7 @@
 
         val surface = Surface(surfaceTexture)
         try {
+            @Suppress("DEPRECATION")
             params.device?.createCaptureSession(
                 Arrays.asList(surface),
                 object : CameraCaptureSession.StateCallback() {
diff --git a/cardview/cardview/build.gradle b/cardview/cardview/build.gradle
index e190825..5a7f6f9 100644
--- a/cardview/cardview/build.gradle
+++ b/cardview/cardview/build.gradle
@@ -7,7 +7,7 @@
     id("com.android.library")
 }
 
-dependencies {
+dependencies { 
     api("androidx.annotation:annotation:1.1.0")
     implementation("androidx.core:core:1.3.0-beta01")
 }
diff --git a/coordinatorlayout/coordinatorlayout/src/main/java/androidx/coordinatorlayout/widget/CoordinatorLayout.java b/coordinatorlayout/coordinatorlayout/src/main/java/androidx/coordinatorlayout/widget/CoordinatorLayout.java
index 1de1353..3a89eba 100644
--- a/coordinatorlayout/coordinatorlayout/src/main/java/androidx/coordinatorlayout/widget/CoordinatorLayout.java
+++ b/coordinatorlayout/coordinatorlayout/src/main/java/androidx/coordinatorlayout/widget/CoordinatorLayout.java
@@ -3337,6 +3337,7 @@
         return super.requestChildRectangleOnScreen(child, rectangle, immediate);
     }
 
+    @SuppressWarnings("deprecation") /* SYSTEM_UI_FLAG_LAYOUT_* */
     private void setupForInsets() {
         if (Build.VERSION.SDK_INT < 21) {
             return;
diff --git a/core/core-ktx/api/1.3.0-rc01.txt b/core/core-ktx/api/1.3.0-rc01.txt
deleted file mode 100644
index cb5c321..0000000
--- a/core/core-ktx/api/1.3.0-rc01.txt
+++ /dev/null
@@ -1,599 +0,0 @@
-// Signature format: 3.0
-package androidx.core.animation {
-
-  public final class AnimatorKt {
-    method public static inline android.animation.Animator.AnimatorListener addListener(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onEnd = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onStart = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onCancel = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onRepeat = {});
-    method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener addPauseListener(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onResume = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onPause = {});
-    method public static inline android.animation.Animator.AnimatorListener doOnCancel(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnEnd(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnPause(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnRepeat(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnResume(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnStart(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.content {
-
-  public final class ContentValuesKt {
-    method public static android.content.ContentValues contentValuesOf(kotlin.Pair<java.lang.String,?>... pairs);
-  }
-
-  public final class ContextKt {
-    method public static inline <reified T> T! getSystemService(android.content.Context);
-    method public static inline void withStyledAttributes(android.content.Context, android.util.AttributeSet? set = null, int[] attrs, @AttrRes int defStyleAttr = 0, @StyleRes int defStyleRes = 0, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
-    method public static inline void withStyledAttributes(android.content.Context, @StyleRes int resourceId, int[] attrs, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
-  }
-
-  public final class SharedPreferencesKt {
-    method public static inline void edit(android.content.SharedPreferences, boolean commit = false, kotlin.jvm.functions.Function1<? super android.content.SharedPreferences.Editor,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.content.res {
-
-  public final class TypedArrayKt {
-    method public static boolean getBooleanOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @ColorInt public static int getColorOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static android.content.res.ColorStateList getColorStateListOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static float getDimensionOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @Dimension public static int getDimensionPixelOffsetOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @Dimension public static int getDimensionPixelSizeOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static android.graphics.drawable.Drawable getDrawableOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static float getFloatOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @RequiresApi(26) public static android.graphics.Typeface getFontOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static int getIntOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static int getIntegerOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @AnyRes public static int getResourceIdOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static String getStringOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static CharSequence![] getTextArrayOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static CharSequence getTextOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static inline <R> R! use(android.content.res.TypedArray, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,? extends R> block);
-  }
-
-}
-
-package androidx.core.database {
-
-  public final class CursorKt {
-    method public static inline byte[]? getBlobOrNull(android.database.Cursor, int index);
-    method public static inline Double? getDoubleOrNull(android.database.Cursor, int index);
-    method public static inline Float? getFloatOrNull(android.database.Cursor, int index);
-    method public static inline Integer? getIntOrNull(android.database.Cursor, int index);
-    method public static inline Long? getLongOrNull(android.database.Cursor, int index);
-    method public static inline Short? getShortOrNull(android.database.Cursor, int index);
-    method public static inline String? getStringOrNull(android.database.Cursor, int index);
-  }
-
-}
-
-package androidx.core.database.sqlite {
-
-  public final class SQLiteDatabaseKt {
-    method public static inline <T> T! transaction(android.database.sqlite.SQLiteDatabase, boolean exclusive = true, kotlin.jvm.functions.Function1<? super android.database.sqlite.SQLiteDatabase,? extends T> body);
-  }
-
-}
-
-package androidx.core.graphics {
-
-  public final class BitmapKt {
-    method public static inline android.graphics.Bitmap applyCanvas(android.graphics.Bitmap, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.Point p);
-    method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.PointF p);
-    method public static inline android.graphics.Bitmap createBitmap(int width, int height, android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888);
-    method @RequiresApi(26) public static inline android.graphics.Bitmap createBitmap(int width, int height, android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888, boolean hasAlpha = true, android.graphics.ColorSpace colorSpace = ColorSpace.get(ColorSpace.Named.SRGB));
-    method public static inline operator int get(android.graphics.Bitmap, int x, int y);
-    method public static inline android.graphics.Bitmap scale(android.graphics.Bitmap, int width, int height, boolean filter = true);
-    method public static inline operator void set(android.graphics.Bitmap, int x, int y, @ColorInt int color);
-  }
-
-  public final class CanvasKt {
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.Rect clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.RectF clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, int left, int top, int right, int bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, float left, float top, float right, float bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.Path clipPath, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withMatrix(android.graphics.Canvas, android.graphics.Matrix matrix = android.graphics.Matrix(), kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withRotation(android.graphics.Canvas, float degrees = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withSave(android.graphics.Canvas, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withScale(android.graphics.Canvas, float x = 1.0f, float y = 1.0f, float pivotX = 0.0f, float pivotY = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withSkew(android.graphics.Canvas, float x = 0.0f, float y = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withTranslation(android.graphics.Canvas, float x = 0.0f, float y = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-  }
-
-  public final class ColorKt {
-    method @RequiresApi(26) public static inline operator float component1(android.graphics.Color);
-    method public static inline operator int component1(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component1(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component2(android.graphics.Color);
-    method public static inline operator int component2(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component2(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component3(android.graphics.Color);
-    method public static inline operator int component3(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component3(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component4(android.graphics.Color);
-    method public static inline operator int component4(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component4(@ColorLong long);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace.Named colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace.Named colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace colorSpace);
-    method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace.Named colorSpace);
-    method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace colorSpace);
-    method public static inline int getAlpha(@ColorInt int);
-    method @RequiresApi(26) public static inline float getAlpha(@ColorLong long);
-    method public static inline int getBlue(@ColorInt int);
-    method @RequiresApi(26) public static inline float getBlue(@ColorLong long);
-    method @RequiresApi(26) public static inline android.graphics.ColorSpace getColorSpace(@ColorLong long);
-    method public static inline int getGreen(@ColorInt int);
-    method @RequiresApi(26) public static inline float getGreen(@ColorLong long);
-    method @RequiresApi(26) public static inline float getLuminance(@ColorInt int);
-    method @RequiresApi(26) public static inline float getLuminance(@ColorLong long);
-    method public static inline int getRed(@ColorInt int);
-    method @RequiresApi(26) public static inline float getRed(@ColorLong long);
-    method @RequiresApi(26) public static inline boolean isSrgb(@ColorLong long);
-    method @RequiresApi(26) public static inline boolean isWideGamut(@ColorLong long);
-    method @RequiresApi(26) public static operator android.graphics.Color plus(android.graphics.Color, android.graphics.Color c);
-    method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorInt int);
-    method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorLong long);
-    method @ColorInt @RequiresApi(26) public static inline int toColorInt(@ColorLong long);
-    method @ColorInt public static inline int toColorInt(String);
-    method @ColorLong @RequiresApi(26) public static inline long toColorLong(@ColorInt int);
-  }
-
-  public final class ImageDecoderKt {
-    method @RequiresApi(28) public static inline android.graphics.Bitmap decodeBitmap(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
-    method @RequiresApi(28) public static inline android.graphics.drawable.Drawable decodeDrawable(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
-  }
-
-  public final class MatrixKt {
-    method public static android.graphics.Matrix rotationMatrix(float degrees, float px = 0.0f, float py = 0.0f);
-    method public static android.graphics.Matrix scaleMatrix(float sx = 1.0f, float sy = 1.0f);
-    method public static inline operator android.graphics.Matrix times(android.graphics.Matrix, android.graphics.Matrix m);
-    method public static android.graphics.Matrix translationMatrix(float tx = 0.0f, float ty = 0.0f);
-    method public static inline float[] values(android.graphics.Matrix);
-  }
-
-  public final class PaintKt {
-    method public static inline boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat? blendModeCompat);
-  }
-
-  public final class PathKt {
-    method @RequiresApi(19) public static inline infix android.graphics.Path and(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(26) public static Iterable<androidx.core.graphics.PathSegment> flatten(android.graphics.Path, float error = 0.5f);
-    method @RequiresApi(19) public static inline operator android.graphics.Path minus(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline infix android.graphics.Path or(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline operator android.graphics.Path plus(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline infix android.graphics.Path xor(android.graphics.Path, android.graphics.Path p);
-  }
-
-  public final class PictureKt {
-    method public static inline android.graphics.Picture record(android.graphics.Picture, int width, int height, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-  }
-
-  public final class PointKt {
-    method public static inline operator int component1(android.graphics.Point);
-    method public static inline operator float component1(android.graphics.PointF);
-    method public static inline operator int component2(android.graphics.Point);
-    method public static inline operator float component2(android.graphics.PointF);
-    method public static inline operator android.graphics.Point minus(android.graphics.Point, android.graphics.Point p);
-    method public static inline operator android.graphics.PointF minus(android.graphics.PointF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Point minus(android.graphics.Point, int xy);
-    method public static inline operator android.graphics.PointF minus(android.graphics.PointF, float xy);
-    method public static inline operator android.graphics.Point plus(android.graphics.Point, android.graphics.Point p);
-    method public static inline operator android.graphics.PointF plus(android.graphics.PointF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Point plus(android.graphics.Point, int xy);
-    method public static inline operator android.graphics.PointF plus(android.graphics.PointF, float xy);
-    method public static inline android.graphics.Point toPoint(android.graphics.PointF);
-    method public static inline android.graphics.PointF toPointF(android.graphics.Point);
-    method public static inline operator android.graphics.Point unaryMinus(android.graphics.Point);
-    method public static inline operator android.graphics.PointF unaryMinus(android.graphics.PointF);
-  }
-
-  public final class PorterDuffKt {
-    method public static inline android.graphics.PorterDuffColorFilter toColorFilter(android.graphics.PorterDuff.Mode, int color);
-    method public static inline android.graphics.PorterDuffXfermode toXfermode(android.graphics.PorterDuff.Mode);
-  }
-
-  public final class RectKt {
-    method public static inline infix android.graphics.Rect and(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.RectF and(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator int component1(android.graphics.Rect);
-    method public static inline operator float component1(android.graphics.RectF);
-    method public static inline operator int component2(android.graphics.Rect);
-    method public static inline operator float component2(android.graphics.RectF);
-    method public static inline operator int component3(android.graphics.Rect);
-    method public static inline operator float component3(android.graphics.RectF);
-    method public static inline operator int component4(android.graphics.Rect);
-    method public static inline operator float component4(android.graphics.RectF);
-    method public static inline operator boolean contains(android.graphics.Rect, android.graphics.Point p);
-    method public static inline operator boolean contains(android.graphics.RectF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Region minus(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region minus(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect minus(android.graphics.Rect, int xy);
-    method public static inline operator android.graphics.RectF minus(android.graphics.RectF, float xy);
-    method public static inline operator android.graphics.Rect minus(android.graphics.Rect, android.graphics.Point xy);
-    method public static inline operator android.graphics.RectF minus(android.graphics.RectF, android.graphics.PointF xy);
-    method public static inline infix android.graphics.Rect or(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.RectF or(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, int xy);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, float xy);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Point xy);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.PointF xy);
-    method public static inline operator android.graphics.Rect times(android.graphics.Rect, int factor);
-    method public static inline operator android.graphics.RectF times(android.graphics.RectF, int factor);
-    method public static inline operator android.graphics.RectF times(android.graphics.RectF, float factor);
-    method public static inline android.graphics.Rect toRect(android.graphics.RectF);
-    method public static inline android.graphics.RectF toRectF(android.graphics.Rect);
-    method public static inline android.graphics.Region toRegion(android.graphics.Rect);
-    method public static inline android.graphics.Region toRegion(android.graphics.RectF);
-    method public static inline android.graphics.RectF transform(android.graphics.RectF, android.graphics.Matrix m);
-    method public static inline infix android.graphics.Region xor(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region xor(android.graphics.RectF, android.graphics.RectF r);
-  }
-
-  public final class RegionKt {
-    method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator boolean contains(android.graphics.Region, android.graphics.Point p);
-    method public static inline void forEach(android.graphics.Region, kotlin.jvm.functions.Function1<? super android.graphics.Rect,kotlin.Unit> action);
-    method public static operator java.util.Iterator<android.graphics.Rect> iterator(android.graphics.Region);
-    method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region not(android.graphics.Region);
-    method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region unaryMinus(android.graphics.Region);
-    method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Region r);
-  }
-
-  public final class ShaderKt {
-    method public static inline void transform(android.graphics.Shader, kotlin.jvm.functions.Function1<? super android.graphics.Matrix,kotlin.Unit> block);
-  }
-
-}
-
-package androidx.core.graphics.drawable {
-
-  public final class BitmapDrawableKt {
-    method public static inline android.graphics.drawable.BitmapDrawable toDrawable(android.graphics.Bitmap, android.content.res.Resources resources);
-  }
-
-  public final class ColorDrawableKt {
-    method public static inline android.graphics.drawable.ColorDrawable toDrawable(@ColorInt int);
-    method @RequiresApi(26) public static inline android.graphics.drawable.ColorDrawable toDrawable(android.graphics.Color);
-  }
-
-  public final class DrawableKt {
-    method public static android.graphics.Bitmap toBitmap(android.graphics.drawable.Drawable, @Px int width = intrinsicWidth, @Px int height = intrinsicHeight, android.graphics.Bitmap.Config? config = null);
-    method public static void updateBounds(android.graphics.drawable.Drawable, @Px int left = android.graphics.Rect.left, @Px int top = android.graphics.Rect.top, @Px int right = android.graphics.Rect.right, @Px int bottom = android.graphics.Rect.bottom);
-  }
-
-  public final class IconKt {
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toAdaptiveIcon(android.graphics.Bitmap);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.graphics.Bitmap);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.net.Uri);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(byte[]);
-  }
-
-}
-
-package androidx.core.location {
-
-  public final class LocationKt {
-    method public static inline operator double component1(android.location.Location);
-    method public static inline operator double component2(android.location.Location);
-  }
-
-}
-
-package androidx.core.net {
-
-  public final class UriKt {
-    method public static java.io.File toFile(android.net.Uri);
-    method public static inline android.net.Uri toUri(String);
-    method public static inline android.net.Uri toUri(java.io.File);
-  }
-
-}
-
-package androidx.core.os {
-
-  public final class BundleKt {
-    method public static android.os.Bundle bundleOf(kotlin.Pair<java.lang.String,?>... pairs);
-  }
-
-  public final class HandlerKt {
-    method public static inline Runnable postAtTime(android.os.Handler, long uptimeMillis, Object? token = null, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method public static inline Runnable postDelayed(android.os.Handler, long delayInMillis, Object? token = null, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-  }
-
-  public final class PersistableBundleKt {
-    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf(kotlin.Pair<java.lang.String,?>... pairs);
-  }
-
-  public final class TraceKt {
-    method public static inline <T> T! trace(String sectionName, kotlin.jvm.functions.Function0<? extends T> block);
-  }
-
-}
-
-package androidx.core.text {
-
-  public final class CharSequenceKt {
-    method public static inline boolean isDigitsOnly(CharSequence);
-    method public static inline int trimmedLength(CharSequence);
-  }
-
-  public final class HtmlKt {
-    method public static inline android.text.Spanned parseAsHtml(String, int flags = 0, android.text.Html.ImageGetter? imageGetter = null, android.text.Html.TagHandler? tagHandler = null);
-    method public static inline String toHtml(android.text.Spanned, int option = 0);
-  }
-
-  public final class LocaleKt {
-    method @RequiresApi(17) public static inline int getLayoutDirection(java.util.Locale);
-  }
-
-  public final class SpannableStringBuilderKt {
-    method public static inline android.text.SpannableStringBuilder backgroundColor(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder bold(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannedString buildSpannedString(kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder color(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object![] spans, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object span, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder italic(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder scale(android.text.SpannableStringBuilder, float proportion, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder strikeThrough(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder subscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder superscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder underline(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-  }
-
-  public final class SpannableStringKt {
-    method public static inline void clearSpans(android.text.Spannable);
-    method public static inline operator void set(android.text.Spannable, int start, int end, Object span);
-    method public static inline operator void set(android.text.Spannable, kotlin.ranges.IntRange range, Object span);
-    method public static inline android.text.Spannable toSpannable(CharSequence);
-  }
-
-  public final class SpannedStringKt {
-    method public static inline <reified T> T![] getSpans(android.text.Spanned, int start = 0, int end = length);
-    method public static inline android.text.Spanned toSpanned(CharSequence);
-  }
-
-  public final class StringKt {
-    method public static inline String htmlEncode(String);
-  }
-
-}
-
-package androidx.core.transition {
-
-  public final class TransitionKt {
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener addListener(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onEnd = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onStart = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onCancel = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onResume = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onPause = {});
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnCancel(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnEnd(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnPause(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnResume(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnStart(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.util {
-
-  public final class AtomicFileKt {
-    method @RequiresApi(17) public static inline byte[] readBytes(android.util.AtomicFile);
-    method @RequiresApi(17) public static String readText(android.util.AtomicFile, java.nio.charset.Charset charset = Charsets.UTF_8);
-    method @RequiresApi(17) public static inline void tryWrite(android.util.AtomicFile, kotlin.jvm.functions.Function1<? super java.io.FileOutputStream,kotlin.Unit> block);
-    method @RequiresApi(17) public static void writeBytes(android.util.AtomicFile, byte[] array);
-    method @RequiresApi(17) public static void writeText(android.util.AtomicFile, String text, java.nio.charset.Charset charset = Charsets.UTF_8);
-  }
-
-  public final class HalfKt {
-    method @RequiresApi(26) public static inline android.util.Half toHalf(@HalfFloat short);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(float);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(double);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(String);
-  }
-
-  public final class LongSparseArrayKt {
-    method @RequiresApi(16) public static inline operator <T> boolean contains(android.util.LongSparseArray<T>, long key);
-    method @RequiresApi(16) public static inline <T> boolean containsKey(android.util.LongSparseArray<T>, long key);
-    method @RequiresApi(16) public static inline <T> boolean containsValue(android.util.LongSparseArray<T>, T? value);
-    method @RequiresApi(16) public static inline <T> void forEach(android.util.LongSparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Long,? super T,kotlin.Unit> action);
-    method @RequiresApi(16) public static inline <T> T! getOrDefault(android.util.LongSparseArray<T>, long key, T? defaultValue);
-    method @RequiresApi(16) public static inline <T> T! getOrElse(android.util.LongSparseArray<T>, long key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
-    method @RequiresApi(16) public static inline <T> int getSize(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static inline <T> boolean isEmpty(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static inline <T> boolean isNotEmpty(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static <T> kotlin.collections.LongIterator keyIterator(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static operator <T> android.util.LongSparseArray<T> plus(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
-    method @RequiresApi(16) public static <T> void putAll(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
-    method @RequiresApi(16) public static <T> boolean remove(android.util.LongSparseArray<T>, long key, T? value);
-    method @RequiresApi(16) public static inline operator <T> void set(android.util.LongSparseArray<T>, long key, T? value);
-    method @RequiresApi(16) public static <T> java.util.Iterator<T> valueIterator(android.util.LongSparseArray<T>);
-  }
-
-  public final class LruCacheKt {
-    method public static inline <K, V> android.util.LruCache<K,V> lruCache(int maxSize, kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf = { _, _ -> 1 }, kotlin.jvm.functions.Function1<? super K,? extends V> create = { (V)null }, kotlin.jvm.functions.Function4<? super java.lang.Boolean,? super K,? super V,? super V,kotlin.Unit> onEntryRemoved = { _, _, _, _ ->  });
-  }
-
-  public final class PairKt {
-    method public static inline operator <F, S> F! component1(android.util.Pair<F,S>);
-    method public static inline operator <F, S> S! component2(android.util.Pair<F,S>);
-    method public static inline <F, S> android.util.Pair<F,S> toAndroidPair(kotlin.Pair<? extends F,? extends S>);
-    method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(android.util.Pair<F,S>);
-  }
-
-  public final class RangeKt {
-    method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> and(android.util.Range<T>, android.util.Range<T> other);
-    method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, T value);
-    method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, android.util.Range<T> other);
-    method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> rangeTo(T, T that);
-    method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> kotlin.ranges.ClosedRange<T> toClosedRange(android.util.Range<T>);
-    method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> android.util.Range<T> toRange(kotlin.ranges.ClosedRange<T>);
-  }
-
-  public final class SizeKt {
-    method @RequiresApi(21) public static inline operator int component1(android.util.Size);
-    method @RequiresApi(21) public static inline operator float component1(android.util.SizeF);
-    method @RequiresApi(21) public static inline operator int component2(android.util.Size);
-    method @RequiresApi(21) public static inline operator float component2(android.util.SizeF);
-  }
-
-  public final class SparseArrayKt {
-    method public static inline operator <T> boolean contains(android.util.SparseArray<T>, int key);
-    method public static inline <T> boolean containsKey(android.util.SparseArray<T>, int key);
-    method public static inline <T> boolean containsValue(android.util.SparseArray<T>, T? value);
-    method public static inline <T> void forEach(android.util.SparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,kotlin.Unit> action);
-    method public static inline <T> T! getOrDefault(android.util.SparseArray<T>, int key, T? defaultValue);
-    method public static inline <T> T! getOrElse(android.util.SparseArray<T>, int key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
-    method public static inline <T> int getSize(android.util.SparseArray<T>);
-    method public static inline <T> boolean isEmpty(android.util.SparseArray<T>);
-    method public static inline <T> boolean isNotEmpty(android.util.SparseArray<T>);
-    method public static <T> kotlin.collections.IntIterator keyIterator(android.util.SparseArray<T>);
-    method public static operator <T> android.util.SparseArray<T> plus(android.util.SparseArray<T>, android.util.SparseArray<T> other);
-    method public static <T> void putAll(android.util.SparseArray<T>, android.util.SparseArray<T> other);
-    method public static <T> boolean remove(android.util.SparseArray<T>, int key, T? value);
-    method public static inline operator <T> void set(android.util.SparseArray<T>, int key, T? value);
-    method public static <T> java.util.Iterator<T> valueIterator(android.util.SparseArray<T>);
-  }
-
-  public final class SparseBooleanArrayKt {
-    method public static inline operator boolean contains(android.util.SparseBooleanArray, int key);
-    method public static inline boolean containsKey(android.util.SparseBooleanArray, int key);
-    method public static inline boolean containsValue(android.util.SparseBooleanArray, boolean value);
-    method public static inline void forEach(android.util.SparseBooleanArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> action);
-    method public static inline boolean getOrDefault(android.util.SparseBooleanArray, int key, boolean defaultValue);
-    method public static inline boolean getOrElse(android.util.SparseBooleanArray, int key, kotlin.jvm.functions.Function0<java.lang.Boolean> defaultValue);
-    method public static inline int getSize(android.util.SparseBooleanArray);
-    method public static inline boolean isEmpty(android.util.SparseBooleanArray);
-    method public static inline boolean isNotEmpty(android.util.SparseBooleanArray);
-    method public static kotlin.collections.IntIterator keyIterator(android.util.SparseBooleanArray);
-    method public static operator android.util.SparseBooleanArray plus(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
-    method public static void putAll(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
-    method public static boolean remove(android.util.SparseBooleanArray, int key, boolean value);
-    method public static inline operator void set(android.util.SparseBooleanArray, int key, boolean value);
-    method public static kotlin.collections.BooleanIterator valueIterator(android.util.SparseBooleanArray);
-  }
-
-  public final class SparseIntArrayKt {
-    method public static inline operator boolean contains(android.util.SparseIntArray, int key);
-    method public static inline boolean containsKey(android.util.SparseIntArray, int key);
-    method public static inline boolean containsValue(android.util.SparseIntArray, int value);
-    method public static inline void forEach(android.util.SparseIntArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-    method public static inline int getOrDefault(android.util.SparseIntArray, int key, int defaultValue);
-    method public static inline int getOrElse(android.util.SparseIntArray, int key, kotlin.jvm.functions.Function0<java.lang.Integer> defaultValue);
-    method public static inline int getSize(android.util.SparseIntArray);
-    method public static inline boolean isEmpty(android.util.SparseIntArray);
-    method public static inline boolean isNotEmpty(android.util.SparseIntArray);
-    method public static kotlin.collections.IntIterator keyIterator(android.util.SparseIntArray);
-    method public static operator android.util.SparseIntArray plus(android.util.SparseIntArray, android.util.SparseIntArray other);
-    method public static void putAll(android.util.SparseIntArray, android.util.SparseIntArray other);
-    method public static boolean remove(android.util.SparseIntArray, int key, int value);
-    method public static inline operator void set(android.util.SparseIntArray, int key, int value);
-    method public static kotlin.collections.IntIterator valueIterator(android.util.SparseIntArray);
-  }
-
-  public final class SparseLongArrayKt {
-    method @RequiresApi(18) public static inline operator boolean contains(android.util.SparseLongArray, int key);
-    method @RequiresApi(18) public static inline boolean containsKey(android.util.SparseLongArray, int key);
-    method @RequiresApi(18) public static inline boolean containsValue(android.util.SparseLongArray, long value);
-    method @RequiresApi(18) public static inline void forEach(android.util.SparseLongArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Long,kotlin.Unit> action);
-    method @RequiresApi(18) public static inline long getOrDefault(android.util.SparseLongArray, int key, long defaultValue);
-    method @RequiresApi(18) public static inline long getOrElse(android.util.SparseLongArray, int key, kotlin.jvm.functions.Function0<java.lang.Long> defaultValue);
-    method @RequiresApi(18) public static inline int getSize(android.util.SparseLongArray);
-    method @RequiresApi(18) public static inline boolean isEmpty(android.util.SparseLongArray);
-    method @RequiresApi(18) public static inline boolean isNotEmpty(android.util.SparseLongArray);
-    method @RequiresApi(18) public static kotlin.collections.IntIterator keyIterator(android.util.SparseLongArray);
-    method @RequiresApi(18) public static operator android.util.SparseLongArray plus(android.util.SparseLongArray, android.util.SparseLongArray other);
-    method @RequiresApi(18) public static void putAll(android.util.SparseLongArray, android.util.SparseLongArray other);
-    method @RequiresApi(18) public static boolean remove(android.util.SparseLongArray, int key, long value);
-    method @RequiresApi(18) public static inline operator void set(android.util.SparseLongArray, int key, long value);
-    method @RequiresApi(18) public static kotlin.collections.LongIterator valueIterator(android.util.SparseLongArray);
-  }
-
-}
-
-package androidx.core.view {
-
-  public final class MenuKt {
-    method public static operator boolean contains(android.view.Menu, android.view.MenuItem item);
-    method public static inline void forEach(android.view.Menu, kotlin.jvm.functions.Function1<? super android.view.MenuItem,kotlin.Unit> action);
-    method public static inline void forEachIndexed(android.view.Menu, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.MenuItem,kotlin.Unit> action);
-    method public static inline operator android.view.MenuItem get(android.view.Menu, int index);
-    method public static kotlin.sequences.Sequence<android.view.MenuItem> getChildren(android.view.Menu);
-    method public static inline int getSize(android.view.Menu);
-    method public static inline boolean isEmpty(android.view.Menu);
-    method public static inline boolean isNotEmpty(android.view.Menu);
-    method public static operator java.util.Iterator<android.view.MenuItem> iterator(android.view.Menu);
-    method public static inline operator void minusAssign(android.view.Menu, android.view.MenuItem item);
-  }
-
-  public final class ViewGroupKt {
-    method public static inline operator boolean contains(android.view.ViewGroup, android.view.View view);
-    method public static inline void forEach(android.view.ViewGroup, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void forEachIndexed(android.view.ViewGroup, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.View,kotlin.Unit> action);
-    method public static operator android.view.View get(android.view.ViewGroup, int index);
-    method public static kotlin.sequences.Sequence<android.view.View> getChildren(android.view.ViewGroup);
-    method public static inline int getSize(android.view.ViewGroup);
-    method public static inline boolean isEmpty(android.view.ViewGroup);
-    method public static inline boolean isNotEmpty(android.view.ViewGroup);
-    method public static operator java.util.Iterator<android.view.View> iterator(android.view.ViewGroup);
-    method public static inline operator void minusAssign(android.view.ViewGroup, android.view.View view);
-    method public static inline operator void plusAssign(android.view.ViewGroup, android.view.View view);
-    method public static inline void setMargins(android.view.ViewGroup.MarginLayoutParams, @Px int size);
-    method public static inline void updateMargins(android.view.ViewGroup.MarginLayoutParams, @Px int left = android.view.ViewGroup.MarginLayoutParams.leftMargin, @Px int top = android.view.ViewGroup.MarginLayoutParams.topMargin, @Px int right = android.view.ViewGroup.MarginLayoutParams.rightMargin, @Px int bottom = android.view.ViewGroup.MarginLayoutParams.bottomMargin);
-    method @RequiresApi(17) public static inline void updateMarginsRelative(android.view.ViewGroup.MarginLayoutParams, @Px int start = marginStart, @Px int top = android.view.ViewGroup.MarginLayoutParams.topMargin, @Px int end = marginEnd, @Px int bottom = android.view.ViewGroup.MarginLayoutParams.bottomMargin);
-  }
-
-  public final class ViewKt {
-    method public static inline void doOnAttach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnDetach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnNextLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline androidx.core.view.OneShotPreDrawListener doOnPreDraw(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static android.graphics.Bitmap drawToBitmap(android.view.View, android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888);
-    method public static inline int getMarginBottom(android.view.View);
-    method public static inline int getMarginEnd(android.view.View);
-    method public static inline int getMarginLeft(android.view.View);
-    method public static inline int getMarginRight(android.view.View);
-    method public static inline int getMarginStart(android.view.View);
-    method public static inline int getMarginTop(android.view.View);
-    method public static inline boolean isGone(android.view.View);
-    method public static inline boolean isInvisible(android.view.View);
-    method public static inline boolean isVisible(android.view.View);
-    method public static inline Runnable postDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method @RequiresApi(16) public static inline Runnable postOnAnimationDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method public static inline void setGone(android.view.View, boolean value);
-    method public static inline void setInvisible(android.view.View, boolean value);
-    method public static inline void setPadding(android.view.View, @Px int size);
-    method public static inline void setVisible(android.view.View, boolean value);
-    method public static inline void updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super android.view.ViewGroup.LayoutParams,kotlin.Unit> block);
-    method public static inline <reified T extends android.view.ViewGroup.LayoutParams> void updateLayoutParamsTyped(android.view.View, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
-    method public static inline void updatePadding(android.view.View, @Px int left = paddingLeft, @Px int top = paddingTop, @Px int right = paddingRight, @Px int bottom = paddingBottom);
-    method @RequiresApi(17) public static inline void updatePaddingRelative(android.view.View, @Px int start = paddingStart, @Px int top = paddingTop, @Px int end = paddingEnd, @Px int bottom = paddingBottom);
-  }
-
-}
-
-package androidx.core.widget {
-
-  public final class TextViewKt {
-    method public static inline android.text.TextWatcher addTextChangedListener(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> beforeTextChanged = { _, _, _, _ ->  }, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> onTextChanged = { _, _, _, _ ->  }, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> afterTextChanged = {});
-    method public static inline android.text.TextWatcher doAfterTextChanged(android.widget.TextView, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> action);
-    method public static inline android.text.TextWatcher doBeforeTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-    method public static inline android.text.TextWatcher doOnTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-  }
-
-}
-
diff --git a/core/core-ktx/api/public_plus_experimental_1.3.0-rc01.txt b/core/core-ktx/api/public_plus_experimental_1.3.0-rc01.txt
deleted file mode 100644
index cb5c321..0000000
--- a/core/core-ktx/api/public_plus_experimental_1.3.0-rc01.txt
+++ /dev/null
@@ -1,599 +0,0 @@
-// Signature format: 3.0
-package androidx.core.animation {
-
-  public final class AnimatorKt {
-    method public static inline android.animation.Animator.AnimatorListener addListener(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onEnd = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onStart = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onCancel = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onRepeat = {});
-    method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener addPauseListener(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onResume = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onPause = {});
-    method public static inline android.animation.Animator.AnimatorListener doOnCancel(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnEnd(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnPause(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnRepeat(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnResume(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnStart(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.content {
-
-  public final class ContentValuesKt {
-    method public static android.content.ContentValues contentValuesOf(kotlin.Pair<java.lang.String,?>... pairs);
-  }
-
-  public final class ContextKt {
-    method public static inline <reified T> T! getSystemService(android.content.Context);
-    method public static inline void withStyledAttributes(android.content.Context, android.util.AttributeSet? set = null, int[] attrs, @AttrRes int defStyleAttr = 0, @StyleRes int defStyleRes = 0, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
-    method public static inline void withStyledAttributes(android.content.Context, @StyleRes int resourceId, int[] attrs, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
-  }
-
-  public final class SharedPreferencesKt {
-    method public static inline void edit(android.content.SharedPreferences, boolean commit = false, kotlin.jvm.functions.Function1<? super android.content.SharedPreferences.Editor,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.content.res {
-
-  public final class TypedArrayKt {
-    method public static boolean getBooleanOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @ColorInt public static int getColorOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static android.content.res.ColorStateList getColorStateListOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static float getDimensionOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @Dimension public static int getDimensionPixelOffsetOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @Dimension public static int getDimensionPixelSizeOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static android.graphics.drawable.Drawable getDrawableOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static float getFloatOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @RequiresApi(26) public static android.graphics.Typeface getFontOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static int getIntOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static int getIntegerOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @AnyRes public static int getResourceIdOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static String getStringOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static CharSequence![] getTextArrayOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static CharSequence getTextOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static inline <R> R! use(android.content.res.TypedArray, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,? extends R> block);
-  }
-
-}
-
-package androidx.core.database {
-
-  public final class CursorKt {
-    method public static inline byte[]? getBlobOrNull(android.database.Cursor, int index);
-    method public static inline Double? getDoubleOrNull(android.database.Cursor, int index);
-    method public static inline Float? getFloatOrNull(android.database.Cursor, int index);
-    method public static inline Integer? getIntOrNull(android.database.Cursor, int index);
-    method public static inline Long? getLongOrNull(android.database.Cursor, int index);
-    method public static inline Short? getShortOrNull(android.database.Cursor, int index);
-    method public static inline String? getStringOrNull(android.database.Cursor, int index);
-  }
-
-}
-
-package androidx.core.database.sqlite {
-
-  public final class SQLiteDatabaseKt {
-    method public static inline <T> T! transaction(android.database.sqlite.SQLiteDatabase, boolean exclusive = true, kotlin.jvm.functions.Function1<? super android.database.sqlite.SQLiteDatabase,? extends T> body);
-  }
-
-}
-
-package androidx.core.graphics {
-
-  public final class BitmapKt {
-    method public static inline android.graphics.Bitmap applyCanvas(android.graphics.Bitmap, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.Point p);
-    method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.PointF p);
-    method public static inline android.graphics.Bitmap createBitmap(int width, int height, android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888);
-    method @RequiresApi(26) public static inline android.graphics.Bitmap createBitmap(int width, int height, android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888, boolean hasAlpha = true, android.graphics.ColorSpace colorSpace = ColorSpace.get(ColorSpace.Named.SRGB));
-    method public static inline operator int get(android.graphics.Bitmap, int x, int y);
-    method public static inline android.graphics.Bitmap scale(android.graphics.Bitmap, int width, int height, boolean filter = true);
-    method public static inline operator void set(android.graphics.Bitmap, int x, int y, @ColorInt int color);
-  }
-
-  public final class CanvasKt {
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.Rect clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.RectF clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, int left, int top, int right, int bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, float left, float top, float right, float bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.Path clipPath, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withMatrix(android.graphics.Canvas, android.graphics.Matrix matrix = android.graphics.Matrix(), kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withRotation(android.graphics.Canvas, float degrees = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withSave(android.graphics.Canvas, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withScale(android.graphics.Canvas, float x = 1.0f, float y = 1.0f, float pivotX = 0.0f, float pivotY = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withSkew(android.graphics.Canvas, float x = 0.0f, float y = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withTranslation(android.graphics.Canvas, float x = 0.0f, float y = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-  }
-
-  public final class ColorKt {
-    method @RequiresApi(26) public static inline operator float component1(android.graphics.Color);
-    method public static inline operator int component1(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component1(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component2(android.graphics.Color);
-    method public static inline operator int component2(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component2(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component3(android.graphics.Color);
-    method public static inline operator int component3(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component3(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component4(android.graphics.Color);
-    method public static inline operator int component4(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component4(@ColorLong long);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace.Named colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace.Named colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace colorSpace);
-    method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace.Named colorSpace);
-    method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace colorSpace);
-    method public static inline int getAlpha(@ColorInt int);
-    method @RequiresApi(26) public static inline float getAlpha(@ColorLong long);
-    method public static inline int getBlue(@ColorInt int);
-    method @RequiresApi(26) public static inline float getBlue(@ColorLong long);
-    method @RequiresApi(26) public static inline android.graphics.ColorSpace getColorSpace(@ColorLong long);
-    method public static inline int getGreen(@ColorInt int);
-    method @RequiresApi(26) public static inline float getGreen(@ColorLong long);
-    method @RequiresApi(26) public static inline float getLuminance(@ColorInt int);
-    method @RequiresApi(26) public static inline float getLuminance(@ColorLong long);
-    method public static inline int getRed(@ColorInt int);
-    method @RequiresApi(26) public static inline float getRed(@ColorLong long);
-    method @RequiresApi(26) public static inline boolean isSrgb(@ColorLong long);
-    method @RequiresApi(26) public static inline boolean isWideGamut(@ColorLong long);
-    method @RequiresApi(26) public static operator android.graphics.Color plus(android.graphics.Color, android.graphics.Color c);
-    method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorInt int);
-    method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorLong long);
-    method @ColorInt @RequiresApi(26) public static inline int toColorInt(@ColorLong long);
-    method @ColorInt public static inline int toColorInt(String);
-    method @ColorLong @RequiresApi(26) public static inline long toColorLong(@ColorInt int);
-  }
-
-  public final class ImageDecoderKt {
-    method @RequiresApi(28) public static inline android.graphics.Bitmap decodeBitmap(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
-    method @RequiresApi(28) public static inline android.graphics.drawable.Drawable decodeDrawable(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
-  }
-
-  public final class MatrixKt {
-    method public static android.graphics.Matrix rotationMatrix(float degrees, float px = 0.0f, float py = 0.0f);
-    method public static android.graphics.Matrix scaleMatrix(float sx = 1.0f, float sy = 1.0f);
-    method public static inline operator android.graphics.Matrix times(android.graphics.Matrix, android.graphics.Matrix m);
-    method public static android.graphics.Matrix translationMatrix(float tx = 0.0f, float ty = 0.0f);
-    method public static inline float[] values(android.graphics.Matrix);
-  }
-
-  public final class PaintKt {
-    method public static inline boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat? blendModeCompat);
-  }
-
-  public final class PathKt {
-    method @RequiresApi(19) public static inline infix android.graphics.Path and(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(26) public static Iterable<androidx.core.graphics.PathSegment> flatten(android.graphics.Path, float error = 0.5f);
-    method @RequiresApi(19) public static inline operator android.graphics.Path minus(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline infix android.graphics.Path or(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline operator android.graphics.Path plus(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline infix android.graphics.Path xor(android.graphics.Path, android.graphics.Path p);
-  }
-
-  public final class PictureKt {
-    method public static inline android.graphics.Picture record(android.graphics.Picture, int width, int height, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-  }
-
-  public final class PointKt {
-    method public static inline operator int component1(android.graphics.Point);
-    method public static inline operator float component1(android.graphics.PointF);
-    method public static inline operator int component2(android.graphics.Point);
-    method public static inline operator float component2(android.graphics.PointF);
-    method public static inline operator android.graphics.Point minus(android.graphics.Point, android.graphics.Point p);
-    method public static inline operator android.graphics.PointF minus(android.graphics.PointF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Point minus(android.graphics.Point, int xy);
-    method public static inline operator android.graphics.PointF minus(android.graphics.PointF, float xy);
-    method public static inline operator android.graphics.Point plus(android.graphics.Point, android.graphics.Point p);
-    method public static inline operator android.graphics.PointF plus(android.graphics.PointF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Point plus(android.graphics.Point, int xy);
-    method public static inline operator android.graphics.PointF plus(android.graphics.PointF, float xy);
-    method public static inline android.graphics.Point toPoint(android.graphics.PointF);
-    method public static inline android.graphics.PointF toPointF(android.graphics.Point);
-    method public static inline operator android.graphics.Point unaryMinus(android.graphics.Point);
-    method public static inline operator android.graphics.PointF unaryMinus(android.graphics.PointF);
-  }
-
-  public final class PorterDuffKt {
-    method public static inline android.graphics.PorterDuffColorFilter toColorFilter(android.graphics.PorterDuff.Mode, int color);
-    method public static inline android.graphics.PorterDuffXfermode toXfermode(android.graphics.PorterDuff.Mode);
-  }
-
-  public final class RectKt {
-    method public static inline infix android.graphics.Rect and(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.RectF and(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator int component1(android.graphics.Rect);
-    method public static inline operator float component1(android.graphics.RectF);
-    method public static inline operator int component2(android.graphics.Rect);
-    method public static inline operator float component2(android.graphics.RectF);
-    method public static inline operator int component3(android.graphics.Rect);
-    method public static inline operator float component3(android.graphics.RectF);
-    method public static inline operator int component4(android.graphics.Rect);
-    method public static inline operator float component4(android.graphics.RectF);
-    method public static inline operator boolean contains(android.graphics.Rect, android.graphics.Point p);
-    method public static inline operator boolean contains(android.graphics.RectF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Region minus(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region minus(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect minus(android.graphics.Rect, int xy);
-    method public static inline operator android.graphics.RectF minus(android.graphics.RectF, float xy);
-    method public static inline operator android.graphics.Rect minus(android.graphics.Rect, android.graphics.Point xy);
-    method public static inline operator android.graphics.RectF minus(android.graphics.RectF, android.graphics.PointF xy);
-    method public static inline infix android.graphics.Rect or(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.RectF or(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, int xy);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, float xy);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Point xy);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.PointF xy);
-    method public static inline operator android.graphics.Rect times(android.graphics.Rect, int factor);
-    method public static inline operator android.graphics.RectF times(android.graphics.RectF, int factor);
-    method public static inline operator android.graphics.RectF times(android.graphics.RectF, float factor);
-    method public static inline android.graphics.Rect toRect(android.graphics.RectF);
-    method public static inline android.graphics.RectF toRectF(android.graphics.Rect);
-    method public static inline android.graphics.Region toRegion(android.graphics.Rect);
-    method public static inline android.graphics.Region toRegion(android.graphics.RectF);
-    method public static inline android.graphics.RectF transform(android.graphics.RectF, android.graphics.Matrix m);
-    method public static inline infix android.graphics.Region xor(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region xor(android.graphics.RectF, android.graphics.RectF r);
-  }
-
-  public final class RegionKt {
-    method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator boolean contains(android.graphics.Region, android.graphics.Point p);
-    method public static inline void forEach(android.graphics.Region, kotlin.jvm.functions.Function1<? super android.graphics.Rect,kotlin.Unit> action);
-    method public static operator java.util.Iterator<android.graphics.Rect> iterator(android.graphics.Region);
-    method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region not(android.graphics.Region);
-    method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region unaryMinus(android.graphics.Region);
-    method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Region r);
-  }
-
-  public final class ShaderKt {
-    method public static inline void transform(android.graphics.Shader, kotlin.jvm.functions.Function1<? super android.graphics.Matrix,kotlin.Unit> block);
-  }
-
-}
-
-package androidx.core.graphics.drawable {
-
-  public final class BitmapDrawableKt {
-    method public static inline android.graphics.drawable.BitmapDrawable toDrawable(android.graphics.Bitmap, android.content.res.Resources resources);
-  }
-
-  public final class ColorDrawableKt {
-    method public static inline android.graphics.drawable.ColorDrawable toDrawable(@ColorInt int);
-    method @RequiresApi(26) public static inline android.graphics.drawable.ColorDrawable toDrawable(android.graphics.Color);
-  }
-
-  public final class DrawableKt {
-    method public static android.graphics.Bitmap toBitmap(android.graphics.drawable.Drawable, @Px int width = intrinsicWidth, @Px int height = intrinsicHeight, android.graphics.Bitmap.Config? config = null);
-    method public static void updateBounds(android.graphics.drawable.Drawable, @Px int left = android.graphics.Rect.left, @Px int top = android.graphics.Rect.top, @Px int right = android.graphics.Rect.right, @Px int bottom = android.graphics.Rect.bottom);
-  }
-
-  public final class IconKt {
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toAdaptiveIcon(android.graphics.Bitmap);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.graphics.Bitmap);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.net.Uri);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(byte[]);
-  }
-
-}
-
-package androidx.core.location {
-
-  public final class LocationKt {
-    method public static inline operator double component1(android.location.Location);
-    method public static inline operator double component2(android.location.Location);
-  }
-
-}
-
-package androidx.core.net {
-
-  public final class UriKt {
-    method public static java.io.File toFile(android.net.Uri);
-    method public static inline android.net.Uri toUri(String);
-    method public static inline android.net.Uri toUri(java.io.File);
-  }
-
-}
-
-package androidx.core.os {
-
-  public final class BundleKt {
-    method public static android.os.Bundle bundleOf(kotlin.Pair<java.lang.String,?>... pairs);
-  }
-
-  public final class HandlerKt {
-    method public static inline Runnable postAtTime(android.os.Handler, long uptimeMillis, Object? token = null, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method public static inline Runnable postDelayed(android.os.Handler, long delayInMillis, Object? token = null, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-  }
-
-  public final class PersistableBundleKt {
-    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf(kotlin.Pair<java.lang.String,?>... pairs);
-  }
-
-  public final class TraceKt {
-    method public static inline <T> T! trace(String sectionName, kotlin.jvm.functions.Function0<? extends T> block);
-  }
-
-}
-
-package androidx.core.text {
-
-  public final class CharSequenceKt {
-    method public static inline boolean isDigitsOnly(CharSequence);
-    method public static inline int trimmedLength(CharSequence);
-  }
-
-  public final class HtmlKt {
-    method public static inline android.text.Spanned parseAsHtml(String, int flags = 0, android.text.Html.ImageGetter? imageGetter = null, android.text.Html.TagHandler? tagHandler = null);
-    method public static inline String toHtml(android.text.Spanned, int option = 0);
-  }
-
-  public final class LocaleKt {
-    method @RequiresApi(17) public static inline int getLayoutDirection(java.util.Locale);
-  }
-
-  public final class SpannableStringBuilderKt {
-    method public static inline android.text.SpannableStringBuilder backgroundColor(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder bold(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannedString buildSpannedString(kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder color(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object![] spans, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object span, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder italic(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder scale(android.text.SpannableStringBuilder, float proportion, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder strikeThrough(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder subscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder superscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder underline(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-  }
-
-  public final class SpannableStringKt {
-    method public static inline void clearSpans(android.text.Spannable);
-    method public static inline operator void set(android.text.Spannable, int start, int end, Object span);
-    method public static inline operator void set(android.text.Spannable, kotlin.ranges.IntRange range, Object span);
-    method public static inline android.text.Spannable toSpannable(CharSequence);
-  }
-
-  public final class SpannedStringKt {
-    method public static inline <reified T> T![] getSpans(android.text.Spanned, int start = 0, int end = length);
-    method public static inline android.text.Spanned toSpanned(CharSequence);
-  }
-
-  public final class StringKt {
-    method public static inline String htmlEncode(String);
-  }
-
-}
-
-package androidx.core.transition {
-
-  public final class TransitionKt {
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener addListener(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onEnd = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onStart = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onCancel = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onResume = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onPause = {});
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnCancel(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnEnd(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnPause(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnResume(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnStart(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.util {
-
-  public final class AtomicFileKt {
-    method @RequiresApi(17) public static inline byte[] readBytes(android.util.AtomicFile);
-    method @RequiresApi(17) public static String readText(android.util.AtomicFile, java.nio.charset.Charset charset = Charsets.UTF_8);
-    method @RequiresApi(17) public static inline void tryWrite(android.util.AtomicFile, kotlin.jvm.functions.Function1<? super java.io.FileOutputStream,kotlin.Unit> block);
-    method @RequiresApi(17) public static void writeBytes(android.util.AtomicFile, byte[] array);
-    method @RequiresApi(17) public static void writeText(android.util.AtomicFile, String text, java.nio.charset.Charset charset = Charsets.UTF_8);
-  }
-
-  public final class HalfKt {
-    method @RequiresApi(26) public static inline android.util.Half toHalf(@HalfFloat short);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(float);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(double);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(String);
-  }
-
-  public final class LongSparseArrayKt {
-    method @RequiresApi(16) public static inline operator <T> boolean contains(android.util.LongSparseArray<T>, long key);
-    method @RequiresApi(16) public static inline <T> boolean containsKey(android.util.LongSparseArray<T>, long key);
-    method @RequiresApi(16) public static inline <T> boolean containsValue(android.util.LongSparseArray<T>, T? value);
-    method @RequiresApi(16) public static inline <T> void forEach(android.util.LongSparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Long,? super T,kotlin.Unit> action);
-    method @RequiresApi(16) public static inline <T> T! getOrDefault(android.util.LongSparseArray<T>, long key, T? defaultValue);
-    method @RequiresApi(16) public static inline <T> T! getOrElse(android.util.LongSparseArray<T>, long key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
-    method @RequiresApi(16) public static inline <T> int getSize(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static inline <T> boolean isEmpty(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static inline <T> boolean isNotEmpty(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static <T> kotlin.collections.LongIterator keyIterator(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static operator <T> android.util.LongSparseArray<T> plus(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
-    method @RequiresApi(16) public static <T> void putAll(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
-    method @RequiresApi(16) public static <T> boolean remove(android.util.LongSparseArray<T>, long key, T? value);
-    method @RequiresApi(16) public static inline operator <T> void set(android.util.LongSparseArray<T>, long key, T? value);
-    method @RequiresApi(16) public static <T> java.util.Iterator<T> valueIterator(android.util.LongSparseArray<T>);
-  }
-
-  public final class LruCacheKt {
-    method public static inline <K, V> android.util.LruCache<K,V> lruCache(int maxSize, kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf = { _, _ -> 1 }, kotlin.jvm.functions.Function1<? super K,? extends V> create = { (V)null }, kotlin.jvm.functions.Function4<? super java.lang.Boolean,? super K,? super V,? super V,kotlin.Unit> onEntryRemoved = { _, _, _, _ ->  });
-  }
-
-  public final class PairKt {
-    method public static inline operator <F, S> F! component1(android.util.Pair<F,S>);
-    method public static inline operator <F, S> S! component2(android.util.Pair<F,S>);
-    method public static inline <F, S> android.util.Pair<F,S> toAndroidPair(kotlin.Pair<? extends F,? extends S>);
-    method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(android.util.Pair<F,S>);
-  }
-
-  public final class RangeKt {
-    method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> and(android.util.Range<T>, android.util.Range<T> other);
-    method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, T value);
-    method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, android.util.Range<T> other);
-    method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> rangeTo(T, T that);
-    method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> kotlin.ranges.ClosedRange<T> toClosedRange(android.util.Range<T>);
-    method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> android.util.Range<T> toRange(kotlin.ranges.ClosedRange<T>);
-  }
-
-  public final class SizeKt {
-    method @RequiresApi(21) public static inline operator int component1(android.util.Size);
-    method @RequiresApi(21) public static inline operator float component1(android.util.SizeF);
-    method @RequiresApi(21) public static inline operator int component2(android.util.Size);
-    method @RequiresApi(21) public static inline operator float component2(android.util.SizeF);
-  }
-
-  public final class SparseArrayKt {
-    method public static inline operator <T> boolean contains(android.util.SparseArray<T>, int key);
-    method public static inline <T> boolean containsKey(android.util.SparseArray<T>, int key);
-    method public static inline <T> boolean containsValue(android.util.SparseArray<T>, T? value);
-    method public static inline <T> void forEach(android.util.SparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,kotlin.Unit> action);
-    method public static inline <T> T! getOrDefault(android.util.SparseArray<T>, int key, T? defaultValue);
-    method public static inline <T> T! getOrElse(android.util.SparseArray<T>, int key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
-    method public static inline <T> int getSize(android.util.SparseArray<T>);
-    method public static inline <T> boolean isEmpty(android.util.SparseArray<T>);
-    method public static inline <T> boolean isNotEmpty(android.util.SparseArray<T>);
-    method public static <T> kotlin.collections.IntIterator keyIterator(android.util.SparseArray<T>);
-    method public static operator <T> android.util.SparseArray<T> plus(android.util.SparseArray<T>, android.util.SparseArray<T> other);
-    method public static <T> void putAll(android.util.SparseArray<T>, android.util.SparseArray<T> other);
-    method public static <T> boolean remove(android.util.SparseArray<T>, int key, T? value);
-    method public static inline operator <T> void set(android.util.SparseArray<T>, int key, T? value);
-    method public static <T> java.util.Iterator<T> valueIterator(android.util.SparseArray<T>);
-  }
-
-  public final class SparseBooleanArrayKt {
-    method public static inline operator boolean contains(android.util.SparseBooleanArray, int key);
-    method public static inline boolean containsKey(android.util.SparseBooleanArray, int key);
-    method public static inline boolean containsValue(android.util.SparseBooleanArray, boolean value);
-    method public static inline void forEach(android.util.SparseBooleanArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> action);
-    method public static inline boolean getOrDefault(android.util.SparseBooleanArray, int key, boolean defaultValue);
-    method public static inline boolean getOrElse(android.util.SparseBooleanArray, int key, kotlin.jvm.functions.Function0<java.lang.Boolean> defaultValue);
-    method public static inline int getSize(android.util.SparseBooleanArray);
-    method public static inline boolean isEmpty(android.util.SparseBooleanArray);
-    method public static inline boolean isNotEmpty(android.util.SparseBooleanArray);
-    method public static kotlin.collections.IntIterator keyIterator(android.util.SparseBooleanArray);
-    method public static operator android.util.SparseBooleanArray plus(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
-    method public static void putAll(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
-    method public static boolean remove(android.util.SparseBooleanArray, int key, boolean value);
-    method public static inline operator void set(android.util.SparseBooleanArray, int key, boolean value);
-    method public static kotlin.collections.BooleanIterator valueIterator(android.util.SparseBooleanArray);
-  }
-
-  public final class SparseIntArrayKt {
-    method public static inline operator boolean contains(android.util.SparseIntArray, int key);
-    method public static inline boolean containsKey(android.util.SparseIntArray, int key);
-    method public static inline boolean containsValue(android.util.SparseIntArray, int value);
-    method public static inline void forEach(android.util.SparseIntArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-    method public static inline int getOrDefault(android.util.SparseIntArray, int key, int defaultValue);
-    method public static inline int getOrElse(android.util.SparseIntArray, int key, kotlin.jvm.functions.Function0<java.lang.Integer> defaultValue);
-    method public static inline int getSize(android.util.SparseIntArray);
-    method public static inline boolean isEmpty(android.util.SparseIntArray);
-    method public static inline boolean isNotEmpty(android.util.SparseIntArray);
-    method public static kotlin.collections.IntIterator keyIterator(android.util.SparseIntArray);
-    method public static operator android.util.SparseIntArray plus(android.util.SparseIntArray, android.util.SparseIntArray other);
-    method public static void putAll(android.util.SparseIntArray, android.util.SparseIntArray other);
-    method public static boolean remove(android.util.SparseIntArray, int key, int value);
-    method public static inline operator void set(android.util.SparseIntArray, int key, int value);
-    method public static kotlin.collections.IntIterator valueIterator(android.util.SparseIntArray);
-  }
-
-  public final class SparseLongArrayKt {
-    method @RequiresApi(18) public static inline operator boolean contains(android.util.SparseLongArray, int key);
-    method @RequiresApi(18) public static inline boolean containsKey(android.util.SparseLongArray, int key);
-    method @RequiresApi(18) public static inline boolean containsValue(android.util.SparseLongArray, long value);
-    method @RequiresApi(18) public static inline void forEach(android.util.SparseLongArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Long,kotlin.Unit> action);
-    method @RequiresApi(18) public static inline long getOrDefault(android.util.SparseLongArray, int key, long defaultValue);
-    method @RequiresApi(18) public static inline long getOrElse(android.util.SparseLongArray, int key, kotlin.jvm.functions.Function0<java.lang.Long> defaultValue);
-    method @RequiresApi(18) public static inline int getSize(android.util.SparseLongArray);
-    method @RequiresApi(18) public static inline boolean isEmpty(android.util.SparseLongArray);
-    method @RequiresApi(18) public static inline boolean isNotEmpty(android.util.SparseLongArray);
-    method @RequiresApi(18) public static kotlin.collections.IntIterator keyIterator(android.util.SparseLongArray);
-    method @RequiresApi(18) public static operator android.util.SparseLongArray plus(android.util.SparseLongArray, android.util.SparseLongArray other);
-    method @RequiresApi(18) public static void putAll(android.util.SparseLongArray, android.util.SparseLongArray other);
-    method @RequiresApi(18) public static boolean remove(android.util.SparseLongArray, int key, long value);
-    method @RequiresApi(18) public static inline operator void set(android.util.SparseLongArray, int key, long value);
-    method @RequiresApi(18) public static kotlin.collections.LongIterator valueIterator(android.util.SparseLongArray);
-  }
-
-}
-
-package androidx.core.view {
-
-  public final class MenuKt {
-    method public static operator boolean contains(android.view.Menu, android.view.MenuItem item);
-    method public static inline void forEach(android.view.Menu, kotlin.jvm.functions.Function1<? super android.view.MenuItem,kotlin.Unit> action);
-    method public static inline void forEachIndexed(android.view.Menu, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.MenuItem,kotlin.Unit> action);
-    method public static inline operator android.view.MenuItem get(android.view.Menu, int index);
-    method public static kotlin.sequences.Sequence<android.view.MenuItem> getChildren(android.view.Menu);
-    method public static inline int getSize(android.view.Menu);
-    method public static inline boolean isEmpty(android.view.Menu);
-    method public static inline boolean isNotEmpty(android.view.Menu);
-    method public static operator java.util.Iterator<android.view.MenuItem> iterator(android.view.Menu);
-    method public static inline operator void minusAssign(android.view.Menu, android.view.MenuItem item);
-  }
-
-  public final class ViewGroupKt {
-    method public static inline operator boolean contains(android.view.ViewGroup, android.view.View view);
-    method public static inline void forEach(android.view.ViewGroup, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void forEachIndexed(android.view.ViewGroup, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.View,kotlin.Unit> action);
-    method public static operator android.view.View get(android.view.ViewGroup, int index);
-    method public static kotlin.sequences.Sequence<android.view.View> getChildren(android.view.ViewGroup);
-    method public static inline int getSize(android.view.ViewGroup);
-    method public static inline boolean isEmpty(android.view.ViewGroup);
-    method public static inline boolean isNotEmpty(android.view.ViewGroup);
-    method public static operator java.util.Iterator<android.view.View> iterator(android.view.ViewGroup);
-    method public static inline operator void minusAssign(android.view.ViewGroup, android.view.View view);
-    method public static inline operator void plusAssign(android.view.ViewGroup, android.view.View view);
-    method public static inline void setMargins(android.view.ViewGroup.MarginLayoutParams, @Px int size);
-    method public static inline void updateMargins(android.view.ViewGroup.MarginLayoutParams, @Px int left = android.view.ViewGroup.MarginLayoutParams.leftMargin, @Px int top = android.view.ViewGroup.MarginLayoutParams.topMargin, @Px int right = android.view.ViewGroup.MarginLayoutParams.rightMargin, @Px int bottom = android.view.ViewGroup.MarginLayoutParams.bottomMargin);
-    method @RequiresApi(17) public static inline void updateMarginsRelative(android.view.ViewGroup.MarginLayoutParams, @Px int start = marginStart, @Px int top = android.view.ViewGroup.MarginLayoutParams.topMargin, @Px int end = marginEnd, @Px int bottom = android.view.ViewGroup.MarginLayoutParams.bottomMargin);
-  }
-
-  public final class ViewKt {
-    method public static inline void doOnAttach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnDetach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnNextLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline androidx.core.view.OneShotPreDrawListener doOnPreDraw(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static android.graphics.Bitmap drawToBitmap(android.view.View, android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888);
-    method public static inline int getMarginBottom(android.view.View);
-    method public static inline int getMarginEnd(android.view.View);
-    method public static inline int getMarginLeft(android.view.View);
-    method public static inline int getMarginRight(android.view.View);
-    method public static inline int getMarginStart(android.view.View);
-    method public static inline int getMarginTop(android.view.View);
-    method public static inline boolean isGone(android.view.View);
-    method public static inline boolean isInvisible(android.view.View);
-    method public static inline boolean isVisible(android.view.View);
-    method public static inline Runnable postDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method @RequiresApi(16) public static inline Runnable postOnAnimationDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method public static inline void setGone(android.view.View, boolean value);
-    method public static inline void setInvisible(android.view.View, boolean value);
-    method public static inline void setPadding(android.view.View, @Px int size);
-    method public static inline void setVisible(android.view.View, boolean value);
-    method public static inline void updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super android.view.ViewGroup.LayoutParams,kotlin.Unit> block);
-    method public static inline <reified T extends android.view.ViewGroup.LayoutParams> void updateLayoutParamsTyped(android.view.View, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
-    method public static inline void updatePadding(android.view.View, @Px int left = paddingLeft, @Px int top = paddingTop, @Px int right = paddingRight, @Px int bottom = paddingBottom);
-    method @RequiresApi(17) public static inline void updatePaddingRelative(android.view.View, @Px int start = paddingStart, @Px int top = paddingTop, @Px int end = paddingEnd, @Px int bottom = paddingBottom);
-  }
-
-}
-
-package androidx.core.widget {
-
-  public final class TextViewKt {
-    method public static inline android.text.TextWatcher addTextChangedListener(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> beforeTextChanged = { _, _, _, _ ->  }, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> onTextChanged = { _, _, _, _ ->  }, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> afterTextChanged = {});
-    method public static inline android.text.TextWatcher doAfterTextChanged(android.widget.TextView, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> action);
-    method public static inline android.text.TextWatcher doBeforeTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-    method public static inline android.text.TextWatcher doOnTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-  }
-
-}
-
diff --git a/core/core-ktx/api/res-1.3.0-rc01.txt b/core/core-ktx/api/res-1.3.0-rc01.txt
deleted file mode 100644
index e69de29..0000000
--- a/core/core-ktx/api/res-1.3.0-rc01.txt
+++ /dev/null
diff --git a/core/core-ktx/api/restricted_1.3.0-rc01.txt b/core/core-ktx/api/restricted_1.3.0-rc01.txt
deleted file mode 100644
index cb5c321..0000000
--- a/core/core-ktx/api/restricted_1.3.0-rc01.txt
+++ /dev/null
@@ -1,599 +0,0 @@
-// Signature format: 3.0
-package androidx.core.animation {
-
-  public final class AnimatorKt {
-    method public static inline android.animation.Animator.AnimatorListener addListener(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onEnd = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onStart = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onCancel = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onRepeat = {});
-    method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener addPauseListener(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onResume = {}, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onPause = {});
-    method public static inline android.animation.Animator.AnimatorListener doOnCancel(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnEnd(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnPause(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnRepeat(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnResume(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnStart(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.content {
-
-  public final class ContentValuesKt {
-    method public static android.content.ContentValues contentValuesOf(kotlin.Pair<java.lang.String,?>... pairs);
-  }
-
-  public final class ContextKt {
-    method public static inline <reified T> T! getSystemService(android.content.Context);
-    method public static inline void withStyledAttributes(android.content.Context, android.util.AttributeSet? set = null, int[] attrs, @AttrRes int defStyleAttr = 0, @StyleRes int defStyleRes = 0, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
-    method public static inline void withStyledAttributes(android.content.Context, @StyleRes int resourceId, int[] attrs, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
-  }
-
-  public final class SharedPreferencesKt {
-    method public static inline void edit(android.content.SharedPreferences, boolean commit = false, kotlin.jvm.functions.Function1<? super android.content.SharedPreferences.Editor,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.content.res {
-
-  public final class TypedArrayKt {
-    method public static boolean getBooleanOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @ColorInt public static int getColorOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static android.content.res.ColorStateList getColorStateListOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static float getDimensionOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @Dimension public static int getDimensionPixelOffsetOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @Dimension public static int getDimensionPixelSizeOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static android.graphics.drawable.Drawable getDrawableOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static float getFloatOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @RequiresApi(26) public static android.graphics.Typeface getFontOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static int getIntOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static int getIntegerOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @AnyRes public static int getResourceIdOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static String getStringOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static CharSequence![] getTextArrayOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static CharSequence getTextOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static inline <R> R! use(android.content.res.TypedArray, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,? extends R> block);
-  }
-
-}
-
-package androidx.core.database {
-
-  public final class CursorKt {
-    method public static inline byte[]? getBlobOrNull(android.database.Cursor, int index);
-    method public static inline Double? getDoubleOrNull(android.database.Cursor, int index);
-    method public static inline Float? getFloatOrNull(android.database.Cursor, int index);
-    method public static inline Integer? getIntOrNull(android.database.Cursor, int index);
-    method public static inline Long? getLongOrNull(android.database.Cursor, int index);
-    method public static inline Short? getShortOrNull(android.database.Cursor, int index);
-    method public static inline String? getStringOrNull(android.database.Cursor, int index);
-  }
-
-}
-
-package androidx.core.database.sqlite {
-
-  public final class SQLiteDatabaseKt {
-    method public static inline <T> T! transaction(android.database.sqlite.SQLiteDatabase, boolean exclusive = true, kotlin.jvm.functions.Function1<? super android.database.sqlite.SQLiteDatabase,? extends T> body);
-  }
-
-}
-
-package androidx.core.graphics {
-
-  public final class BitmapKt {
-    method public static inline android.graphics.Bitmap applyCanvas(android.graphics.Bitmap, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.Point p);
-    method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.PointF p);
-    method public static inline android.graphics.Bitmap createBitmap(int width, int height, android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888);
-    method @RequiresApi(26) public static inline android.graphics.Bitmap createBitmap(int width, int height, android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888, boolean hasAlpha = true, android.graphics.ColorSpace colorSpace = ColorSpace.get(ColorSpace.Named.SRGB));
-    method public static inline operator int get(android.graphics.Bitmap, int x, int y);
-    method public static inline android.graphics.Bitmap scale(android.graphics.Bitmap, int width, int height, boolean filter = true);
-    method public static inline operator void set(android.graphics.Bitmap, int x, int y, @ColorInt int color);
-  }
-
-  public final class CanvasKt {
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.Rect clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.RectF clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, int left, int top, int right, int bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, float left, float top, float right, float bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.Path clipPath, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withMatrix(android.graphics.Canvas, android.graphics.Matrix matrix = android.graphics.Matrix(), kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withRotation(android.graphics.Canvas, float degrees = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withSave(android.graphics.Canvas, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withScale(android.graphics.Canvas, float x = 1.0f, float y = 1.0f, float pivotX = 0.0f, float pivotY = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withSkew(android.graphics.Canvas, float x = 0.0f, float y = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withTranslation(android.graphics.Canvas, float x = 0.0f, float y = 0.0f, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-  }
-
-  public final class ColorKt {
-    method @RequiresApi(26) public static inline operator float component1(android.graphics.Color);
-    method public static inline operator int component1(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component1(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component2(android.graphics.Color);
-    method public static inline operator int component2(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component2(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component3(android.graphics.Color);
-    method public static inline operator int component3(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component3(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component4(android.graphics.Color);
-    method public static inline operator int component4(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component4(@ColorLong long);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace.Named colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace.Named colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace colorSpace);
-    method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace.Named colorSpace);
-    method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace colorSpace);
-    method public static inline int getAlpha(@ColorInt int);
-    method @RequiresApi(26) public static inline float getAlpha(@ColorLong long);
-    method public static inline int getBlue(@ColorInt int);
-    method @RequiresApi(26) public static inline float getBlue(@ColorLong long);
-    method @RequiresApi(26) public static inline android.graphics.ColorSpace getColorSpace(@ColorLong long);
-    method public static inline int getGreen(@ColorInt int);
-    method @RequiresApi(26) public static inline float getGreen(@ColorLong long);
-    method @RequiresApi(26) public static inline float getLuminance(@ColorInt int);
-    method @RequiresApi(26) public static inline float getLuminance(@ColorLong long);
-    method public static inline int getRed(@ColorInt int);
-    method @RequiresApi(26) public static inline float getRed(@ColorLong long);
-    method @RequiresApi(26) public static inline boolean isSrgb(@ColorLong long);
-    method @RequiresApi(26) public static inline boolean isWideGamut(@ColorLong long);
-    method @RequiresApi(26) public static operator android.graphics.Color plus(android.graphics.Color, android.graphics.Color c);
-    method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorInt int);
-    method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorLong long);
-    method @ColorInt @RequiresApi(26) public static inline int toColorInt(@ColorLong long);
-    method @ColorInt public static inline int toColorInt(String);
-    method @ColorLong @RequiresApi(26) public static inline long toColorLong(@ColorInt int);
-  }
-
-  public final class ImageDecoderKt {
-    method @RequiresApi(28) public static inline android.graphics.Bitmap decodeBitmap(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
-    method @RequiresApi(28) public static inline android.graphics.drawable.Drawable decodeDrawable(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
-  }
-
-  public final class MatrixKt {
-    method public static android.graphics.Matrix rotationMatrix(float degrees, float px = 0.0f, float py = 0.0f);
-    method public static android.graphics.Matrix scaleMatrix(float sx = 1.0f, float sy = 1.0f);
-    method public static inline operator android.graphics.Matrix times(android.graphics.Matrix, android.graphics.Matrix m);
-    method public static android.graphics.Matrix translationMatrix(float tx = 0.0f, float ty = 0.0f);
-    method public static inline float[] values(android.graphics.Matrix);
-  }
-
-  public final class PaintKt {
-    method public static inline boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat? blendModeCompat);
-  }
-
-  public final class PathKt {
-    method @RequiresApi(19) public static inline infix android.graphics.Path and(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(26) public static Iterable<androidx.core.graphics.PathSegment> flatten(android.graphics.Path, float error = 0.5f);
-    method @RequiresApi(19) public static inline operator android.graphics.Path minus(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline infix android.graphics.Path or(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline operator android.graphics.Path plus(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline infix android.graphics.Path xor(android.graphics.Path, android.graphics.Path p);
-  }
-
-  public final class PictureKt {
-    method public static inline android.graphics.Picture record(android.graphics.Picture, int width, int height, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-  }
-
-  public final class PointKt {
-    method public static inline operator int component1(android.graphics.Point);
-    method public static inline operator float component1(android.graphics.PointF);
-    method public static inline operator int component2(android.graphics.Point);
-    method public static inline operator float component2(android.graphics.PointF);
-    method public static inline operator android.graphics.Point minus(android.graphics.Point, android.graphics.Point p);
-    method public static inline operator android.graphics.PointF minus(android.graphics.PointF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Point minus(android.graphics.Point, int xy);
-    method public static inline operator android.graphics.PointF minus(android.graphics.PointF, float xy);
-    method public static inline operator android.graphics.Point plus(android.graphics.Point, android.graphics.Point p);
-    method public static inline operator android.graphics.PointF plus(android.graphics.PointF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Point plus(android.graphics.Point, int xy);
-    method public static inline operator android.graphics.PointF plus(android.graphics.PointF, float xy);
-    method public static inline android.graphics.Point toPoint(android.graphics.PointF);
-    method public static inline android.graphics.PointF toPointF(android.graphics.Point);
-    method public static inline operator android.graphics.Point unaryMinus(android.graphics.Point);
-    method public static inline operator android.graphics.PointF unaryMinus(android.graphics.PointF);
-  }
-
-  public final class PorterDuffKt {
-    method public static inline android.graphics.PorterDuffColorFilter toColorFilter(android.graphics.PorterDuff.Mode, int color);
-    method public static inline android.graphics.PorterDuffXfermode toXfermode(android.graphics.PorterDuff.Mode);
-  }
-
-  public final class RectKt {
-    method public static inline infix android.graphics.Rect and(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.RectF and(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator int component1(android.graphics.Rect);
-    method public static inline operator float component1(android.graphics.RectF);
-    method public static inline operator int component2(android.graphics.Rect);
-    method public static inline operator float component2(android.graphics.RectF);
-    method public static inline operator int component3(android.graphics.Rect);
-    method public static inline operator float component3(android.graphics.RectF);
-    method public static inline operator int component4(android.graphics.Rect);
-    method public static inline operator float component4(android.graphics.RectF);
-    method public static inline operator boolean contains(android.graphics.Rect, android.graphics.Point p);
-    method public static inline operator boolean contains(android.graphics.RectF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Region minus(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region minus(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect minus(android.graphics.Rect, int xy);
-    method public static inline operator android.graphics.RectF minus(android.graphics.RectF, float xy);
-    method public static inline operator android.graphics.Rect minus(android.graphics.Rect, android.graphics.Point xy);
-    method public static inline operator android.graphics.RectF minus(android.graphics.RectF, android.graphics.PointF xy);
-    method public static inline infix android.graphics.Rect or(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.RectF or(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, int xy);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, float xy);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Point xy);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.PointF xy);
-    method public static inline operator android.graphics.Rect times(android.graphics.Rect, int factor);
-    method public static inline operator android.graphics.RectF times(android.graphics.RectF, int factor);
-    method public static inline operator android.graphics.RectF times(android.graphics.RectF, float factor);
-    method public static inline android.graphics.Rect toRect(android.graphics.RectF);
-    method public static inline android.graphics.RectF toRectF(android.graphics.Rect);
-    method public static inline android.graphics.Region toRegion(android.graphics.Rect);
-    method public static inline android.graphics.Region toRegion(android.graphics.RectF);
-    method public static inline android.graphics.RectF transform(android.graphics.RectF, android.graphics.Matrix m);
-    method public static inline infix android.graphics.Region xor(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region xor(android.graphics.RectF, android.graphics.RectF r);
-  }
-
-  public final class RegionKt {
-    method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator boolean contains(android.graphics.Region, android.graphics.Point p);
-    method public static inline void forEach(android.graphics.Region, kotlin.jvm.functions.Function1<? super android.graphics.Rect,kotlin.Unit> action);
-    method public static operator java.util.Iterator<android.graphics.Rect> iterator(android.graphics.Region);
-    method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region not(android.graphics.Region);
-    method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region unaryMinus(android.graphics.Region);
-    method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Region r);
-  }
-
-  public final class ShaderKt {
-    method public static inline void transform(android.graphics.Shader, kotlin.jvm.functions.Function1<? super android.graphics.Matrix,kotlin.Unit> block);
-  }
-
-}
-
-package androidx.core.graphics.drawable {
-
-  public final class BitmapDrawableKt {
-    method public static inline android.graphics.drawable.BitmapDrawable toDrawable(android.graphics.Bitmap, android.content.res.Resources resources);
-  }
-
-  public final class ColorDrawableKt {
-    method public static inline android.graphics.drawable.ColorDrawable toDrawable(@ColorInt int);
-    method @RequiresApi(26) public static inline android.graphics.drawable.ColorDrawable toDrawable(android.graphics.Color);
-  }
-
-  public final class DrawableKt {
-    method public static android.graphics.Bitmap toBitmap(android.graphics.drawable.Drawable, @Px int width = intrinsicWidth, @Px int height = intrinsicHeight, android.graphics.Bitmap.Config? config = null);
-    method public static void updateBounds(android.graphics.drawable.Drawable, @Px int left = android.graphics.Rect.left, @Px int top = android.graphics.Rect.top, @Px int right = android.graphics.Rect.right, @Px int bottom = android.graphics.Rect.bottom);
-  }
-
-  public final class IconKt {
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toAdaptiveIcon(android.graphics.Bitmap);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.graphics.Bitmap);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.net.Uri);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(byte[]);
-  }
-
-}
-
-package androidx.core.location {
-
-  public final class LocationKt {
-    method public static inline operator double component1(android.location.Location);
-    method public static inline operator double component2(android.location.Location);
-  }
-
-}
-
-package androidx.core.net {
-
-  public final class UriKt {
-    method public static java.io.File toFile(android.net.Uri);
-    method public static inline android.net.Uri toUri(String);
-    method public static inline android.net.Uri toUri(java.io.File);
-  }
-
-}
-
-package androidx.core.os {
-
-  public final class BundleKt {
-    method public static android.os.Bundle bundleOf(kotlin.Pair<java.lang.String,?>... pairs);
-  }
-
-  public final class HandlerKt {
-    method public static inline Runnable postAtTime(android.os.Handler, long uptimeMillis, Object? token = null, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method public static inline Runnable postDelayed(android.os.Handler, long delayInMillis, Object? token = null, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-  }
-
-  public final class PersistableBundleKt {
-    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf(kotlin.Pair<java.lang.String,?>... pairs);
-  }
-
-  public final class TraceKt {
-    method public static inline <T> T! trace(String sectionName, kotlin.jvm.functions.Function0<? extends T> block);
-  }
-
-}
-
-package androidx.core.text {
-
-  public final class CharSequenceKt {
-    method public static inline boolean isDigitsOnly(CharSequence);
-    method public static inline int trimmedLength(CharSequence);
-  }
-
-  public final class HtmlKt {
-    method public static inline android.text.Spanned parseAsHtml(String, int flags = 0, android.text.Html.ImageGetter? imageGetter = null, android.text.Html.TagHandler? tagHandler = null);
-    method public static inline String toHtml(android.text.Spanned, int option = 0);
-  }
-
-  public final class LocaleKt {
-    method @RequiresApi(17) public static inline int getLayoutDirection(java.util.Locale);
-  }
-
-  public final class SpannableStringBuilderKt {
-    method public static inline android.text.SpannableStringBuilder backgroundColor(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder bold(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannedString buildSpannedString(kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder color(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object![] spans, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object span, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder italic(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder scale(android.text.SpannableStringBuilder, float proportion, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder strikeThrough(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder subscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder superscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder underline(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-  }
-
-  public final class SpannableStringKt {
-    method public static inline void clearSpans(android.text.Spannable);
-    method public static inline operator void set(android.text.Spannable, int start, int end, Object span);
-    method public static inline operator void set(android.text.Spannable, kotlin.ranges.IntRange range, Object span);
-    method public static inline android.text.Spannable toSpannable(CharSequence);
-  }
-
-  public final class SpannedStringKt {
-    method public static inline <reified T> T![] getSpans(android.text.Spanned, int start = 0, int end = length);
-    method public static inline android.text.Spanned toSpanned(CharSequence);
-  }
-
-  public final class StringKt {
-    method public static inline String htmlEncode(String);
-  }
-
-}
-
-package androidx.core.transition {
-
-  public final class TransitionKt {
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener addListener(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onEnd = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onStart = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onCancel = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onResume = {}, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onPause = {});
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnCancel(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnEnd(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnPause(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnResume(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnStart(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.util {
-
-  public final class AtomicFileKt {
-    method @RequiresApi(17) public static inline byte[] readBytes(android.util.AtomicFile);
-    method @RequiresApi(17) public static String readText(android.util.AtomicFile, java.nio.charset.Charset charset = Charsets.UTF_8);
-    method @RequiresApi(17) public static inline void tryWrite(android.util.AtomicFile, kotlin.jvm.functions.Function1<? super java.io.FileOutputStream,kotlin.Unit> block);
-    method @RequiresApi(17) public static void writeBytes(android.util.AtomicFile, byte[] array);
-    method @RequiresApi(17) public static void writeText(android.util.AtomicFile, String text, java.nio.charset.Charset charset = Charsets.UTF_8);
-  }
-
-  public final class HalfKt {
-    method @RequiresApi(26) public static inline android.util.Half toHalf(@HalfFloat short);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(float);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(double);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(String);
-  }
-
-  public final class LongSparseArrayKt {
-    method @RequiresApi(16) public static inline operator <T> boolean contains(android.util.LongSparseArray<T>, long key);
-    method @RequiresApi(16) public static inline <T> boolean containsKey(android.util.LongSparseArray<T>, long key);
-    method @RequiresApi(16) public static inline <T> boolean containsValue(android.util.LongSparseArray<T>, T? value);
-    method @RequiresApi(16) public static inline <T> void forEach(android.util.LongSparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Long,? super T,kotlin.Unit> action);
-    method @RequiresApi(16) public static inline <T> T! getOrDefault(android.util.LongSparseArray<T>, long key, T? defaultValue);
-    method @RequiresApi(16) public static inline <T> T! getOrElse(android.util.LongSparseArray<T>, long key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
-    method @RequiresApi(16) public static inline <T> int getSize(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static inline <T> boolean isEmpty(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static inline <T> boolean isNotEmpty(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static <T> kotlin.collections.LongIterator keyIterator(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static operator <T> android.util.LongSparseArray<T> plus(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
-    method @RequiresApi(16) public static <T> void putAll(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
-    method @RequiresApi(16) public static <T> boolean remove(android.util.LongSparseArray<T>, long key, T? value);
-    method @RequiresApi(16) public static inline operator <T> void set(android.util.LongSparseArray<T>, long key, T? value);
-    method @RequiresApi(16) public static <T> java.util.Iterator<T> valueIterator(android.util.LongSparseArray<T>);
-  }
-
-  public final class LruCacheKt {
-    method public static inline <K, V> android.util.LruCache<K,V> lruCache(int maxSize, kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf = { _, _ -> 1 }, kotlin.jvm.functions.Function1<? super K,? extends V> create = { (V)null }, kotlin.jvm.functions.Function4<? super java.lang.Boolean,? super K,? super V,? super V,kotlin.Unit> onEntryRemoved = { _, _, _, _ ->  });
-  }
-
-  public final class PairKt {
-    method public static inline operator <F, S> F! component1(android.util.Pair<F,S>);
-    method public static inline operator <F, S> S! component2(android.util.Pair<F,S>);
-    method public static inline <F, S> android.util.Pair<F,S> toAndroidPair(kotlin.Pair<? extends F,? extends S>);
-    method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(android.util.Pair<F,S>);
-  }
-
-  public final class RangeKt {
-    method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> and(android.util.Range<T>, android.util.Range<T> other);
-    method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, T value);
-    method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, android.util.Range<T> other);
-    method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> rangeTo(T, T that);
-    method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> kotlin.ranges.ClosedRange<T> toClosedRange(android.util.Range<T>);
-    method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> android.util.Range<T> toRange(kotlin.ranges.ClosedRange<T>);
-  }
-
-  public final class SizeKt {
-    method @RequiresApi(21) public static inline operator int component1(android.util.Size);
-    method @RequiresApi(21) public static inline operator float component1(android.util.SizeF);
-    method @RequiresApi(21) public static inline operator int component2(android.util.Size);
-    method @RequiresApi(21) public static inline operator float component2(android.util.SizeF);
-  }
-
-  public final class SparseArrayKt {
-    method public static inline operator <T> boolean contains(android.util.SparseArray<T>, int key);
-    method public static inline <T> boolean containsKey(android.util.SparseArray<T>, int key);
-    method public static inline <T> boolean containsValue(android.util.SparseArray<T>, T? value);
-    method public static inline <T> void forEach(android.util.SparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,kotlin.Unit> action);
-    method public static inline <T> T! getOrDefault(android.util.SparseArray<T>, int key, T? defaultValue);
-    method public static inline <T> T! getOrElse(android.util.SparseArray<T>, int key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
-    method public static inline <T> int getSize(android.util.SparseArray<T>);
-    method public static inline <T> boolean isEmpty(android.util.SparseArray<T>);
-    method public static inline <T> boolean isNotEmpty(android.util.SparseArray<T>);
-    method public static <T> kotlin.collections.IntIterator keyIterator(android.util.SparseArray<T>);
-    method public static operator <T> android.util.SparseArray<T> plus(android.util.SparseArray<T>, android.util.SparseArray<T> other);
-    method public static <T> void putAll(android.util.SparseArray<T>, android.util.SparseArray<T> other);
-    method public static <T> boolean remove(android.util.SparseArray<T>, int key, T? value);
-    method public static inline operator <T> void set(android.util.SparseArray<T>, int key, T? value);
-    method public static <T> java.util.Iterator<T> valueIterator(android.util.SparseArray<T>);
-  }
-
-  public final class SparseBooleanArrayKt {
-    method public static inline operator boolean contains(android.util.SparseBooleanArray, int key);
-    method public static inline boolean containsKey(android.util.SparseBooleanArray, int key);
-    method public static inline boolean containsValue(android.util.SparseBooleanArray, boolean value);
-    method public static inline void forEach(android.util.SparseBooleanArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> action);
-    method public static inline boolean getOrDefault(android.util.SparseBooleanArray, int key, boolean defaultValue);
-    method public static inline boolean getOrElse(android.util.SparseBooleanArray, int key, kotlin.jvm.functions.Function0<java.lang.Boolean> defaultValue);
-    method public static inline int getSize(android.util.SparseBooleanArray);
-    method public static inline boolean isEmpty(android.util.SparseBooleanArray);
-    method public static inline boolean isNotEmpty(android.util.SparseBooleanArray);
-    method public static kotlin.collections.IntIterator keyIterator(android.util.SparseBooleanArray);
-    method public static operator android.util.SparseBooleanArray plus(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
-    method public static void putAll(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
-    method public static boolean remove(android.util.SparseBooleanArray, int key, boolean value);
-    method public static inline operator void set(android.util.SparseBooleanArray, int key, boolean value);
-    method public static kotlin.collections.BooleanIterator valueIterator(android.util.SparseBooleanArray);
-  }
-
-  public final class SparseIntArrayKt {
-    method public static inline operator boolean contains(android.util.SparseIntArray, int key);
-    method public static inline boolean containsKey(android.util.SparseIntArray, int key);
-    method public static inline boolean containsValue(android.util.SparseIntArray, int value);
-    method public static inline void forEach(android.util.SparseIntArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-    method public static inline int getOrDefault(android.util.SparseIntArray, int key, int defaultValue);
-    method public static inline int getOrElse(android.util.SparseIntArray, int key, kotlin.jvm.functions.Function0<java.lang.Integer> defaultValue);
-    method public static inline int getSize(android.util.SparseIntArray);
-    method public static inline boolean isEmpty(android.util.SparseIntArray);
-    method public static inline boolean isNotEmpty(android.util.SparseIntArray);
-    method public static kotlin.collections.IntIterator keyIterator(android.util.SparseIntArray);
-    method public static operator android.util.SparseIntArray plus(android.util.SparseIntArray, android.util.SparseIntArray other);
-    method public static void putAll(android.util.SparseIntArray, android.util.SparseIntArray other);
-    method public static boolean remove(android.util.SparseIntArray, int key, int value);
-    method public static inline operator void set(android.util.SparseIntArray, int key, int value);
-    method public static kotlin.collections.IntIterator valueIterator(android.util.SparseIntArray);
-  }
-
-  public final class SparseLongArrayKt {
-    method @RequiresApi(18) public static inline operator boolean contains(android.util.SparseLongArray, int key);
-    method @RequiresApi(18) public static inline boolean containsKey(android.util.SparseLongArray, int key);
-    method @RequiresApi(18) public static inline boolean containsValue(android.util.SparseLongArray, long value);
-    method @RequiresApi(18) public static inline void forEach(android.util.SparseLongArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Long,kotlin.Unit> action);
-    method @RequiresApi(18) public static inline long getOrDefault(android.util.SparseLongArray, int key, long defaultValue);
-    method @RequiresApi(18) public static inline long getOrElse(android.util.SparseLongArray, int key, kotlin.jvm.functions.Function0<java.lang.Long> defaultValue);
-    method @RequiresApi(18) public static inline int getSize(android.util.SparseLongArray);
-    method @RequiresApi(18) public static inline boolean isEmpty(android.util.SparseLongArray);
-    method @RequiresApi(18) public static inline boolean isNotEmpty(android.util.SparseLongArray);
-    method @RequiresApi(18) public static kotlin.collections.IntIterator keyIterator(android.util.SparseLongArray);
-    method @RequiresApi(18) public static operator android.util.SparseLongArray plus(android.util.SparseLongArray, android.util.SparseLongArray other);
-    method @RequiresApi(18) public static void putAll(android.util.SparseLongArray, android.util.SparseLongArray other);
-    method @RequiresApi(18) public static boolean remove(android.util.SparseLongArray, int key, long value);
-    method @RequiresApi(18) public static inline operator void set(android.util.SparseLongArray, int key, long value);
-    method @RequiresApi(18) public static kotlin.collections.LongIterator valueIterator(android.util.SparseLongArray);
-  }
-
-}
-
-package androidx.core.view {
-
-  public final class MenuKt {
-    method public static operator boolean contains(android.view.Menu, android.view.MenuItem item);
-    method public static inline void forEach(android.view.Menu, kotlin.jvm.functions.Function1<? super android.view.MenuItem,kotlin.Unit> action);
-    method public static inline void forEachIndexed(android.view.Menu, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.MenuItem,kotlin.Unit> action);
-    method public static inline operator android.view.MenuItem get(android.view.Menu, int index);
-    method public static kotlin.sequences.Sequence<android.view.MenuItem> getChildren(android.view.Menu);
-    method public static inline int getSize(android.view.Menu);
-    method public static inline boolean isEmpty(android.view.Menu);
-    method public static inline boolean isNotEmpty(android.view.Menu);
-    method public static operator java.util.Iterator<android.view.MenuItem> iterator(android.view.Menu);
-    method public static inline operator void minusAssign(android.view.Menu, android.view.MenuItem item);
-  }
-
-  public final class ViewGroupKt {
-    method public static inline operator boolean contains(android.view.ViewGroup, android.view.View view);
-    method public static inline void forEach(android.view.ViewGroup, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void forEachIndexed(android.view.ViewGroup, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.View,kotlin.Unit> action);
-    method public static operator android.view.View get(android.view.ViewGroup, int index);
-    method public static kotlin.sequences.Sequence<android.view.View> getChildren(android.view.ViewGroup);
-    method public static inline int getSize(android.view.ViewGroup);
-    method public static inline boolean isEmpty(android.view.ViewGroup);
-    method public static inline boolean isNotEmpty(android.view.ViewGroup);
-    method public static operator java.util.Iterator<android.view.View> iterator(android.view.ViewGroup);
-    method public static inline operator void minusAssign(android.view.ViewGroup, android.view.View view);
-    method public static inline operator void plusAssign(android.view.ViewGroup, android.view.View view);
-    method public static inline void setMargins(android.view.ViewGroup.MarginLayoutParams, @Px int size);
-    method public static inline void updateMargins(android.view.ViewGroup.MarginLayoutParams, @Px int left = android.view.ViewGroup.MarginLayoutParams.leftMargin, @Px int top = android.view.ViewGroup.MarginLayoutParams.topMargin, @Px int right = android.view.ViewGroup.MarginLayoutParams.rightMargin, @Px int bottom = android.view.ViewGroup.MarginLayoutParams.bottomMargin);
-    method @RequiresApi(17) public static inline void updateMarginsRelative(android.view.ViewGroup.MarginLayoutParams, @Px int start = marginStart, @Px int top = android.view.ViewGroup.MarginLayoutParams.topMargin, @Px int end = marginEnd, @Px int bottom = android.view.ViewGroup.MarginLayoutParams.bottomMargin);
-  }
-
-  public final class ViewKt {
-    method public static inline void doOnAttach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnDetach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnNextLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline androidx.core.view.OneShotPreDrawListener doOnPreDraw(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static android.graphics.Bitmap drawToBitmap(android.view.View, android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888);
-    method public static inline int getMarginBottom(android.view.View);
-    method public static inline int getMarginEnd(android.view.View);
-    method public static inline int getMarginLeft(android.view.View);
-    method public static inline int getMarginRight(android.view.View);
-    method public static inline int getMarginStart(android.view.View);
-    method public static inline int getMarginTop(android.view.View);
-    method public static inline boolean isGone(android.view.View);
-    method public static inline boolean isInvisible(android.view.View);
-    method public static inline boolean isVisible(android.view.View);
-    method public static inline Runnable postDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method @RequiresApi(16) public static inline Runnable postOnAnimationDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method public static inline void setGone(android.view.View, boolean value);
-    method public static inline void setInvisible(android.view.View, boolean value);
-    method public static inline void setPadding(android.view.View, @Px int size);
-    method public static inline void setVisible(android.view.View, boolean value);
-    method public static inline void updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super android.view.ViewGroup.LayoutParams,kotlin.Unit> block);
-    method public static inline <reified T extends android.view.ViewGroup.LayoutParams> void updateLayoutParamsTyped(android.view.View, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
-    method public static inline void updatePadding(android.view.View, @Px int left = paddingLeft, @Px int top = paddingTop, @Px int right = paddingRight, @Px int bottom = paddingBottom);
-    method @RequiresApi(17) public static inline void updatePaddingRelative(android.view.View, @Px int start = paddingStart, @Px int top = paddingTop, @Px int end = paddingEnd, @Px int bottom = paddingBottom);
-  }
-
-}
-
-package androidx.core.widget {
-
-  public final class TextViewKt {
-    method public static inline android.text.TextWatcher addTextChangedListener(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> beforeTextChanged = { _, _, _, _ ->  }, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> onTextChanged = { _, _, _, _ ->  }, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> afterTextChanged = {});
-    method public static inline android.text.TextWatcher doAfterTextChanged(android.widget.TextView, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> action);
-    method public static inline android.text.TextWatcher doBeforeTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-    method public static inline android.text.TextWatcher doOnTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-  }
-
-}
-
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/util/SparseArrayTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/util/SparseArrayTest.kt
index 8274f62..d3d2a2c 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/util/SparseArrayTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/util/SparseArrayTest.kt
@@ -24,6 +24,7 @@
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertSame
 import org.junit.Assert.assertTrue
+import org.junit.Ignore
 import org.junit.Test
 
 @SmallTest
@@ -35,6 +36,7 @@
         assertEquals(1, array.size)
     }
 
+    @Ignore("SparseArray.contains exists in R, need to work out what to do")
     @Test fun containsOperator() {
         val array = SparseArray<String>()
         assertFalse(1 in array)
@@ -42,6 +44,7 @@
         assertTrue(1 in array)
     }
 
+    @Ignore("SparseArray.contains exists in R, need to work out what to do")
     @Test fun containsOperatorWithItem() {
         val array = SparseArray<String>()
 
diff --git a/core/core-ktx/src/main/java/androidx/core/util/SparseArray.kt b/core/core-ktx/src/main/java/androidx/core/util/SparseArray.kt
index d7ea73c..f379be8 100644
--- a/core/core-ktx/src/main/java/androidx/core/util/SparseArray.kt
+++ b/core/core-ktx/src/main/java/androidx/core/util/SparseArray.kt
@@ -24,6 +24,7 @@
 inline val <T> SparseArray<T>.size get() = size()
 
 /** Returns true if the collection contains [key]. */
+@Suppress("EXTENSION_SHADOWED_BY_MEMBER") /* contains() added in R */
 inline operator fun <T> SparseArray<T>.contains(key: Int) = indexOfKey(key) >= 0
 
 /** Allows the use of the index operator for storing values in the collection. */
diff --git a/core/core/api/1.3.0-alpha01.txt b/core/core/api/1.3.0-alpha01.txt
index fb79d53..7191ad6 100644
--- a/core/core/api/1.3.0-alpha01.txt
+++ b/core/core/api/1.3.0-alpha01.txt
@@ -872,9 +872,11 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
+    field public static final String EXTRA_TIME = "android.intent.extra.TIME";
   }
 
   public final class MimeTypeFilter {
@@ -1254,8 +1256,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1340,6 +1377,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -2102,6 +2144,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2192,6 +2235,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, int);
     method public static void setScrollIndicators(android.view.View, int, int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2413,6 +2457,7 @@
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2496,6 +2541,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2585,6 +2631,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
diff --git a/core/core/api/1.3.0-alpha02.txt b/core/core/api/1.3.0-alpha02.txt
index acf1e95..d914a98 100644
--- a/core/core/api/1.3.0-alpha02.txt
+++ b/core/core/api/1.3.0-alpha02.txt
@@ -396,7 +396,8 @@
     method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method @Deprecated public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person);
     method public android.app.Notification! build();
     method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
     method public android.os.Bundle! getExtras();
@@ -439,6 +440,7 @@
     method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
     method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
     method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
     method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
@@ -872,9 +874,11 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
+    field public static final String EXTRA_TIME = "android.intent.extra.TIME";
   }
 
   public final class MimeTypeFilter {
@@ -923,12 +927,24 @@
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
     method public CharSequence? getDisabledMessage();
+    method public int getDisabledReason();
+    method public android.os.PersistableBundle? getExtras();
     method public String getId();
     method public android.content.Intent getIntent();
     method public android.content.Intent![] getIntents();
+    method public long getLastChangedTimestamp();
     method public CharSequence? getLongLabel();
+    method public String getPackage();
     method public int getRank();
     method public CharSequence getShortLabel();
+    method public android.os.UserHandle? getUserHandle();
+    method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
+    method public boolean isDeclaredInManifest();
+    method public boolean isDynamic();
+    method public boolean isEnabled();
+    method public boolean isImmutable();
+    method public boolean isPinned();
     method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
   }
 
@@ -939,6 +955,7 @@
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
@@ -954,14 +971,22 @@
   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);
+    method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+    method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
+    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, int);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
     method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
   }
 
 }
@@ -1254,8 +1279,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1340,6 +1400,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -2103,6 +2168,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2193,6 +2259,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, int);
     method public static void setScrollIndicators(android.view.View, int, int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2414,6 +2481,7 @@
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2497,6 +2565,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2586,6 +2655,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
@@ -2606,6 +2676,7 @@
     field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
     field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
     field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
     field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -2667,6 +2738,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
diff --git a/core/core/api/1.3.0-alpha03.txt b/core/core/api/1.3.0-alpha03.txt
index d11d0f1..af511db 100644
--- a/core/core/api/1.3.0-alpha03.txt
+++ b/core/core/api/1.3.0-alpha03.txt
@@ -396,7 +396,8 @@
     method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method @Deprecated public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person);
     method public android.app.Notification! build();
     method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
     method public android.os.Bundle! getExtras();
@@ -439,6 +440,7 @@
     method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
     method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
     method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
     method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
@@ -872,7 +874,9 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+    field public static final String EXTRA_EPOCH_TIME = "android.intent.extra.EPOCH_TIME";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
   }
@@ -923,12 +927,24 @@
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
     method public CharSequence? getDisabledMessage();
+    method public int getDisabledReason();
+    method public android.os.PersistableBundle? getExtras();
     method public String getId();
     method public android.content.Intent getIntent();
     method public android.content.Intent![] getIntents();
+    method public long getLastChangedTimestamp();
     method public CharSequence? getLongLabel();
+    method public String getPackage();
     method public int getRank();
     method public CharSequence getShortLabel();
+    method public android.os.UserHandle? getUserHandle();
+    method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
+    method public boolean isDeclaredInManifest();
+    method public boolean isDynamic();
+    method public boolean isEnabled();
+    method public boolean isImmutable();
+    method public boolean isPinned();
     method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
   }
 
@@ -939,6 +955,7 @@
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
@@ -954,14 +971,22 @@
   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);
+    method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+    method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
+    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, int);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
     method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
   }
 
 }
@@ -1254,8 +1279,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1340,6 +1400,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -2104,6 +2169,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2194,6 +2260,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, int);
     method public static void setScrollIndicators(android.view.View, int, int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2417,6 +2484,7 @@
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2500,6 +2568,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2589,6 +2658,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
@@ -2609,6 +2679,7 @@
     field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
     field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
     field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
     field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -2670,6 +2741,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
diff --git a/core/core/api/1.3.0-rc01.txt b/core/core/api/1.3.0-rc01.txt
deleted file mode 100644
index 727e60a..0000000
--- a/core/core/api/1.3.0-rc01.txt
+++ /dev/null
@@ -1,3126 +0,0 @@
-// Signature format: 3.0
-package androidx.core.accessibilityservice {
-
-  public final class AccessibilityServiceInfoCompat {
-    method public static String capabilityToString(int);
-    method public static String feedbackTypeToString(int);
-    method public static String? flagToString(int);
-    method public static int getCapabilities(android.accessibilityservice.AccessibilityServiceInfo);
-    method public static String? loadDescription(android.accessibilityservice.AccessibilityServiceInfo, android.content.pm.PackageManager);
-    field public static final int CAPABILITY_CAN_FILTER_KEY_EVENTS = 8; // 0x8
-    field public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
-    field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
-    field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
-    field public static final int FEEDBACK_ALL_MASK = -1; // 0xffffffff
-    field public static final int FEEDBACK_BRAILLE = 32; // 0x20
-    field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
-    field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
-    field public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
-    field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
-    field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
-  }
-
-}
-
-package androidx.core.app {
-
-  public class ActivityCompat extends androidx.core.content.ContextCompat {
-    ctor protected ActivityCompat();
-    method public static void finishAffinity(android.app.Activity);
-    method public static void finishAfterTransition(android.app.Activity);
-    method public static android.net.Uri? getReferrer(android.app.Activity);
-    method @Deprecated public static boolean invalidateOptionsMenu(android.app.Activity!);
-    method public static void postponeEnterTransition(android.app.Activity);
-    method public static void recreate(android.app.Activity);
-    method public static androidx.core.view.DragAndDropPermissionsCompat? requestDragAndDropPermissions(android.app.Activity!, android.view.DragEvent!);
-    method public static void requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
-    method public static <T extends android.view.View> T requireViewById(android.app.Activity, @IdRes int);
-    method public static void setEnterSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
-    method public static void setExitSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
-    method public static void setPermissionCompatDelegate(androidx.core.app.ActivityCompat.PermissionCompatDelegate?);
-    method public static boolean shouldShowRequestPermissionRationale(android.app.Activity, String);
-    method public static void startActivityForResult(android.app.Activity, android.content.Intent, int, android.os.Bundle?);
-    method public static void startIntentSenderForResult(android.app.Activity, android.content.IntentSender, int, android.content.Intent?, int, int, int, android.os.Bundle?) throws android.content.IntentSender.SendIntentException;
-    method public static void startPostponedEnterTransition(android.app.Activity);
-  }
-
-  public static interface ActivityCompat.OnRequestPermissionsResultCallback {
-    method public void onRequestPermissionsResult(int, String![], int[]);
-  }
-
-  public static interface ActivityCompat.PermissionCompatDelegate {
-    method public boolean onActivityResult(android.app.Activity, @IntRange(from=0) int, int, android.content.Intent?);
-    method public boolean requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
-  }
-
-  public final class ActivityManagerCompat {
-    method public static boolean isLowRamDevice(android.app.ActivityManager);
-  }
-
-  public class ActivityOptionsCompat {
-    ctor protected ActivityOptionsCompat();
-    method public android.graphics.Rect? getLaunchBounds();
-    method public static androidx.core.app.ActivityOptionsCompat makeBasic();
-    method public static androidx.core.app.ActivityOptionsCompat makeClipRevealAnimation(android.view.View, int, int, int, int);
-    method public static androidx.core.app.ActivityOptionsCompat makeCustomAnimation(android.content.Context, int, int);
-    method public static androidx.core.app.ActivityOptionsCompat makeScaleUpAnimation(android.view.View, int, int, int, int);
-    method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, android.view.View, String);
-    method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, androidx.core.util.Pair<android.view.View!,java.lang.String!>!...);
-    method public static androidx.core.app.ActivityOptionsCompat makeTaskLaunchBehind();
-    method public static androidx.core.app.ActivityOptionsCompat makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
-    method public void requestUsageTimeReport(android.app.PendingIntent);
-    method public androidx.core.app.ActivityOptionsCompat setLaunchBounds(android.graphics.Rect?);
-    method public android.os.Bundle? toBundle();
-    method public void update(androidx.core.app.ActivityOptionsCompat);
-    field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
-    field public static final String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
-  }
-
-  public final class AlarmManagerCompat {
-    method public static void setAlarmClock(android.app.AlarmManager, long, android.app.PendingIntent, android.app.PendingIntent);
-    method public static void setAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
-    method public static void setExact(android.app.AlarmManager, int, long, android.app.PendingIntent);
-    method public static void setExactAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
-  }
-
-  @RequiresApi(28) public class AppComponentFactory extends android.app.AppComponentFactory {
-    ctor public AppComponentFactory();
-    method public final android.app.Activity instantiateActivity(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Activity instantiateActivityCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.app.Application instantiateApplication(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Application instantiateApplicationCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.content.ContentProvider instantiateProvider(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.content.ContentProvider instantiateProviderCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.content.BroadcastReceiver instantiateReceiver(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.content.BroadcastReceiver instantiateReceiverCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.app.Service instantiateService(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Service instantiateServiceCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-  }
-
-  public class AppLaunchChecker {
-    ctor @Deprecated public AppLaunchChecker();
-    method public static boolean hasStartedFromLauncher(android.content.Context);
-    method public static void onActivityCreate(android.app.Activity);
-  }
-
-  public final class AppOpsManagerCompat {
-    method public static int noteOp(android.content.Context, String, int, String);
-    method public static int noteOpNoThrow(android.content.Context, String, int, String);
-    method public static int noteProxyOp(android.content.Context, String, String);
-    method public static int noteProxyOpNoThrow(android.content.Context, String, String);
-    method public static String? permissionToOp(String);
-    field public static final int MODE_ALLOWED = 0; // 0x0
-    field public static final int MODE_DEFAULT = 3; // 0x3
-    field public static final int MODE_ERRORED = 2; // 0x2
-    field public static final int MODE_IGNORED = 1; // 0x1
-  }
-
-  public final class BundleCompat {
-    method public static android.os.IBinder? getBinder(android.os.Bundle, String?);
-    method public static void putBinder(android.os.Bundle, String?, android.os.IBinder?);
-  }
-
-  public class DialogCompat {
-    method public static android.view.View requireViewById(android.app.Dialog, int);
-  }
-
-  public class FrameMetricsAggregator {
-    ctor public FrameMetricsAggregator();
-    ctor public FrameMetricsAggregator(int);
-    method public void add(android.app.Activity);
-    method public android.util.SparseIntArray![]? getMetrics();
-    method public android.util.SparseIntArray![]? remove(android.app.Activity);
-    method public android.util.SparseIntArray![]? reset();
-    method public android.util.SparseIntArray![]? stop();
-    field public static final int ANIMATION_DURATION = 256; // 0x100
-    field public static final int ANIMATION_INDEX = 8; // 0x8
-    field public static final int COMMAND_DURATION = 32; // 0x20
-    field public static final int COMMAND_INDEX = 5; // 0x5
-    field public static final int DELAY_DURATION = 128; // 0x80
-    field public static final int DELAY_INDEX = 7; // 0x7
-    field public static final int DRAW_DURATION = 8; // 0x8
-    field public static final int DRAW_INDEX = 3; // 0x3
-    field public static final int EVERY_DURATION = 511; // 0x1ff
-    field public static final int INPUT_DURATION = 2; // 0x2
-    field public static final int INPUT_INDEX = 1; // 0x1
-    field public static final int LAYOUT_MEASURE_DURATION = 4; // 0x4
-    field public static final int LAYOUT_MEASURE_INDEX = 2; // 0x2
-    field public static final int SWAP_DURATION = 64; // 0x40
-    field public static final int SWAP_INDEX = 6; // 0x6
-    field public static final int SYNC_DURATION = 16; // 0x10
-    field public static final int SYNC_INDEX = 4; // 0x4
-    field public static final int TOTAL_DURATION = 1; // 0x1
-    field public static final int TOTAL_INDEX = 0; // 0x0
-  }
-
-  public abstract class JobIntentService extends android.app.Service {
-    ctor public JobIntentService();
-    method public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
-    method public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
-    method public boolean isStopped();
-    method public android.os.IBinder! onBind(android.content.Intent);
-    method protected abstract void onHandleWork(android.content.Intent);
-    method public boolean onStopCurrentWork();
-    method public void setInterruptIfStopped(boolean);
-  }
-
-  public final class NavUtils {
-    method public static android.content.Intent? getParentActivityIntent(android.app.Activity);
-    method public static android.content.Intent? getParentActivityIntent(android.content.Context, Class<?>) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static android.content.Intent? getParentActivityIntent(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static String? getParentActivityName(android.app.Activity);
-    method public static String? getParentActivityName(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static void navigateUpFromSameTask(android.app.Activity);
-    method public static void navigateUpTo(android.app.Activity, android.content.Intent);
-    method public static boolean shouldUpRecreateTask(android.app.Activity, android.content.Intent);
-    field public static final String PARENT_ACTIVITY = "android.support.PARENT_ACTIVITY";
-  }
-
-  public class NotificationCompat {
-    ctor @Deprecated public NotificationCompat();
-    method public static androidx.core.app.NotificationCompat.Action! getAction(android.app.Notification!, int);
-    method public static int getActionCount(android.app.Notification!);
-    method public static boolean getAllowSystemGeneratedContextualActions(android.app.Notification!);
-    method public static int getBadgeIconType(android.app.Notification!);
-    method public static androidx.core.app.NotificationCompat.BubbleMetadata? getBubbleMetadata(android.app.Notification);
-    method public static String! getCategory(android.app.Notification!);
-    method public static String! getChannelId(android.app.Notification!);
-    method @RequiresApi(19) public static CharSequence! getContentTitle(android.app.Notification!);
-    method public static android.os.Bundle? getExtras(android.app.Notification!);
-    method public static String! getGroup(android.app.Notification!);
-    method public static int getGroupAlertBehavior(android.app.Notification!);
-    method @RequiresApi(21) public static java.util.List<androidx.core.app.NotificationCompat.Action!>! getInvisibleActions(android.app.Notification!);
-    method public static boolean getLocalOnly(android.app.Notification!);
-    method public static String! getShortcutId(android.app.Notification!);
-    method public static String! getSortKey(android.app.Notification!);
-    method public static long getTimeoutAfter(android.app.Notification!);
-    method public static boolean isGroupSummary(android.app.Notification!);
-    field public static final int BADGE_ICON_LARGE = 2; // 0x2
-    field public static final int BADGE_ICON_NONE = 0; // 0x0
-    field public static final int BADGE_ICON_SMALL = 1; // 0x1
-    field public static final String CATEGORY_ALARM = "alarm";
-    field public static final String CATEGORY_CALL = "call";
-    field public static final String CATEGORY_EMAIL = "email";
-    field public static final String CATEGORY_ERROR = "err";
-    field public static final String CATEGORY_EVENT = "event";
-    field public static final String CATEGORY_MESSAGE = "msg";
-    field public static final String CATEGORY_NAVIGATION = "navigation";
-    field public static final String CATEGORY_PROGRESS = "progress";
-    field public static final String CATEGORY_PROMO = "promo";
-    field public static final String CATEGORY_RECOMMENDATION = "recommendation";
-    field public static final String CATEGORY_REMINDER = "reminder";
-    field public static final String CATEGORY_SERVICE = "service";
-    field public static final String CATEGORY_SOCIAL = "social";
-    field public static final String CATEGORY_STATUS = "status";
-    field public static final String CATEGORY_SYSTEM = "sys";
-    field public static final String CATEGORY_TRANSPORT = "transport";
-    field @ColorInt public static final int COLOR_DEFAULT = 0; // 0x0
-    field public static final int DEFAULT_ALL = -1; // 0xffffffff
-    field public static final int DEFAULT_LIGHTS = 4; // 0x4
-    field public static final int DEFAULT_SOUND = 1; // 0x1
-    field public static final int DEFAULT_VIBRATE = 2; // 0x2
-    field public static final String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
-    field public static final String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
-    field public static final String EXTRA_BIG_TEXT = "android.bigText";
-    field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
-    field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
-    field public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
-    field public static final String EXTRA_HIDDEN_CONVERSATION_TITLE = "android.hiddenConversationTitle";
-    field public static final String EXTRA_INFO_TEXT = "android.infoText";
-    field public static final String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
-    field public static final String EXTRA_LARGE_ICON = "android.largeIcon";
-    field public static final String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
-    field public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
-    field public static final String EXTRA_MESSAGES = "android.messages";
-    field public static final String EXTRA_MESSAGING_STYLE_USER = "android.messagingStyleUser";
-    field public static final String EXTRA_PEOPLE = "android.people";
-    field public static final String EXTRA_PICTURE = "android.picture";
-    field public static final String EXTRA_PROGRESS = "android.progress";
-    field public static final String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
-    field public static final String EXTRA_PROGRESS_MAX = "android.progressMax";
-    field public static final String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
-    field public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
-    field public static final String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
-    field public static final String EXTRA_SHOW_WHEN = "android.showWhen";
-    field public static final String EXTRA_SMALL_ICON = "android.icon";
-    field public static final String EXTRA_SUB_TEXT = "android.subText";
-    field public static final String EXTRA_SUMMARY_TEXT = "android.summaryText";
-    field public static final String EXTRA_TEMPLATE = "android.template";
-    field public static final String EXTRA_TEXT = "android.text";
-    field public static final String EXTRA_TEXT_LINES = "android.textLines";
-    field public static final String EXTRA_TITLE = "android.title";
-    field public static final String EXTRA_TITLE_BIG = "android.title.big";
-    field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
-    field public static final int FLAG_BUBBLE = 4096; // 0x1000
-    field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
-    field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
-    field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
-    field public static final int FLAG_INSISTENT = 4; // 0x4
-    field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
-    field public static final int FLAG_NO_CLEAR = 32; // 0x20
-    field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
-    field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
-    field public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
-    field public static final int GROUP_ALERT_ALL = 0; // 0x0
-    field public static final int GROUP_ALERT_CHILDREN = 2; // 0x2
-    field public static final int GROUP_ALERT_SUMMARY = 1; // 0x1
-    field public static final String GROUP_KEY_SILENT = "silent";
-    field public static final int PRIORITY_DEFAULT = 0; // 0x0
-    field public static final int PRIORITY_HIGH = 1; // 0x1
-    field public static final int PRIORITY_LOW = -1; // 0xffffffff
-    field public static final int PRIORITY_MAX = 2; // 0x2
-    field public static final int PRIORITY_MIN = -2; // 0xfffffffe
-    field public static final int STREAM_DEFAULT = -1; // 0xffffffff
-    field public static final int VISIBILITY_PRIVATE = 0; // 0x0
-    field public static final int VISIBILITY_PUBLIC = 1; // 0x1
-    field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
-  }
-
-  public static class NotificationCompat.Action {
-    ctor public NotificationCompat.Action(int, CharSequence!, android.app.PendingIntent!);
-    ctor public NotificationCompat.Action(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
-    method public android.app.PendingIntent! getActionIntent();
-    method public boolean getAllowGeneratedReplies();
-    method public androidx.core.app.RemoteInput![]! getDataOnlyRemoteInputs();
-    method public android.os.Bundle! getExtras();
-    method @Deprecated public int getIcon();
-    method public androidx.core.graphics.drawable.IconCompat? getIconCompat();
-    method public androidx.core.app.RemoteInput![]! getRemoteInputs();
-    method @androidx.core.app.NotificationCompat.Action.SemanticAction public int getSemanticAction();
-    method public boolean getShowsUserInterface();
-    method public CharSequence! getTitle();
-    method public boolean isContextual();
-    field public static final int SEMANTIC_ACTION_ARCHIVE = 5; // 0x5
-    field public static final int SEMANTIC_ACTION_CALL = 10; // 0xa
-    field public static final int SEMANTIC_ACTION_DELETE = 4; // 0x4
-    field public static final int SEMANTIC_ACTION_MARK_AS_READ = 2; // 0x2
-    field public static final int SEMANTIC_ACTION_MARK_AS_UNREAD = 3; // 0x3
-    field public static final int SEMANTIC_ACTION_MUTE = 6; // 0x6
-    field public static final int SEMANTIC_ACTION_NONE = 0; // 0x0
-    field public static final int SEMANTIC_ACTION_REPLY = 1; // 0x1
-    field public static final int SEMANTIC_ACTION_THUMBS_DOWN = 9; // 0x9
-    field public static final int SEMANTIC_ACTION_THUMBS_UP = 8; // 0x8
-    field public static final int SEMANTIC_ACTION_UNMUTE = 7; // 0x7
-    field public android.app.PendingIntent! actionIntent;
-    field @Deprecated public int icon;
-    field public CharSequence! title;
-  }
-
-  public static final class NotificationCompat.Action.Builder {
-    ctor public NotificationCompat.Action.Builder(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
-    ctor public NotificationCompat.Action.Builder(int, CharSequence!, android.app.PendingIntent!);
-    ctor public NotificationCompat.Action.Builder(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Action.Builder! addExtras(android.os.Bundle!);
-    method public androidx.core.app.NotificationCompat.Action.Builder! addRemoteInput(androidx.core.app.RemoteInput!);
-    method public androidx.core.app.NotificationCompat.Action! build();
-    method public androidx.core.app.NotificationCompat.Action.Builder! extend(androidx.core.app.NotificationCompat.Action.Extender!);
-    method public android.os.Bundle! getExtras();
-    method public androidx.core.app.NotificationCompat.Action.Builder! setAllowGeneratedReplies(boolean);
-    method public androidx.core.app.NotificationCompat.Action.Builder setContextual(boolean);
-    method public androidx.core.app.NotificationCompat.Action.Builder! setSemanticAction(@androidx.core.app.NotificationCompat.Action.SemanticAction int);
-    method public androidx.core.app.NotificationCompat.Action.Builder! setShowsUserInterface(boolean);
-  }
-
-  public static interface NotificationCompat.Action.Extender {
-    method public androidx.core.app.NotificationCompat.Action.Builder! extend(androidx.core.app.NotificationCompat.Action.Builder!);
-  }
-
-  @IntDef({androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_NONE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_REPLY, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_UNREAD, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_DELETE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_ARCHIVE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_UNMUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_UP, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_DOWN, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_CALL}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.Action.SemanticAction {
-  }
-
-  public static final class NotificationCompat.Action.WearableExtender implements androidx.core.app.NotificationCompat.Action.Extender {
-    ctor public NotificationCompat.Action.WearableExtender();
-    ctor public NotificationCompat.Action.WearableExtender(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! clone();
-    method public androidx.core.app.NotificationCompat.Action.Builder! extend(androidx.core.app.NotificationCompat.Action.Builder!);
-    method @Deprecated public CharSequence! getCancelLabel();
-    method @Deprecated public CharSequence! getConfirmLabel();
-    method public boolean getHintDisplayActionInline();
-    method public boolean getHintLaunchesActivity();
-    method @Deprecated public CharSequence! getInProgressLabel();
-    method public boolean isAvailableOffline();
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! setAvailableOffline(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender! setCancelLabel(CharSequence!);
-    method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender! setConfirmLabel(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! setHintDisplayActionInline(boolean);
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! setHintLaunchesActivity(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender! setInProgressLabel(CharSequence!);
-  }
-
-  public static class NotificationCompat.BigPictureStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.BigPictureStyle();
-    ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! bigLargeIcon(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! bigPicture(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! setBigContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! setSummaryText(CharSequence!);
-  }
-
-  public static class NotificationCompat.BigTextStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.BigTextStyle();
-    ctor public NotificationCompat.BigTextStyle(androidx.core.app.NotificationCompat.Builder!);
-    method public androidx.core.app.NotificationCompat.BigTextStyle! bigText(CharSequence!);
-    method public androidx.core.app.NotificationCompat.BigTextStyle! setBigContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.BigTextStyle! setSummaryText(CharSequence!);
-  }
-
-  public static final class NotificationCompat.BubbleMetadata {
-    method @RequiresApi(29) public static androidx.core.app.NotificationCompat.BubbleMetadata? fromPlatform(android.app.Notification.BubbleMetadata?);
-    method public boolean getAutoExpandBubble();
-    method public android.app.PendingIntent? getDeleteIntent();
-    method @Dimension(unit=androidx.annotation.Dimension.DP) public int getDesiredHeight();
-    method @DimenRes public int getDesiredHeightResId();
-    method public androidx.core.graphics.drawable.IconCompat getIcon();
-    method public android.app.PendingIntent getIntent();
-    method public boolean isNotificationSuppressed();
-    method @RequiresApi(29) public static android.app.Notification.BubbleMetadata? toPlatform(androidx.core.app.NotificationCompat.BubbleMetadata?);
-  }
-
-  public static final class NotificationCompat.BubbleMetadata.Builder {
-    ctor public NotificationCompat.BubbleMetadata.Builder();
-    method public androidx.core.app.NotificationCompat.BubbleMetadata build();
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setAutoExpandBubble(boolean);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDeleteIntent(android.app.PendingIntent?);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeight(@Dimension(unit=androidx.annotation.Dimension.DP) int);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeightResId(@DimenRes int);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIcon(androidx.core.graphics.drawable.IconCompat);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIntent(android.app.PendingIntent);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setSuppressNotification(boolean);
-  }
-
-  public static class NotificationCompat.Builder {
-    ctor public NotificationCompat.Builder(android.content.Context, String);
-    ctor @Deprecated public NotificationCompat.Builder(android.content.Context!);
-    method public androidx.core.app.NotificationCompat.Builder! addAction(int, CharSequence!, android.app.PendingIntent!);
-    method public androidx.core.app.NotificationCompat.Builder! addAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
-    method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
-    method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
-    method public android.app.Notification! build();
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
-    method public android.os.Bundle! getExtras();
-    method @Deprecated public android.app.Notification! getNotification();
-    method protected static CharSequence! limitCharSequenceLength(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder setAllowSystemGeneratedContextualActions(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setAutoCancel(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setBadgeIconType(int);
-    method public androidx.core.app.NotificationCompat.Builder setBubbleMetadata(androidx.core.app.NotificationCompat.BubbleMetadata?);
-    method public androidx.core.app.NotificationCompat.Builder! setCategory(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setChannelId(String);
-    method @RequiresApi(24) public androidx.core.app.NotificationCompat.Builder setChronometerCountDown(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setColor(@ColorInt int);
-    method public androidx.core.app.NotificationCompat.Builder! setColorized(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setContent(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentInfo(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentIntent(android.app.PendingIntent!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentText(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setCustomBigContentView(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setCustomContentView(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setCustomHeadsUpContentView(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setDefaults(int);
-    method public androidx.core.app.NotificationCompat.Builder! setDeleteIntent(android.app.PendingIntent!);
-    method public androidx.core.app.NotificationCompat.Builder! setExtras(android.os.Bundle!);
-    method public androidx.core.app.NotificationCompat.Builder! setFullScreenIntent(android.app.PendingIntent!, boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setGroup(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setGroupAlertBehavior(int);
-    method public androidx.core.app.NotificationCompat.Builder! setGroupSummary(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setLargeIcon(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.Builder! setLights(@ColorInt int, int, int);
-    method public androidx.core.app.NotificationCompat.Builder! setLocalOnly(boolean);
-    method public androidx.core.app.NotificationCompat.Builder setNotificationSilent();
-    method public androidx.core.app.NotificationCompat.Builder! setNumber(int);
-    method public androidx.core.app.NotificationCompat.Builder! setOngoing(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setOnlyAlertOnce(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setPriority(int);
-    method public androidx.core.app.NotificationCompat.Builder! setProgress(int, int, boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setPublicVersion(android.app.Notification!);
-    method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
-    method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
-    method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
-    method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setSound(android.net.Uri!);
-    method public androidx.core.app.NotificationCompat.Builder! setSound(android.net.Uri!, int);
-    method public androidx.core.app.NotificationCompat.Builder! setStyle(androidx.core.app.NotificationCompat.Style!);
-    method public androidx.core.app.NotificationCompat.Builder! setSubText(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setTicker(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setTicker(CharSequence!, android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setTimeoutAfter(long);
-    method public androidx.core.app.NotificationCompat.Builder! setUsesChronometer(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setVibrate(long[]!);
-    method public androidx.core.app.NotificationCompat.Builder! setVisibility(int);
-    method public androidx.core.app.NotificationCompat.Builder! setWhen(long);
-    field @Deprecated public java.util.ArrayList<java.lang.String!>! mPeople;
-  }
-
-  public static final class NotificationCompat.CarExtender implements androidx.core.app.NotificationCompat.Extender {
-    ctor public NotificationCompat.CarExtender();
-    ctor public NotificationCompat.CarExtender(android.app.Notification!);
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Builder!);
-    method @ColorInt public int getColor();
-    method public android.graphics.Bitmap! getLargeIcon();
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation! getUnreadConversation();
-    method public androidx.core.app.NotificationCompat.CarExtender! setColor(@ColorInt int);
-    method public androidx.core.app.NotificationCompat.CarExtender! setLargeIcon(android.graphics.Bitmap!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender! setUnreadConversation(androidx.core.app.NotificationCompat.CarExtender.UnreadConversation!);
-  }
-
-  @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation {
-    method @Deprecated public long getLatestTimestamp();
-    method @Deprecated public String![]! getMessages();
-    method @Deprecated public String! getParticipant();
-    method @Deprecated public String![]! getParticipants();
-    method @Deprecated public android.app.PendingIntent! getReadPendingIntent();
-    method @Deprecated public androidx.core.app.RemoteInput! getRemoteInput();
-    method @Deprecated public android.app.PendingIntent! getReplyPendingIntent();
-  }
-
-  @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation.Builder {
-    ctor @Deprecated public NotificationCompat.CarExtender.UnreadConversation.Builder(String!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! addMessage(String!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation! build();
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! setLatestTimestamp(long);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! setReadPendingIntent(android.app.PendingIntent!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! setReplyAction(android.app.PendingIntent!, androidx.core.app.RemoteInput!);
-  }
-
-  public static class NotificationCompat.DecoratedCustomViewStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.DecoratedCustomViewStyle();
-  }
-
-  public static interface NotificationCompat.Extender {
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Builder!);
-  }
-
-  public static class NotificationCompat.InboxStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.InboxStyle();
-    ctor public NotificationCompat.InboxStyle(androidx.core.app.NotificationCompat.Builder!);
-    method public androidx.core.app.NotificationCompat.InboxStyle! addLine(CharSequence!);
-    method public androidx.core.app.NotificationCompat.InboxStyle! setBigContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.InboxStyle! setSummaryText(CharSequence!);
-  }
-
-  public static class NotificationCompat.MessagingStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor @Deprecated public NotificationCompat.MessagingStyle(CharSequence);
-    ctor public NotificationCompat.MessagingStyle(androidx.core.app.Person);
-    method public void addCompatExtras(android.os.Bundle!);
-    method @Deprecated public androidx.core.app.NotificationCompat.MessagingStyle! addMessage(CharSequence!, long, CharSequence!);
-    method public androidx.core.app.NotificationCompat.MessagingStyle! addMessage(CharSequence!, long, androidx.core.app.Person!);
-    method public androidx.core.app.NotificationCompat.MessagingStyle! addMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message!);
-    method public static androidx.core.app.NotificationCompat.MessagingStyle? extractMessagingStyleFromNotification(android.app.Notification!);
-    method public CharSequence? getConversationTitle();
-    method public java.util.List<androidx.core.app.NotificationCompat.MessagingStyle.Message!>! getMessages();
-    method public androidx.core.app.Person! getUser();
-    method @Deprecated public CharSequence! getUserDisplayName();
-    method public boolean isGroupConversation();
-    method public androidx.core.app.NotificationCompat.MessagingStyle! setConversationTitle(CharSequence?);
-    method public androidx.core.app.NotificationCompat.MessagingStyle! setGroupConversation(boolean);
-    field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
-  }
-
-  public static final class NotificationCompat.MessagingStyle.Message {
-    ctor public NotificationCompat.MessagingStyle.Message(CharSequence!, long, androidx.core.app.Person?);
-    ctor @Deprecated public NotificationCompat.MessagingStyle.Message(CharSequence!, long, CharSequence!);
-    method public String? getDataMimeType();
-    method public android.net.Uri? getDataUri();
-    method public android.os.Bundle getExtras();
-    method public androidx.core.app.Person? getPerson();
-    method @Deprecated public CharSequence? getSender();
-    method public CharSequence getText();
-    method public long getTimestamp();
-    method public androidx.core.app.NotificationCompat.MessagingStyle.Message! setData(String!, android.net.Uri!);
-  }
-
-  public abstract static class NotificationCompat.Style {
-    ctor public NotificationCompat.Style();
-    method public android.app.Notification! build();
-    method public void setBuilder(androidx.core.app.NotificationCompat.Builder!);
-  }
-
-  public static final class NotificationCompat.WearableExtender implements androidx.core.app.NotificationCompat.Extender {
-    ctor public NotificationCompat.WearableExtender();
-    ctor public NotificationCompat.WearableExtender(android.app.Notification!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! addAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! addActions(java.util.List<androidx.core.app.NotificationCompat.Action!>!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! addPage(android.app.Notification!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! addPages(java.util.List<android.app.Notification!>!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! clearActions();
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! clearPages();
-    method public androidx.core.app.NotificationCompat.WearableExtender! clone();
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Builder!);
-    method public java.util.List<androidx.core.app.NotificationCompat.Action!>! getActions();
-    method @Deprecated public android.graphics.Bitmap! getBackground();
-    method public String! getBridgeTag();
-    method public int getContentAction();
-    method @Deprecated public int getContentIcon();
-    method @Deprecated public int getContentIconGravity();
-    method public boolean getContentIntentAvailableOffline();
-    method @Deprecated public int getCustomContentHeight();
-    method @Deprecated public int getCustomSizePreset();
-    method public String! getDismissalId();
-    method @Deprecated public android.app.PendingIntent! getDisplayIntent();
-    method @Deprecated public int getGravity();
-    method @Deprecated public boolean getHintAmbientBigPicture();
-    method @Deprecated public boolean getHintAvoidBackgroundClipping();
-    method public boolean getHintContentIntentLaunchesActivity();
-    method @Deprecated public boolean getHintHideIcon();
-    method @Deprecated public int getHintScreenTimeout();
-    method @Deprecated public boolean getHintShowBackgroundOnly();
-    method @Deprecated public java.util.List<android.app.Notification!>! getPages();
-    method public boolean getStartScrollBottom();
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setBackground(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setBridgeTag(String!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setContentAction(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setContentIcon(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setContentIconGravity(int);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setContentIntentAvailableOffline(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setCustomContentHeight(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setCustomSizePreset(int);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setDismissalId(String!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setDisplayIntent(android.app.PendingIntent!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setGravity(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintAmbientBigPicture(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintAvoidBackgroundClipping(boolean);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setHintContentIntentLaunchesActivity(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintHideIcon(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintScreenTimeout(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintShowBackgroundOnly(boolean);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setStartScrollBottom(boolean);
-    field @Deprecated public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
-    field @Deprecated public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
-    field @Deprecated public static final int SIZE_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int SIZE_FULL_SCREEN = 5; // 0x5
-    field @Deprecated public static final int SIZE_LARGE = 4; // 0x4
-    field @Deprecated public static final int SIZE_MEDIUM = 3; // 0x3
-    field @Deprecated public static final int SIZE_SMALL = 2; // 0x2
-    field @Deprecated public static final int SIZE_XSMALL = 1; // 0x1
-    field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
-  }
-
-  public final class NotificationCompatExtras {
-    field public static final String EXTRA_ACTION_EXTRAS = "android.support.actionExtras";
-    field public static final String EXTRA_GROUP_KEY = "android.support.groupKey";
-    field public static final String EXTRA_GROUP_SUMMARY = "android.support.isGroupSummary";
-    field public static final String EXTRA_LOCAL_ONLY = "android.support.localOnly";
-    field public static final String EXTRA_REMOTE_INPUTS = "android.support.remoteInputs";
-    field public static final String EXTRA_SORT_KEY = "android.support.sortKey";
-  }
-
-  public abstract class NotificationCompatSideChannelService extends android.app.Service {
-    ctor public NotificationCompatSideChannelService();
-    method public abstract void cancel(String!, int, String!);
-    method public abstract void cancelAll(String!);
-    method public abstract void notify(String!, int, String!, android.app.Notification!);
-    method public android.os.IBinder! onBind(android.content.Intent!);
-  }
-
-  public final class NotificationManagerCompat {
-    method public boolean areNotificationsEnabled();
-    method public void cancel(int);
-    method public void cancel(String?, int);
-    method public void cancelAll();
-    method public void createNotificationChannel(android.app.NotificationChannel);
-    method public void createNotificationChannelGroup(android.app.NotificationChannelGroup);
-    method public void createNotificationChannelGroups(java.util.List<android.app.NotificationChannelGroup!>);
-    method public void createNotificationChannels(java.util.List<android.app.NotificationChannel!>);
-    method public void deleteNotificationChannel(String);
-    method public void deleteNotificationChannelGroup(String);
-    method public static androidx.core.app.NotificationManagerCompat from(android.content.Context);
-    method public static java.util.Set<java.lang.String!> getEnabledListenerPackages(android.content.Context);
-    method public int getImportance();
-    method public android.app.NotificationChannel? getNotificationChannel(String);
-    method public android.app.NotificationChannelGroup? getNotificationChannelGroup(String);
-    method public java.util.List<android.app.NotificationChannelGroup!> getNotificationChannelGroups();
-    method public java.util.List<android.app.NotificationChannel!> getNotificationChannels();
-    method public void notify(int, android.app.Notification);
-    method public void notify(String?, int, android.app.Notification);
-    field public static final String ACTION_BIND_SIDE_CHANNEL = "android.support.BIND_NOTIFICATION_SIDE_CHANNEL";
-    field public static final String EXTRA_USE_SIDE_CHANNEL = "android.support.useSideChannel";
-    field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
-    field public static final int IMPORTANCE_HIGH = 4; // 0x4
-    field public static final int IMPORTANCE_LOW = 2; // 0x2
-    field public static final int IMPORTANCE_MAX = 5; // 0x5
-    field public static final int IMPORTANCE_MIN = 1; // 0x1
-    field public static final int IMPORTANCE_NONE = 0; // 0x0
-    field public static final int IMPORTANCE_UNSPECIFIED = -1000; // 0xfffffc18
-  }
-
-  public class Person {
-    method public static androidx.core.app.Person fromBundle(android.os.Bundle);
-    method public androidx.core.graphics.drawable.IconCompat? getIcon();
-    method public String? getKey();
-    method public CharSequence? getName();
-    method public String? getUri();
-    method public boolean isBot();
-    method public boolean isImportant();
-    method public androidx.core.app.Person.Builder toBuilder();
-    method public android.os.Bundle toBundle();
-  }
-
-  public static class Person.Builder {
-    ctor public Person.Builder();
-    method public androidx.core.app.Person build();
-    method public androidx.core.app.Person.Builder setBot(boolean);
-    method public androidx.core.app.Person.Builder setIcon(androidx.core.graphics.drawable.IconCompat?);
-    method public androidx.core.app.Person.Builder setImportant(boolean);
-    method public androidx.core.app.Person.Builder setKey(String?);
-    method public androidx.core.app.Person.Builder setName(CharSequence?);
-    method public androidx.core.app.Person.Builder setUri(String?);
-  }
-
-  public final class RemoteActionCompat implements androidx.versionedparcelable.VersionedParcelable {
-    ctor public RemoteActionCompat(androidx.core.graphics.drawable.IconCompat, CharSequence, CharSequence, android.app.PendingIntent);
-    ctor public RemoteActionCompat(androidx.core.app.RemoteActionCompat);
-    method @RequiresApi(26) public static androidx.core.app.RemoteActionCompat createFromRemoteAction(android.app.RemoteAction);
-    method public android.app.PendingIntent getActionIntent();
-    method public CharSequence getContentDescription();
-    method public androidx.core.graphics.drawable.IconCompat getIcon();
-    method public CharSequence getTitle();
-    method public boolean isEnabled();
-    method public void setEnabled(boolean);
-    method public void setShouldShowIcon(boolean);
-    method public boolean shouldShowIcon();
-    method @RequiresApi(26) public android.app.RemoteAction toRemoteAction();
-  }
-
-  public final class RemoteInput {
-    method public static void addDataResultToIntent(androidx.core.app.RemoteInput!, android.content.Intent!, java.util.Map<java.lang.String!,android.net.Uri!>!);
-    method public static void addResultsToIntent(androidx.core.app.RemoteInput![]!, android.content.Intent!, android.os.Bundle!);
-    method public boolean getAllowFreeFormInput();
-    method public java.util.Set<java.lang.String!>! getAllowedDataTypes();
-    method public CharSequence![]! getChoices();
-    method public static java.util.Map<java.lang.String!,android.net.Uri!>! getDataResultsFromIntent(android.content.Intent!, String!);
-    method public int getEditChoicesBeforeSending();
-    method public android.os.Bundle! getExtras();
-    method public CharSequence! getLabel();
-    method public String! getResultKey();
-    method public static android.os.Bundle! getResultsFromIntent(android.content.Intent!);
-    method public static int getResultsSource(android.content.Intent);
-    method public boolean isDataOnly();
-    method public static void setResultsSource(android.content.Intent, int);
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_AUTO = 0; // 0x0
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_DISABLED = 1; // 0x1
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_ENABLED = 2; // 0x2
-    field public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
-    field public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results";
-    field public static final int SOURCE_CHOICE = 1; // 0x1
-    field public static final int SOURCE_FREE_FORM_INPUT = 0; // 0x0
-  }
-
-  public static final class RemoteInput.Builder {
-    ctor public RemoteInput.Builder(String);
-    method public androidx.core.app.RemoteInput.Builder addExtras(android.os.Bundle);
-    method public androidx.core.app.RemoteInput build();
-    method public android.os.Bundle getExtras();
-    method public androidx.core.app.RemoteInput.Builder setAllowDataType(String, boolean);
-    method public androidx.core.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
-    method public androidx.core.app.RemoteInput.Builder setChoices(CharSequence![]?);
-    method public androidx.core.app.RemoteInput.Builder setEditChoicesBeforeSending(int);
-    method public androidx.core.app.RemoteInput.Builder setLabel(CharSequence?);
-  }
-
-  public final class ServiceCompat {
-    method public static void stopForeground(android.app.Service, int);
-    field public static final int START_STICKY = 1; // 0x1
-    field public static final int STOP_FOREGROUND_DETACH = 2; // 0x2
-    field public static final int STOP_FOREGROUND_REMOVE = 1; // 0x1
-  }
-
-  public final class ShareCompat {
-    method public static void configureMenuItem(android.view.MenuItem, androidx.core.app.ShareCompat.IntentBuilder);
-    method public static void configureMenuItem(android.view.Menu, @IdRes int, androidx.core.app.ShareCompat.IntentBuilder);
-    method public static android.content.ComponentName? getCallingActivity(android.app.Activity);
-    method public static String? getCallingPackage(android.app.Activity);
-    field public static final String EXTRA_CALLING_ACTIVITY = "androidx.core.app.EXTRA_CALLING_ACTIVITY";
-    field public static final String EXTRA_CALLING_ACTIVITY_INTEROP = "android.support.v4.app.EXTRA_CALLING_ACTIVITY";
-    field public static final String EXTRA_CALLING_PACKAGE = "androidx.core.app.EXTRA_CALLING_PACKAGE";
-    field public static final String EXTRA_CALLING_PACKAGE_INTEROP = "android.support.v4.app.EXTRA_CALLING_PACKAGE";
-  }
-
-  public static class ShareCompat.IntentBuilder {
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String![]);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String![]);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String![]);
-    method public androidx.core.app.ShareCompat.IntentBuilder addStream(android.net.Uri);
-    method public android.content.Intent createChooserIntent();
-    method public static androidx.core.app.ShareCompat.IntentBuilder from(android.app.Activity);
-    method public android.content.Intent getIntent();
-    method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(CharSequence?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(@StringRes int);
-    method public androidx.core.app.ShareCompat.IntentBuilder setEmailBcc(String![]?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setEmailCc(String![]?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setEmailTo(String![]?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setHtmlText(String?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setStream(android.net.Uri?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setSubject(String?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setText(CharSequence?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setType(String?);
-    method public void startChooser();
-  }
-
-  public static class ShareCompat.IntentReader {
-    method public static androidx.core.app.ShareCompat.IntentReader from(android.app.Activity);
-    method public android.content.ComponentName? getCallingActivity();
-    method public android.graphics.drawable.Drawable? getCallingActivityIcon();
-    method public android.graphics.drawable.Drawable? getCallingApplicationIcon();
-    method public CharSequence? getCallingApplicationLabel();
-    method public String? getCallingPackage();
-    method public String![]? getEmailBcc();
-    method public String![]? getEmailCc();
-    method public String![]? getEmailTo();
-    method public String? getHtmlText();
-    method public android.net.Uri? getStream();
-    method public android.net.Uri? getStream(int);
-    method public int getStreamCount();
-    method public String? getSubject();
-    method public CharSequence? getText();
-    method public String? getType();
-    method public boolean isMultipleShare();
-    method public boolean isShareIntent();
-    method public boolean isSingleShare();
-  }
-
-  public abstract class SharedElementCallback {
-    ctor public SharedElementCallback();
-    method public android.os.Parcelable! onCaptureSharedElementSnapshot(android.view.View!, android.graphics.Matrix!, android.graphics.RectF!);
-    method public android.view.View! onCreateSnapshotView(android.content.Context!, android.os.Parcelable!);
-    method public void onMapSharedElements(java.util.List<java.lang.String!>!, java.util.Map<java.lang.String!,android.view.View!>!);
-    method public void onRejectSharedElements(java.util.List<android.view.View!>!);
-    method public void onSharedElementEnd(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
-    method public void onSharedElementStart(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
-    method public void onSharedElementsArrived(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, androidx.core.app.SharedElementCallback.OnSharedElementsReadyListener!);
-  }
-
-  public static interface SharedElementCallback.OnSharedElementsReadyListener {
-    method public void onSharedElementsReady();
-  }
-
-  public final class TaskStackBuilder implements java.lang.Iterable<android.content.Intent> {
-    method public androidx.core.app.TaskStackBuilder addNextIntent(android.content.Intent);
-    method public androidx.core.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
-    method public androidx.core.app.TaskStackBuilder addParentStack(android.app.Activity);
-    method public androidx.core.app.TaskStackBuilder addParentStack(Class<?>);
-    method public androidx.core.app.TaskStackBuilder! addParentStack(android.content.ComponentName!);
-    method public static androidx.core.app.TaskStackBuilder create(android.content.Context);
-    method public android.content.Intent? editIntentAt(int);
-    method @Deprecated public static androidx.core.app.TaskStackBuilder! from(android.content.Context!);
-    method @Deprecated public android.content.Intent! getIntent(int);
-    method public int getIntentCount();
-    method public android.content.Intent![] getIntents();
-    method public android.app.PendingIntent? getPendingIntent(int, int);
-    method public android.app.PendingIntent? getPendingIntent(int, int, android.os.Bundle?);
-    method @Deprecated public java.util.Iterator<android.content.Intent!>! iterator();
-    method public void startActivities();
-    method public void startActivities(android.os.Bundle?);
-  }
-
-  public static interface TaskStackBuilder.SupportParentable {
-    method public android.content.Intent? getSupportParentActivityIntent();
-  }
-
-}
-
-package androidx.core.content {
-
-  public final class ContentProviderCompat {
-    method public static android.content.Context requireContext(android.content.ContentProvider);
-  }
-
-  public final class ContentResolverCompat {
-    method public static android.database.Cursor! query(android.content.ContentResolver!, android.net.Uri!, String![]!, String!, String![]!, String!, androidx.core.os.CancellationSignal!);
-  }
-
-  public class ContextCompat {
-    ctor protected ContextCompat();
-    method public static int checkSelfPermission(android.content.Context, String);
-    method public static android.content.Context? createDeviceProtectedStorageContext(android.content.Context);
-    method public static java.io.File! getCodeCacheDir(android.content.Context);
-    method @ColorInt public static int getColor(android.content.Context, @ColorRes int);
-    method public static android.content.res.ColorStateList? getColorStateList(android.content.Context, @ColorRes int);
-    method public static java.io.File? getDataDir(android.content.Context);
-    method public static android.graphics.drawable.Drawable? getDrawable(android.content.Context, @DrawableRes int);
-    method public static java.io.File![] getExternalCacheDirs(android.content.Context);
-    method public static java.io.File![] getExternalFilesDirs(android.content.Context, String?);
-    method public static java.util.concurrent.Executor! getMainExecutor(android.content.Context!);
-    method public static java.io.File? getNoBackupFilesDir(android.content.Context);
-    method public static java.io.File![] getObbDirs(android.content.Context);
-    method public static <T> T? getSystemService(android.content.Context, Class<T!>);
-    method public static String? getSystemServiceName(android.content.Context, Class<?>);
-    method public static boolean isDeviceProtectedStorage(android.content.Context);
-    method public static boolean startActivities(android.content.Context, android.content.Intent![]);
-    method public static boolean startActivities(android.content.Context, android.content.Intent![], android.os.Bundle?);
-    method public static void startActivity(android.content.Context, android.content.Intent, android.os.Bundle?);
-    method public static void startForegroundService(android.content.Context, android.content.Intent);
-  }
-
-  public class FileProvider extends android.content.ContentProvider {
-    ctor public FileProvider();
-    method public int delete(android.net.Uri, String?, String![]?);
-    method public String! getType(android.net.Uri);
-    method public static android.net.Uri! getUriForFile(android.content.Context, String, java.io.File);
-    method public android.net.Uri! insert(android.net.Uri, android.content.ContentValues!);
-    method public boolean onCreate();
-    method public android.database.Cursor! query(android.net.Uri, String![]?, String?, String![]?, String?);
-    method public int update(android.net.Uri, android.content.ContentValues!, String?, String![]?);
-  }
-
-  public final class IntentCompat {
-    method public static android.content.Intent makeMainSelectorActivity(String, String);
-    field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
-    field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
-    field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
-  }
-
-  public final class MimeTypeFilter {
-    method public static boolean matches(String?, String);
-    method public static String? matches(String?, String![]);
-    method public static String? matches(String![]?, String);
-    method public static String![] matchesMany(String![]?, String);
-  }
-
-  public final class PermissionChecker {
-    method public static int checkCallingOrSelfPermission(android.content.Context, String);
-    method public static int checkCallingPermission(android.content.Context, String, String?);
-    method public static int checkPermission(android.content.Context, String, int, int, String?);
-    method public static int checkSelfPermission(android.content.Context, String);
-    field public static final int PERMISSION_DENIED = -1; // 0xffffffff
-    field public static final int PERMISSION_DENIED_APP_OP = -2; // 0xfffffffe
-    field public static final int PERMISSION_GRANTED = 0; // 0x0
-  }
-
-  @Deprecated public final class SharedPreferencesCompat {
-  }
-
-  @Deprecated public static final class SharedPreferencesCompat.EditorCompat {
-    method @Deprecated public void apply(android.content.SharedPreferences.Editor);
-    method @Deprecated public static androidx.core.content.SharedPreferencesCompat.EditorCompat! getInstance();
-  }
-
-}
-
-package androidx.core.content.pm {
-
-  @Deprecated public final class ActivityInfoCompat {
-    field @Deprecated public static final int CONFIG_UI_MODE = 512; // 0x200
-  }
-
-  public final class PackageInfoCompat {
-    method public static long getLongVersionCode(android.content.pm.PackageInfo);
-  }
-
-  public final class PermissionInfoCompat {
-    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();
-    method public CharSequence? getDisabledMessage();
-    method public String getId();
-    method public android.content.Intent getIntent();
-    method public android.content.Intent![] getIntents();
-    method public CharSequence? getLongLabel();
-    method public int getRank();
-    method public CharSequence getShortLabel();
-    method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
-  }
-
-  public static class ShortcutInfoCompat.Builder {
-    ctor public ShortcutInfoCompat.Builder(android.content.Context, String);
-    method public androidx.core.content.pm.ShortcutInfoCompat build();
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setActivity(android.content.ComponentName);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLabel(CharSequence);
-    method @Deprecated public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived();
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived(boolean);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPerson(androidx.core.app.Person);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPersons(androidx.core.app.Person![]);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setRank(int);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setShortLabel(CharSequence);
-  }
-
-  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);
-    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
-    method public static int getMaxShortcutCountPerActivity(android.content.Context);
-    method public static boolean isRequestPinShortcutSupported(android.content.Context);
-    method public static void removeAllDynamicShortcuts(android.content.Context);
-    method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
-    method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
-    method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
-    field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
-  }
-
-}
-
-package androidx.core.content.res {
-
-  public final class ConfigurationHelper {
-    method public static int getDensityDpi(android.content.res.Resources);
-  }
-
-  public final class ResourcesCompat {
-    method @ColorInt public static int getColor(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static android.content.res.ColorStateList? getColorStateList(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static android.graphics.drawable.Drawable? getDrawable(android.content.res.Resources, @DrawableRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static android.graphics.drawable.Drawable? getDrawableForDensity(android.content.res.Resources, @DrawableRes int, int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static float getFloat(android.content.res.Resources, @DimenRes int);
-    method public static android.graphics.Typeface? getFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
-    method public static void getFont(android.content.Context, @FontRes int, androidx.core.content.res.ResourcesCompat.FontCallback, android.os.Handler?) throws android.content.res.Resources.NotFoundException;
-    field @AnyRes public static final int ID_NULL = 0; // 0x0
-  }
-
-  public abstract static class ResourcesCompat.FontCallback {
-    ctor public ResourcesCompat.FontCallback();
-    method public abstract void onFontRetrievalFailed(int);
-    method public abstract void onFontRetrieved(android.graphics.Typeface);
-  }
-
-  public static final class ResourcesCompat.ThemeCompat {
-    method public static void rebase(android.content.res.Resources.Theme);
-  }
-
-}
-
-package androidx.core.database {
-
-  public final class CursorWindowCompat {
-    method public static android.database.CursorWindow create(String?, long);
-  }
-
-  @Deprecated public final class DatabaseUtilsCompat {
-    method @Deprecated public static String![]! appendSelectionArgs(String![]!, String![]!);
-    method @Deprecated public static String! concatenateWhere(String!, String!);
-  }
-
-}
-
-package androidx.core.database.sqlite {
-
-  public final class SQLiteCursorCompat {
-    method public static void setFillWindowForwardOnly(android.database.sqlite.SQLiteCursor, boolean);
-  }
-
-}
-
-package androidx.core.graphics {
-
-  public final class BitmapCompat {
-    method public static int getAllocationByteCount(android.graphics.Bitmap);
-    method public static boolean hasMipMap(android.graphics.Bitmap);
-    method public static void setHasMipMap(android.graphics.Bitmap, boolean);
-  }
-
-  public class BlendModeColorFilterCompat {
-    method public static android.graphics.ColorFilter? createBlendModeColorFilterCompat(int, androidx.core.graphics.BlendModeCompat);
-  }
-
-  public enum BlendModeCompat {
-    enum_constant public static final androidx.core.graphics.BlendModeCompat CLEAR;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_BURN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_DODGE;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DARKEN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat DIFFERENCE;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_ATOP;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_IN;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OUT;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OVER;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat EXCLUSION;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HARD_LIGHT;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HUE;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat LIGHTEN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat LUMINOSITY;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat MODULATE;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat MULTIPLY;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat OVERLAY;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat PLUS;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SATURATION;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SCREEN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SOFT_LIGHT;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_ATOP;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_IN;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OUT;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OVER;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat XOR;
-  }
-
-  public final class ColorUtils {
-    method @ColorInt public static int HSLToColor(float[]);
-    method @ColorInt public static int LABToColor(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double);
-    method public static void LABToXYZ(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double, double[]);
-    method public static void RGBToHSL(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, float[]);
-    method public static void RGBToLAB(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
-    method public static void RGBToXYZ(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
-    method @ColorInt public static int XYZToColor(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double);
-    method public static void XYZToLAB(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double, double[]);
-    method @ColorInt public static int blendARGB(@ColorInt int, @ColorInt int, @FloatRange(from=0.0, to=1.0) float);
-    method public static void blendHSL(float[], float[], @FloatRange(from=0.0, to=1.0) float, float[]);
-    method public static void blendLAB(double[], double[], @FloatRange(from=0.0, to=1.0) double, double[]);
-    method public static double calculateContrast(@ColorInt int, @ColorInt int);
-    method @FloatRange(from=0.0, to=1.0) public static double calculateLuminance(@ColorInt int);
-    method public static int calculateMinimumAlpha(@ColorInt int, @ColorInt int, float);
-    method public static void colorToHSL(@ColorInt int, float[]);
-    method public static void colorToLAB(@ColorInt int, double[]);
-    method public static void colorToXYZ(@ColorInt int, double[]);
-    method public static int compositeColors(@ColorInt int, @ColorInt int);
-    method @RequiresApi(26) public static android.graphics.Color compositeColors(android.graphics.Color, android.graphics.Color);
-    method public static double distanceEuclidean(double[], double[]);
-    method @ColorInt public static int setAlphaComponent(@ColorInt int, @IntRange(from=0, to=255) int);
-  }
-
-  public final class Insets {
-    method public static androidx.core.graphics.Insets of(int, int, int, int);
-    method public static androidx.core.graphics.Insets of(android.graphics.Rect);
-    method @RequiresApi(api=29) public static androidx.core.graphics.Insets toCompatInsets(android.graphics.Insets);
-    method @RequiresApi(api=29) public android.graphics.Insets toPlatformInsets();
-    field public static final androidx.core.graphics.Insets NONE;
-    field public final int bottom;
-    field public final int left;
-    field public final int right;
-    field public final int top;
-  }
-
-  public final class PaintCompat {
-    method public static boolean hasGlyph(android.graphics.Paint, String);
-    method public static boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat?);
-  }
-
-  public final class PathSegment {
-    ctor public PathSegment(android.graphics.PointF, float, android.graphics.PointF, float);
-    method public android.graphics.PointF getEnd();
-    method public float getEndFraction();
-    method public android.graphics.PointF getStart();
-    method public float getStartFraction();
-  }
-
-  public final class PathUtils {
-    method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path);
-    method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path, @FloatRange(from=0) float);
-  }
-
-  public class TypefaceCompat {
-    method public static android.graphics.Typeface create(android.content.Context, android.graphics.Typeface?, int);
-  }
-
-}
-
-package androidx.core.graphics.drawable {
-
-  public final class DrawableCompat {
-    method public static void applyTheme(android.graphics.drawable.Drawable, android.content.res.Resources.Theme);
-    method public static boolean canApplyTheme(android.graphics.drawable.Drawable);
-    method public static void clearColorFilter(android.graphics.drawable.Drawable);
-    method public static int getAlpha(android.graphics.drawable.Drawable);
-    method public static android.graphics.ColorFilter! getColorFilter(android.graphics.drawable.Drawable);
-    method public static int getLayoutDirection(android.graphics.drawable.Drawable);
-    method public static void inflate(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public static boolean isAutoMirrored(android.graphics.drawable.Drawable);
-    method @Deprecated public static void jumpToCurrentState(android.graphics.drawable.Drawable);
-    method public static void setAutoMirrored(android.graphics.drawable.Drawable, boolean);
-    method public static void setHotspot(android.graphics.drawable.Drawable, float, float);
-    method public static void setHotspotBounds(android.graphics.drawable.Drawable, int, int, int, int);
-    method public static boolean setLayoutDirection(android.graphics.drawable.Drawable, int);
-    method public static void setTint(android.graphics.drawable.Drawable, @ColorInt int);
-    method public static void setTintList(android.graphics.drawable.Drawable, android.content.res.ColorStateList?);
-    method public static void setTintMode(android.graphics.drawable.Drawable, android.graphics.PorterDuff.Mode);
-    method public static <T extends android.graphics.drawable.Drawable> T! unwrap(android.graphics.drawable.Drawable);
-    method public static android.graphics.drawable.Drawable! wrap(android.graphics.drawable.Drawable);
-  }
-
-  public class IconCompat implements androidx.versionedparcelable.VersionedParcelable {
-    method public static androidx.core.graphics.drawable.IconCompat? createFromBundle(android.os.Bundle);
-    method @RequiresApi(23) public static androidx.core.graphics.drawable.IconCompat? createFromIcon(android.content.Context, android.graphics.drawable.Icon);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithAdaptiveBitmap(android.graphics.Bitmap!);
-    method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(String);
-    method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(android.net.Uri);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithBitmap(android.graphics.Bitmap!);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(String!);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(android.net.Uri!);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithData(byte[]!, int, int);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithResource(android.content.Context!, @DrawableRes int);
-    method @IdRes public int getResId();
-    method public String getResPackage();
-    method public int getType();
-    method public android.net.Uri getUri();
-    method public android.graphics.drawable.Drawable? loadDrawable(android.content.Context);
-    method public void onPostParceling();
-    method public void onPreParceling(boolean);
-    method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
-    method public androidx.core.graphics.drawable.IconCompat! setTintList(android.content.res.ColorStateList!);
-    method public androidx.core.graphics.drawable.IconCompat! setTintMode(android.graphics.PorterDuff.Mode!);
-    method public android.os.Bundle! toBundle();
-    method @Deprecated @RequiresApi(23) public android.graphics.drawable.Icon toIcon();
-    method @RequiresApi(23) public android.graphics.drawable.Icon toIcon(android.content.Context?);
-    field public static final int TYPE_ADAPTIVE_BITMAP = 5; // 0x5
-    field public static final int TYPE_BITMAP = 1; // 0x1
-    field public static final int TYPE_DATA = 3; // 0x3
-    field public static final int TYPE_RESOURCE = 2; // 0x2
-    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
-    field public static final int TYPE_URI = 4; // 0x4
-    field public static final int TYPE_URI_ADAPTIVE_BITMAP = 6; // 0x6
-  }
-
-  public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
-    method public void draw(android.graphics.Canvas);
-    method public final android.graphics.Bitmap? getBitmap();
-    method public float getCornerRadius();
-    method public int getGravity();
-    method public int getOpacity();
-    method public final android.graphics.Paint getPaint();
-    method public boolean hasAntiAlias();
-    method public boolean hasMipMap();
-    method public boolean isCircular();
-    method public void setAlpha(int);
-    method public void setAntiAlias(boolean);
-    method public void setCircular(boolean);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setCornerRadius(float);
-    method public void setDither(boolean);
-    method public void setGravity(int);
-    method public void setMipMap(boolean);
-    method public void setTargetDensity(android.graphics.Canvas);
-    method public void setTargetDensity(android.util.DisplayMetrics);
-    method public void setTargetDensity(int);
-  }
-
-  public final class RoundedBitmapDrawableFactory {
-    method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, android.graphics.Bitmap?);
-    method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, String);
-    method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, java.io.InputStream);
-  }
-
-}
-
-package androidx.core.hardware.display {
-
-  public final class DisplayManagerCompat {
-    method public android.view.Display? getDisplay(int);
-    method public android.view.Display![] getDisplays();
-    method public android.view.Display![] getDisplays(String?);
-    method public static androidx.core.hardware.display.DisplayManagerCompat getInstance(android.content.Context);
-    field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
-  }
-
-}
-
-package androidx.core.hardware.fingerprint {
-
-  @Deprecated public class FingerprintManagerCompat {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public void authenticate(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject?, int, androidx.core.os.CancellationSignal?, androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationCallback, android.os.Handler?);
-    method @Deprecated public static androidx.core.hardware.fingerprint.FingerprintManagerCompat from(android.content.Context);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean hasEnrolledFingerprints();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean isHardwareDetected();
-  }
-
-  @Deprecated public abstract static class FingerprintManagerCompat.AuthenticationCallback {
-    ctor @Deprecated public FingerprintManagerCompat.AuthenticationCallback();
-    method @Deprecated public void onAuthenticationError(int, CharSequence!);
-    method @Deprecated public void onAuthenticationFailed();
-    method @Deprecated public void onAuthenticationHelp(int, CharSequence!);
-    method @Deprecated public void onAuthenticationSucceeded(androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationResult!);
-  }
-
-  @Deprecated public static final class FingerprintManagerCompat.AuthenticationResult {
-    ctor @Deprecated public FingerprintManagerCompat.AuthenticationResult(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject!);
-    method @Deprecated public androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject! getCryptoObject();
-  }
-
-  @Deprecated public static class FingerprintManagerCompat.CryptoObject {
-    ctor @Deprecated public FingerprintManagerCompat.CryptoObject(java.security.Signature);
-    ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Cipher);
-    ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Mac);
-    method @Deprecated public javax.crypto.Cipher? getCipher();
-    method @Deprecated public javax.crypto.Mac? getMac();
-    method @Deprecated public java.security.Signature? getSignature();
-  }
-
-}
-
-package androidx.core.location {
-
-  public final class LocationManagerCompat {
-    method public static boolean isLocationEnabled(android.location.LocationManager);
-  }
-
-}
-
-package androidx.core.math {
-
-  public class MathUtils {
-    method public static float clamp(float, float, float);
-    method public static double clamp(double, double, double);
-    method public static int clamp(int, int, int);
-    method public static long clamp(long, long, long);
-  }
-
-}
-
-package androidx.core.net {
-
-  public final class ConnectivityManagerCompat {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static android.net.NetworkInfo? getNetworkInfoFromBroadcast(android.net.ConnectivityManager, android.content.Intent);
-    method public static int getRestrictBackgroundStatus(android.net.ConnectivityManager);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static boolean isActiveNetworkMetered(android.net.ConnectivityManager);
-    field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
-    field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
-    field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
-  }
-
-  public final class TrafficStatsCompat {
-    method @Deprecated public static void clearThreadStatsTag();
-    method @Deprecated public static int getThreadStatsTag();
-    method @Deprecated public static void incrementOperationCount(int);
-    method @Deprecated public static void incrementOperationCount(int, int);
-    method @Deprecated public static void setThreadStatsTag(int);
-    method public static void tagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method @Deprecated public static void tagSocket(java.net.Socket!) throws java.net.SocketException;
-    method public static void untagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method @Deprecated public static void untagSocket(java.net.Socket!) throws java.net.SocketException;
-  }
-
-  public final class UriCompat {
-    method public static String toSafeString(android.net.Uri);
-  }
-
-}
-
-package androidx.core.os {
-
-  public class BuildCompat {
-    method @Deprecated public static boolean isAtLeastN();
-    method @Deprecated public static boolean isAtLeastNMR1();
-    method @Deprecated public static boolean isAtLeastO();
-    method @Deprecated public static boolean isAtLeastOMR1();
-    method @Deprecated public static boolean isAtLeastP();
-    method @Deprecated public static boolean isAtLeastQ();
-    method public static boolean isAtLeastR();
-  }
-
-  public final class CancellationSignal {
-    ctor public CancellationSignal();
-    method public void cancel();
-    method public Object? getCancellationSignalObject();
-    method public boolean isCanceled();
-    method public void setOnCancelListener(androidx.core.os.CancellationSignal.OnCancelListener?);
-    method public void throwIfCanceled();
-  }
-
-  public static interface CancellationSignal.OnCancelListener {
-    method public void onCancel();
-  }
-
-  public final class ConfigurationCompat {
-    method public static androidx.core.os.LocaleListCompat getLocales(android.content.res.Configuration);
-  }
-
-  public final class EnvironmentCompat {
-    method public static String getStorageState(java.io.File);
-    field public static final String MEDIA_UNKNOWN = "unknown";
-  }
-
-  public final class HandlerCompat {
-    method public static android.os.Handler createAsync(android.os.Looper);
-    method public static android.os.Handler createAsync(android.os.Looper, android.os.Handler.Callback);
-    method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
-  }
-
-  public final class LocaleListCompat {
-    method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
-    method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
-    method public java.util.Locale! get(int);
-    method @Size(min=1) public static androidx.core.os.LocaleListCompat getAdjustedDefault();
-    method @Size(min=1) public static androidx.core.os.LocaleListCompat getDefault();
-    method public static androidx.core.os.LocaleListCompat getEmptyLocaleList();
-    method public java.util.Locale? getFirstMatch(String![]);
-    method @IntRange(from=0xffffffff) public int indexOf(java.util.Locale!);
-    method public boolean isEmpty();
-    method @IntRange(from=0) public int size();
-    method public String toLanguageTags();
-    method public Object? unwrap();
-    method @Deprecated @RequiresApi(24) public static androidx.core.os.LocaleListCompat! wrap(Object!);
-    method @RequiresApi(24) public static androidx.core.os.LocaleListCompat wrap(android.os.LocaleList);
-  }
-
-  public final class MessageCompat {
-    method public static boolean isAsynchronous(android.os.Message);
-    method public static void setAsynchronous(android.os.Message, boolean);
-  }
-
-  public class OperationCanceledException extends java.lang.RuntimeException {
-    ctor public OperationCanceledException();
-    ctor public OperationCanceledException(String?);
-  }
-
-  public final class ParcelCompat {
-    method public static boolean readBoolean(android.os.Parcel);
-    method public static void writeBoolean(android.os.Parcel, boolean);
-  }
-
-  @Deprecated public final class ParcelableCompat {
-    method @Deprecated public static <T> android.os.Parcelable.Creator<T!>! newCreator(androidx.core.os.ParcelableCompatCreatorCallbacks<T!>!);
-  }
-
-  @Deprecated public interface ParcelableCompatCreatorCallbacks<T> {
-    method @Deprecated public T! createFromParcel(android.os.Parcel!, ClassLoader!);
-    method @Deprecated public T![]! newArray(int);
-  }
-
-  public final class TraceCompat {
-    method public static void beginAsyncSection(String, int);
-    method public static void beginSection(String);
-    method public static void endAsyncSection(String, int);
-    method public static void endSection();
-    method public static boolean isEnabled();
-    method public static void setCounter(String, int);
-  }
-
-  public class UserManagerCompat {
-    method public static boolean isUserUnlocked(android.content.Context);
-  }
-
-}
-
-package androidx.core.provider {
-
-  public final class FontRequest {
-    ctor public FontRequest(String, String, String, java.util.List<java.util.List<byte[]!>!>);
-    ctor public FontRequest(String, String, String, @ArrayRes int);
-    method public java.util.List<java.util.List<byte[]!>!>? getCertificates();
-    method @ArrayRes public int getCertificatesArrayResId();
-    method public String getProviderAuthority();
-    method public String getProviderPackage();
-    method public String getQuery();
-  }
-
-  public class FontsContractCompat {
-    method public static android.graphics.Typeface? buildTypeface(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![]);
-    method public static androidx.core.provider.FontsContractCompat.FontFamilyResult fetchFonts(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static void requestFont(android.content.Context, androidx.core.provider.FontRequest, androidx.core.provider.FontsContractCompat.FontRequestCallback, android.os.Handler);
-  }
-
-  public static final class FontsContractCompat.Columns implements android.provider.BaseColumns {
-    ctor public FontsContractCompat.Columns();
-    field public static final String FILE_ID = "file_id";
-    field public static final String ITALIC = "font_italic";
-    field public static final String RESULT_CODE = "result_code";
-    field public static final int RESULT_CODE_FONT_NOT_FOUND = 1; // 0x1
-    field public static final int RESULT_CODE_FONT_UNAVAILABLE = 2; // 0x2
-    field public static final int RESULT_CODE_MALFORMED_QUERY = 3; // 0x3
-    field public static final int RESULT_CODE_OK = 0; // 0x0
-    field public static final String TTC_INDEX = "font_ttc_index";
-    field public static final String VARIATION_SETTINGS = "font_variation_settings";
-    field public static final String WEIGHT = "font_weight";
-  }
-
-  public static class FontsContractCompat.FontFamilyResult {
-    method public androidx.core.provider.FontsContractCompat.FontInfo![]! getFonts();
-    method public int getStatusCode();
-    field public static final int STATUS_OK = 0; // 0x0
-    field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
-    field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
-  }
-
-  public static class FontsContractCompat.FontInfo {
-    method public int getResultCode();
-    method @IntRange(from=0) public int getTtcIndex();
-    method public android.net.Uri getUri();
-    method @IntRange(from=1, to=1000) public int getWeight();
-    method public boolean isItalic();
-  }
-
-  public static class FontsContractCompat.FontRequestCallback {
-    ctor public FontsContractCompat.FontRequestCallback();
-    method public void onTypefaceRequestFailed(int);
-    method public void onTypefaceRetrieved(android.graphics.Typeface!);
-    field public static final int FAIL_REASON_FONT_LOAD_ERROR = -3; // 0xfffffffd
-    field public static final int FAIL_REASON_FONT_NOT_FOUND = 1; // 0x1
-    field public static final int FAIL_REASON_FONT_UNAVAILABLE = 2; // 0x2
-    field public static final int FAIL_REASON_MALFORMED_QUERY = 3; // 0x3
-    field public static final int FAIL_REASON_PROVIDER_NOT_FOUND = -1; // 0xffffffff
-    field public static final int FAIL_REASON_SECURITY_VIOLATION = -4; // 0xfffffffc
-    field public static final int FAIL_REASON_WRONG_CERTIFICATES = -2; // 0xfffffffe
-  }
-
-}
-
-package androidx.core.telephony.mbms {
-
-  public final class MbmsHelper {
-    method public static CharSequence? getBestNameForService(android.content.Context, android.telephony.mbms.ServiceInfo);
-  }
-
-}
-
-package androidx.core.text {
-
-  public final class BidiFormatter {
-    method public static androidx.core.text.BidiFormatter! getInstance();
-    method public static androidx.core.text.BidiFormatter! getInstance(boolean);
-    method public static androidx.core.text.BidiFormatter! getInstance(java.util.Locale!);
-    method public boolean getStereoReset();
-    method public boolean isRtl(String!);
-    method public boolean isRtl(CharSequence!);
-    method public boolean isRtlContext();
-    method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
-    method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
-    method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!);
-    method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!);
-    method public String! unicodeWrap(String!, boolean);
-    method public CharSequence! unicodeWrap(CharSequence!, boolean);
-    method public String! unicodeWrap(String!);
-    method public CharSequence! unicodeWrap(CharSequence!);
-  }
-
-  public static final class BidiFormatter.Builder {
-    ctor public BidiFormatter.Builder();
-    ctor public BidiFormatter.Builder(boolean);
-    ctor public BidiFormatter.Builder(java.util.Locale!);
-    method public androidx.core.text.BidiFormatter! build();
-    method public androidx.core.text.BidiFormatter.Builder! setTextDirectionHeuristic(androidx.core.text.TextDirectionHeuristicCompat!);
-    method public androidx.core.text.BidiFormatter.Builder! stereoReset(boolean);
-  }
-
-  public final class HtmlCompat {
-    method public static android.text.Spanned fromHtml(String, int);
-    method public static android.text.Spanned fromHtml(String, int, android.text.Html.ImageGetter?, android.text.Html.TagHandler?);
-    method public static String toHtml(android.text.Spanned, int);
-    field public static final int FROM_HTML_MODE_COMPACT = 63; // 0x3f
-    field public static final int FROM_HTML_MODE_LEGACY = 0; // 0x0
-    field public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; // 0x100
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32; // 0x20
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16; // 0x10
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2; // 0x2
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8; // 0x8
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4; // 0x4
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1; // 0x1
-    field public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0; // 0x0
-    field public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; // 0x1
-  }
-
-  public final class ICUCompat {
-    method public static String? maximizeAndGetScript(java.util.Locale!);
-  }
-
-  public class PrecomputedTextCompat implements android.text.Spannable {
-    method public char charAt(int);
-    method public static androidx.core.text.PrecomputedTextCompat! create(CharSequence, androidx.core.text.PrecomputedTextCompat.Params);
-    method @IntRange(from=0) public int getParagraphCount();
-    method @IntRange(from=0) public int getParagraphEnd(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getParagraphStart(@IntRange(from=0) int);
-    method public androidx.core.text.PrecomputedTextCompat.Params getParams();
-    method public int getSpanEnd(Object!);
-    method public int getSpanFlags(Object!);
-    method public int getSpanStart(Object!);
-    method public <T> T![]! getSpans(int, int, Class<T!>!);
-    method @UiThread public static java.util.concurrent.Future<androidx.core.text.PrecomputedTextCompat!>! getTextFuture(CharSequence, androidx.core.text.PrecomputedTextCompat.Params, java.util.concurrent.Executor?);
-    method public int length();
-    method public int nextSpanTransition(int, int, Class!);
-    method public void removeSpan(Object!);
-    method public void setSpan(Object!, int, int, int);
-    method public CharSequence! subSequence(int, int);
-  }
-
-  public static final class PrecomputedTextCompat.Params {
-    ctor @RequiresApi(28) public PrecomputedTextCompat.Params(android.text.PrecomputedText.Params);
-    method @RequiresApi(23) public int getBreakStrategy();
-    method @RequiresApi(23) public int getHyphenationFrequency();
-    method @RequiresApi(18) public android.text.TextDirectionHeuristic? getTextDirection();
-    method public android.text.TextPaint getTextPaint();
-  }
-
-  public static class PrecomputedTextCompat.Params.Builder {
-    ctor public PrecomputedTextCompat.Params.Builder(android.text.TextPaint);
-    method public androidx.core.text.PrecomputedTextCompat.Params build();
-    method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setBreakStrategy(int);
-    method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setHyphenationFrequency(int);
-    method @RequiresApi(18) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setTextDirection(android.text.TextDirectionHeuristic);
-  }
-
-  public interface TextDirectionHeuristicCompat {
-    method public boolean isRtl(char[]!, int, int);
-    method public boolean isRtl(CharSequence!, int, int);
-  }
-
-  public final class TextDirectionHeuristicsCompat {
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! ANYRTL_LTR;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_LTR;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_RTL;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! LOCALE;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! LTR;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! RTL;
-  }
-
-  public final class TextUtilsCompat {
-    method public static int getLayoutDirectionFromLocale(java.util.Locale?);
-    method public static String htmlEncode(String);
-  }
-
-}
-
-package androidx.core.text.util {
-
-  public final class LinkifyCompat {
-    method public static boolean addLinks(android.text.Spannable, int);
-    method public static boolean addLinks(android.widget.TextView, int);
-    method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?);
-    method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-    method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-    method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?);
-    method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-    method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-  }
-
-}
-
-package androidx.core.util {
-
-  public class AtomicFile {
-    ctor public AtomicFile(java.io.File);
-    method public void delete();
-    method public void failWrite(java.io.FileOutputStream?);
-    method public void finishWrite(java.io.FileOutputStream?);
-    method public java.io.File getBaseFile();
-    method public java.io.FileInputStream openRead() throws java.io.FileNotFoundException;
-    method public byte[] readFully() throws java.io.IOException;
-    method public java.io.FileOutputStream startWrite() throws java.io.IOException;
-  }
-
-  public interface Consumer<T> {
-    method public void accept(T!);
-  }
-
-  public class ObjectsCompat {
-    method public static boolean equals(Object?, Object?);
-    method public static int hash(java.lang.Object!...);
-    method public static int hashCode(Object?);
-  }
-
-  public class Pair<F, S> {
-    ctor public Pair(F?, S?);
-    method public static <A, B> androidx.core.util.Pair<A!,B!> create(A?, B?);
-    field public final F? first;
-    field public final S? second;
-  }
-
-  public final class PatternsCompat {
-    field public static final java.util.regex.Pattern! DOMAIN_NAME;
-    field public static final java.util.regex.Pattern! EMAIL_ADDRESS;
-    field public static final java.util.regex.Pattern! IP_ADDRESS;
-    field public static final java.util.regex.Pattern! WEB_URL;
-  }
-
-  public final class Pools {
-  }
-
-  public static interface Pools.Pool<T> {
-    method public T? acquire();
-    method public boolean release(T);
-  }
-
-  public static class Pools.SimplePool<T> implements androidx.core.util.Pools.Pool<T> {
-    ctor public Pools.SimplePool(int);
-    method public T! acquire();
-    method public boolean release(T);
-  }
-
-  public static class Pools.SynchronizedPool<T> extends androidx.core.util.Pools.SimplePool<T> {
-    ctor public Pools.SynchronizedPool(int);
-  }
-
-  public interface Predicate<T> {
-    method public boolean test(T!);
-  }
-
-  public interface Supplier<T> {
-    method public T! get();
-  }
-
-}
-
-package androidx.core.view {
-
-  public class AccessibilityDelegateCompat {
-    ctor public AccessibilityDelegateCompat();
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View!);
-    method public void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public void onInitializeAccessibilityNodeInfo(android.view.View!, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
-    method public void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public boolean performAccessibilityAction(android.view.View!, int, android.os.Bundle!);
-    method public void sendAccessibilityEvent(android.view.View!, int);
-    method public void sendAccessibilityEventUnchecked(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-  }
-
-  public abstract class ActionProvider {
-    ctor public ActionProvider(android.content.Context!);
-    method public android.content.Context! getContext();
-    method public boolean hasSubMenu();
-    method public boolean isVisible();
-    method public abstract android.view.View! onCreateActionView();
-    method public android.view.View! onCreateActionView(android.view.MenuItem!);
-    method public boolean onPerformDefaultAction();
-    method public void onPrepareSubMenu(android.view.SubMenu!);
-    method public boolean overridesItemVisibility();
-    method public void refreshVisibility();
-    method public void setVisibilityListener(androidx.core.view.ActionProvider.VisibilityListener!);
-  }
-
-  public static interface ActionProvider.VisibilityListener {
-    method public void onActionProviderVisibilityChanged(boolean);
-  }
-
-  public final class DisplayCompat {
-    method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
-  }
-
-  public static final class DisplayCompat.ModeCompat {
-    method public int getPhysicalHeight();
-    method public int getPhysicalWidth();
-    method public boolean isNative();
-    method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
-  }
-
-  public final class DisplayCutoutCompat {
-    ctor public DisplayCutoutCompat(android.graphics.Rect!, java.util.List<android.graphics.Rect!>!);
-    method public java.util.List<android.graphics.Rect!>! getBoundingRects();
-    method public int getSafeInsetBottom();
-    method public int getSafeInsetLeft();
-    method public int getSafeInsetRight();
-    method public int getSafeInsetTop();
-  }
-
-  public final class DragAndDropPermissionsCompat {
-    method public void release();
-  }
-
-  public class DragStartHelper {
-    ctor public DragStartHelper(android.view.View!, androidx.core.view.DragStartHelper.OnDragStartListener!);
-    method public void attach();
-    method public void detach();
-    method public void getTouchPosition(android.graphics.Point!);
-    method public boolean onLongClick(android.view.View!);
-    method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
-  }
-
-  public static interface DragStartHelper.OnDragStartListener {
-    method public boolean onDragStart(android.view.View!, androidx.core.view.DragStartHelper!);
-  }
-
-  public final class GestureDetectorCompat {
-    ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!);
-    ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!, android.os.Handler!);
-    method public boolean isLongpressEnabled();
-    method public boolean onTouchEvent(android.view.MotionEvent!);
-    method public void setIsLongpressEnabled(boolean);
-    method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener!);
-  }
-
-  public final class GravityCompat {
-    method public static void apply(int, int, int, android.graphics.Rect!, android.graphics.Rect!, int);
-    method public static void apply(int, int, int, android.graphics.Rect!, int, int, android.graphics.Rect!, int);
-    method public static void applyDisplay(int, android.graphics.Rect!, android.graphics.Rect!, int);
-    method public static int getAbsoluteGravity(int, int);
-    field public static final int END = 8388613; // 0x800005
-    field public static final int RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; // 0x800007
-    field public static final int RELATIVE_LAYOUT_DIRECTION = 8388608; // 0x800000
-    field public static final int START = 8388611; // 0x800003
-  }
-
-  public final class InputDeviceCompat {
-    field public static final int SOURCE_ANY = -256; // 0xffffff00
-    field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
-    field public static final int SOURCE_CLASS_JOYSTICK = 16; // 0x10
-    field public static final int SOURCE_CLASS_MASK = 255; // 0xff
-    field public static final int SOURCE_CLASS_NONE = 0; // 0x0
-    field public static final int SOURCE_CLASS_POINTER = 2; // 0x2
-    field public static final int SOURCE_CLASS_POSITION = 8; // 0x8
-    field public static final int SOURCE_CLASS_TRACKBALL = 4; // 0x4
-    field public static final int SOURCE_DPAD = 513; // 0x201
-    field public static final int SOURCE_GAMEPAD = 1025; // 0x401
-    field public static final int SOURCE_HDMI = 33554433; // 0x2000001
-    field public static final int SOURCE_JOYSTICK = 16777232; // 0x1000010
-    field public static final int SOURCE_KEYBOARD = 257; // 0x101
-    field public static final int SOURCE_MOUSE = 8194; // 0x2002
-    field public static final int SOURCE_ROTARY_ENCODER = 4194304; // 0x400000
-    field public static final int SOURCE_STYLUS = 16386; // 0x4002
-    field public static final int SOURCE_TOUCHPAD = 1048584; // 0x100008
-    field public static final int SOURCE_TOUCHSCREEN = 4098; // 0x1002
-    field public static final int SOURCE_TOUCH_NAVIGATION = 2097152; // 0x200000
-    field public static final int SOURCE_TRACKBALL = 65540; // 0x10004
-    field public static final int SOURCE_UNKNOWN = 0; // 0x0
-  }
-
-  public final class LayoutInflaterCompat {
-    method @Deprecated public static androidx.core.view.LayoutInflaterFactory! getFactory(android.view.LayoutInflater!);
-    method @Deprecated public static void setFactory(android.view.LayoutInflater, androidx.core.view.LayoutInflaterFactory);
-    method public static void setFactory2(android.view.LayoutInflater, android.view.LayoutInflater.Factory2);
-  }
-
-  @Deprecated public interface LayoutInflaterFactory {
-    method @Deprecated public android.view.View! onCreateView(android.view.View!, String!, android.content.Context!, android.util.AttributeSet!);
-  }
-
-  public final class MarginLayoutParamsCompat {
-    method public static int getLayoutDirection(android.view.ViewGroup.MarginLayoutParams!);
-    method public static int getMarginEnd(android.view.ViewGroup.MarginLayoutParams!);
-    method public static int getMarginStart(android.view.ViewGroup.MarginLayoutParams!);
-    method public static boolean isMarginRelative(android.view.ViewGroup.MarginLayoutParams!);
-    method public static void resolveLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
-    method public static void setLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
-    method public static void setMarginEnd(android.view.ViewGroup.MarginLayoutParams!, int);
-    method public static void setMarginStart(android.view.ViewGroup.MarginLayoutParams!, int);
-  }
-
-  public final class MenuCompat {
-    method public static void setGroupDividerEnabled(android.view.Menu!, boolean);
-    method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
-  }
-
-  public final class MenuItemCompat {
-    method @Deprecated public static boolean collapseActionView(android.view.MenuItem!);
-    method @Deprecated public static boolean expandActionView(android.view.MenuItem!);
-    method public static androidx.core.view.ActionProvider! getActionProvider(android.view.MenuItem!);
-    method @Deprecated public static android.view.View! getActionView(android.view.MenuItem!);
-    method public static int getAlphabeticModifiers(android.view.MenuItem!);
-    method public static CharSequence! getContentDescription(android.view.MenuItem!);
-    method public static android.content.res.ColorStateList! getIconTintList(android.view.MenuItem!);
-    method public static android.graphics.PorterDuff.Mode! getIconTintMode(android.view.MenuItem!);
-    method public static int getNumericModifiers(android.view.MenuItem!);
-    method public static CharSequence! getTooltipText(android.view.MenuItem!);
-    method @Deprecated public static boolean isActionViewExpanded(android.view.MenuItem!);
-    method public static android.view.MenuItem! setActionProvider(android.view.MenuItem!, androidx.core.view.ActionProvider!);
-    method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, android.view.View!);
-    method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, int);
-    method public static void setAlphabeticShortcut(android.view.MenuItem!, char, int);
-    method public static void setContentDescription(android.view.MenuItem!, CharSequence!);
-    method public static void setIconTintList(android.view.MenuItem!, android.content.res.ColorStateList!);
-    method public static void setIconTintMode(android.view.MenuItem!, android.graphics.PorterDuff.Mode!);
-    method public static void setNumericShortcut(android.view.MenuItem!, char, int);
-    method @Deprecated public static android.view.MenuItem! setOnActionExpandListener(android.view.MenuItem!, androidx.core.view.MenuItemCompat.OnActionExpandListener!);
-    method public static void setShortcut(android.view.MenuItem!, char, char, int, int);
-    method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
-    method public static void setTooltipText(android.view.MenuItem!, CharSequence!);
-    field @Deprecated public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
-    field @Deprecated public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
-    field @Deprecated public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
-    field @Deprecated public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
-    field @Deprecated public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
-  }
-
-  @Deprecated public static interface MenuItemCompat.OnActionExpandListener {
-    method @Deprecated public boolean onMenuItemActionCollapse(android.view.MenuItem!);
-    method @Deprecated public boolean onMenuItemActionExpand(android.view.MenuItem!);
-  }
-
-  public final class MotionEventCompat {
-    method @Deprecated public static int findPointerIndex(android.view.MotionEvent!, int);
-    method @Deprecated public static int getActionIndex(android.view.MotionEvent!);
-    method @Deprecated public static int getActionMasked(android.view.MotionEvent!);
-    method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int);
-    method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int, int);
-    method @Deprecated public static int getButtonState(android.view.MotionEvent!);
-    method @Deprecated public static int getPointerCount(android.view.MotionEvent!);
-    method @Deprecated public static int getPointerId(android.view.MotionEvent!, int);
-    method @Deprecated public static int getSource(android.view.MotionEvent!);
-    method @Deprecated public static float getX(android.view.MotionEvent!, int);
-    method @Deprecated public static float getY(android.view.MotionEvent!, int);
-    method public static boolean isFromSource(android.view.MotionEvent!, int);
-    field @Deprecated public static final int ACTION_HOVER_ENTER = 9; // 0x9
-    field @Deprecated public static final int ACTION_HOVER_EXIT = 10; // 0xa
-    field @Deprecated public static final int ACTION_HOVER_MOVE = 7; // 0x7
-    field @Deprecated public static final int ACTION_MASK = 255; // 0xff
-    field @Deprecated public static final int ACTION_POINTER_DOWN = 5; // 0x5
-    field @Deprecated public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
-    field @Deprecated public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
-    field @Deprecated public static final int ACTION_POINTER_UP = 6; // 0x6
-    field @Deprecated public static final int ACTION_SCROLL = 8; // 0x8
-    field @Deprecated public static final int AXIS_BRAKE = 23; // 0x17
-    field @Deprecated public static final int AXIS_DISTANCE = 24; // 0x18
-    field @Deprecated public static final int AXIS_GAS = 22; // 0x16
-    field @Deprecated public static final int AXIS_GENERIC_1 = 32; // 0x20
-    field @Deprecated public static final int AXIS_GENERIC_10 = 41; // 0x29
-    field @Deprecated public static final int AXIS_GENERIC_11 = 42; // 0x2a
-    field @Deprecated public static final int AXIS_GENERIC_12 = 43; // 0x2b
-    field @Deprecated public static final int AXIS_GENERIC_13 = 44; // 0x2c
-    field @Deprecated public static final int AXIS_GENERIC_14 = 45; // 0x2d
-    field @Deprecated public static final int AXIS_GENERIC_15 = 46; // 0x2e
-    field @Deprecated public static final int AXIS_GENERIC_16 = 47; // 0x2f
-    field @Deprecated public static final int AXIS_GENERIC_2 = 33; // 0x21
-    field @Deprecated public static final int AXIS_GENERIC_3 = 34; // 0x22
-    field @Deprecated public static final int AXIS_GENERIC_4 = 35; // 0x23
-    field @Deprecated public static final int AXIS_GENERIC_5 = 36; // 0x24
-    field @Deprecated public static final int AXIS_GENERIC_6 = 37; // 0x25
-    field @Deprecated public static final int AXIS_GENERIC_7 = 38; // 0x26
-    field @Deprecated public static final int AXIS_GENERIC_8 = 39; // 0x27
-    field @Deprecated public static final int AXIS_GENERIC_9 = 40; // 0x28
-    field @Deprecated public static final int AXIS_HAT_X = 15; // 0xf
-    field @Deprecated public static final int AXIS_HAT_Y = 16; // 0x10
-    field @Deprecated public static final int AXIS_HSCROLL = 10; // 0xa
-    field @Deprecated public static final int AXIS_LTRIGGER = 17; // 0x11
-    field @Deprecated public static final int AXIS_ORIENTATION = 8; // 0x8
-    field @Deprecated public static final int AXIS_PRESSURE = 2; // 0x2
-    field public static final int AXIS_RELATIVE_X = 27; // 0x1b
-    field public static final int AXIS_RELATIVE_Y = 28; // 0x1c
-    field @Deprecated public static final int AXIS_RTRIGGER = 18; // 0x12
-    field @Deprecated public static final int AXIS_RUDDER = 20; // 0x14
-    field @Deprecated public static final int AXIS_RX = 12; // 0xc
-    field @Deprecated public static final int AXIS_RY = 13; // 0xd
-    field @Deprecated public static final int AXIS_RZ = 14; // 0xe
-    field public static final int AXIS_SCROLL = 26; // 0x1a
-    field @Deprecated public static final int AXIS_SIZE = 3; // 0x3
-    field @Deprecated public static final int AXIS_THROTTLE = 19; // 0x13
-    field @Deprecated public static final int AXIS_TILT = 25; // 0x19
-    field @Deprecated public static final int AXIS_TOOL_MAJOR = 6; // 0x6
-    field @Deprecated public static final int AXIS_TOOL_MINOR = 7; // 0x7
-    field @Deprecated public static final int AXIS_TOUCH_MAJOR = 4; // 0x4
-    field @Deprecated public static final int AXIS_TOUCH_MINOR = 5; // 0x5
-    field @Deprecated public static final int AXIS_VSCROLL = 9; // 0x9
-    field @Deprecated public static final int AXIS_WHEEL = 21; // 0x15
-    field @Deprecated public static final int AXIS_X = 0; // 0x0
-    field @Deprecated public static final int AXIS_Y = 1; // 0x1
-    field @Deprecated public static final int AXIS_Z = 11; // 0xb
-    field @Deprecated public static final int BUTTON_PRIMARY = 1; // 0x1
-  }
-
-  public interface NestedScrollingChild {
-    method public boolean dispatchNestedFling(float, float, boolean);
-    method public boolean dispatchNestedPreFling(float, float);
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
-    method public boolean hasNestedScrollingParent();
-    method public boolean isNestedScrollingEnabled();
-    method public void setNestedScrollingEnabled(boolean);
-    method public boolean startNestedScroll(int);
-    method public void stopNestedScroll();
-  }
-
-  public interface NestedScrollingChild2 extends androidx.core.view.NestedScrollingChild {
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, int);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?, int);
-    method public boolean hasNestedScrollingParent(int);
-    method public boolean startNestedScroll(int, int);
-    method public void stopNestedScroll(int);
-  }
-
-  public interface NestedScrollingChild3 extends androidx.core.view.NestedScrollingChild2 {
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
-  }
-
-  public class NestedScrollingChildHelper {
-    ctor public NestedScrollingChildHelper(android.view.View);
-    method public boolean dispatchNestedFling(float, float, boolean);
-    method public boolean dispatchNestedPreFling(float, float);
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, int);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?, int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]?);
-    method public boolean hasNestedScrollingParent();
-    method public boolean hasNestedScrollingParent(int);
-    method public boolean isNestedScrollingEnabled();
-    method public void onDetachedFromWindow();
-    method public void onStopNestedScroll(android.view.View);
-    method public void setNestedScrollingEnabled(boolean);
-    method public boolean startNestedScroll(int);
-    method public boolean startNestedScroll(int, int);
-    method public void stopNestedScroll();
-    method public void stopNestedScroll(int);
-  }
-
-  public interface NestedScrollingParent {
-    method public int getNestedScrollAxes();
-    method public boolean onNestedFling(android.view.View, float, float, boolean);
-    method public boolean onNestedPreFling(android.view.View, float, float);
-    method public void onNestedPreScroll(android.view.View, int, int, int[]);
-    method public void onNestedScroll(android.view.View, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
-    method public void onStopNestedScroll(android.view.View);
-  }
-
-  public interface NestedScrollingParent2 extends androidx.core.view.NestedScrollingParent {
-    method public void onNestedPreScroll(android.view.View, int, int, int[], int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
-    method public void onStopNestedScroll(android.view.View, int);
-  }
-
-  public interface NestedScrollingParent3 extends androidx.core.view.NestedScrollingParent2 {
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
-  }
-
-  public class NestedScrollingParentHelper {
-    ctor public NestedScrollingParentHelper(android.view.ViewGroup);
-    method public int getNestedScrollAxes();
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
-    method public void onStopNestedScroll(android.view.View);
-    method public void onStopNestedScroll(android.view.View, int);
-  }
-
-  public interface OnApplyWindowInsetsListener {
-    method public androidx.core.view.WindowInsetsCompat! onApplyWindowInsets(android.view.View!, androidx.core.view.WindowInsetsCompat!);
-  }
-
-  public final class OneShotPreDrawListener implements android.view.View.OnAttachStateChangeListener android.view.ViewTreeObserver.OnPreDrawListener {
-    method public static androidx.core.view.OneShotPreDrawListener add(android.view.View, Runnable);
-    method public boolean onPreDraw();
-    method public void onViewAttachedToWindow(android.view.View!);
-    method public void onViewDetachedFromWindow(android.view.View!);
-    method public void removeListener();
-  }
-
-  public final class PointerIconCompat {
-    method public static androidx.core.view.PointerIconCompat! create(android.graphics.Bitmap!, float, float);
-    method public static androidx.core.view.PointerIconCompat! getSystemIcon(android.content.Context!, int);
-    method public static androidx.core.view.PointerIconCompat! load(android.content.res.Resources!, int);
-    field public static final int TYPE_ALIAS = 1010; // 0x3f2
-    field public static final int TYPE_ALL_SCROLL = 1013; // 0x3f5
-    field public static final int TYPE_ARROW = 1000; // 0x3e8
-    field public static final int TYPE_CELL = 1006; // 0x3ee
-    field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
-    field public static final int TYPE_COPY = 1011; // 0x3f3
-    field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
-    field public static final int TYPE_DEFAULT = 1000; // 0x3e8
-    field public static final int TYPE_GRAB = 1020; // 0x3fc
-    field public static final int TYPE_GRABBING = 1021; // 0x3fd
-    field public static final int TYPE_HAND = 1002; // 0x3ea
-    field public static final int TYPE_HELP = 1003; // 0x3eb
-    field public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014; // 0x3f6
-    field public static final int TYPE_NO_DROP = 1012; // 0x3f4
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_TEXT = 1008; // 0x3f0
-    field public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017; // 0x3f9
-    field public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016; // 0x3f8
-    field public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015; // 0x3f7
-    field public static final int TYPE_VERTICAL_TEXT = 1009; // 0x3f1
-    field public static final int TYPE_WAIT = 1004; // 0x3ec
-    field public static final int TYPE_ZOOM_IN = 1018; // 0x3fa
-    field public static final int TYPE_ZOOM_OUT = 1019; // 0x3fb
-  }
-
-  public final class ScaleGestureDetectorCompat {
-    method @Deprecated public static boolean isQuickScaleEnabled(Object!);
-    method public static boolean isQuickScaleEnabled(android.view.ScaleGestureDetector!);
-    method @Deprecated public static void setQuickScaleEnabled(Object!, boolean);
-    method public static void setQuickScaleEnabled(android.view.ScaleGestureDetector!, boolean);
-  }
-
-  public interface ScrollingView {
-    method public int computeHorizontalScrollExtent();
-    method public int computeHorizontalScrollOffset();
-    method public int computeHorizontalScrollRange();
-    method public int computeVerticalScrollExtent();
-    method public int computeVerticalScrollOffset();
-    method public int computeVerticalScrollRange();
-  }
-
-  public interface TintableBackgroundView {
-    method public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  @Deprecated public final class VelocityTrackerCompat {
-    method @Deprecated public static float getXVelocity(android.view.VelocityTracker!, int);
-    method @Deprecated public static float getYVelocity(android.view.VelocityTracker!, int);
-  }
-
-  public class ViewCompat {
-    ctor protected ViewCompat();
-    method public static int addAccessibilityAction(android.view.View, CharSequence, androidx.core.view.accessibility.AccessibilityViewCommand);
-    method public static void addKeyboardNavigationClusters(android.view.View, java.util.Collection<android.view.View!>, int);
-    method public static void addOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
-    method public static androidx.core.view.ViewPropertyAnimatorCompat animate(android.view.View);
-    method @Deprecated public static boolean canScrollHorizontally(android.view.View!, int);
-    method @Deprecated public static boolean canScrollVertically(android.view.View!, int);
-    method public static void cancelDragAndDrop(android.view.View);
-    method @Deprecated public static int combineMeasuredStates(int, int);
-    method public static androidx.core.view.WindowInsetsCompat computeSystemWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat, android.graphics.Rect);
-    method public static androidx.core.view.WindowInsetsCompat dispatchApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
-    method public static void dispatchFinishTemporaryDetach(android.view.View);
-    method public static boolean dispatchNestedFling(android.view.View, float, float, boolean);
-    method public static boolean dispatchNestedPreFling(android.view.View, float, float);
-    method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?);
-    method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?, int);
-    method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?);
-    method public static void dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, int, int[]);
-    method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, int);
-    method public static void dispatchStartTemporaryDetach(android.view.View);
-    method public static void enableAccessibleClickableSpanSupport(android.view.View!);
-    method public static int generateViewId();
-    method public static androidx.core.view.AccessibilityDelegateCompat? getAccessibilityDelegate(android.view.View);
-    method public static int getAccessibilityLiveRegion(android.view.View);
-    method public static androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View);
-    method @UiThread public static CharSequence! getAccessibilityPaneTitle(android.view.View!);
-    method @Deprecated public static float getAlpha(android.view.View!);
-    method public static android.content.res.ColorStateList! getBackgroundTintList(android.view.View);
-    method public static android.graphics.PorterDuff.Mode! getBackgroundTintMode(android.view.View);
-    method public static android.graphics.Rect? getClipBounds(android.view.View);
-    method public static android.view.Display? getDisplay(android.view.View);
-    method public static float getElevation(android.view.View);
-    method public static boolean getFitsSystemWindows(android.view.View);
-    method public static int getImportantForAccessibility(android.view.View);
-    method public static int getImportantForAutofill(android.view.View);
-    method public static int getLabelFor(android.view.View);
-    method @Deprecated public static int getLayerType(android.view.View!);
-    method public static int getLayoutDirection(android.view.View);
-    method @Deprecated public static android.graphics.Matrix? getMatrix(android.view.View!);
-    method @Deprecated public static int getMeasuredHeightAndState(android.view.View!);
-    method @Deprecated public static int getMeasuredState(android.view.View!);
-    method @Deprecated public static int getMeasuredWidthAndState(android.view.View!);
-    method public static int getMinimumHeight(android.view.View);
-    method public static int getMinimumWidth(android.view.View);
-    method public static int getNextClusterForwardId(android.view.View);
-    method @Deprecated public static int getOverScrollMode(android.view.View!);
-    method @Px public static int getPaddingEnd(android.view.View);
-    method @Px public static int getPaddingStart(android.view.View);
-    method public static android.view.ViewParent! getParentForAccessibility(android.view.View);
-    method @Deprecated public static float getPivotX(android.view.View!);
-    method @Deprecated public static float getPivotY(android.view.View!);
-    method public static androidx.core.view.WindowInsetsCompat? getRootWindowInsets(android.view.View);
-    method @Deprecated public static float getRotation(android.view.View!);
-    method @Deprecated public static float getRotationX(android.view.View!);
-    method @Deprecated public static float getRotationY(android.view.View!);
-    method @Deprecated public static float getScaleX(android.view.View!);
-    method @Deprecated public static float getScaleY(android.view.View!);
-    method public static int getScrollIndicators(android.view.View);
-    method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
-    method public static String? getTransitionName(android.view.View);
-    method @Deprecated public static float getTranslationX(android.view.View!);
-    method @Deprecated public static float getTranslationY(android.view.View!);
-    method public static float getTranslationZ(android.view.View);
-    method public static int getWindowSystemUiVisibility(android.view.View);
-    method @Deprecated public static float getX(android.view.View!);
-    method @Deprecated public static float getY(android.view.View!);
-    method public static float getZ(android.view.View);
-    method public static boolean hasAccessibilityDelegate(android.view.View);
-    method public static boolean hasExplicitFocusable(android.view.View);
-    method public static boolean hasNestedScrollingParent(android.view.View);
-    method public static boolean hasNestedScrollingParent(android.view.View, int);
-    method public static boolean hasOnClickListeners(android.view.View);
-    method public static boolean hasOverlappingRendering(android.view.View);
-    method public static boolean hasTransientState(android.view.View);
-    method @UiThread public static boolean isAccessibilityHeading(android.view.View!);
-    method public static boolean isAttachedToWindow(android.view.View);
-    method public static boolean isFocusedByDefault(android.view.View);
-    method public static boolean isImportantForAccessibility(android.view.View);
-    method public static boolean isImportantForAutofill(android.view.View);
-    method public static boolean isInLayout(android.view.View);
-    method public static boolean isKeyboardNavigationCluster(android.view.View);
-    method public static boolean isLaidOut(android.view.View);
-    method public static boolean isLayoutDirectionResolved(android.view.View);
-    method public static boolean isNestedScrollingEnabled(android.view.View);
-    method @Deprecated public static boolean isOpaque(android.view.View!);
-    method public static boolean isPaddingRelative(android.view.View);
-    method @UiThread public static boolean isScreenReaderFocusable(android.view.View!);
-    method @Deprecated public static void jumpDrawablesToCurrentState(android.view.View!);
-    method public static android.view.View! keyboardNavigationClusterSearch(android.view.View, android.view.View!, int);
-    method public static void offsetLeftAndRight(android.view.View, int);
-    method public static void offsetTopAndBottom(android.view.View, int);
-    method public static androidx.core.view.WindowInsetsCompat onApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
-    method @Deprecated public static void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public static void onInitializeAccessibilityNodeInfo(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
-    method @Deprecated public static void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public static boolean performAccessibilityAction(android.view.View, int, android.os.Bundle!);
-    method public static void postInvalidateOnAnimation(android.view.View);
-    method public static void postInvalidateOnAnimation(android.view.View, int, int, int, int);
-    method public static void postOnAnimation(android.view.View, Runnable!);
-    method public static void postOnAnimationDelayed(android.view.View, Runnable!, long);
-    method public static void removeAccessibilityAction(android.view.View, int);
-    method public static void removeOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
-    method public static void replaceAccessibilityAction(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat, CharSequence?, androidx.core.view.accessibility.AccessibilityViewCommand?);
-    method public static void requestApplyInsets(android.view.View);
-    method public static <T extends android.view.View> T requireViewById(android.view.View, @IdRes int);
-    method @Deprecated public static int resolveSizeAndState(int, int, int);
-    method public static boolean restoreDefaultFocus(android.view.View);
-    method public static void saveAttributeDataForStyleable(android.view.View, android.content.Context, int[], android.util.AttributeSet?, android.content.res.TypedArray, int, int);
-    method public static void setAccessibilityDelegate(android.view.View, androidx.core.view.AccessibilityDelegateCompat!);
-    method @UiThread public static void setAccessibilityHeading(android.view.View!, boolean);
-    method public static void setAccessibilityLiveRegion(android.view.View, int);
-    method @UiThread public static void setAccessibilityPaneTitle(android.view.View!, CharSequence!);
-    method @Deprecated public static void setActivated(android.view.View!, boolean);
-    method @Deprecated public static void setAlpha(android.view.View!, @FloatRange(from=0.0, to=1.0) float);
-    method public static void setAutofillHints(android.view.View, java.lang.String!...);
-    method public static void setBackground(android.view.View, android.graphics.drawable.Drawable?);
-    method public static void setBackgroundTintList(android.view.View, android.content.res.ColorStateList!);
-    method public static void setBackgroundTintMode(android.view.View, android.graphics.PorterDuff.Mode!);
-    method @Deprecated public static void setChildrenDrawingOrderEnabled(android.view.ViewGroup!, boolean);
-    method public static void setClipBounds(android.view.View, android.graphics.Rect!);
-    method public static void setElevation(android.view.View, float);
-    method @Deprecated public static void setFitsSystemWindows(android.view.View!, boolean);
-    method public static void setFocusedByDefault(android.view.View, boolean);
-    method public static void setHasTransientState(android.view.View, boolean);
-    method public static void setImportantForAccessibility(android.view.View, int);
-    method public static void setImportantForAutofill(android.view.View, int);
-    method public static void setKeyboardNavigationCluster(android.view.View, boolean);
-    method public static void setLabelFor(android.view.View, @IdRes int);
-    method public static void setLayerPaint(android.view.View, android.graphics.Paint!);
-    method @Deprecated public static void setLayerType(android.view.View!, int, android.graphics.Paint!);
-    method public static void setLayoutDirection(android.view.View, int);
-    method public static void setNestedScrollingEnabled(android.view.View, boolean);
-    method public static void setNextClusterForwardId(android.view.View, int);
-    method public static void setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener?);
-    method @Deprecated public static void setOverScrollMode(android.view.View!, int);
-    method public static void setPaddingRelative(android.view.View, @Px int, @Px int, @Px int, @Px int);
-    method @Deprecated public static void setPivotX(android.view.View!, float);
-    method @Deprecated public static void setPivotY(android.view.View!, float);
-    method public static void setPointerIcon(android.view.View, androidx.core.view.PointerIconCompat!);
-    method @Deprecated public static void setRotation(android.view.View!, float);
-    method @Deprecated public static void setRotationX(android.view.View!, float);
-    method @Deprecated public static void setRotationY(android.view.View!, float);
-    method @Deprecated public static void setSaveFromParentEnabled(android.view.View!, boolean);
-    method @Deprecated public static void setScaleX(android.view.View!, float);
-    method @Deprecated public static void setScaleY(android.view.View!, float);
-    method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
-    method public static void setScrollIndicators(android.view.View, int);
-    method public static void setScrollIndicators(android.view.View, int, int);
-    method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
-    method public static void setTooltipText(android.view.View, CharSequence?);
-    method public static void setTransitionName(android.view.View, String!);
-    method @Deprecated public static void setTranslationX(android.view.View!, float);
-    method @Deprecated public static void setTranslationY(android.view.View!, float);
-    method public static void setTranslationZ(android.view.View, float);
-    method @Deprecated public static void setX(android.view.View!, float);
-    method @Deprecated public static void setY(android.view.View!, float);
-    method public static void setZ(android.view.View, float);
-    method public static boolean startDragAndDrop(android.view.View, android.content.ClipData!, android.view.View.DragShadowBuilder!, Object!, int);
-    method public static boolean startNestedScroll(android.view.View, int);
-    method public static boolean startNestedScroll(android.view.View, int, int);
-    method public static void stopNestedScroll(android.view.View);
-    method public static void stopNestedScroll(android.view.View, int);
-    method public static void updateDragShadow(android.view.View, android.view.View.DragShadowBuilder!);
-    field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
-    field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
-    field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; // 0x0
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; // 0x2
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; // 0x4
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; // 0x1
-    field @Deprecated public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
-    field @Deprecated public static final int LAYER_TYPE_NONE = 0; // 0x0
-    field @Deprecated public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
-    field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
-    field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
-    field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
-    field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
-    field @Deprecated public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
-    field @Deprecated public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
-    field @Deprecated public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
-    field @Deprecated public static final int MEASURED_STATE_TOO_SMALL = 16777216; // 0x1000000
-    field @Deprecated public static final int OVER_SCROLL_ALWAYS = 0; // 0x0
-    field @Deprecated public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; // 0x1
-    field @Deprecated public static final int OVER_SCROLL_NEVER = 2; // 0x2
-    field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
-    field public static final int SCROLL_AXIS_NONE = 0; // 0x0
-    field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_END = 32; // 0x20
-    field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
-    field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
-    field public static final int SCROLL_INDICATOR_START = 16; // 0x10
-    field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
-    field public static final int TYPE_NON_TOUCH = 1; // 0x1
-    field public static final int TYPE_TOUCH = 0; // 0x0
-  }
-
-  public static interface ViewCompat.OnUnhandledKeyEventListenerCompat {
-    method public boolean onUnhandledKeyEvent(android.view.View!, android.view.KeyEvent!);
-  }
-
-  public final class ViewConfigurationCompat {
-    method public static float getScaledHorizontalScrollFactor(android.view.ViewConfiguration, android.content.Context);
-    method public static int getScaledHoverSlop(android.view.ViewConfiguration!);
-    method @Deprecated public static int getScaledPagingTouchSlop(android.view.ViewConfiguration!);
-    method public static float getScaledVerticalScrollFactor(android.view.ViewConfiguration, android.content.Context);
-    method @Deprecated public static boolean hasPermanentMenuKey(android.view.ViewConfiguration!);
-    method public static boolean shouldShowMenuShortcutsWhenKeyboardPresent(android.view.ViewConfiguration!, android.content.Context);
-  }
-
-  public final class ViewGroupCompat {
-    method public static int getLayoutMode(android.view.ViewGroup);
-    method public static int getNestedScrollAxes(android.view.ViewGroup);
-    method public static boolean isTransitionGroup(android.view.ViewGroup);
-    method @Deprecated public static boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public static void setLayoutMode(android.view.ViewGroup, int);
-    method @Deprecated public static void setMotionEventSplittingEnabled(android.view.ViewGroup!, boolean);
-    method public static void setTransitionGroup(android.view.ViewGroup, boolean);
-    field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
-    field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
-  }
-
-  public final class ViewParentCompat {
-    method public static void notifySubtreeAccessibilityStateChanged(android.view.ViewParent!, android.view.View!, android.view.View!, int);
-    method public static boolean onNestedFling(android.view.ViewParent!, android.view.View!, float, float, boolean);
-    method public static boolean onNestedPreFling(android.view.ViewParent!, android.view.View!, float, float);
-    method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!);
-    method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!, int);
-    method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int);
-    method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int);
-    method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int, int[]);
-    method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int);
-    method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
-    method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int);
-    method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
-    method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!);
-    method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!, int);
-    method @Deprecated public static boolean requestSendAccessibilityEvent(android.view.ViewParent!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
-  }
-
-  public final class ViewPropertyAnimatorCompat {
-    method public androidx.core.view.ViewPropertyAnimatorCompat! alpha(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! alphaBy(float);
-    method public void cancel();
-    method public long getDuration();
-    method public android.view.animation.Interpolator! getInterpolator();
-    method public long getStartDelay();
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotation(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationX(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationXBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationY(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationYBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleX(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleXBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleY(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleYBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setDuration(long);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setInterpolator(android.view.animation.Interpolator!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setListener(androidx.core.view.ViewPropertyAnimatorListener!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setStartDelay(long);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setUpdateListener(androidx.core.view.ViewPropertyAnimatorUpdateListener!);
-    method public void start();
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationX(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationXBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationY(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationYBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationZ(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationZBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! withEndAction(Runnable!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! withLayer();
-    method public androidx.core.view.ViewPropertyAnimatorCompat! withStartAction(Runnable!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! x(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! xBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! y(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! yBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! z(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! zBy(float);
-  }
-
-  public interface ViewPropertyAnimatorListener {
-    method public void onAnimationCancel(android.view.View!);
-    method public void onAnimationEnd(android.view.View!);
-    method public void onAnimationStart(android.view.View!);
-  }
-
-  public class ViewPropertyAnimatorListenerAdapter implements androidx.core.view.ViewPropertyAnimatorListener {
-    ctor public ViewPropertyAnimatorListenerAdapter();
-    method public void onAnimationCancel(android.view.View!);
-    method public void onAnimationEnd(android.view.View!);
-    method public void onAnimationStart(android.view.View!);
-  }
-
-  public interface ViewPropertyAnimatorUpdateListener {
-    method public void onAnimationUpdate(android.view.View!);
-  }
-
-  public final class WindowCompat {
-    method public static <T extends android.view.View> T requireViewById(android.view.Window, @IdRes int);
-    field public static final int FEATURE_ACTION_BAR = 8; // 0x8
-    field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
-    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
-  }
-
-  public class WindowInsetsCompat {
-    ctor public WindowInsetsCompat(androidx.core.view.WindowInsetsCompat?);
-    method public androidx.core.view.WindowInsetsCompat consumeDisplayCutout();
-    method public androidx.core.view.WindowInsetsCompat consumeStableInsets();
-    method public androidx.core.view.WindowInsetsCompat consumeSystemWindowInsets();
-    method public androidx.core.view.DisplayCutoutCompat? getDisplayCutout();
-    method public androidx.core.graphics.Insets getMandatorySystemGestureInsets();
-    method public int getStableInsetBottom();
-    method public int getStableInsetLeft();
-    method public int getStableInsetRight();
-    method public int getStableInsetTop();
-    method public androidx.core.graphics.Insets getStableInsets();
-    method public androidx.core.graphics.Insets getSystemGestureInsets();
-    method public int getSystemWindowInsetBottom();
-    method public int getSystemWindowInsetLeft();
-    method public int getSystemWindowInsetRight();
-    method public int getSystemWindowInsetTop();
-    method public androidx.core.graphics.Insets getSystemWindowInsets();
-    method public androidx.core.graphics.Insets getTappableElementInsets();
-    method public boolean hasInsets();
-    method public boolean hasStableInsets();
-    method public boolean hasSystemWindowInsets();
-    method public androidx.core.view.WindowInsetsCompat inset(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat inset(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
-    method public boolean isConsumed();
-    method public boolean isRound();
-    method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(int, int, int, int);
-    method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(android.graphics.Rect);
-    method @RequiresApi(20) public android.view.WindowInsets? toWindowInsets();
-    method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets);
-  }
-
-  public static final class WindowInsetsCompat.Builder {
-    ctor public WindowInsetsCompat.Builder();
-    ctor public WindowInsetsCompat.Builder(androidx.core.view.WindowInsetsCompat);
-    method public androidx.core.view.WindowInsetsCompat build();
-    method public androidx.core.view.WindowInsetsCompat.Builder setDisplayCutout(androidx.core.view.DisplayCutoutCompat?);
-    method public androidx.core.view.WindowInsetsCompat.Builder setMandatorySystemGestureInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setStableInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setSystemGestureInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setSystemWindowInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setTappableElementInsets(androidx.core.graphics.Insets);
-  }
-
-}
-
-package androidx.core.view.accessibility {
-
-  public final class AccessibilityClickableSpanCompat extends android.text.style.ClickableSpan {
-    method public void onClick(android.view.View);
-  }
-
-  public final class AccessibilityEventCompat {
-    method @Deprecated public static void appendRecord(android.view.accessibility.AccessibilityEvent!, androidx.core.view.accessibility.AccessibilityRecordCompat!);
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! asRecord(android.view.accessibility.AccessibilityEvent!);
-    method public static int getAction(android.view.accessibility.AccessibilityEvent!);
-    method public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
-    method public static int getMovementGranularity(android.view.accessibility.AccessibilityEvent!);
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! getRecord(android.view.accessibility.AccessibilityEvent!, int);
-    method @Deprecated public static int getRecordCount(android.view.accessibility.AccessibilityEvent!);
-    method public static void setAction(android.view.accessibility.AccessibilityEvent!, int);
-    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, int);
-    method public static void setMovementGranularity(android.view.accessibility.AccessibilityEvent!, int);
-    field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
-    field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
-    field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
-    field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
-    field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
-    field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
-    field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
-    field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
-    field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
-    field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
-    field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
-    field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
-    field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1024; // 0x400
-    field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 512; // 0x200
-    field public static final int TYPE_TOUCH_INTERACTION_END = 2097152; // 0x200000
-    field public static final int TYPE_TOUCH_INTERACTION_START = 1048576; // 0x100000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 32768; // 0x8000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 65536; // 0x10000
-    field public static final int TYPE_VIEW_CONTEXT_CLICKED = 8388608; // 0x800000
-    field @Deprecated public static final int TYPE_VIEW_HOVER_ENTER = 128; // 0x80
-    field @Deprecated public static final int TYPE_VIEW_HOVER_EXIT = 256; // 0x100
-    field @Deprecated public static final int TYPE_VIEW_SCROLLED = 4096; // 0x1000
-    field @Deprecated public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
-    field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
-    field public static final int TYPE_WINDOWS_CHANGED = 4194304; // 0x400000
-    field @Deprecated public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
-  }
-
-  public final class AccessibilityManagerCompat {
-    method @Deprecated public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
-    method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
-    method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getEnabledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!, int);
-    method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getInstalledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!);
-    method @Deprecated public static boolean isTouchExplorationEnabled(android.view.accessibility.AccessibilityManager!);
-    method @Deprecated public static boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
-    method public static boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
-  }
-
-  @Deprecated public static interface AccessibilityManagerCompat.AccessibilityStateChangeListener {
-    method @Deprecated public void onAccessibilityStateChanged(boolean);
-  }
-
-  @Deprecated public abstract static class AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat implements androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener {
-    ctor @Deprecated public AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat();
-  }
-
-  public static interface AccessibilityManagerCompat.TouchExplorationStateChangeListener {
-    method public void onTouchExplorationStateChanged(boolean);
-  }
-
-  public class AccessibilityNodeInfoCompat {
-    ctor @Deprecated public AccessibilityNodeInfoCompat(Object!);
-    method public void addAction(int);
-    method public void addAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
-    method public void addChild(android.view.View!);
-    method public void addChild(android.view.View!, int);
-    method public boolean canOpenPopup();
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByText(String!);
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByViewId(String!);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! findFocus(int);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! focusSearch(int);
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!>! getActionList();
-    method public int getActions();
-    method @Deprecated public void getBoundsInParent(android.graphics.Rect!);
-    method public void getBoundsInScreen(android.graphics.Rect!);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getChild(int);
-    method public int getChildCount();
-    method public CharSequence! getClassName();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! getCollectionInfo();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! getCollectionItemInfo();
-    method public CharSequence! getContentDescription();
-    method public int getDrawingOrder();
-    method public CharSequence! getError();
-    method public android.os.Bundle! getExtras();
-    method public CharSequence? getHintText();
-    method @Deprecated public Object! getInfo();
-    method public int getInputType();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabelFor();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabeledBy();
-    method public int getLiveRegion();
-    method public int getMaxTextLength();
-    method public int getMovementGranularities();
-    method public CharSequence! getPackageName();
-    method public CharSequence? getPaneTitle();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
-    method public CharSequence? getRoleDescription();
-    method public CharSequence! getText();
-    method public int getTextSelectionEnd();
-    method public int getTextSelectionStart();
-    method public CharSequence? getTooltipText();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat? getTouchDelegateInfo();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalAfter();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalBefore();
-    method public String! getViewIdResourceName();
-    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getWindow();
-    method public int getWindowId();
-    method public boolean isAccessibilityFocused();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isClickable();
-    method public boolean isContentInvalid();
-    method public boolean isContextClickable();
-    method public boolean isDismissable();
-    method public boolean isEditable();
-    method public boolean isEnabled();
-    method public boolean isFocusable();
-    method public boolean isFocused();
-    method public boolean isHeading();
-    method public boolean isImportantForAccessibility();
-    method public boolean isLongClickable();
-    method public boolean isMultiLine();
-    method public boolean isPassword();
-    method public boolean isScreenReaderFocusable();
-    method public boolean isScrollable();
-    method public boolean isSelected();
-    method public boolean isShowingHintText();
-    method public boolean isTextEntryKey();
-    method public boolean isVisibleToUser();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!, int);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
-    method public boolean performAction(int);
-    method public boolean performAction(int, android.os.Bundle!);
-    method public void recycle();
-    method public boolean refresh();
-    method public boolean removeAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
-    method public boolean removeChild(android.view.View!);
-    method public boolean removeChild(android.view.View!, int);
-    method public void setAccessibilityFocused(boolean);
-    method @Deprecated public void setBoundsInParent(android.graphics.Rect!);
-    method public void setBoundsInScreen(android.graphics.Rect!);
-    method public void setCanOpenPopup(boolean);
-    method public void setCheckable(boolean);
-    method public void setChecked(boolean);
-    method public void setClassName(CharSequence!);
-    method public void setClickable(boolean);
-    method public void setCollectionInfo(Object!);
-    method public void setCollectionItemInfo(Object!);
-    method public void setContentDescription(CharSequence!);
-    method public void setContentInvalid(boolean);
-    method public void setContextClickable(boolean);
-    method public void setDismissable(boolean);
-    method public void setDrawingOrder(int);
-    method public void setEditable(boolean);
-    method public void setEnabled(boolean);
-    method public void setError(CharSequence!);
-    method public void setFocusable(boolean);
-    method public void setFocused(boolean);
-    method public void setHeading(boolean);
-    method public void setHintText(CharSequence?);
-    method public void setImportantForAccessibility(boolean);
-    method public void setInputType(int);
-    method public void setLabelFor(android.view.View!);
-    method public void setLabelFor(android.view.View!, int);
-    method public void setLabeledBy(android.view.View!);
-    method public void setLabeledBy(android.view.View!, int);
-    method public void setLiveRegion(int);
-    method public void setLongClickable(boolean);
-    method public void setMaxTextLength(int);
-    method public void setMovementGranularities(int);
-    method public void setMultiLine(boolean);
-    method public void setPackageName(CharSequence!);
-    method public void setPaneTitle(CharSequence?);
-    method public void setParent(android.view.View!);
-    method public void setParent(android.view.View!, int);
-    method public void setPassword(boolean);
-    method public void setRangeInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat!);
-    method public void setRoleDescription(CharSequence?);
-    method public void setScreenReaderFocusable(boolean);
-    method public void setScrollable(boolean);
-    method public void setSelected(boolean);
-    method public void setShowingHintText(boolean);
-    method public void setSource(android.view.View!);
-    method public void setSource(android.view.View!, int);
-    method public void setText(CharSequence!);
-    method public void setTextEntryKey(boolean);
-    method public void setTextSelection(int, int);
-    method public void setTooltipText(CharSequence?);
-    method public void setTouchDelegateInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat);
-    method public void setTraversalAfter(android.view.View!);
-    method public void setTraversalAfter(android.view.View!, int);
-    method public void setTraversalBefore(android.view.View!);
-    method public void setTraversalBefore(android.view.View!, int);
-    method public void setViewIdResourceName(String!);
-    method public void setVisibleToUser(boolean);
-    method public android.view.accessibility.AccessibilityNodeInfo! unwrap();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! wrap(android.view.accessibility.AccessibilityNodeInfo);
-    field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
-    field public static final String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
-    field public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
-    field public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
-    field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
-    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
-    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
-    field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
-    field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
-    field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
-    field public static final String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
-    field public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
-    field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
-    field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
-    field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
-    field public static final int ACTION_CLICK = 16; // 0x10
-    field public static final int ACTION_COLLAPSE = 524288; // 0x80000
-    field public static final int ACTION_COPY = 16384; // 0x4000
-    field public static final int ACTION_CUT = 65536; // 0x10000
-    field public static final int ACTION_DISMISS = 1048576; // 0x100000
-    field public static final int ACTION_EXPAND = 262144; // 0x40000
-    field public static final int ACTION_FOCUS = 1; // 0x1
-    field public static final int ACTION_LONG_CLICK = 32; // 0x20
-    field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
-    field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
-    field public static final int ACTION_PASTE = 32768; // 0x8000
-    field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
-    field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
-    field public static final int ACTION_SCROLL_BACKWARD = 8192; // 0x2000
-    field public static final int ACTION_SCROLL_FORWARD = 4096; // 0x1000
-    field public static final int ACTION_SELECT = 4; // 0x4
-    field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
-    field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
-    field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
-    field public static final int FOCUS_INPUT = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
-    field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
-    field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
-    field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
-  }
-
-  public static class AccessibilityNodeInfoCompat.AccessibilityActionCompat {
-    ctor public AccessibilityNodeInfoCompat.AccessibilityActionCompat(int, CharSequence!);
-    method public int getId();
-    method public CharSequence! getLabel();
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_ACCESSIBILITY_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_ACCESSIBILITY_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_SELECTION;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLICK;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COLLAPSE;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CONTEXT_CLICK;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COPY;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CUT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_DISMISS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_HTML_ELEMENT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_DOWN;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_LEFT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_DOWN;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_FORWARD;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_LEFT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_RIGHT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_TO_POSITION;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_UP;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SELECT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_PROGRESS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_SELECTION;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_TEXT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_ON_SCREEN;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_TOOLTIP;
-  }
-
-  public static class AccessibilityNodeInfoCompat.CollectionInfoCompat {
-    method public int getColumnCount();
-    method public int getRowCount();
-    method public int getSelectionMode();
-    method public boolean isHierarchical();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean, int);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean);
-    field public static final int SELECTION_MODE_MULTIPLE = 2; // 0x2
-    field public static final int SELECTION_MODE_NONE = 0; // 0x0
-    field public static final int SELECTION_MODE_SINGLE = 1; // 0x1
-  }
-
-  public static class AccessibilityNodeInfoCompat.CollectionItemInfoCompat {
-    method public int getColumnIndex();
-    method public int getColumnSpan();
-    method public int getRowIndex();
-    method public int getRowSpan();
-    method @Deprecated public boolean isHeading();
-    method public boolean isSelected();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean, boolean);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean);
-  }
-
-  public static class AccessibilityNodeInfoCompat.RangeInfoCompat {
-    method public float getCurrent();
-    method public float getMax();
-    method public float getMin();
-    method public int getType();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! obtain(int, float, float, float);
-    field public static final int RANGE_TYPE_FLOAT = 1; // 0x1
-    field public static final int RANGE_TYPE_INT = 0; // 0x0
-    field public static final int RANGE_TYPE_PERCENT = 2; // 0x2
-  }
-
-  public static final class AccessibilityNodeInfoCompat.TouchDelegateInfoCompat {
-    ctor public AccessibilityNodeInfoCompat.TouchDelegateInfoCompat(java.util.Map<android.graphics.Region!,android.view.View!>);
-    method public android.graphics.Region? getRegionAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getRegionCount();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? getTargetForRegion(android.graphics.Region);
-  }
-
-  public class AccessibilityNodeProviderCompat {
-    ctor public AccessibilityNodeProviderCompat();
-    ctor public AccessibilityNodeProviderCompat(Object!);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? createAccessibilityNodeInfo(int);
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>? findAccessibilityNodeInfosByText(String!, int);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? findFocus(int);
-    method public Object! getProvider();
-    method public boolean performAction(int, int, android.os.Bundle!);
-    field public static final int HOST_VIEW_ID = -1; // 0xffffffff
-  }
-
-  public class AccessibilityRecordCompat {
-    ctor @Deprecated public AccessibilityRecordCompat(Object!);
-    method @Deprecated public boolean equals(Object?);
-    method @Deprecated public int getAddedCount();
-    method @Deprecated public CharSequence! getBeforeText();
-    method @Deprecated public CharSequence! getClassName();
-    method @Deprecated public CharSequence! getContentDescription();
-    method @Deprecated public int getCurrentItemIndex();
-    method @Deprecated public int getFromIndex();
-    method @Deprecated public Object! getImpl();
-    method @Deprecated public int getItemCount();
-    method @Deprecated public int getMaxScrollX();
-    method public static int getMaxScrollX(android.view.accessibility.AccessibilityRecord!);
-    method @Deprecated public int getMaxScrollY();
-    method public static int getMaxScrollY(android.view.accessibility.AccessibilityRecord!);
-    method @Deprecated public android.os.Parcelable! getParcelableData();
-    method @Deprecated public int getRemovedCount();
-    method @Deprecated public int getScrollX();
-    method @Deprecated public int getScrollY();
-    method @Deprecated public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getSource();
-    method @Deprecated public java.util.List<java.lang.CharSequence!>! getText();
-    method @Deprecated public int getToIndex();
-    method @Deprecated public int getWindowId();
-    method @Deprecated public int hashCode();
-    method @Deprecated public boolean isChecked();
-    method @Deprecated public boolean isEnabled();
-    method @Deprecated public boolean isFullScreen();
-    method @Deprecated public boolean isPassword();
-    method @Deprecated public boolean isScrollable();
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain(androidx.core.view.accessibility.AccessibilityRecordCompat!);
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain();
-    method @Deprecated public void recycle();
-    method @Deprecated public void setAddedCount(int);
-    method @Deprecated public void setBeforeText(CharSequence!);
-    method @Deprecated public void setChecked(boolean);
-    method @Deprecated public void setClassName(CharSequence!);
-    method @Deprecated public void setContentDescription(CharSequence!);
-    method @Deprecated public void setCurrentItemIndex(int);
-    method @Deprecated public void setEnabled(boolean);
-    method @Deprecated public void setFromIndex(int);
-    method @Deprecated public void setFullScreen(boolean);
-    method @Deprecated public void setItemCount(int);
-    method @Deprecated public void setMaxScrollX(int);
-    method public static void setMaxScrollX(android.view.accessibility.AccessibilityRecord!, int);
-    method @Deprecated public void setMaxScrollY(int);
-    method public static void setMaxScrollY(android.view.accessibility.AccessibilityRecord!, int);
-    method @Deprecated public void setParcelableData(android.os.Parcelable!);
-    method @Deprecated public void setPassword(boolean);
-    method @Deprecated public void setRemovedCount(int);
-    method @Deprecated public void setScrollX(int);
-    method @Deprecated public void setScrollY(int);
-    method @Deprecated public void setScrollable(boolean);
-    method @Deprecated public void setSource(android.view.View!);
-    method @Deprecated public void setSource(android.view.View!, int);
-    method public static void setSource(android.view.accessibility.AccessibilityRecord, android.view.View!, int);
-    method @Deprecated public void setToIndex(int);
-  }
-
-  public interface AccessibilityViewCommand {
-    method public boolean perform(android.view.View, androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments?);
-  }
-
-  public abstract static class AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.CommandArguments();
-  }
-
-  public static final class AccessibilityViewCommand.MoveAtGranularityArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.MoveAtGranularityArguments();
-    method public boolean getExtendSelection();
-    method public int getGranularity();
-  }
-
-  public static final class AccessibilityViewCommand.MoveHtmlArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.MoveHtmlArguments();
-    method public String! getHTMLElement();
-  }
-
-  public static final class AccessibilityViewCommand.MoveWindowArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.MoveWindowArguments();
-    method public int getX();
-    method public int getY();
-  }
-
-  public static final class AccessibilityViewCommand.ScrollToPositionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.ScrollToPositionArguments();
-    method public int getColumn();
-    method public int getRow();
-  }
-
-  public static final class AccessibilityViewCommand.SetProgressArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.SetProgressArguments();
-    method public float getProgress();
-  }
-
-  public static final class AccessibilityViewCommand.SetSelectionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.SetSelectionArguments();
-    method public int getEnd();
-    method public int getStart();
-  }
-
-  public static final class AccessibilityViewCommand.SetTextArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.SetTextArguments();
-    method public CharSequence! getText();
-  }
-
-  public class AccessibilityWindowInfoCompat {
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getAnchor();
-    method public void getBoundsInScreen(android.graphics.Rect!);
-    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getChild(int);
-    method public int getChildCount();
-    method public int getId();
-    method public int getLayer();
-    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getParent();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getRoot();
-    method public CharSequence! getTitle();
-    method public int getType();
-    method public boolean isAccessibilityFocused();
-    method public boolean isActive();
-    method public boolean isFocused();
-    method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain();
-    method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityWindowInfoCompat!);
-    method public void recycle();
-    field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4
-    field public static final int TYPE_APPLICATION = 1; // 0x1
-    field public static final int TYPE_INPUT_METHOD = 2; // 0x2
-    field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
-    field public static final int TYPE_SYSTEM = 3; // 0x3
-  }
-
-}
-
-package androidx.core.view.animation {
-
-  public final class PathInterpolatorCompat {
-    method public static android.view.animation.Interpolator! create(android.graphics.Path!);
-    method public static android.view.animation.Interpolator! create(float, float);
-    method public static android.view.animation.Interpolator! create(float, float, float, float);
-  }
-
-}
-
-package androidx.core.view.inputmethod {
-
-  public final class EditorInfoCompat {
-    ctor @Deprecated public EditorInfoCompat();
-    method public static String![] getContentMimeTypes(android.view.inputmethod.EditorInfo!);
-    method public static void setContentMimeTypes(android.view.inputmethod.EditorInfo, String![]?);
-    field public static final int IME_FLAG_FORCE_ASCII = -2147483648; // 0x80000000
-    field public static final int IME_FLAG_NO_PERSONALIZED_LEARNING = 16777216; // 0x1000000
-  }
-
-  public final class InputConnectionCompat {
-    ctor @Deprecated public InputConnectionCompat();
-    method public static boolean commitContent(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputContentInfoCompat, int, android.os.Bundle?);
-    method public static android.view.inputmethod.InputConnection createWrapper(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener);
-    field public static final int INPUT_CONTENT_GRANT_READ_URI_PERMISSION = 1; // 0x1
-  }
-
-  public static interface InputConnectionCompat.OnCommitContentListener {
-    method public boolean onCommitContent(androidx.core.view.inputmethod.InputContentInfoCompat!, int, android.os.Bundle!);
-  }
-
-  public final class InputContentInfoCompat {
-    ctor public InputContentInfoCompat(android.net.Uri, android.content.ClipDescription, android.net.Uri?);
-    method public android.net.Uri getContentUri();
-    method public android.content.ClipDescription getDescription();
-    method public android.net.Uri? getLinkUri();
-    method public void releasePermission();
-    method public void requestPermission();
-    method public Object? unwrap();
-    method public static androidx.core.view.inputmethod.InputContentInfoCompat? wrap(Object?);
-  }
-
-}
-
-package androidx.core.widget {
-
-  public abstract class AutoScrollHelper implements android.view.View.OnTouchListener {
-    ctor public AutoScrollHelper(android.view.View);
-    method public abstract boolean canTargetScrollHorizontally(int);
-    method public abstract boolean canTargetScrollVertically(int);
-    method public boolean isEnabled();
-    method public boolean isExclusive();
-    method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
-    method public abstract void scrollTargetBy(int, int);
-    method public androidx.core.widget.AutoScrollHelper setActivationDelay(int);
-    method public androidx.core.widget.AutoScrollHelper setEdgeType(int);
-    method public androidx.core.widget.AutoScrollHelper! setEnabled(boolean);
-    method public androidx.core.widget.AutoScrollHelper! setExclusive(boolean);
-    method public androidx.core.widget.AutoScrollHelper setMaximumEdges(float, float);
-    method public androidx.core.widget.AutoScrollHelper setMaximumVelocity(float, float);
-    method public androidx.core.widget.AutoScrollHelper setMinimumVelocity(float, float);
-    method public androidx.core.widget.AutoScrollHelper setRampDownDuration(int);
-    method public androidx.core.widget.AutoScrollHelper setRampUpDuration(int);
-    method public androidx.core.widget.AutoScrollHelper setRelativeEdges(float, float);
-    method public androidx.core.widget.AutoScrollHelper setRelativeVelocity(float, float);
-    field public static final int EDGE_TYPE_INSIDE = 0; // 0x0
-    field public static final int EDGE_TYPE_INSIDE_EXTEND = 1; // 0x1
-    field public static final int EDGE_TYPE_OUTSIDE = 2; // 0x2
-    field public static final float NO_MAX = 3.4028235E38f;
-    field public static final float NO_MIN = 0.0f;
-    field public static final float RELATIVE_UNSPECIFIED = 0.0f;
-  }
-
-  public final class CompoundButtonCompat {
-    method public static android.graphics.drawable.Drawable? getButtonDrawable(android.widget.CompoundButton);
-    method public static android.content.res.ColorStateList? getButtonTintList(android.widget.CompoundButton);
-    method public static android.graphics.PorterDuff.Mode? getButtonTintMode(android.widget.CompoundButton);
-    method public static void setButtonTintList(android.widget.CompoundButton, android.content.res.ColorStateList?);
-    method public static void setButtonTintMode(android.widget.CompoundButton, android.graphics.PorterDuff.Mode?);
-  }
-
-  public class ContentLoadingProgressBar extends android.widget.ProgressBar {
-    ctor public ContentLoadingProgressBar(android.content.Context);
-    ctor public ContentLoadingProgressBar(android.content.Context, android.util.AttributeSet?);
-    method public void hide();
-    method public void onAttachedToWindow();
-    method public void onDetachedFromWindow();
-    method public void show();
-  }
-
-  public final class EdgeEffectCompat {
-    ctor @Deprecated public EdgeEffectCompat(android.content.Context!);
-    method @Deprecated public boolean draw(android.graphics.Canvas!);
-    method @Deprecated public void finish();
-    method @Deprecated public boolean isFinished();
-    method @Deprecated public boolean onAbsorb(int);
-    method @Deprecated public boolean onPull(float);
-    method @Deprecated public boolean onPull(float, float);
-    method public static void onPull(android.widget.EdgeEffect, float, float);
-    method @Deprecated public boolean onRelease();
-    method @Deprecated public void setSize(int, int);
-  }
-
-  public class ImageViewCompat {
-    method public static android.content.res.ColorStateList? getImageTintList(android.widget.ImageView);
-    method public static android.graphics.PorterDuff.Mode? getImageTintMode(android.widget.ImageView);
-    method public static void setImageTintList(android.widget.ImageView, android.content.res.ColorStateList?);
-    method public static void setImageTintMode(android.widget.ImageView, android.graphics.PorterDuff.Mode?);
-  }
-
-  public final class ListPopupWindowCompat {
-    method @Deprecated public static android.view.View.OnTouchListener! createDragToOpenListener(Object!, android.view.View!);
-    method public static android.view.View.OnTouchListener? createDragToOpenListener(android.widget.ListPopupWindow, android.view.View);
-  }
-
-  public class ListViewAutoScrollHelper extends androidx.core.widget.AutoScrollHelper {
-    ctor public ListViewAutoScrollHelper(android.widget.ListView);
-    method public boolean canTargetScrollHorizontally(int);
-    method public boolean canTargetScrollVertically(int);
-    method public void scrollTargetBy(int, int);
-  }
-
-  public final class ListViewCompat {
-    method public static boolean canScrollList(android.widget.ListView, int);
-    method public static void scrollListBy(android.widget.ListView, int);
-  }
-
-  public class NestedScrollView extends android.widget.FrameLayout implements androidx.core.view.NestedScrollingChild3 androidx.core.view.NestedScrollingParent3 androidx.core.view.ScrollingView {
-    ctor public NestedScrollView(android.content.Context);
-    ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?);
-    ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?, int);
-    method public boolean arrowScroll(int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollExtent();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollOffset();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollRange();
-    method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollExtent();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollOffset();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollRange();
-    method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
-    method public boolean executeKeyEvent(android.view.KeyEvent);
-    method public void fling(int);
-    method public boolean fullScroll(int);
-    method public int getMaxScrollAmount();
-    method public boolean hasNestedScrollingParent(int);
-    method public boolean isFillViewport();
-    method public boolean isSmoothScrollingEnabled();
-    method public void onAttachedToWindow();
-    method public void onNestedPreScroll(android.view.View, int, int, int[], int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
-    method public void onStopNestedScroll(android.view.View, int);
-    method public boolean pageScroll(int);
-    method public void setFillViewport(boolean);
-    method public void setOnScrollChangeListener(androidx.core.widget.NestedScrollView.OnScrollChangeListener?);
-    method public void setSmoothScrollingEnabled(boolean);
-    method public final void smoothScrollBy(int, int);
-    method public final void smoothScrollBy(int, int, int);
-    method public final void smoothScrollTo(int, int);
-    method public final void smoothScrollTo(int, int, int);
-    method public boolean startNestedScroll(int, int);
-    method public void stopNestedScroll(int);
-  }
-
-  public static interface NestedScrollView.OnScrollChangeListener {
-    method public void onScrollChange(androidx.core.widget.NestedScrollView!, int, int, int, int);
-  }
-
-  public final class PopupMenuCompat {
-    method public static android.view.View.OnTouchListener? getDragToOpenListener(Object);
-  }
-
-  public final class PopupWindowCompat {
-    method public static boolean getOverlapAnchor(android.widget.PopupWindow);
-    method public static int getWindowLayoutType(android.widget.PopupWindow);
-    method public static void setOverlapAnchor(android.widget.PopupWindow, boolean);
-    method public static void setWindowLayoutType(android.widget.PopupWindow, int);
-    method public static void showAsDropDown(android.widget.PopupWindow, android.view.View, int, int, int);
-  }
-
-  @Deprecated public final class ScrollerCompat {
-    method @Deprecated public void abortAnimation();
-    method @Deprecated public boolean computeScrollOffset();
-    method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!);
-    method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!, android.view.animation.Interpolator!);
-    method @Deprecated public void fling(int, int, int, int, int, int, int, int);
-    method @Deprecated public void fling(int, int, int, int, int, int, int, int, int, int);
-    method @Deprecated public float getCurrVelocity();
-    method @Deprecated public int getCurrX();
-    method @Deprecated public int getCurrY();
-    method @Deprecated public int getFinalX();
-    method @Deprecated public int getFinalY();
-    method @Deprecated public boolean isFinished();
-    method @Deprecated public boolean isOverScrolled();
-    method @Deprecated public void notifyHorizontalEdgeReached(int, int, int);
-    method @Deprecated public void notifyVerticalEdgeReached(int, int, int);
-    method @Deprecated public boolean springBack(int, int, int, int, int, int);
-    method @Deprecated public void startScroll(int, int, int, int);
-    method @Deprecated public void startScroll(int, int, int, int, int);
-  }
-
-  public final class TextViewCompat {
-    method public static int getAutoSizeMaxTextSize(android.widget.TextView);
-    method public static int getAutoSizeMinTextSize(android.widget.TextView);
-    method public static int getAutoSizeStepGranularity(android.widget.TextView);
-    method public static int[] getAutoSizeTextAvailableSizes(android.widget.TextView);
-    method public static int getAutoSizeTextType(android.widget.TextView);
-    method public static android.content.res.ColorStateList? getCompoundDrawableTintList(android.widget.TextView);
-    method public static android.graphics.PorterDuff.Mode? getCompoundDrawableTintMode(android.widget.TextView);
-    method public static android.graphics.drawable.Drawable![] getCompoundDrawablesRelative(android.widget.TextView);
-    method public static int getFirstBaselineToTopHeight(android.widget.TextView);
-    method public static int getLastBaselineToBottomHeight(android.widget.TextView);
-    method public static int getMaxLines(android.widget.TextView);
-    method public static int getMinLines(android.widget.TextView);
-    method public static androidx.core.text.PrecomputedTextCompat.Params getTextMetricsParams(android.widget.TextView);
-    method public static void setAutoSizeTextTypeUniformWithConfiguration(android.widget.TextView, int, int, int, int) throws java.lang.IllegalArgumentException;
-    method public static void setAutoSizeTextTypeUniformWithPresetSizes(android.widget.TextView, int[], int) throws java.lang.IllegalArgumentException;
-    method public static void setAutoSizeTextTypeWithDefaults(android.widget.TextView, int);
-    method public static void setCompoundDrawableTintList(android.widget.TextView, android.content.res.ColorStateList?);
-    method public static void setCompoundDrawableTintMode(android.widget.TextView, android.graphics.PorterDuff.Mode?);
-    method public static void setCompoundDrawablesRelative(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
-    method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
-    method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, @DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
-    method public static void setCustomSelectionActionModeCallback(android.widget.TextView, android.view.ActionMode.Callback);
-    method public static void setFirstBaselineToTopHeight(android.widget.TextView, @IntRange(from=0) @Px int);
-    method public static void setLastBaselineToBottomHeight(android.widget.TextView, @IntRange(from=0) @Px int);
-    method public static void setLineHeight(android.widget.TextView, @IntRange(from=0) @Px int);
-    method public static void setPrecomputedText(android.widget.TextView, androidx.core.text.PrecomputedTextCompat);
-    method public static void setTextAppearance(android.widget.TextView, @StyleRes int);
-    method public static void setTextMetricsParams(android.widget.TextView, androidx.core.text.PrecomputedTextCompat.Params);
-    field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
-    field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
-  }
-
-  public interface TintableCompoundButton {
-    method public android.content.res.ColorStateList? getSupportButtonTintList();
-    method public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
-    method public void setSupportButtonTintList(android.content.res.ColorStateList?);
-    method public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public interface TintableCompoundDrawablesView {
-    method public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
-    method public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
-    method public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
-    method public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-}
-
diff --git a/core/core/api/1.4.0-alpha01.txt b/core/core/api/1.4.0-alpha01.txt
index b8644ee..7a9f828 100644
--- a/core/core/api/1.4.0-alpha01.txt
+++ b/core/core/api/1.4.0-alpha01.txt
@@ -968,6 +968,7 @@
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
+    method public static boolean pushDynamicShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
@@ -2676,6 +2677,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_IME_ENTER;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
diff --git a/core/core/api/api_lint.ignore b/core/core/api/api_lint.ignore
index c20f29a..825c810 100644
--- a/core/core/api/api_lint.ignore
+++ b/core/core/api/api_lint.ignore
@@ -449,8 +449,6 @@
     Missing nullability on parameter `title` in method `addInvisibleAction`
 MissingNullability: androidx.core.app.NotificationCompat.Builder#addInvisibleAction(int, CharSequence, android.app.PendingIntent) parameter #2:
     Missing nullability on parameter `intent` in method `addInvisibleAction`
-MissingNullability: androidx.core.app.NotificationCompat.Builder#addPerson(String):
-    Missing nullability on method `addPerson` return
 MissingNullability: androidx.core.app.NotificationCompat.Builder#addPerson(String) parameter #0:
     Missing nullability on parameter `uri` in method `addPerson`
 MissingNullability: androidx.core.app.NotificationCompat.Builder#build():
diff --git a/core/core/api/current.txt b/core/core/api/current.txt
index b8644ee..e8bb4f0 100644
--- a/core/core/api/current.txt
+++ b/core/core/api/current.txt
@@ -397,7 +397,8 @@
     method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method @Deprecated public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person);
     method public android.app.Notification! build();
     method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
     method public android.os.Bundle! getExtras();
@@ -441,6 +442,7 @@
     method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
     method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
     method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(androidx.core.graphics.drawable.IconCompat);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
     method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
@@ -874,7 +876,9 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+    field public static final String EXTRA_EPOCH_TIME = "android.intent.extra.EPOCH_TIME";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
   }
@@ -932,13 +936,25 @@
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
     method public CharSequence? getDisabledMessage();
+    method public int getDisabledReason();
+    method public android.os.PersistableBundle? getExtras();
     method public String getId();
     method public android.content.Intent getIntent();
     method public android.content.Intent![] getIntents();
+    method public long getLastChangedTimestamp();
     method public androidx.core.content.LocusIdCompat? getLocusId();
     method public CharSequence? getLongLabel();
+    method public String getPackage();
     method public int getRank();
     method public CharSequence getShortLabel();
+    method public android.os.UserHandle? getUserHandle();
+    method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
+    method public boolean isDeclaredInManifest();
+    method public boolean isDynamic();
+    method public boolean isEnabled();
+    method public boolean isImmutable();
+    method public boolean isPinned();
     method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
   }
 
@@ -949,6 +965,7 @@
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
@@ -965,14 +982,28 @@
   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);
+    method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+    method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
+    method public static int getIconMaxHeight(android.content.Context);
+    method public static int getIconMaxWidth(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
+    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, int);
+    method public static boolean isRateLimitingActive(android.content.Context);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
+    method public static boolean pushDynamicShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void reportShortcutUsed(android.content.Context, String);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
+    method public static boolean setDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
   }
 
 }
@@ -1265,8 +1296,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1351,6 +1417,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -1714,11 +1785,13 @@
 
   public final class DisplayCutoutCompat {
     ctor public DisplayCutoutCompat(android.graphics.Rect!, java.util.List<android.graphics.Rect!>!);
+    ctor public DisplayCutoutCompat(androidx.core.graphics.Insets, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, androidx.core.graphics.Insets);
     method public java.util.List<android.graphics.Rect!>! getBoundingRects();
     method public int getSafeInsetBottom();
     method public int getSafeInsetLeft();
     method public int getSafeInsetRight();
     method public int getSafeInsetTop();
+    method public androidx.core.graphics.Insets getWaterfallInsets();
   }
 
   public final class DragAndDropPermissionsCompat {
@@ -2119,6 +2192,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2209,6 +2283,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, int);
     method public static void setScrollIndicators(android.view.View, int, int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2432,6 +2507,7 @@
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2515,6 +2591,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2604,6 +2681,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
@@ -2624,6 +2702,7 @@
     field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
     field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
     field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
     field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -2676,6 +2755,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_IME_ENTER;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
@@ -2685,6 +2765,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
diff --git a/core/core/api/public_plus_experimental_1.3.0-alpha01.txt b/core/core/api/public_plus_experimental_1.3.0-alpha01.txt
index 29766ad..1d554c8 100644
--- a/core/core/api/public_plus_experimental_1.3.0-alpha01.txt
+++ b/core/core/api/public_plus_experimental_1.3.0-alpha01.txt
@@ -872,9 +872,11 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
+    field public static final String EXTRA_TIME = "android.intent.extra.TIME";
   }
 
   public final class MimeTypeFilter {
@@ -1252,8 +1254,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1338,6 +1375,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -2100,6 +2142,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2190,6 +2233,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, int);
     method public static void setScrollIndicators(android.view.View, int, int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2411,6 +2455,7 @@
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2494,6 +2539,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2583,6 +2629,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
diff --git a/core/core/api/public_plus_experimental_1.3.0-alpha02.txt b/core/core/api/public_plus_experimental_1.3.0-alpha02.txt
index 2603884..fd7147f 100644
--- a/core/core/api/public_plus_experimental_1.3.0-alpha02.txt
+++ b/core/core/api/public_plus_experimental_1.3.0-alpha02.txt
@@ -396,7 +396,8 @@
     method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method @Deprecated public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person);
     method public android.app.Notification! build();
     method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
     method public android.os.Bundle! getExtras();
@@ -439,6 +440,7 @@
     method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
     method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
     method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
     method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
@@ -872,9 +874,11 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
+    field public static final String EXTRA_TIME = "android.intent.extra.TIME";
   }
 
   public final class MimeTypeFilter {
@@ -923,12 +927,24 @@
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
     method public CharSequence? getDisabledMessage();
+    method public int getDisabledReason();
+    method public android.os.PersistableBundle? getExtras();
     method public String getId();
     method public android.content.Intent getIntent();
     method public android.content.Intent![] getIntents();
+    method public long getLastChangedTimestamp();
     method public CharSequence? getLongLabel();
+    method public String getPackage();
     method public int getRank();
     method public CharSequence getShortLabel();
+    method public android.os.UserHandle? getUserHandle();
+    method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
+    method public boolean isDeclaredInManifest();
+    method public boolean isDynamic();
+    method public boolean isEnabled();
+    method public boolean isImmutable();
+    method public boolean isPinned();
     method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
   }
 
@@ -939,6 +955,7 @@
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
@@ -954,14 +971,22 @@
   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);
+    method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+    method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
+    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, int);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
     method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
   }
 
 }
@@ -1252,8 +1277,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1338,6 +1398,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -2101,6 +2166,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2191,6 +2257,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, int);
     method public static void setScrollIndicators(android.view.View, int, int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2412,6 +2479,7 @@
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2495,6 +2563,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2584,6 +2653,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
@@ -2604,6 +2674,7 @@
     field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
     field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
     field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
     field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -2665,6 +2736,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
diff --git a/core/core/api/public_plus_experimental_1.3.0-alpha03.txt b/core/core/api/public_plus_experimental_1.3.0-alpha03.txt
index 84faa94..b2e6103 100644
--- a/core/core/api/public_plus_experimental_1.3.0-alpha03.txt
+++ b/core/core/api/public_plus_experimental_1.3.0-alpha03.txt
@@ -396,7 +396,8 @@
     method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method @Deprecated public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person);
     method public android.app.Notification! build();
     method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
     method public android.os.Bundle! getExtras();
@@ -439,6 +440,7 @@
     method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
     method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
     method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
     method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
@@ -872,7 +874,9 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+    field public static final String EXTRA_EPOCH_TIME = "android.intent.extra.EPOCH_TIME";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
   }
@@ -923,12 +927,24 @@
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
     method public CharSequence? getDisabledMessage();
+    method public int getDisabledReason();
+    method public android.os.PersistableBundle? getExtras();
     method public String getId();
     method public android.content.Intent getIntent();
     method public android.content.Intent![] getIntents();
+    method public long getLastChangedTimestamp();
     method public CharSequence? getLongLabel();
+    method public String getPackage();
     method public int getRank();
     method public CharSequence getShortLabel();
+    method public android.os.UserHandle? getUserHandle();
+    method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
+    method public boolean isDeclaredInManifest();
+    method public boolean isDynamic();
+    method public boolean isEnabled();
+    method public boolean isImmutable();
+    method public boolean isPinned();
     method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
   }
 
@@ -939,6 +955,7 @@
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
@@ -954,14 +971,22 @@
   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);
+    method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+    method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
+    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, int);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
     method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
   }
 
 }
@@ -1252,8 +1277,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1338,6 +1398,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -2102,6 +2167,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2192,6 +2258,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, int);
     method public static void setScrollIndicators(android.view.View, int, int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2415,6 +2482,7 @@
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2498,6 +2566,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2587,6 +2656,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
@@ -2607,6 +2677,7 @@
     field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
     field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
     field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
     field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -2668,6 +2739,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
diff --git a/core/core/api/public_plus_experimental_1.3.0-rc01.txt b/core/core/api/public_plus_experimental_1.3.0-rc01.txt
deleted file mode 100644
index 92e48b4..0000000
--- a/core/core/api/public_plus_experimental_1.3.0-rc01.txt
+++ /dev/null
@@ -1,3124 +0,0 @@
-// Signature format: 3.0
-package androidx.core.accessibilityservice {
-
-  public final class AccessibilityServiceInfoCompat {
-    method public static String capabilityToString(int);
-    method public static String feedbackTypeToString(int);
-    method public static String? flagToString(int);
-    method public static int getCapabilities(android.accessibilityservice.AccessibilityServiceInfo);
-    method public static String? loadDescription(android.accessibilityservice.AccessibilityServiceInfo, android.content.pm.PackageManager);
-    field public static final int CAPABILITY_CAN_FILTER_KEY_EVENTS = 8; // 0x8
-    field public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
-    field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
-    field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
-    field public static final int FEEDBACK_ALL_MASK = -1; // 0xffffffff
-    field public static final int FEEDBACK_BRAILLE = 32; // 0x20
-    field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
-    field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
-    field public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
-    field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
-    field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
-  }
-
-}
-
-package androidx.core.app {
-
-  public class ActivityCompat extends androidx.core.content.ContextCompat {
-    ctor protected ActivityCompat();
-    method public static void finishAffinity(android.app.Activity);
-    method public static void finishAfterTransition(android.app.Activity);
-    method public static android.net.Uri? getReferrer(android.app.Activity);
-    method @Deprecated public static boolean invalidateOptionsMenu(android.app.Activity!);
-    method public static void postponeEnterTransition(android.app.Activity);
-    method public static void recreate(android.app.Activity);
-    method public static androidx.core.view.DragAndDropPermissionsCompat? requestDragAndDropPermissions(android.app.Activity!, android.view.DragEvent!);
-    method public static void requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
-    method public static <T extends android.view.View> T requireViewById(android.app.Activity, @IdRes int);
-    method public static void setEnterSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
-    method public static void setExitSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
-    method public static void setPermissionCompatDelegate(androidx.core.app.ActivityCompat.PermissionCompatDelegate?);
-    method public static boolean shouldShowRequestPermissionRationale(android.app.Activity, String);
-    method public static void startActivityForResult(android.app.Activity, android.content.Intent, int, android.os.Bundle?);
-    method public static void startIntentSenderForResult(android.app.Activity, android.content.IntentSender, int, android.content.Intent?, int, int, int, android.os.Bundle?) throws android.content.IntentSender.SendIntentException;
-    method public static void startPostponedEnterTransition(android.app.Activity);
-  }
-
-  public static interface ActivityCompat.OnRequestPermissionsResultCallback {
-    method public void onRequestPermissionsResult(int, String![], int[]);
-  }
-
-  public static interface ActivityCompat.PermissionCompatDelegate {
-    method public boolean onActivityResult(android.app.Activity, @IntRange(from=0) int, int, android.content.Intent?);
-    method public boolean requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
-  }
-
-  public final class ActivityManagerCompat {
-    method public static boolean isLowRamDevice(android.app.ActivityManager);
-  }
-
-  public class ActivityOptionsCompat {
-    ctor protected ActivityOptionsCompat();
-    method public android.graphics.Rect? getLaunchBounds();
-    method public static androidx.core.app.ActivityOptionsCompat makeBasic();
-    method public static androidx.core.app.ActivityOptionsCompat makeClipRevealAnimation(android.view.View, int, int, int, int);
-    method public static androidx.core.app.ActivityOptionsCompat makeCustomAnimation(android.content.Context, int, int);
-    method public static androidx.core.app.ActivityOptionsCompat makeScaleUpAnimation(android.view.View, int, int, int, int);
-    method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, android.view.View, String);
-    method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, androidx.core.util.Pair<android.view.View!,java.lang.String!>!...);
-    method public static androidx.core.app.ActivityOptionsCompat makeTaskLaunchBehind();
-    method public static androidx.core.app.ActivityOptionsCompat makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
-    method public void requestUsageTimeReport(android.app.PendingIntent);
-    method public androidx.core.app.ActivityOptionsCompat setLaunchBounds(android.graphics.Rect?);
-    method public android.os.Bundle? toBundle();
-    method public void update(androidx.core.app.ActivityOptionsCompat);
-    field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
-    field public static final String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
-  }
-
-  public final class AlarmManagerCompat {
-    method public static void setAlarmClock(android.app.AlarmManager, long, android.app.PendingIntent, android.app.PendingIntent);
-    method public static void setAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
-    method public static void setExact(android.app.AlarmManager, int, long, android.app.PendingIntent);
-    method public static void setExactAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
-  }
-
-  @RequiresApi(28) public class AppComponentFactory extends android.app.AppComponentFactory {
-    ctor public AppComponentFactory();
-    method public final android.app.Activity instantiateActivity(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Activity instantiateActivityCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.app.Application instantiateApplication(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Application instantiateApplicationCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.content.ContentProvider instantiateProvider(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.content.ContentProvider instantiateProviderCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.content.BroadcastReceiver instantiateReceiver(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.content.BroadcastReceiver instantiateReceiverCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.app.Service instantiateService(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Service instantiateServiceCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-  }
-
-  public class AppLaunchChecker {
-    ctor @Deprecated public AppLaunchChecker();
-    method public static boolean hasStartedFromLauncher(android.content.Context);
-    method public static void onActivityCreate(android.app.Activity);
-  }
-
-  public final class AppOpsManagerCompat {
-    method public static int noteOp(android.content.Context, String, int, String);
-    method public static int noteOpNoThrow(android.content.Context, String, int, String);
-    method public static int noteProxyOp(android.content.Context, String, String);
-    method public static int noteProxyOpNoThrow(android.content.Context, String, String);
-    method public static String? permissionToOp(String);
-    field public static final int MODE_ALLOWED = 0; // 0x0
-    field public static final int MODE_DEFAULT = 3; // 0x3
-    field public static final int MODE_ERRORED = 2; // 0x2
-    field public static final int MODE_IGNORED = 1; // 0x1
-  }
-
-  public final class BundleCompat {
-    method public static android.os.IBinder? getBinder(android.os.Bundle, String?);
-    method public static void putBinder(android.os.Bundle, String?, android.os.IBinder?);
-  }
-
-  public class DialogCompat {
-    method public static android.view.View requireViewById(android.app.Dialog, int);
-  }
-
-  public class FrameMetricsAggregator {
-    ctor public FrameMetricsAggregator();
-    ctor public FrameMetricsAggregator(int);
-    method public void add(android.app.Activity);
-    method public android.util.SparseIntArray![]? getMetrics();
-    method public android.util.SparseIntArray![]? remove(android.app.Activity);
-    method public android.util.SparseIntArray![]? reset();
-    method public android.util.SparseIntArray![]? stop();
-    field public static final int ANIMATION_DURATION = 256; // 0x100
-    field public static final int ANIMATION_INDEX = 8; // 0x8
-    field public static final int COMMAND_DURATION = 32; // 0x20
-    field public static final int COMMAND_INDEX = 5; // 0x5
-    field public static final int DELAY_DURATION = 128; // 0x80
-    field public static final int DELAY_INDEX = 7; // 0x7
-    field public static final int DRAW_DURATION = 8; // 0x8
-    field public static final int DRAW_INDEX = 3; // 0x3
-    field public static final int EVERY_DURATION = 511; // 0x1ff
-    field public static final int INPUT_DURATION = 2; // 0x2
-    field public static final int INPUT_INDEX = 1; // 0x1
-    field public static final int LAYOUT_MEASURE_DURATION = 4; // 0x4
-    field public static final int LAYOUT_MEASURE_INDEX = 2; // 0x2
-    field public static final int SWAP_DURATION = 64; // 0x40
-    field public static final int SWAP_INDEX = 6; // 0x6
-    field public static final int SYNC_DURATION = 16; // 0x10
-    field public static final int SYNC_INDEX = 4; // 0x4
-    field public static final int TOTAL_DURATION = 1; // 0x1
-    field public static final int TOTAL_INDEX = 0; // 0x0
-  }
-
-  public abstract class JobIntentService extends android.app.Service {
-    ctor public JobIntentService();
-    method public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
-    method public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
-    method public boolean isStopped();
-    method public android.os.IBinder! onBind(android.content.Intent);
-    method protected abstract void onHandleWork(android.content.Intent);
-    method public boolean onStopCurrentWork();
-    method public void setInterruptIfStopped(boolean);
-  }
-
-  public final class NavUtils {
-    method public static android.content.Intent? getParentActivityIntent(android.app.Activity);
-    method public static android.content.Intent? getParentActivityIntent(android.content.Context, Class<?>) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static android.content.Intent? getParentActivityIntent(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static String? getParentActivityName(android.app.Activity);
-    method public static String? getParentActivityName(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static void navigateUpFromSameTask(android.app.Activity);
-    method public static void navigateUpTo(android.app.Activity, android.content.Intent);
-    method public static boolean shouldUpRecreateTask(android.app.Activity, android.content.Intent);
-    field public static final String PARENT_ACTIVITY = "android.support.PARENT_ACTIVITY";
-  }
-
-  public class NotificationCompat {
-    ctor @Deprecated public NotificationCompat();
-    method public static androidx.core.app.NotificationCompat.Action! getAction(android.app.Notification!, int);
-    method public static int getActionCount(android.app.Notification!);
-    method public static boolean getAllowSystemGeneratedContextualActions(android.app.Notification!);
-    method public static int getBadgeIconType(android.app.Notification!);
-    method public static androidx.core.app.NotificationCompat.BubbleMetadata? getBubbleMetadata(android.app.Notification);
-    method public static String! getCategory(android.app.Notification!);
-    method public static String! getChannelId(android.app.Notification!);
-    method @RequiresApi(19) public static CharSequence! getContentTitle(android.app.Notification!);
-    method public static android.os.Bundle? getExtras(android.app.Notification!);
-    method public static String! getGroup(android.app.Notification!);
-    method public static int getGroupAlertBehavior(android.app.Notification!);
-    method @RequiresApi(21) public static java.util.List<androidx.core.app.NotificationCompat.Action!>! getInvisibleActions(android.app.Notification!);
-    method public static boolean getLocalOnly(android.app.Notification!);
-    method public static String! getShortcutId(android.app.Notification!);
-    method public static String! getSortKey(android.app.Notification!);
-    method public static long getTimeoutAfter(android.app.Notification!);
-    method public static boolean isGroupSummary(android.app.Notification!);
-    field public static final int BADGE_ICON_LARGE = 2; // 0x2
-    field public static final int BADGE_ICON_NONE = 0; // 0x0
-    field public static final int BADGE_ICON_SMALL = 1; // 0x1
-    field public static final String CATEGORY_ALARM = "alarm";
-    field public static final String CATEGORY_CALL = "call";
-    field public static final String CATEGORY_EMAIL = "email";
-    field public static final String CATEGORY_ERROR = "err";
-    field public static final String CATEGORY_EVENT = "event";
-    field public static final String CATEGORY_MESSAGE = "msg";
-    field public static final String CATEGORY_NAVIGATION = "navigation";
-    field public static final String CATEGORY_PROGRESS = "progress";
-    field public static final String CATEGORY_PROMO = "promo";
-    field public static final String CATEGORY_RECOMMENDATION = "recommendation";
-    field public static final String CATEGORY_REMINDER = "reminder";
-    field public static final String CATEGORY_SERVICE = "service";
-    field public static final String CATEGORY_SOCIAL = "social";
-    field public static final String CATEGORY_STATUS = "status";
-    field public static final String CATEGORY_SYSTEM = "sys";
-    field public static final String CATEGORY_TRANSPORT = "transport";
-    field @ColorInt public static final int COLOR_DEFAULT = 0; // 0x0
-    field public static final int DEFAULT_ALL = -1; // 0xffffffff
-    field public static final int DEFAULT_LIGHTS = 4; // 0x4
-    field public static final int DEFAULT_SOUND = 1; // 0x1
-    field public static final int DEFAULT_VIBRATE = 2; // 0x2
-    field public static final String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
-    field public static final String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
-    field public static final String EXTRA_BIG_TEXT = "android.bigText";
-    field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
-    field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
-    field public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
-    field public static final String EXTRA_HIDDEN_CONVERSATION_TITLE = "android.hiddenConversationTitle";
-    field public static final String EXTRA_INFO_TEXT = "android.infoText";
-    field public static final String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
-    field public static final String EXTRA_LARGE_ICON = "android.largeIcon";
-    field public static final String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
-    field public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
-    field public static final String EXTRA_MESSAGES = "android.messages";
-    field public static final String EXTRA_MESSAGING_STYLE_USER = "android.messagingStyleUser";
-    field public static final String EXTRA_PEOPLE = "android.people";
-    field public static final String EXTRA_PICTURE = "android.picture";
-    field public static final String EXTRA_PROGRESS = "android.progress";
-    field public static final String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
-    field public static final String EXTRA_PROGRESS_MAX = "android.progressMax";
-    field public static final String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
-    field public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
-    field public static final String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
-    field public static final String EXTRA_SHOW_WHEN = "android.showWhen";
-    field public static final String EXTRA_SMALL_ICON = "android.icon";
-    field public static final String EXTRA_SUB_TEXT = "android.subText";
-    field public static final String EXTRA_SUMMARY_TEXT = "android.summaryText";
-    field public static final String EXTRA_TEMPLATE = "android.template";
-    field public static final String EXTRA_TEXT = "android.text";
-    field public static final String EXTRA_TEXT_LINES = "android.textLines";
-    field public static final String EXTRA_TITLE = "android.title";
-    field public static final String EXTRA_TITLE_BIG = "android.title.big";
-    field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
-    field public static final int FLAG_BUBBLE = 4096; // 0x1000
-    field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
-    field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
-    field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
-    field public static final int FLAG_INSISTENT = 4; // 0x4
-    field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
-    field public static final int FLAG_NO_CLEAR = 32; // 0x20
-    field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
-    field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
-    field public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
-    field public static final int GROUP_ALERT_ALL = 0; // 0x0
-    field public static final int GROUP_ALERT_CHILDREN = 2; // 0x2
-    field public static final int GROUP_ALERT_SUMMARY = 1; // 0x1
-    field public static final String GROUP_KEY_SILENT = "silent";
-    field public static final int PRIORITY_DEFAULT = 0; // 0x0
-    field public static final int PRIORITY_HIGH = 1; // 0x1
-    field public static final int PRIORITY_LOW = -1; // 0xffffffff
-    field public static final int PRIORITY_MAX = 2; // 0x2
-    field public static final int PRIORITY_MIN = -2; // 0xfffffffe
-    field public static final int STREAM_DEFAULT = -1; // 0xffffffff
-    field public static final int VISIBILITY_PRIVATE = 0; // 0x0
-    field public static final int VISIBILITY_PUBLIC = 1; // 0x1
-    field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
-  }
-
-  public static class NotificationCompat.Action {
-    ctor public NotificationCompat.Action(int, CharSequence!, android.app.PendingIntent!);
-    ctor public NotificationCompat.Action(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
-    method public android.app.PendingIntent! getActionIntent();
-    method public boolean getAllowGeneratedReplies();
-    method public androidx.core.app.RemoteInput![]! getDataOnlyRemoteInputs();
-    method public android.os.Bundle! getExtras();
-    method @Deprecated public int getIcon();
-    method public androidx.core.graphics.drawable.IconCompat? getIconCompat();
-    method public androidx.core.app.RemoteInput![]! getRemoteInputs();
-    method @androidx.core.app.NotificationCompat.Action.SemanticAction public int getSemanticAction();
-    method public boolean getShowsUserInterface();
-    method public CharSequence! getTitle();
-    method public boolean isContextual();
-    field public static final int SEMANTIC_ACTION_ARCHIVE = 5; // 0x5
-    field public static final int SEMANTIC_ACTION_CALL = 10; // 0xa
-    field public static final int SEMANTIC_ACTION_DELETE = 4; // 0x4
-    field public static final int SEMANTIC_ACTION_MARK_AS_READ = 2; // 0x2
-    field public static final int SEMANTIC_ACTION_MARK_AS_UNREAD = 3; // 0x3
-    field public static final int SEMANTIC_ACTION_MUTE = 6; // 0x6
-    field public static final int SEMANTIC_ACTION_NONE = 0; // 0x0
-    field public static final int SEMANTIC_ACTION_REPLY = 1; // 0x1
-    field public static final int SEMANTIC_ACTION_THUMBS_DOWN = 9; // 0x9
-    field public static final int SEMANTIC_ACTION_THUMBS_UP = 8; // 0x8
-    field public static final int SEMANTIC_ACTION_UNMUTE = 7; // 0x7
-    field public android.app.PendingIntent! actionIntent;
-    field @Deprecated public int icon;
-    field public CharSequence! title;
-  }
-
-  public static final class NotificationCompat.Action.Builder {
-    ctor public NotificationCompat.Action.Builder(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
-    ctor public NotificationCompat.Action.Builder(int, CharSequence!, android.app.PendingIntent!);
-    ctor public NotificationCompat.Action.Builder(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Action.Builder! addExtras(android.os.Bundle!);
-    method public androidx.core.app.NotificationCompat.Action.Builder! addRemoteInput(androidx.core.app.RemoteInput!);
-    method public androidx.core.app.NotificationCompat.Action! build();
-    method public androidx.core.app.NotificationCompat.Action.Builder! extend(androidx.core.app.NotificationCompat.Action.Extender!);
-    method public android.os.Bundle! getExtras();
-    method public androidx.core.app.NotificationCompat.Action.Builder! setAllowGeneratedReplies(boolean);
-    method public androidx.core.app.NotificationCompat.Action.Builder setContextual(boolean);
-    method public androidx.core.app.NotificationCompat.Action.Builder! setSemanticAction(@androidx.core.app.NotificationCompat.Action.SemanticAction int);
-    method public androidx.core.app.NotificationCompat.Action.Builder! setShowsUserInterface(boolean);
-  }
-
-  public static interface NotificationCompat.Action.Extender {
-    method public androidx.core.app.NotificationCompat.Action.Builder! extend(androidx.core.app.NotificationCompat.Action.Builder!);
-  }
-
-  @IntDef({androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_NONE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_REPLY, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_UNREAD, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_DELETE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_ARCHIVE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_UNMUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_UP, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_DOWN, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_CALL}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.Action.SemanticAction {
-  }
-
-  public static final class NotificationCompat.Action.WearableExtender implements androidx.core.app.NotificationCompat.Action.Extender {
-    ctor public NotificationCompat.Action.WearableExtender();
-    ctor public NotificationCompat.Action.WearableExtender(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! clone();
-    method public androidx.core.app.NotificationCompat.Action.Builder! extend(androidx.core.app.NotificationCompat.Action.Builder!);
-    method @Deprecated public CharSequence! getCancelLabel();
-    method @Deprecated public CharSequence! getConfirmLabel();
-    method public boolean getHintDisplayActionInline();
-    method public boolean getHintLaunchesActivity();
-    method @Deprecated public CharSequence! getInProgressLabel();
-    method public boolean isAvailableOffline();
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! setAvailableOffline(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender! setCancelLabel(CharSequence!);
-    method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender! setConfirmLabel(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! setHintDisplayActionInline(boolean);
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! setHintLaunchesActivity(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender! setInProgressLabel(CharSequence!);
-  }
-
-  public static class NotificationCompat.BigPictureStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.BigPictureStyle();
-    ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! bigLargeIcon(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! bigPicture(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! setBigContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! setSummaryText(CharSequence!);
-  }
-
-  public static class NotificationCompat.BigTextStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.BigTextStyle();
-    ctor public NotificationCompat.BigTextStyle(androidx.core.app.NotificationCompat.Builder!);
-    method public androidx.core.app.NotificationCompat.BigTextStyle! bigText(CharSequence!);
-    method public androidx.core.app.NotificationCompat.BigTextStyle! setBigContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.BigTextStyle! setSummaryText(CharSequence!);
-  }
-
-  public static final class NotificationCompat.BubbleMetadata {
-    method @RequiresApi(29) public static androidx.core.app.NotificationCompat.BubbleMetadata? fromPlatform(android.app.Notification.BubbleMetadata?);
-    method public boolean getAutoExpandBubble();
-    method public android.app.PendingIntent? getDeleteIntent();
-    method @Dimension(unit=androidx.annotation.Dimension.DP) public int getDesiredHeight();
-    method @DimenRes public int getDesiredHeightResId();
-    method public androidx.core.graphics.drawable.IconCompat getIcon();
-    method public android.app.PendingIntent getIntent();
-    method public boolean isNotificationSuppressed();
-    method @RequiresApi(29) public static android.app.Notification.BubbleMetadata? toPlatform(androidx.core.app.NotificationCompat.BubbleMetadata?);
-  }
-
-  public static final class NotificationCompat.BubbleMetadata.Builder {
-    ctor public NotificationCompat.BubbleMetadata.Builder();
-    method public androidx.core.app.NotificationCompat.BubbleMetadata build();
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setAutoExpandBubble(boolean);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDeleteIntent(android.app.PendingIntent?);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeight(@Dimension(unit=androidx.annotation.Dimension.DP) int);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeightResId(@DimenRes int);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIcon(androidx.core.graphics.drawable.IconCompat);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIntent(android.app.PendingIntent);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setSuppressNotification(boolean);
-  }
-
-  public static class NotificationCompat.Builder {
-    ctor public NotificationCompat.Builder(android.content.Context, String);
-    ctor @Deprecated public NotificationCompat.Builder(android.content.Context!);
-    method public androidx.core.app.NotificationCompat.Builder! addAction(int, CharSequence!, android.app.PendingIntent!);
-    method public androidx.core.app.NotificationCompat.Builder! addAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
-    method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
-    method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
-    method public android.app.Notification! build();
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
-    method public android.os.Bundle! getExtras();
-    method @Deprecated public android.app.Notification! getNotification();
-    method protected static CharSequence! limitCharSequenceLength(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder setAllowSystemGeneratedContextualActions(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setAutoCancel(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setBadgeIconType(int);
-    method public androidx.core.app.NotificationCompat.Builder setBubbleMetadata(androidx.core.app.NotificationCompat.BubbleMetadata?);
-    method public androidx.core.app.NotificationCompat.Builder! setCategory(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setChannelId(String);
-    method @RequiresApi(24) public androidx.core.app.NotificationCompat.Builder setChronometerCountDown(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setColor(@ColorInt int);
-    method public androidx.core.app.NotificationCompat.Builder! setColorized(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setContent(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentInfo(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentIntent(android.app.PendingIntent!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentText(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setCustomBigContentView(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setCustomContentView(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setCustomHeadsUpContentView(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setDefaults(int);
-    method public androidx.core.app.NotificationCompat.Builder! setDeleteIntent(android.app.PendingIntent!);
-    method public androidx.core.app.NotificationCompat.Builder! setExtras(android.os.Bundle!);
-    method public androidx.core.app.NotificationCompat.Builder! setFullScreenIntent(android.app.PendingIntent!, boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setGroup(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setGroupAlertBehavior(int);
-    method public androidx.core.app.NotificationCompat.Builder! setGroupSummary(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setLargeIcon(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.Builder! setLights(@ColorInt int, int, int);
-    method public androidx.core.app.NotificationCompat.Builder! setLocalOnly(boolean);
-    method public androidx.core.app.NotificationCompat.Builder setNotificationSilent();
-    method public androidx.core.app.NotificationCompat.Builder! setNumber(int);
-    method public androidx.core.app.NotificationCompat.Builder! setOngoing(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setOnlyAlertOnce(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setPriority(int);
-    method public androidx.core.app.NotificationCompat.Builder! setProgress(int, int, boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setPublicVersion(android.app.Notification!);
-    method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
-    method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
-    method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
-    method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setSound(android.net.Uri!);
-    method public androidx.core.app.NotificationCompat.Builder! setSound(android.net.Uri!, int);
-    method public androidx.core.app.NotificationCompat.Builder! setStyle(androidx.core.app.NotificationCompat.Style!);
-    method public androidx.core.app.NotificationCompat.Builder! setSubText(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setTicker(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setTicker(CharSequence!, android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setTimeoutAfter(long);
-    method public androidx.core.app.NotificationCompat.Builder! setUsesChronometer(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setVibrate(long[]!);
-    method public androidx.core.app.NotificationCompat.Builder! setVisibility(int);
-    method public androidx.core.app.NotificationCompat.Builder! setWhen(long);
-    field @Deprecated public java.util.ArrayList<java.lang.String!>! mPeople;
-  }
-
-  public static final class NotificationCompat.CarExtender implements androidx.core.app.NotificationCompat.Extender {
-    ctor public NotificationCompat.CarExtender();
-    ctor public NotificationCompat.CarExtender(android.app.Notification!);
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Builder!);
-    method @ColorInt public int getColor();
-    method public android.graphics.Bitmap! getLargeIcon();
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation! getUnreadConversation();
-    method public androidx.core.app.NotificationCompat.CarExtender! setColor(@ColorInt int);
-    method public androidx.core.app.NotificationCompat.CarExtender! setLargeIcon(android.graphics.Bitmap!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender! setUnreadConversation(androidx.core.app.NotificationCompat.CarExtender.UnreadConversation!);
-  }
-
-  @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation {
-    method @Deprecated public long getLatestTimestamp();
-    method @Deprecated public String![]! getMessages();
-    method @Deprecated public String! getParticipant();
-    method @Deprecated public String![]! getParticipants();
-    method @Deprecated public android.app.PendingIntent! getReadPendingIntent();
-    method @Deprecated public androidx.core.app.RemoteInput! getRemoteInput();
-    method @Deprecated public android.app.PendingIntent! getReplyPendingIntent();
-  }
-
-  @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation.Builder {
-    ctor @Deprecated public NotificationCompat.CarExtender.UnreadConversation.Builder(String!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! addMessage(String!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation! build();
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! setLatestTimestamp(long);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! setReadPendingIntent(android.app.PendingIntent!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! setReplyAction(android.app.PendingIntent!, androidx.core.app.RemoteInput!);
-  }
-
-  public static class NotificationCompat.DecoratedCustomViewStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.DecoratedCustomViewStyle();
-  }
-
-  public static interface NotificationCompat.Extender {
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Builder!);
-  }
-
-  public static class NotificationCompat.InboxStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.InboxStyle();
-    ctor public NotificationCompat.InboxStyle(androidx.core.app.NotificationCompat.Builder!);
-    method public androidx.core.app.NotificationCompat.InboxStyle! addLine(CharSequence!);
-    method public androidx.core.app.NotificationCompat.InboxStyle! setBigContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.InboxStyle! setSummaryText(CharSequence!);
-  }
-
-  public static class NotificationCompat.MessagingStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor @Deprecated public NotificationCompat.MessagingStyle(CharSequence);
-    ctor public NotificationCompat.MessagingStyle(androidx.core.app.Person);
-    method public void addCompatExtras(android.os.Bundle!);
-    method @Deprecated public androidx.core.app.NotificationCompat.MessagingStyle! addMessage(CharSequence!, long, CharSequence!);
-    method public androidx.core.app.NotificationCompat.MessagingStyle! addMessage(CharSequence!, long, androidx.core.app.Person!);
-    method public androidx.core.app.NotificationCompat.MessagingStyle! addMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message!);
-    method public static androidx.core.app.NotificationCompat.MessagingStyle? extractMessagingStyleFromNotification(android.app.Notification!);
-    method public CharSequence? getConversationTitle();
-    method public java.util.List<androidx.core.app.NotificationCompat.MessagingStyle.Message!>! getMessages();
-    method public androidx.core.app.Person! getUser();
-    method @Deprecated public CharSequence! getUserDisplayName();
-    method public boolean isGroupConversation();
-    method public androidx.core.app.NotificationCompat.MessagingStyle! setConversationTitle(CharSequence?);
-    method public androidx.core.app.NotificationCompat.MessagingStyle! setGroupConversation(boolean);
-    field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
-  }
-
-  public static final class NotificationCompat.MessagingStyle.Message {
-    ctor public NotificationCompat.MessagingStyle.Message(CharSequence!, long, androidx.core.app.Person?);
-    ctor @Deprecated public NotificationCompat.MessagingStyle.Message(CharSequence!, long, CharSequence!);
-    method public String? getDataMimeType();
-    method public android.net.Uri? getDataUri();
-    method public android.os.Bundle getExtras();
-    method public androidx.core.app.Person? getPerson();
-    method @Deprecated public CharSequence? getSender();
-    method public CharSequence getText();
-    method public long getTimestamp();
-    method public androidx.core.app.NotificationCompat.MessagingStyle.Message! setData(String!, android.net.Uri!);
-  }
-
-  public abstract static class NotificationCompat.Style {
-    ctor public NotificationCompat.Style();
-    method public android.app.Notification! build();
-    method public void setBuilder(androidx.core.app.NotificationCompat.Builder!);
-  }
-
-  public static final class NotificationCompat.WearableExtender implements androidx.core.app.NotificationCompat.Extender {
-    ctor public NotificationCompat.WearableExtender();
-    ctor public NotificationCompat.WearableExtender(android.app.Notification!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! addAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! addActions(java.util.List<androidx.core.app.NotificationCompat.Action!>!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! addPage(android.app.Notification!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! addPages(java.util.List<android.app.Notification!>!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! clearActions();
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! clearPages();
-    method public androidx.core.app.NotificationCompat.WearableExtender! clone();
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Builder!);
-    method public java.util.List<androidx.core.app.NotificationCompat.Action!>! getActions();
-    method @Deprecated public android.graphics.Bitmap! getBackground();
-    method public String! getBridgeTag();
-    method public int getContentAction();
-    method @Deprecated public int getContentIcon();
-    method @Deprecated public int getContentIconGravity();
-    method public boolean getContentIntentAvailableOffline();
-    method @Deprecated public int getCustomContentHeight();
-    method @Deprecated public int getCustomSizePreset();
-    method public String! getDismissalId();
-    method @Deprecated public android.app.PendingIntent! getDisplayIntent();
-    method @Deprecated public int getGravity();
-    method @Deprecated public boolean getHintAmbientBigPicture();
-    method @Deprecated public boolean getHintAvoidBackgroundClipping();
-    method public boolean getHintContentIntentLaunchesActivity();
-    method @Deprecated public boolean getHintHideIcon();
-    method @Deprecated public int getHintScreenTimeout();
-    method @Deprecated public boolean getHintShowBackgroundOnly();
-    method @Deprecated public java.util.List<android.app.Notification!>! getPages();
-    method public boolean getStartScrollBottom();
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setBackground(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setBridgeTag(String!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setContentAction(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setContentIcon(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setContentIconGravity(int);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setContentIntentAvailableOffline(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setCustomContentHeight(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setCustomSizePreset(int);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setDismissalId(String!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setDisplayIntent(android.app.PendingIntent!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setGravity(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintAmbientBigPicture(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintAvoidBackgroundClipping(boolean);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setHintContentIntentLaunchesActivity(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintHideIcon(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintScreenTimeout(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintShowBackgroundOnly(boolean);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setStartScrollBottom(boolean);
-    field @Deprecated public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
-    field @Deprecated public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
-    field @Deprecated public static final int SIZE_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int SIZE_FULL_SCREEN = 5; // 0x5
-    field @Deprecated public static final int SIZE_LARGE = 4; // 0x4
-    field @Deprecated public static final int SIZE_MEDIUM = 3; // 0x3
-    field @Deprecated public static final int SIZE_SMALL = 2; // 0x2
-    field @Deprecated public static final int SIZE_XSMALL = 1; // 0x1
-    field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
-  }
-
-  public final class NotificationCompatExtras {
-    field public static final String EXTRA_ACTION_EXTRAS = "android.support.actionExtras";
-    field public static final String EXTRA_GROUP_KEY = "android.support.groupKey";
-    field public static final String EXTRA_GROUP_SUMMARY = "android.support.isGroupSummary";
-    field public static final String EXTRA_LOCAL_ONLY = "android.support.localOnly";
-    field public static final String EXTRA_REMOTE_INPUTS = "android.support.remoteInputs";
-    field public static final String EXTRA_SORT_KEY = "android.support.sortKey";
-  }
-
-  public abstract class NotificationCompatSideChannelService extends android.app.Service {
-    ctor public NotificationCompatSideChannelService();
-    method public abstract void cancel(String!, int, String!);
-    method public abstract void cancelAll(String!);
-    method public abstract void notify(String!, int, String!, android.app.Notification!);
-    method public android.os.IBinder! onBind(android.content.Intent!);
-  }
-
-  public final class NotificationManagerCompat {
-    method public boolean areNotificationsEnabled();
-    method public void cancel(int);
-    method public void cancel(String?, int);
-    method public void cancelAll();
-    method public void createNotificationChannel(android.app.NotificationChannel);
-    method public void createNotificationChannelGroup(android.app.NotificationChannelGroup);
-    method public void createNotificationChannelGroups(java.util.List<android.app.NotificationChannelGroup!>);
-    method public void createNotificationChannels(java.util.List<android.app.NotificationChannel!>);
-    method public void deleteNotificationChannel(String);
-    method public void deleteNotificationChannelGroup(String);
-    method public static androidx.core.app.NotificationManagerCompat from(android.content.Context);
-    method public static java.util.Set<java.lang.String!> getEnabledListenerPackages(android.content.Context);
-    method public int getImportance();
-    method public android.app.NotificationChannel? getNotificationChannel(String);
-    method public android.app.NotificationChannelGroup? getNotificationChannelGroup(String);
-    method public java.util.List<android.app.NotificationChannelGroup!> getNotificationChannelGroups();
-    method public java.util.List<android.app.NotificationChannel!> getNotificationChannels();
-    method public void notify(int, android.app.Notification);
-    method public void notify(String?, int, android.app.Notification);
-    field public static final String ACTION_BIND_SIDE_CHANNEL = "android.support.BIND_NOTIFICATION_SIDE_CHANNEL";
-    field public static final String EXTRA_USE_SIDE_CHANNEL = "android.support.useSideChannel";
-    field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
-    field public static final int IMPORTANCE_HIGH = 4; // 0x4
-    field public static final int IMPORTANCE_LOW = 2; // 0x2
-    field public static final int IMPORTANCE_MAX = 5; // 0x5
-    field public static final int IMPORTANCE_MIN = 1; // 0x1
-    field public static final int IMPORTANCE_NONE = 0; // 0x0
-    field public static final int IMPORTANCE_UNSPECIFIED = -1000; // 0xfffffc18
-  }
-
-  public class Person {
-    method public static androidx.core.app.Person fromBundle(android.os.Bundle);
-    method public androidx.core.graphics.drawable.IconCompat? getIcon();
-    method public String? getKey();
-    method public CharSequence? getName();
-    method public String? getUri();
-    method public boolean isBot();
-    method public boolean isImportant();
-    method public androidx.core.app.Person.Builder toBuilder();
-    method public android.os.Bundle toBundle();
-  }
-
-  public static class Person.Builder {
-    ctor public Person.Builder();
-    method public androidx.core.app.Person build();
-    method public androidx.core.app.Person.Builder setBot(boolean);
-    method public androidx.core.app.Person.Builder setIcon(androidx.core.graphics.drawable.IconCompat?);
-    method public androidx.core.app.Person.Builder setImportant(boolean);
-    method public androidx.core.app.Person.Builder setKey(String?);
-    method public androidx.core.app.Person.Builder setName(CharSequence?);
-    method public androidx.core.app.Person.Builder setUri(String?);
-  }
-
-  public final class RemoteActionCompat implements androidx.versionedparcelable.VersionedParcelable {
-    ctor public RemoteActionCompat(androidx.core.graphics.drawable.IconCompat, CharSequence, CharSequence, android.app.PendingIntent);
-    ctor public RemoteActionCompat(androidx.core.app.RemoteActionCompat);
-    method @RequiresApi(26) public static androidx.core.app.RemoteActionCompat createFromRemoteAction(android.app.RemoteAction);
-    method public android.app.PendingIntent getActionIntent();
-    method public CharSequence getContentDescription();
-    method public androidx.core.graphics.drawable.IconCompat getIcon();
-    method public CharSequence getTitle();
-    method public boolean isEnabled();
-    method public void setEnabled(boolean);
-    method public void setShouldShowIcon(boolean);
-    method public boolean shouldShowIcon();
-    method @RequiresApi(26) public android.app.RemoteAction toRemoteAction();
-  }
-
-  public final class RemoteInput {
-    method public static void addDataResultToIntent(androidx.core.app.RemoteInput!, android.content.Intent!, java.util.Map<java.lang.String!,android.net.Uri!>!);
-    method public static void addResultsToIntent(androidx.core.app.RemoteInput![]!, android.content.Intent!, android.os.Bundle!);
-    method public boolean getAllowFreeFormInput();
-    method public java.util.Set<java.lang.String!>! getAllowedDataTypes();
-    method public CharSequence![]! getChoices();
-    method public static java.util.Map<java.lang.String!,android.net.Uri!>! getDataResultsFromIntent(android.content.Intent!, String!);
-    method public int getEditChoicesBeforeSending();
-    method public android.os.Bundle! getExtras();
-    method public CharSequence! getLabel();
-    method public String! getResultKey();
-    method public static android.os.Bundle! getResultsFromIntent(android.content.Intent!);
-    method public static int getResultsSource(android.content.Intent);
-    method public boolean isDataOnly();
-    method public static void setResultsSource(android.content.Intent, int);
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_AUTO = 0; // 0x0
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_DISABLED = 1; // 0x1
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_ENABLED = 2; // 0x2
-    field public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
-    field public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results";
-    field public static final int SOURCE_CHOICE = 1; // 0x1
-    field public static final int SOURCE_FREE_FORM_INPUT = 0; // 0x0
-  }
-
-  public static final class RemoteInput.Builder {
-    ctor public RemoteInput.Builder(String);
-    method public androidx.core.app.RemoteInput.Builder addExtras(android.os.Bundle);
-    method public androidx.core.app.RemoteInput build();
-    method public android.os.Bundle getExtras();
-    method public androidx.core.app.RemoteInput.Builder setAllowDataType(String, boolean);
-    method public androidx.core.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
-    method public androidx.core.app.RemoteInput.Builder setChoices(CharSequence![]?);
-    method public androidx.core.app.RemoteInput.Builder setEditChoicesBeforeSending(int);
-    method public androidx.core.app.RemoteInput.Builder setLabel(CharSequence?);
-  }
-
-  public final class ServiceCompat {
-    method public static void stopForeground(android.app.Service, int);
-    field public static final int START_STICKY = 1; // 0x1
-    field public static final int STOP_FOREGROUND_DETACH = 2; // 0x2
-    field public static final int STOP_FOREGROUND_REMOVE = 1; // 0x1
-  }
-
-  public final class ShareCompat {
-    method public static void configureMenuItem(android.view.MenuItem, androidx.core.app.ShareCompat.IntentBuilder);
-    method public static void configureMenuItem(android.view.Menu, @IdRes int, androidx.core.app.ShareCompat.IntentBuilder);
-    method public static android.content.ComponentName? getCallingActivity(android.app.Activity);
-    method public static String? getCallingPackage(android.app.Activity);
-    field public static final String EXTRA_CALLING_ACTIVITY = "androidx.core.app.EXTRA_CALLING_ACTIVITY";
-    field public static final String EXTRA_CALLING_ACTIVITY_INTEROP = "android.support.v4.app.EXTRA_CALLING_ACTIVITY";
-    field public static final String EXTRA_CALLING_PACKAGE = "androidx.core.app.EXTRA_CALLING_PACKAGE";
-    field public static final String EXTRA_CALLING_PACKAGE_INTEROP = "android.support.v4.app.EXTRA_CALLING_PACKAGE";
-  }
-
-  public static class ShareCompat.IntentBuilder {
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String![]);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String![]);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String![]);
-    method public androidx.core.app.ShareCompat.IntentBuilder addStream(android.net.Uri);
-    method public android.content.Intent createChooserIntent();
-    method public static androidx.core.app.ShareCompat.IntentBuilder from(android.app.Activity);
-    method public android.content.Intent getIntent();
-    method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(CharSequence?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(@StringRes int);
-    method public androidx.core.app.ShareCompat.IntentBuilder setEmailBcc(String![]?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setEmailCc(String![]?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setEmailTo(String![]?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setHtmlText(String?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setStream(android.net.Uri?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setSubject(String?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setText(CharSequence?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setType(String?);
-    method public void startChooser();
-  }
-
-  public static class ShareCompat.IntentReader {
-    method public static androidx.core.app.ShareCompat.IntentReader from(android.app.Activity);
-    method public android.content.ComponentName? getCallingActivity();
-    method public android.graphics.drawable.Drawable? getCallingActivityIcon();
-    method public android.graphics.drawable.Drawable? getCallingApplicationIcon();
-    method public CharSequence? getCallingApplicationLabel();
-    method public String? getCallingPackage();
-    method public String![]? getEmailBcc();
-    method public String![]? getEmailCc();
-    method public String![]? getEmailTo();
-    method public String? getHtmlText();
-    method public android.net.Uri? getStream();
-    method public android.net.Uri? getStream(int);
-    method public int getStreamCount();
-    method public String? getSubject();
-    method public CharSequence? getText();
-    method public String? getType();
-    method public boolean isMultipleShare();
-    method public boolean isShareIntent();
-    method public boolean isSingleShare();
-  }
-
-  public abstract class SharedElementCallback {
-    ctor public SharedElementCallback();
-    method public android.os.Parcelable! onCaptureSharedElementSnapshot(android.view.View!, android.graphics.Matrix!, android.graphics.RectF!);
-    method public android.view.View! onCreateSnapshotView(android.content.Context!, android.os.Parcelable!);
-    method public void onMapSharedElements(java.util.List<java.lang.String!>!, java.util.Map<java.lang.String!,android.view.View!>!);
-    method public void onRejectSharedElements(java.util.List<android.view.View!>!);
-    method public void onSharedElementEnd(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
-    method public void onSharedElementStart(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
-    method public void onSharedElementsArrived(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, androidx.core.app.SharedElementCallback.OnSharedElementsReadyListener!);
-  }
-
-  public static interface SharedElementCallback.OnSharedElementsReadyListener {
-    method public void onSharedElementsReady();
-  }
-
-  public final class TaskStackBuilder implements java.lang.Iterable<android.content.Intent> {
-    method public androidx.core.app.TaskStackBuilder addNextIntent(android.content.Intent);
-    method public androidx.core.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
-    method public androidx.core.app.TaskStackBuilder addParentStack(android.app.Activity);
-    method public androidx.core.app.TaskStackBuilder addParentStack(Class<?>);
-    method public androidx.core.app.TaskStackBuilder! addParentStack(android.content.ComponentName!);
-    method public static androidx.core.app.TaskStackBuilder create(android.content.Context);
-    method public android.content.Intent? editIntentAt(int);
-    method @Deprecated public static androidx.core.app.TaskStackBuilder! from(android.content.Context!);
-    method @Deprecated public android.content.Intent! getIntent(int);
-    method public int getIntentCount();
-    method public android.content.Intent![] getIntents();
-    method public android.app.PendingIntent? getPendingIntent(int, int);
-    method public android.app.PendingIntent? getPendingIntent(int, int, android.os.Bundle?);
-    method @Deprecated public java.util.Iterator<android.content.Intent!>! iterator();
-    method public void startActivities();
-    method public void startActivities(android.os.Bundle?);
-  }
-
-  public static interface TaskStackBuilder.SupportParentable {
-    method public android.content.Intent? getSupportParentActivityIntent();
-  }
-
-}
-
-package androidx.core.content {
-
-  public final class ContentProviderCompat {
-    method public static android.content.Context requireContext(android.content.ContentProvider);
-  }
-
-  public final class ContentResolverCompat {
-    method public static android.database.Cursor! query(android.content.ContentResolver!, android.net.Uri!, String![]!, String!, String![]!, String!, androidx.core.os.CancellationSignal!);
-  }
-
-  public class ContextCompat {
-    ctor protected ContextCompat();
-    method public static int checkSelfPermission(android.content.Context, String);
-    method public static android.content.Context? createDeviceProtectedStorageContext(android.content.Context);
-    method public static java.io.File! getCodeCacheDir(android.content.Context);
-    method @ColorInt public static int getColor(android.content.Context, @ColorRes int);
-    method public static android.content.res.ColorStateList? getColorStateList(android.content.Context, @ColorRes int);
-    method public static java.io.File? getDataDir(android.content.Context);
-    method public static android.graphics.drawable.Drawable? getDrawable(android.content.Context, @DrawableRes int);
-    method public static java.io.File![] getExternalCacheDirs(android.content.Context);
-    method public static java.io.File![] getExternalFilesDirs(android.content.Context, String?);
-    method public static java.util.concurrent.Executor! getMainExecutor(android.content.Context!);
-    method public static java.io.File? getNoBackupFilesDir(android.content.Context);
-    method public static java.io.File![] getObbDirs(android.content.Context);
-    method public static <T> T? getSystemService(android.content.Context, Class<T!>);
-    method public static String? getSystemServiceName(android.content.Context, Class<?>);
-    method public static boolean isDeviceProtectedStorage(android.content.Context);
-    method public static boolean startActivities(android.content.Context, android.content.Intent![]);
-    method public static boolean startActivities(android.content.Context, android.content.Intent![], android.os.Bundle?);
-    method public static void startActivity(android.content.Context, android.content.Intent, android.os.Bundle?);
-    method public static void startForegroundService(android.content.Context, android.content.Intent);
-  }
-
-  public class FileProvider extends android.content.ContentProvider {
-    ctor public FileProvider();
-    method public int delete(android.net.Uri, String?, String![]?);
-    method public String! getType(android.net.Uri);
-    method public static android.net.Uri! getUriForFile(android.content.Context, String, java.io.File);
-    method public android.net.Uri! insert(android.net.Uri, android.content.ContentValues!);
-    method public boolean onCreate();
-    method public android.database.Cursor! query(android.net.Uri, String![]?, String?, String![]?, String?);
-    method public int update(android.net.Uri, android.content.ContentValues!, String?, String![]?);
-  }
-
-  public final class IntentCompat {
-    method public static android.content.Intent makeMainSelectorActivity(String, String);
-    field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
-    field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
-    field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
-  }
-
-  public final class MimeTypeFilter {
-    method public static boolean matches(String?, String);
-    method public static String? matches(String?, String![]);
-    method public static String? matches(String![]?, String);
-    method public static String![] matchesMany(String![]?, String);
-  }
-
-  public final class PermissionChecker {
-    method public static int checkCallingOrSelfPermission(android.content.Context, String);
-    method public static int checkCallingPermission(android.content.Context, String, String?);
-    method public static int checkPermission(android.content.Context, String, int, int, String?);
-    method public static int checkSelfPermission(android.content.Context, String);
-    field public static final int PERMISSION_DENIED = -1; // 0xffffffff
-    field public static final int PERMISSION_DENIED_APP_OP = -2; // 0xfffffffe
-    field public static final int PERMISSION_GRANTED = 0; // 0x0
-  }
-
-  @Deprecated public final class SharedPreferencesCompat {
-  }
-
-  @Deprecated public static final class SharedPreferencesCompat.EditorCompat {
-    method @Deprecated public void apply(android.content.SharedPreferences.Editor);
-    method @Deprecated public static androidx.core.content.SharedPreferencesCompat.EditorCompat! getInstance();
-  }
-
-}
-
-package androidx.core.content.pm {
-
-  @Deprecated public final class ActivityInfoCompat {
-    field @Deprecated public static final int CONFIG_UI_MODE = 512; // 0x200
-  }
-
-  public final class PackageInfoCompat {
-    method public static long getLongVersionCode(android.content.pm.PackageInfo);
-  }
-
-  public final class PermissionInfoCompat {
-    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();
-    method public CharSequence? getDisabledMessage();
-    method public String getId();
-    method public android.content.Intent getIntent();
-    method public android.content.Intent![] getIntents();
-    method public CharSequence? getLongLabel();
-    method public int getRank();
-    method public CharSequence getShortLabel();
-    method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
-  }
-
-  public static class ShortcutInfoCompat.Builder {
-    ctor public ShortcutInfoCompat.Builder(android.content.Context, String);
-    method public androidx.core.content.pm.ShortcutInfoCompat build();
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setActivity(android.content.ComponentName);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLabel(CharSequence);
-    method @Deprecated public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived();
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived(boolean);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPerson(androidx.core.app.Person);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPersons(androidx.core.app.Person![]);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setRank(int);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setShortLabel(CharSequence);
-  }
-
-  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);
-    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
-    method public static int getMaxShortcutCountPerActivity(android.content.Context);
-    method public static boolean isRequestPinShortcutSupported(android.content.Context);
-    method public static void removeAllDynamicShortcuts(android.content.Context);
-    method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
-    method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
-    method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
-    field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
-  }
-
-}
-
-package androidx.core.content.res {
-
-  public final class ConfigurationHelper {
-    method public static int getDensityDpi(android.content.res.Resources);
-  }
-
-  public final class ResourcesCompat {
-    method @ColorInt public static int getColor(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static android.content.res.ColorStateList? getColorStateList(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static android.graphics.drawable.Drawable? getDrawable(android.content.res.Resources, @DrawableRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static android.graphics.drawable.Drawable? getDrawableForDensity(android.content.res.Resources, @DrawableRes int, int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static float getFloat(android.content.res.Resources, @DimenRes int);
-    method public static android.graphics.Typeface? getFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
-    method public static void getFont(android.content.Context, @FontRes int, androidx.core.content.res.ResourcesCompat.FontCallback, android.os.Handler?) throws android.content.res.Resources.NotFoundException;
-    field @AnyRes public static final int ID_NULL = 0; // 0x0
-  }
-
-  public abstract static class ResourcesCompat.FontCallback {
-    ctor public ResourcesCompat.FontCallback();
-    method public abstract void onFontRetrievalFailed(int);
-    method public abstract void onFontRetrieved(android.graphics.Typeface);
-  }
-
-  public static final class ResourcesCompat.ThemeCompat {
-    method public static void rebase(android.content.res.Resources.Theme);
-  }
-
-}
-
-package androidx.core.database {
-
-  public final class CursorWindowCompat {
-    method public static android.database.CursorWindow create(String?, long);
-  }
-
-  @Deprecated public final class DatabaseUtilsCompat {
-    method @Deprecated public static String![]! appendSelectionArgs(String![]!, String![]!);
-    method @Deprecated public static String! concatenateWhere(String!, String!);
-  }
-
-}
-
-package androidx.core.database.sqlite {
-
-  public final class SQLiteCursorCompat {
-    method public static void setFillWindowForwardOnly(android.database.sqlite.SQLiteCursor, boolean);
-  }
-
-}
-
-package androidx.core.graphics {
-
-  public final class BitmapCompat {
-    method public static int getAllocationByteCount(android.graphics.Bitmap);
-    method public static boolean hasMipMap(android.graphics.Bitmap);
-    method public static void setHasMipMap(android.graphics.Bitmap, boolean);
-  }
-
-  public class BlendModeColorFilterCompat {
-    method public static android.graphics.ColorFilter? createBlendModeColorFilterCompat(int, androidx.core.graphics.BlendModeCompat);
-  }
-
-  public enum BlendModeCompat {
-    enum_constant public static final androidx.core.graphics.BlendModeCompat CLEAR;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_BURN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_DODGE;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DARKEN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat DIFFERENCE;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_ATOP;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_IN;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OUT;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OVER;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat EXCLUSION;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HARD_LIGHT;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HUE;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat LIGHTEN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat LUMINOSITY;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat MODULATE;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat MULTIPLY;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat OVERLAY;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat PLUS;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SATURATION;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SCREEN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SOFT_LIGHT;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_ATOP;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_IN;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OUT;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OVER;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat XOR;
-  }
-
-  public final class ColorUtils {
-    method @ColorInt public static int HSLToColor(float[]);
-    method @ColorInt public static int LABToColor(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double);
-    method public static void LABToXYZ(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double, double[]);
-    method public static void RGBToHSL(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, float[]);
-    method public static void RGBToLAB(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
-    method public static void RGBToXYZ(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
-    method @ColorInt public static int XYZToColor(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double);
-    method public static void XYZToLAB(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double, double[]);
-    method @ColorInt public static int blendARGB(@ColorInt int, @ColorInt int, @FloatRange(from=0.0, to=1.0) float);
-    method public static void blendHSL(float[], float[], @FloatRange(from=0.0, to=1.0) float, float[]);
-    method public static void blendLAB(double[], double[], @FloatRange(from=0.0, to=1.0) double, double[]);
-    method public static double calculateContrast(@ColorInt int, @ColorInt int);
-    method @FloatRange(from=0.0, to=1.0) public static double calculateLuminance(@ColorInt int);
-    method public static int calculateMinimumAlpha(@ColorInt int, @ColorInt int, float);
-    method public static void colorToHSL(@ColorInt int, float[]);
-    method public static void colorToLAB(@ColorInt int, double[]);
-    method public static void colorToXYZ(@ColorInt int, double[]);
-    method public static int compositeColors(@ColorInt int, @ColorInt int);
-    method @RequiresApi(26) public static android.graphics.Color compositeColors(android.graphics.Color, android.graphics.Color);
-    method public static double distanceEuclidean(double[], double[]);
-    method @ColorInt public static int setAlphaComponent(@ColorInt int, @IntRange(from=0, to=255) int);
-  }
-
-  public final class Insets {
-    method public static androidx.core.graphics.Insets of(int, int, int, int);
-    method public static androidx.core.graphics.Insets of(android.graphics.Rect);
-    method @RequiresApi(api=29) public static androidx.core.graphics.Insets toCompatInsets(android.graphics.Insets);
-    method @RequiresApi(api=29) public android.graphics.Insets toPlatformInsets();
-    field public static final androidx.core.graphics.Insets NONE;
-    field public final int bottom;
-    field public final int left;
-    field public final int right;
-    field public final int top;
-  }
-
-  public final class PaintCompat {
-    method public static boolean hasGlyph(android.graphics.Paint, String);
-    method public static boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat?);
-  }
-
-  public final class PathSegment {
-    ctor public PathSegment(android.graphics.PointF, float, android.graphics.PointF, float);
-    method public android.graphics.PointF getEnd();
-    method public float getEndFraction();
-    method public android.graphics.PointF getStart();
-    method public float getStartFraction();
-  }
-
-  public final class PathUtils {
-    method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path);
-    method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path, @FloatRange(from=0) float);
-  }
-
-  public class TypefaceCompat {
-    method public static android.graphics.Typeface create(android.content.Context, android.graphics.Typeface?, int);
-  }
-
-}
-
-package androidx.core.graphics.drawable {
-
-  public final class DrawableCompat {
-    method public static void applyTheme(android.graphics.drawable.Drawable, android.content.res.Resources.Theme);
-    method public static boolean canApplyTheme(android.graphics.drawable.Drawable);
-    method public static void clearColorFilter(android.graphics.drawable.Drawable);
-    method public static int getAlpha(android.graphics.drawable.Drawable);
-    method public static android.graphics.ColorFilter! getColorFilter(android.graphics.drawable.Drawable);
-    method public static int getLayoutDirection(android.graphics.drawable.Drawable);
-    method public static void inflate(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public static boolean isAutoMirrored(android.graphics.drawable.Drawable);
-    method @Deprecated public static void jumpToCurrentState(android.graphics.drawable.Drawable);
-    method public static void setAutoMirrored(android.graphics.drawable.Drawable, boolean);
-    method public static void setHotspot(android.graphics.drawable.Drawable, float, float);
-    method public static void setHotspotBounds(android.graphics.drawable.Drawable, int, int, int, int);
-    method public static boolean setLayoutDirection(android.graphics.drawable.Drawable, int);
-    method public static void setTint(android.graphics.drawable.Drawable, @ColorInt int);
-    method public static void setTintList(android.graphics.drawable.Drawable, android.content.res.ColorStateList?);
-    method public static void setTintMode(android.graphics.drawable.Drawable, android.graphics.PorterDuff.Mode);
-    method public static <T extends android.graphics.drawable.Drawable> T! unwrap(android.graphics.drawable.Drawable);
-    method public static android.graphics.drawable.Drawable! wrap(android.graphics.drawable.Drawable);
-  }
-
-  public class IconCompat extends androidx.versionedparcelable.CustomVersionedParcelable {
-    method public static androidx.core.graphics.drawable.IconCompat? createFromBundle(android.os.Bundle);
-    method @RequiresApi(23) public static androidx.core.graphics.drawable.IconCompat? createFromIcon(android.content.Context, android.graphics.drawable.Icon);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithAdaptiveBitmap(android.graphics.Bitmap!);
-    method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(String);
-    method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(android.net.Uri);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithBitmap(android.graphics.Bitmap!);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(String!);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(android.net.Uri!);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithData(byte[]!, int, int);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithResource(android.content.Context!, @DrawableRes int);
-    method @IdRes public int getResId();
-    method public String getResPackage();
-    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);
-    method public androidx.core.graphics.drawable.IconCompat! setTintList(android.content.res.ColorStateList!);
-    method public androidx.core.graphics.drawable.IconCompat! setTintMode(android.graphics.PorterDuff.Mode!);
-    method public android.os.Bundle! toBundle();
-    method @Deprecated @RequiresApi(23) public android.graphics.drawable.Icon toIcon();
-    method @RequiresApi(23) public android.graphics.drawable.Icon toIcon(android.content.Context?);
-    field public static final int TYPE_ADAPTIVE_BITMAP = 5; // 0x5
-    field public static final int TYPE_BITMAP = 1; // 0x1
-    field public static final int TYPE_DATA = 3; // 0x3
-    field public static final int TYPE_RESOURCE = 2; // 0x2
-    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
-    field public static final int TYPE_URI = 4; // 0x4
-    field public static final int TYPE_URI_ADAPTIVE_BITMAP = 6; // 0x6
-  }
-
-  public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
-    method public void draw(android.graphics.Canvas);
-    method public final android.graphics.Bitmap? getBitmap();
-    method public float getCornerRadius();
-    method public int getGravity();
-    method public int getOpacity();
-    method public final android.graphics.Paint getPaint();
-    method public boolean hasAntiAlias();
-    method public boolean hasMipMap();
-    method public boolean isCircular();
-    method public void setAlpha(int);
-    method public void setAntiAlias(boolean);
-    method public void setCircular(boolean);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setCornerRadius(float);
-    method public void setDither(boolean);
-    method public void setGravity(int);
-    method public void setMipMap(boolean);
-    method public void setTargetDensity(android.graphics.Canvas);
-    method public void setTargetDensity(android.util.DisplayMetrics);
-    method public void setTargetDensity(int);
-  }
-
-  public final class RoundedBitmapDrawableFactory {
-    method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, android.graphics.Bitmap?);
-    method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, String);
-    method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, java.io.InputStream);
-  }
-
-}
-
-package androidx.core.hardware.display {
-
-  public final class DisplayManagerCompat {
-    method public android.view.Display? getDisplay(int);
-    method public android.view.Display![] getDisplays();
-    method public android.view.Display![] getDisplays(String?);
-    method public static androidx.core.hardware.display.DisplayManagerCompat getInstance(android.content.Context);
-    field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
-  }
-
-}
-
-package androidx.core.hardware.fingerprint {
-
-  @Deprecated public class FingerprintManagerCompat {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public void authenticate(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject?, int, androidx.core.os.CancellationSignal?, androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationCallback, android.os.Handler?);
-    method @Deprecated public static androidx.core.hardware.fingerprint.FingerprintManagerCompat from(android.content.Context);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean hasEnrolledFingerprints();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean isHardwareDetected();
-  }
-
-  @Deprecated public abstract static class FingerprintManagerCompat.AuthenticationCallback {
-    ctor @Deprecated public FingerprintManagerCompat.AuthenticationCallback();
-    method @Deprecated public void onAuthenticationError(int, CharSequence!);
-    method @Deprecated public void onAuthenticationFailed();
-    method @Deprecated public void onAuthenticationHelp(int, CharSequence!);
-    method @Deprecated public void onAuthenticationSucceeded(androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationResult!);
-  }
-
-  @Deprecated public static final class FingerprintManagerCompat.AuthenticationResult {
-    ctor @Deprecated public FingerprintManagerCompat.AuthenticationResult(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject!);
-    method @Deprecated public androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject! getCryptoObject();
-  }
-
-  @Deprecated public static class FingerprintManagerCompat.CryptoObject {
-    ctor @Deprecated public FingerprintManagerCompat.CryptoObject(java.security.Signature);
-    ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Cipher);
-    ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Mac);
-    method @Deprecated public javax.crypto.Cipher? getCipher();
-    method @Deprecated public javax.crypto.Mac? getMac();
-    method @Deprecated public java.security.Signature? getSignature();
-  }
-
-}
-
-package androidx.core.location {
-
-  public final class LocationManagerCompat {
-    method public static boolean isLocationEnabled(android.location.LocationManager);
-  }
-
-}
-
-package androidx.core.math {
-
-  public class MathUtils {
-    method public static float clamp(float, float, float);
-    method public static double clamp(double, double, double);
-    method public static int clamp(int, int, int);
-    method public static long clamp(long, long, long);
-  }
-
-}
-
-package androidx.core.net {
-
-  public final class ConnectivityManagerCompat {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static android.net.NetworkInfo? getNetworkInfoFromBroadcast(android.net.ConnectivityManager, android.content.Intent);
-    method public static int getRestrictBackgroundStatus(android.net.ConnectivityManager);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static boolean isActiveNetworkMetered(android.net.ConnectivityManager);
-    field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
-    field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
-    field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
-  }
-
-  public final class TrafficStatsCompat {
-    method @Deprecated public static void clearThreadStatsTag();
-    method @Deprecated public static int getThreadStatsTag();
-    method @Deprecated public static void incrementOperationCount(int);
-    method @Deprecated public static void incrementOperationCount(int, int);
-    method @Deprecated public static void setThreadStatsTag(int);
-    method public static void tagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method @Deprecated public static void tagSocket(java.net.Socket!) throws java.net.SocketException;
-    method public static void untagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method @Deprecated public static void untagSocket(java.net.Socket!) throws java.net.SocketException;
-  }
-
-  public final class UriCompat {
-    method public static String toSafeString(android.net.Uri);
-  }
-
-}
-
-package androidx.core.os {
-
-  public class BuildCompat {
-    method @Deprecated public static boolean isAtLeastN();
-    method @Deprecated public static boolean isAtLeastNMR1();
-    method @Deprecated public static boolean isAtLeastO();
-    method @Deprecated public static boolean isAtLeastOMR1();
-    method @Deprecated public static boolean isAtLeastP();
-    method @Deprecated public static boolean isAtLeastQ();
-    method public static boolean isAtLeastR();
-  }
-
-  public final class CancellationSignal {
-    ctor public CancellationSignal();
-    method public void cancel();
-    method public Object? getCancellationSignalObject();
-    method public boolean isCanceled();
-    method public void setOnCancelListener(androidx.core.os.CancellationSignal.OnCancelListener?);
-    method public void throwIfCanceled();
-  }
-
-  public static interface CancellationSignal.OnCancelListener {
-    method public void onCancel();
-  }
-
-  public final class ConfigurationCompat {
-    method public static androidx.core.os.LocaleListCompat getLocales(android.content.res.Configuration);
-  }
-
-  public final class EnvironmentCompat {
-    method public static String getStorageState(java.io.File);
-    field public static final String MEDIA_UNKNOWN = "unknown";
-  }
-
-  public final class HandlerCompat {
-    method public static android.os.Handler createAsync(android.os.Looper);
-    method public static android.os.Handler createAsync(android.os.Looper, android.os.Handler.Callback);
-    method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
-  }
-
-  public final class LocaleListCompat {
-    method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
-    method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
-    method public java.util.Locale! get(int);
-    method @Size(min=1) public static androidx.core.os.LocaleListCompat getAdjustedDefault();
-    method @Size(min=1) public static androidx.core.os.LocaleListCompat getDefault();
-    method public static androidx.core.os.LocaleListCompat getEmptyLocaleList();
-    method public java.util.Locale? getFirstMatch(String![]);
-    method @IntRange(from=0xffffffff) public int indexOf(java.util.Locale!);
-    method public boolean isEmpty();
-    method @IntRange(from=0) public int size();
-    method public String toLanguageTags();
-    method public Object? unwrap();
-    method @Deprecated @RequiresApi(24) public static androidx.core.os.LocaleListCompat! wrap(Object!);
-    method @RequiresApi(24) public static androidx.core.os.LocaleListCompat wrap(android.os.LocaleList);
-  }
-
-  public final class MessageCompat {
-    method public static boolean isAsynchronous(android.os.Message);
-    method public static void setAsynchronous(android.os.Message, boolean);
-  }
-
-  public class OperationCanceledException extends java.lang.RuntimeException {
-    ctor public OperationCanceledException();
-    ctor public OperationCanceledException(String?);
-  }
-
-  public final class ParcelCompat {
-    method public static boolean readBoolean(android.os.Parcel);
-    method public static void writeBoolean(android.os.Parcel, boolean);
-  }
-
-  @Deprecated public final class ParcelableCompat {
-    method @Deprecated public static <T> android.os.Parcelable.Creator<T!>! newCreator(androidx.core.os.ParcelableCompatCreatorCallbacks<T!>!);
-  }
-
-  @Deprecated public interface ParcelableCompatCreatorCallbacks<T> {
-    method @Deprecated public T! createFromParcel(android.os.Parcel!, ClassLoader!);
-    method @Deprecated public T![]! newArray(int);
-  }
-
-  public final class TraceCompat {
-    method public static void beginAsyncSection(String, int);
-    method public static void beginSection(String);
-    method public static void endAsyncSection(String, int);
-    method public static void endSection();
-    method public static boolean isEnabled();
-    method public static void setCounter(String, int);
-  }
-
-  public class UserManagerCompat {
-    method public static boolean isUserUnlocked(android.content.Context);
-  }
-
-}
-
-package androidx.core.provider {
-
-  public final class FontRequest {
-    ctor public FontRequest(String, String, String, java.util.List<java.util.List<byte[]!>!>);
-    ctor public FontRequest(String, String, String, @ArrayRes int);
-    method public java.util.List<java.util.List<byte[]!>!>? getCertificates();
-    method @ArrayRes public int getCertificatesArrayResId();
-    method public String getProviderAuthority();
-    method public String getProviderPackage();
-    method public String getQuery();
-  }
-
-  public class FontsContractCompat {
-    method public static android.graphics.Typeface? buildTypeface(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![]);
-    method public static androidx.core.provider.FontsContractCompat.FontFamilyResult fetchFonts(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static void requestFont(android.content.Context, androidx.core.provider.FontRequest, androidx.core.provider.FontsContractCompat.FontRequestCallback, android.os.Handler);
-  }
-
-  public static final class FontsContractCompat.Columns implements android.provider.BaseColumns {
-    ctor public FontsContractCompat.Columns();
-    field public static final String FILE_ID = "file_id";
-    field public static final String ITALIC = "font_italic";
-    field public static final String RESULT_CODE = "result_code";
-    field public static final int RESULT_CODE_FONT_NOT_FOUND = 1; // 0x1
-    field public static final int RESULT_CODE_FONT_UNAVAILABLE = 2; // 0x2
-    field public static final int RESULT_CODE_MALFORMED_QUERY = 3; // 0x3
-    field public static final int RESULT_CODE_OK = 0; // 0x0
-    field public static final String TTC_INDEX = "font_ttc_index";
-    field public static final String VARIATION_SETTINGS = "font_variation_settings";
-    field public static final String WEIGHT = "font_weight";
-  }
-
-  public static class FontsContractCompat.FontFamilyResult {
-    method public androidx.core.provider.FontsContractCompat.FontInfo![]! getFonts();
-    method public int getStatusCode();
-    field public static final int STATUS_OK = 0; // 0x0
-    field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
-    field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
-  }
-
-  public static class FontsContractCompat.FontInfo {
-    method public int getResultCode();
-    method @IntRange(from=0) public int getTtcIndex();
-    method public android.net.Uri getUri();
-    method @IntRange(from=1, to=1000) public int getWeight();
-    method public boolean isItalic();
-  }
-
-  public static class FontsContractCompat.FontRequestCallback {
-    ctor public FontsContractCompat.FontRequestCallback();
-    method public void onTypefaceRequestFailed(int);
-    method public void onTypefaceRetrieved(android.graphics.Typeface!);
-    field public static final int FAIL_REASON_FONT_LOAD_ERROR = -3; // 0xfffffffd
-    field public static final int FAIL_REASON_FONT_NOT_FOUND = 1; // 0x1
-    field public static final int FAIL_REASON_FONT_UNAVAILABLE = 2; // 0x2
-    field public static final int FAIL_REASON_MALFORMED_QUERY = 3; // 0x3
-    field public static final int FAIL_REASON_PROVIDER_NOT_FOUND = -1; // 0xffffffff
-    field public static final int FAIL_REASON_SECURITY_VIOLATION = -4; // 0xfffffffc
-    field public static final int FAIL_REASON_WRONG_CERTIFICATES = -2; // 0xfffffffe
-  }
-
-}
-
-package androidx.core.telephony.mbms {
-
-  public final class MbmsHelper {
-    method public static CharSequence? getBestNameForService(android.content.Context, android.telephony.mbms.ServiceInfo);
-  }
-
-}
-
-package androidx.core.text {
-
-  public final class BidiFormatter {
-    method public static androidx.core.text.BidiFormatter! getInstance();
-    method public static androidx.core.text.BidiFormatter! getInstance(boolean);
-    method public static androidx.core.text.BidiFormatter! getInstance(java.util.Locale!);
-    method public boolean getStereoReset();
-    method public boolean isRtl(String!);
-    method public boolean isRtl(CharSequence!);
-    method public boolean isRtlContext();
-    method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
-    method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
-    method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!);
-    method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!);
-    method public String! unicodeWrap(String!, boolean);
-    method public CharSequence! unicodeWrap(CharSequence!, boolean);
-    method public String! unicodeWrap(String!);
-    method public CharSequence! unicodeWrap(CharSequence!);
-  }
-
-  public static final class BidiFormatter.Builder {
-    ctor public BidiFormatter.Builder();
-    ctor public BidiFormatter.Builder(boolean);
-    ctor public BidiFormatter.Builder(java.util.Locale!);
-    method public androidx.core.text.BidiFormatter! build();
-    method public androidx.core.text.BidiFormatter.Builder! setTextDirectionHeuristic(androidx.core.text.TextDirectionHeuristicCompat!);
-    method public androidx.core.text.BidiFormatter.Builder! stereoReset(boolean);
-  }
-
-  public final class HtmlCompat {
-    method public static android.text.Spanned fromHtml(String, int);
-    method public static android.text.Spanned fromHtml(String, int, android.text.Html.ImageGetter?, android.text.Html.TagHandler?);
-    method public static String toHtml(android.text.Spanned, int);
-    field public static final int FROM_HTML_MODE_COMPACT = 63; // 0x3f
-    field public static final int FROM_HTML_MODE_LEGACY = 0; // 0x0
-    field public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; // 0x100
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32; // 0x20
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16; // 0x10
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2; // 0x2
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8; // 0x8
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4; // 0x4
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1; // 0x1
-    field public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0; // 0x0
-    field public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; // 0x1
-  }
-
-  public final class ICUCompat {
-    method public static String? maximizeAndGetScript(java.util.Locale!);
-  }
-
-  public class PrecomputedTextCompat implements android.text.Spannable {
-    method public char charAt(int);
-    method public static androidx.core.text.PrecomputedTextCompat! create(CharSequence, androidx.core.text.PrecomputedTextCompat.Params);
-    method @IntRange(from=0) public int getParagraphCount();
-    method @IntRange(from=0) public int getParagraphEnd(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getParagraphStart(@IntRange(from=0) int);
-    method public androidx.core.text.PrecomputedTextCompat.Params getParams();
-    method public int getSpanEnd(Object!);
-    method public int getSpanFlags(Object!);
-    method public int getSpanStart(Object!);
-    method public <T> T![]! getSpans(int, int, Class<T!>!);
-    method @UiThread public static java.util.concurrent.Future<androidx.core.text.PrecomputedTextCompat!>! getTextFuture(CharSequence, androidx.core.text.PrecomputedTextCompat.Params, java.util.concurrent.Executor?);
-    method public int length();
-    method public int nextSpanTransition(int, int, Class!);
-    method public void removeSpan(Object!);
-    method public void setSpan(Object!, int, int, int);
-    method public CharSequence! subSequence(int, int);
-  }
-
-  public static final class PrecomputedTextCompat.Params {
-    ctor @RequiresApi(28) public PrecomputedTextCompat.Params(android.text.PrecomputedText.Params);
-    method @RequiresApi(23) public int getBreakStrategy();
-    method @RequiresApi(23) public int getHyphenationFrequency();
-    method @RequiresApi(18) public android.text.TextDirectionHeuristic? getTextDirection();
-    method public android.text.TextPaint getTextPaint();
-  }
-
-  public static class PrecomputedTextCompat.Params.Builder {
-    ctor public PrecomputedTextCompat.Params.Builder(android.text.TextPaint);
-    method public androidx.core.text.PrecomputedTextCompat.Params build();
-    method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setBreakStrategy(int);
-    method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setHyphenationFrequency(int);
-    method @RequiresApi(18) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setTextDirection(android.text.TextDirectionHeuristic);
-  }
-
-  public interface TextDirectionHeuristicCompat {
-    method public boolean isRtl(char[]!, int, int);
-    method public boolean isRtl(CharSequence!, int, int);
-  }
-
-  public final class TextDirectionHeuristicsCompat {
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! ANYRTL_LTR;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_LTR;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_RTL;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! LOCALE;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! LTR;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! RTL;
-  }
-
-  public final class TextUtilsCompat {
-    method public static int getLayoutDirectionFromLocale(java.util.Locale?);
-    method public static String htmlEncode(String);
-  }
-
-}
-
-package androidx.core.text.util {
-
-  public final class LinkifyCompat {
-    method public static boolean addLinks(android.text.Spannable, int);
-    method public static boolean addLinks(android.widget.TextView, int);
-    method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?);
-    method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-    method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-    method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?);
-    method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-    method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-  }
-
-}
-
-package androidx.core.util {
-
-  public class AtomicFile {
-    ctor public AtomicFile(java.io.File);
-    method public void delete();
-    method public void failWrite(java.io.FileOutputStream?);
-    method public void finishWrite(java.io.FileOutputStream?);
-    method public java.io.File getBaseFile();
-    method public java.io.FileInputStream openRead() throws java.io.FileNotFoundException;
-    method public byte[] readFully() throws java.io.IOException;
-    method public java.io.FileOutputStream startWrite() throws java.io.IOException;
-  }
-
-  public interface Consumer<T> {
-    method public void accept(T!);
-  }
-
-  public class ObjectsCompat {
-    method public static boolean equals(Object?, Object?);
-    method public static int hash(java.lang.Object!...);
-    method public static int hashCode(Object?);
-  }
-
-  public class Pair<F, S> {
-    ctor public Pair(F?, S?);
-    method public static <A, B> androidx.core.util.Pair<A!,B!> create(A?, B?);
-    field public final F? first;
-    field public final S? second;
-  }
-
-  public final class PatternsCompat {
-    field public static final java.util.regex.Pattern! DOMAIN_NAME;
-    field public static final java.util.regex.Pattern! EMAIL_ADDRESS;
-    field public static final java.util.regex.Pattern! IP_ADDRESS;
-    field public static final java.util.regex.Pattern! WEB_URL;
-  }
-
-  public final class Pools {
-  }
-
-  public static interface Pools.Pool<T> {
-    method public T? acquire();
-    method public boolean release(T);
-  }
-
-  public static class Pools.SimplePool<T> implements androidx.core.util.Pools.Pool<T> {
-    ctor public Pools.SimplePool(int);
-    method public T! acquire();
-    method public boolean release(T);
-  }
-
-  public static class Pools.SynchronizedPool<T> extends androidx.core.util.Pools.SimplePool<T> {
-    ctor public Pools.SynchronizedPool(int);
-  }
-
-  public interface Predicate<T> {
-    method public boolean test(T!);
-  }
-
-  public interface Supplier<T> {
-    method public T! get();
-  }
-
-}
-
-package androidx.core.view {
-
-  public class AccessibilityDelegateCompat {
-    ctor public AccessibilityDelegateCompat();
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View!);
-    method public void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public void onInitializeAccessibilityNodeInfo(android.view.View!, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
-    method public void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public boolean performAccessibilityAction(android.view.View!, int, android.os.Bundle!);
-    method public void sendAccessibilityEvent(android.view.View!, int);
-    method public void sendAccessibilityEventUnchecked(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-  }
-
-  public abstract class ActionProvider {
-    ctor public ActionProvider(android.content.Context!);
-    method public android.content.Context! getContext();
-    method public boolean hasSubMenu();
-    method public boolean isVisible();
-    method public abstract android.view.View! onCreateActionView();
-    method public android.view.View! onCreateActionView(android.view.MenuItem!);
-    method public boolean onPerformDefaultAction();
-    method public void onPrepareSubMenu(android.view.SubMenu!);
-    method public boolean overridesItemVisibility();
-    method public void refreshVisibility();
-    method public void setVisibilityListener(androidx.core.view.ActionProvider.VisibilityListener!);
-  }
-
-  public static interface ActionProvider.VisibilityListener {
-    method public void onActionProviderVisibilityChanged(boolean);
-  }
-
-  public final class DisplayCompat {
-    method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
-  }
-
-  public static final class DisplayCompat.ModeCompat {
-    method public int getPhysicalHeight();
-    method public int getPhysicalWidth();
-    method public boolean isNative();
-    method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
-  }
-
-  public final class DisplayCutoutCompat {
-    ctor public DisplayCutoutCompat(android.graphics.Rect!, java.util.List<android.graphics.Rect!>!);
-    method public java.util.List<android.graphics.Rect!>! getBoundingRects();
-    method public int getSafeInsetBottom();
-    method public int getSafeInsetLeft();
-    method public int getSafeInsetRight();
-    method public int getSafeInsetTop();
-  }
-
-  public final class DragAndDropPermissionsCompat {
-    method public void release();
-  }
-
-  public class DragStartHelper {
-    ctor public DragStartHelper(android.view.View!, androidx.core.view.DragStartHelper.OnDragStartListener!);
-    method public void attach();
-    method public void detach();
-    method public void getTouchPosition(android.graphics.Point!);
-    method public boolean onLongClick(android.view.View!);
-    method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
-  }
-
-  public static interface DragStartHelper.OnDragStartListener {
-    method public boolean onDragStart(android.view.View!, androidx.core.view.DragStartHelper!);
-  }
-
-  public final class GestureDetectorCompat {
-    ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!);
-    ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!, android.os.Handler!);
-    method public boolean isLongpressEnabled();
-    method public boolean onTouchEvent(android.view.MotionEvent!);
-    method public void setIsLongpressEnabled(boolean);
-    method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener!);
-  }
-
-  public final class GravityCompat {
-    method public static void apply(int, int, int, android.graphics.Rect!, android.graphics.Rect!, int);
-    method public static void apply(int, int, int, android.graphics.Rect!, int, int, android.graphics.Rect!, int);
-    method public static void applyDisplay(int, android.graphics.Rect!, android.graphics.Rect!, int);
-    method public static int getAbsoluteGravity(int, int);
-    field public static final int END = 8388613; // 0x800005
-    field public static final int RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; // 0x800007
-    field public static final int RELATIVE_LAYOUT_DIRECTION = 8388608; // 0x800000
-    field public static final int START = 8388611; // 0x800003
-  }
-
-  public final class InputDeviceCompat {
-    field public static final int SOURCE_ANY = -256; // 0xffffff00
-    field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
-    field public static final int SOURCE_CLASS_JOYSTICK = 16; // 0x10
-    field public static final int SOURCE_CLASS_MASK = 255; // 0xff
-    field public static final int SOURCE_CLASS_NONE = 0; // 0x0
-    field public static final int SOURCE_CLASS_POINTER = 2; // 0x2
-    field public static final int SOURCE_CLASS_POSITION = 8; // 0x8
-    field public static final int SOURCE_CLASS_TRACKBALL = 4; // 0x4
-    field public static final int SOURCE_DPAD = 513; // 0x201
-    field public static final int SOURCE_GAMEPAD = 1025; // 0x401
-    field public static final int SOURCE_HDMI = 33554433; // 0x2000001
-    field public static final int SOURCE_JOYSTICK = 16777232; // 0x1000010
-    field public static final int SOURCE_KEYBOARD = 257; // 0x101
-    field public static final int SOURCE_MOUSE = 8194; // 0x2002
-    field public static final int SOURCE_ROTARY_ENCODER = 4194304; // 0x400000
-    field public static final int SOURCE_STYLUS = 16386; // 0x4002
-    field public static final int SOURCE_TOUCHPAD = 1048584; // 0x100008
-    field public static final int SOURCE_TOUCHSCREEN = 4098; // 0x1002
-    field public static final int SOURCE_TOUCH_NAVIGATION = 2097152; // 0x200000
-    field public static final int SOURCE_TRACKBALL = 65540; // 0x10004
-    field public static final int SOURCE_UNKNOWN = 0; // 0x0
-  }
-
-  public final class LayoutInflaterCompat {
-    method @Deprecated public static androidx.core.view.LayoutInflaterFactory! getFactory(android.view.LayoutInflater!);
-    method @Deprecated public static void setFactory(android.view.LayoutInflater, androidx.core.view.LayoutInflaterFactory);
-    method public static void setFactory2(android.view.LayoutInflater, android.view.LayoutInflater.Factory2);
-  }
-
-  @Deprecated public interface LayoutInflaterFactory {
-    method @Deprecated public android.view.View! onCreateView(android.view.View!, String!, android.content.Context!, android.util.AttributeSet!);
-  }
-
-  public final class MarginLayoutParamsCompat {
-    method public static int getLayoutDirection(android.view.ViewGroup.MarginLayoutParams!);
-    method public static int getMarginEnd(android.view.ViewGroup.MarginLayoutParams!);
-    method public static int getMarginStart(android.view.ViewGroup.MarginLayoutParams!);
-    method public static boolean isMarginRelative(android.view.ViewGroup.MarginLayoutParams!);
-    method public static void resolveLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
-    method public static void setLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
-    method public static void setMarginEnd(android.view.ViewGroup.MarginLayoutParams!, int);
-    method public static void setMarginStart(android.view.ViewGroup.MarginLayoutParams!, int);
-  }
-
-  public final class MenuCompat {
-    method public static void setGroupDividerEnabled(android.view.Menu!, boolean);
-    method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
-  }
-
-  public final class MenuItemCompat {
-    method @Deprecated public static boolean collapseActionView(android.view.MenuItem!);
-    method @Deprecated public static boolean expandActionView(android.view.MenuItem!);
-    method public static androidx.core.view.ActionProvider! getActionProvider(android.view.MenuItem!);
-    method @Deprecated public static android.view.View! getActionView(android.view.MenuItem!);
-    method public static int getAlphabeticModifiers(android.view.MenuItem!);
-    method public static CharSequence! getContentDescription(android.view.MenuItem!);
-    method public static android.content.res.ColorStateList! getIconTintList(android.view.MenuItem!);
-    method public static android.graphics.PorterDuff.Mode! getIconTintMode(android.view.MenuItem!);
-    method public static int getNumericModifiers(android.view.MenuItem!);
-    method public static CharSequence! getTooltipText(android.view.MenuItem!);
-    method @Deprecated public static boolean isActionViewExpanded(android.view.MenuItem!);
-    method public static android.view.MenuItem! setActionProvider(android.view.MenuItem!, androidx.core.view.ActionProvider!);
-    method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, android.view.View!);
-    method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, int);
-    method public static void setAlphabeticShortcut(android.view.MenuItem!, char, int);
-    method public static void setContentDescription(android.view.MenuItem!, CharSequence!);
-    method public static void setIconTintList(android.view.MenuItem!, android.content.res.ColorStateList!);
-    method public static void setIconTintMode(android.view.MenuItem!, android.graphics.PorterDuff.Mode!);
-    method public static void setNumericShortcut(android.view.MenuItem!, char, int);
-    method @Deprecated public static android.view.MenuItem! setOnActionExpandListener(android.view.MenuItem!, androidx.core.view.MenuItemCompat.OnActionExpandListener!);
-    method public static void setShortcut(android.view.MenuItem!, char, char, int, int);
-    method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
-    method public static void setTooltipText(android.view.MenuItem!, CharSequence!);
-    field @Deprecated public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
-    field @Deprecated public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
-    field @Deprecated public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
-    field @Deprecated public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
-    field @Deprecated public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
-  }
-
-  @Deprecated public static interface MenuItemCompat.OnActionExpandListener {
-    method @Deprecated public boolean onMenuItemActionCollapse(android.view.MenuItem!);
-    method @Deprecated public boolean onMenuItemActionExpand(android.view.MenuItem!);
-  }
-
-  public final class MotionEventCompat {
-    method @Deprecated public static int findPointerIndex(android.view.MotionEvent!, int);
-    method @Deprecated public static int getActionIndex(android.view.MotionEvent!);
-    method @Deprecated public static int getActionMasked(android.view.MotionEvent!);
-    method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int);
-    method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int, int);
-    method @Deprecated public static int getButtonState(android.view.MotionEvent!);
-    method @Deprecated public static int getPointerCount(android.view.MotionEvent!);
-    method @Deprecated public static int getPointerId(android.view.MotionEvent!, int);
-    method @Deprecated public static int getSource(android.view.MotionEvent!);
-    method @Deprecated public static float getX(android.view.MotionEvent!, int);
-    method @Deprecated public static float getY(android.view.MotionEvent!, int);
-    method public static boolean isFromSource(android.view.MotionEvent!, int);
-    field @Deprecated public static final int ACTION_HOVER_ENTER = 9; // 0x9
-    field @Deprecated public static final int ACTION_HOVER_EXIT = 10; // 0xa
-    field @Deprecated public static final int ACTION_HOVER_MOVE = 7; // 0x7
-    field @Deprecated public static final int ACTION_MASK = 255; // 0xff
-    field @Deprecated public static final int ACTION_POINTER_DOWN = 5; // 0x5
-    field @Deprecated public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
-    field @Deprecated public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
-    field @Deprecated public static final int ACTION_POINTER_UP = 6; // 0x6
-    field @Deprecated public static final int ACTION_SCROLL = 8; // 0x8
-    field @Deprecated public static final int AXIS_BRAKE = 23; // 0x17
-    field @Deprecated public static final int AXIS_DISTANCE = 24; // 0x18
-    field @Deprecated public static final int AXIS_GAS = 22; // 0x16
-    field @Deprecated public static final int AXIS_GENERIC_1 = 32; // 0x20
-    field @Deprecated public static final int AXIS_GENERIC_10 = 41; // 0x29
-    field @Deprecated public static final int AXIS_GENERIC_11 = 42; // 0x2a
-    field @Deprecated public static final int AXIS_GENERIC_12 = 43; // 0x2b
-    field @Deprecated public static final int AXIS_GENERIC_13 = 44; // 0x2c
-    field @Deprecated public static final int AXIS_GENERIC_14 = 45; // 0x2d
-    field @Deprecated public static final int AXIS_GENERIC_15 = 46; // 0x2e
-    field @Deprecated public static final int AXIS_GENERIC_16 = 47; // 0x2f
-    field @Deprecated public static final int AXIS_GENERIC_2 = 33; // 0x21
-    field @Deprecated public static final int AXIS_GENERIC_3 = 34; // 0x22
-    field @Deprecated public static final int AXIS_GENERIC_4 = 35; // 0x23
-    field @Deprecated public static final int AXIS_GENERIC_5 = 36; // 0x24
-    field @Deprecated public static final int AXIS_GENERIC_6 = 37; // 0x25
-    field @Deprecated public static final int AXIS_GENERIC_7 = 38; // 0x26
-    field @Deprecated public static final int AXIS_GENERIC_8 = 39; // 0x27
-    field @Deprecated public static final int AXIS_GENERIC_9 = 40; // 0x28
-    field @Deprecated public static final int AXIS_HAT_X = 15; // 0xf
-    field @Deprecated public static final int AXIS_HAT_Y = 16; // 0x10
-    field @Deprecated public static final int AXIS_HSCROLL = 10; // 0xa
-    field @Deprecated public static final int AXIS_LTRIGGER = 17; // 0x11
-    field @Deprecated public static final int AXIS_ORIENTATION = 8; // 0x8
-    field @Deprecated public static final int AXIS_PRESSURE = 2; // 0x2
-    field public static final int AXIS_RELATIVE_X = 27; // 0x1b
-    field public static final int AXIS_RELATIVE_Y = 28; // 0x1c
-    field @Deprecated public static final int AXIS_RTRIGGER = 18; // 0x12
-    field @Deprecated public static final int AXIS_RUDDER = 20; // 0x14
-    field @Deprecated public static final int AXIS_RX = 12; // 0xc
-    field @Deprecated public static final int AXIS_RY = 13; // 0xd
-    field @Deprecated public static final int AXIS_RZ = 14; // 0xe
-    field public static final int AXIS_SCROLL = 26; // 0x1a
-    field @Deprecated public static final int AXIS_SIZE = 3; // 0x3
-    field @Deprecated public static final int AXIS_THROTTLE = 19; // 0x13
-    field @Deprecated public static final int AXIS_TILT = 25; // 0x19
-    field @Deprecated public static final int AXIS_TOOL_MAJOR = 6; // 0x6
-    field @Deprecated public static final int AXIS_TOOL_MINOR = 7; // 0x7
-    field @Deprecated public static final int AXIS_TOUCH_MAJOR = 4; // 0x4
-    field @Deprecated public static final int AXIS_TOUCH_MINOR = 5; // 0x5
-    field @Deprecated public static final int AXIS_VSCROLL = 9; // 0x9
-    field @Deprecated public static final int AXIS_WHEEL = 21; // 0x15
-    field @Deprecated public static final int AXIS_X = 0; // 0x0
-    field @Deprecated public static final int AXIS_Y = 1; // 0x1
-    field @Deprecated public static final int AXIS_Z = 11; // 0xb
-    field @Deprecated public static final int BUTTON_PRIMARY = 1; // 0x1
-  }
-
-  public interface NestedScrollingChild {
-    method public boolean dispatchNestedFling(float, float, boolean);
-    method public boolean dispatchNestedPreFling(float, float);
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
-    method public boolean hasNestedScrollingParent();
-    method public boolean isNestedScrollingEnabled();
-    method public void setNestedScrollingEnabled(boolean);
-    method public boolean startNestedScroll(int);
-    method public void stopNestedScroll();
-  }
-
-  public interface NestedScrollingChild2 extends androidx.core.view.NestedScrollingChild {
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, int);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?, int);
-    method public boolean hasNestedScrollingParent(int);
-    method public boolean startNestedScroll(int, int);
-    method public void stopNestedScroll(int);
-  }
-
-  public interface NestedScrollingChild3 extends androidx.core.view.NestedScrollingChild2 {
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
-  }
-
-  public class NestedScrollingChildHelper {
-    ctor public NestedScrollingChildHelper(android.view.View);
-    method public boolean dispatchNestedFling(float, float, boolean);
-    method public boolean dispatchNestedPreFling(float, float);
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, int);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?, int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]?);
-    method public boolean hasNestedScrollingParent();
-    method public boolean hasNestedScrollingParent(int);
-    method public boolean isNestedScrollingEnabled();
-    method public void onDetachedFromWindow();
-    method public void onStopNestedScroll(android.view.View);
-    method public void setNestedScrollingEnabled(boolean);
-    method public boolean startNestedScroll(int);
-    method public boolean startNestedScroll(int, int);
-    method public void stopNestedScroll();
-    method public void stopNestedScroll(int);
-  }
-
-  public interface NestedScrollingParent {
-    method public int getNestedScrollAxes();
-    method public boolean onNestedFling(android.view.View, float, float, boolean);
-    method public boolean onNestedPreFling(android.view.View, float, float);
-    method public void onNestedPreScroll(android.view.View, int, int, int[]);
-    method public void onNestedScroll(android.view.View, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
-    method public void onStopNestedScroll(android.view.View);
-  }
-
-  public interface NestedScrollingParent2 extends androidx.core.view.NestedScrollingParent {
-    method public void onNestedPreScroll(android.view.View, int, int, int[], int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
-    method public void onStopNestedScroll(android.view.View, int);
-  }
-
-  public interface NestedScrollingParent3 extends androidx.core.view.NestedScrollingParent2 {
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
-  }
-
-  public class NestedScrollingParentHelper {
-    ctor public NestedScrollingParentHelper(android.view.ViewGroup);
-    method public int getNestedScrollAxes();
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
-    method public void onStopNestedScroll(android.view.View);
-    method public void onStopNestedScroll(android.view.View, int);
-  }
-
-  public interface OnApplyWindowInsetsListener {
-    method public androidx.core.view.WindowInsetsCompat! onApplyWindowInsets(android.view.View!, androidx.core.view.WindowInsetsCompat!);
-  }
-
-  public final class OneShotPreDrawListener implements android.view.View.OnAttachStateChangeListener android.view.ViewTreeObserver.OnPreDrawListener {
-    method public static androidx.core.view.OneShotPreDrawListener add(android.view.View, Runnable);
-    method public boolean onPreDraw();
-    method public void onViewAttachedToWindow(android.view.View!);
-    method public void onViewDetachedFromWindow(android.view.View!);
-    method public void removeListener();
-  }
-
-  public final class PointerIconCompat {
-    method public static androidx.core.view.PointerIconCompat! create(android.graphics.Bitmap!, float, float);
-    method public static androidx.core.view.PointerIconCompat! getSystemIcon(android.content.Context!, int);
-    method public static androidx.core.view.PointerIconCompat! load(android.content.res.Resources!, int);
-    field public static final int TYPE_ALIAS = 1010; // 0x3f2
-    field public static final int TYPE_ALL_SCROLL = 1013; // 0x3f5
-    field public static final int TYPE_ARROW = 1000; // 0x3e8
-    field public static final int TYPE_CELL = 1006; // 0x3ee
-    field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
-    field public static final int TYPE_COPY = 1011; // 0x3f3
-    field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
-    field public static final int TYPE_DEFAULT = 1000; // 0x3e8
-    field public static final int TYPE_GRAB = 1020; // 0x3fc
-    field public static final int TYPE_GRABBING = 1021; // 0x3fd
-    field public static final int TYPE_HAND = 1002; // 0x3ea
-    field public static final int TYPE_HELP = 1003; // 0x3eb
-    field public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014; // 0x3f6
-    field public static final int TYPE_NO_DROP = 1012; // 0x3f4
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_TEXT = 1008; // 0x3f0
-    field public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017; // 0x3f9
-    field public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016; // 0x3f8
-    field public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015; // 0x3f7
-    field public static final int TYPE_VERTICAL_TEXT = 1009; // 0x3f1
-    field public static final int TYPE_WAIT = 1004; // 0x3ec
-    field public static final int TYPE_ZOOM_IN = 1018; // 0x3fa
-    field public static final int TYPE_ZOOM_OUT = 1019; // 0x3fb
-  }
-
-  public final class ScaleGestureDetectorCompat {
-    method @Deprecated public static boolean isQuickScaleEnabled(Object!);
-    method public static boolean isQuickScaleEnabled(android.view.ScaleGestureDetector!);
-    method @Deprecated public static void setQuickScaleEnabled(Object!, boolean);
-    method public static void setQuickScaleEnabled(android.view.ScaleGestureDetector!, boolean);
-  }
-
-  public interface ScrollingView {
-    method public int computeHorizontalScrollExtent();
-    method public int computeHorizontalScrollOffset();
-    method public int computeHorizontalScrollRange();
-    method public int computeVerticalScrollExtent();
-    method public int computeVerticalScrollOffset();
-    method public int computeVerticalScrollRange();
-  }
-
-  public interface TintableBackgroundView {
-    method public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  @Deprecated public final class VelocityTrackerCompat {
-    method @Deprecated public static float getXVelocity(android.view.VelocityTracker!, int);
-    method @Deprecated public static float getYVelocity(android.view.VelocityTracker!, int);
-  }
-
-  public class ViewCompat {
-    ctor protected ViewCompat();
-    method public static int addAccessibilityAction(android.view.View, CharSequence, androidx.core.view.accessibility.AccessibilityViewCommand);
-    method public static void addKeyboardNavigationClusters(android.view.View, java.util.Collection<android.view.View!>, int);
-    method public static void addOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
-    method public static androidx.core.view.ViewPropertyAnimatorCompat animate(android.view.View);
-    method @Deprecated public static boolean canScrollHorizontally(android.view.View!, int);
-    method @Deprecated public static boolean canScrollVertically(android.view.View!, int);
-    method public static void cancelDragAndDrop(android.view.View);
-    method @Deprecated public static int combineMeasuredStates(int, int);
-    method public static androidx.core.view.WindowInsetsCompat computeSystemWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat, android.graphics.Rect);
-    method public static androidx.core.view.WindowInsetsCompat dispatchApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
-    method public static void dispatchFinishTemporaryDetach(android.view.View);
-    method public static boolean dispatchNestedFling(android.view.View, float, float, boolean);
-    method public static boolean dispatchNestedPreFling(android.view.View, float, float);
-    method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?);
-    method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?, int);
-    method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?);
-    method public static void dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, int, int[]);
-    method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, int);
-    method public static void dispatchStartTemporaryDetach(android.view.View);
-    method public static void enableAccessibleClickableSpanSupport(android.view.View!);
-    method public static int generateViewId();
-    method public static androidx.core.view.AccessibilityDelegateCompat? getAccessibilityDelegate(android.view.View);
-    method public static int getAccessibilityLiveRegion(android.view.View);
-    method public static androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View);
-    method @UiThread public static CharSequence! getAccessibilityPaneTitle(android.view.View!);
-    method @Deprecated public static float getAlpha(android.view.View!);
-    method public static android.content.res.ColorStateList! getBackgroundTintList(android.view.View);
-    method public static android.graphics.PorterDuff.Mode! getBackgroundTintMode(android.view.View);
-    method public static android.graphics.Rect? getClipBounds(android.view.View);
-    method public static android.view.Display? getDisplay(android.view.View);
-    method public static float getElevation(android.view.View);
-    method public static boolean getFitsSystemWindows(android.view.View);
-    method public static int getImportantForAccessibility(android.view.View);
-    method public static int getImportantForAutofill(android.view.View);
-    method public static int getLabelFor(android.view.View);
-    method @Deprecated public static int getLayerType(android.view.View!);
-    method public static int getLayoutDirection(android.view.View);
-    method @Deprecated public static android.graphics.Matrix? getMatrix(android.view.View!);
-    method @Deprecated public static int getMeasuredHeightAndState(android.view.View!);
-    method @Deprecated public static int getMeasuredState(android.view.View!);
-    method @Deprecated public static int getMeasuredWidthAndState(android.view.View!);
-    method public static int getMinimumHeight(android.view.View);
-    method public static int getMinimumWidth(android.view.View);
-    method public static int getNextClusterForwardId(android.view.View);
-    method @Deprecated public static int getOverScrollMode(android.view.View!);
-    method @Px public static int getPaddingEnd(android.view.View);
-    method @Px public static int getPaddingStart(android.view.View);
-    method public static android.view.ViewParent! getParentForAccessibility(android.view.View);
-    method @Deprecated public static float getPivotX(android.view.View!);
-    method @Deprecated public static float getPivotY(android.view.View!);
-    method public static androidx.core.view.WindowInsetsCompat? getRootWindowInsets(android.view.View);
-    method @Deprecated public static float getRotation(android.view.View!);
-    method @Deprecated public static float getRotationX(android.view.View!);
-    method @Deprecated public static float getRotationY(android.view.View!);
-    method @Deprecated public static float getScaleX(android.view.View!);
-    method @Deprecated public static float getScaleY(android.view.View!);
-    method public static int getScrollIndicators(android.view.View);
-    method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
-    method public static String? getTransitionName(android.view.View);
-    method @Deprecated public static float getTranslationX(android.view.View!);
-    method @Deprecated public static float getTranslationY(android.view.View!);
-    method public static float getTranslationZ(android.view.View);
-    method public static int getWindowSystemUiVisibility(android.view.View);
-    method @Deprecated public static float getX(android.view.View!);
-    method @Deprecated public static float getY(android.view.View!);
-    method public static float getZ(android.view.View);
-    method public static boolean hasAccessibilityDelegate(android.view.View);
-    method public static boolean hasExplicitFocusable(android.view.View);
-    method public static boolean hasNestedScrollingParent(android.view.View);
-    method public static boolean hasNestedScrollingParent(android.view.View, int);
-    method public static boolean hasOnClickListeners(android.view.View);
-    method public static boolean hasOverlappingRendering(android.view.View);
-    method public static boolean hasTransientState(android.view.View);
-    method @UiThread public static boolean isAccessibilityHeading(android.view.View!);
-    method public static boolean isAttachedToWindow(android.view.View);
-    method public static boolean isFocusedByDefault(android.view.View);
-    method public static boolean isImportantForAccessibility(android.view.View);
-    method public static boolean isImportantForAutofill(android.view.View);
-    method public static boolean isInLayout(android.view.View);
-    method public static boolean isKeyboardNavigationCluster(android.view.View);
-    method public static boolean isLaidOut(android.view.View);
-    method public static boolean isLayoutDirectionResolved(android.view.View);
-    method public static boolean isNestedScrollingEnabled(android.view.View);
-    method @Deprecated public static boolean isOpaque(android.view.View!);
-    method public static boolean isPaddingRelative(android.view.View);
-    method @UiThread public static boolean isScreenReaderFocusable(android.view.View!);
-    method @Deprecated public static void jumpDrawablesToCurrentState(android.view.View!);
-    method public static android.view.View! keyboardNavigationClusterSearch(android.view.View, android.view.View!, int);
-    method public static void offsetLeftAndRight(android.view.View, int);
-    method public static void offsetTopAndBottom(android.view.View, int);
-    method public static androidx.core.view.WindowInsetsCompat onApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
-    method @Deprecated public static void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public static void onInitializeAccessibilityNodeInfo(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
-    method @Deprecated public static void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public static boolean performAccessibilityAction(android.view.View, int, android.os.Bundle!);
-    method public static void postInvalidateOnAnimation(android.view.View);
-    method public static void postInvalidateOnAnimation(android.view.View, int, int, int, int);
-    method public static void postOnAnimation(android.view.View, Runnable!);
-    method public static void postOnAnimationDelayed(android.view.View, Runnable!, long);
-    method public static void removeAccessibilityAction(android.view.View, int);
-    method public static void removeOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
-    method public static void replaceAccessibilityAction(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat, CharSequence?, androidx.core.view.accessibility.AccessibilityViewCommand?);
-    method public static void requestApplyInsets(android.view.View);
-    method public static <T extends android.view.View> T requireViewById(android.view.View, @IdRes int);
-    method @Deprecated public static int resolveSizeAndState(int, int, int);
-    method public static boolean restoreDefaultFocus(android.view.View);
-    method public static void saveAttributeDataForStyleable(android.view.View, android.content.Context, int[], android.util.AttributeSet?, android.content.res.TypedArray, int, int);
-    method public static void setAccessibilityDelegate(android.view.View, androidx.core.view.AccessibilityDelegateCompat!);
-    method @UiThread public static void setAccessibilityHeading(android.view.View!, boolean);
-    method public static void setAccessibilityLiveRegion(android.view.View, int);
-    method @UiThread public static void setAccessibilityPaneTitle(android.view.View!, CharSequence!);
-    method @Deprecated public static void setActivated(android.view.View!, boolean);
-    method @Deprecated public static void setAlpha(android.view.View!, @FloatRange(from=0.0, to=1.0) float);
-    method public static void setAutofillHints(android.view.View, java.lang.String!...);
-    method public static void setBackground(android.view.View, android.graphics.drawable.Drawable?);
-    method public static void setBackgroundTintList(android.view.View, android.content.res.ColorStateList!);
-    method public static void setBackgroundTintMode(android.view.View, android.graphics.PorterDuff.Mode!);
-    method @Deprecated public static void setChildrenDrawingOrderEnabled(android.view.ViewGroup!, boolean);
-    method public static void setClipBounds(android.view.View, android.graphics.Rect!);
-    method public static void setElevation(android.view.View, float);
-    method @Deprecated public static void setFitsSystemWindows(android.view.View!, boolean);
-    method public static void setFocusedByDefault(android.view.View, boolean);
-    method public static void setHasTransientState(android.view.View, boolean);
-    method public static void setImportantForAccessibility(android.view.View, int);
-    method public static void setImportantForAutofill(android.view.View, int);
-    method public static void setKeyboardNavigationCluster(android.view.View, boolean);
-    method public static void setLabelFor(android.view.View, @IdRes int);
-    method public static void setLayerPaint(android.view.View, android.graphics.Paint!);
-    method @Deprecated public static void setLayerType(android.view.View!, int, android.graphics.Paint!);
-    method public static void setLayoutDirection(android.view.View, int);
-    method public static void setNestedScrollingEnabled(android.view.View, boolean);
-    method public static void setNextClusterForwardId(android.view.View, int);
-    method public static void setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener?);
-    method @Deprecated public static void setOverScrollMode(android.view.View!, int);
-    method public static void setPaddingRelative(android.view.View, @Px int, @Px int, @Px int, @Px int);
-    method @Deprecated public static void setPivotX(android.view.View!, float);
-    method @Deprecated public static void setPivotY(android.view.View!, float);
-    method public static void setPointerIcon(android.view.View, androidx.core.view.PointerIconCompat!);
-    method @Deprecated public static void setRotation(android.view.View!, float);
-    method @Deprecated public static void setRotationX(android.view.View!, float);
-    method @Deprecated public static void setRotationY(android.view.View!, float);
-    method @Deprecated public static void setSaveFromParentEnabled(android.view.View!, boolean);
-    method @Deprecated public static void setScaleX(android.view.View!, float);
-    method @Deprecated public static void setScaleY(android.view.View!, float);
-    method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
-    method public static void setScrollIndicators(android.view.View, int);
-    method public static void setScrollIndicators(android.view.View, int, int);
-    method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
-    method public static void setTooltipText(android.view.View, CharSequence?);
-    method public static void setTransitionName(android.view.View, String!);
-    method @Deprecated public static void setTranslationX(android.view.View!, float);
-    method @Deprecated public static void setTranslationY(android.view.View!, float);
-    method public static void setTranslationZ(android.view.View, float);
-    method @Deprecated public static void setX(android.view.View!, float);
-    method @Deprecated public static void setY(android.view.View!, float);
-    method public static void setZ(android.view.View, float);
-    method public static boolean startDragAndDrop(android.view.View, android.content.ClipData!, android.view.View.DragShadowBuilder!, Object!, int);
-    method public static boolean startNestedScroll(android.view.View, int);
-    method public static boolean startNestedScroll(android.view.View, int, int);
-    method public static void stopNestedScroll(android.view.View);
-    method public static void stopNestedScroll(android.view.View, int);
-    method public static void updateDragShadow(android.view.View, android.view.View.DragShadowBuilder!);
-    field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
-    field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
-    field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; // 0x0
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; // 0x2
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; // 0x4
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; // 0x1
-    field @Deprecated public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
-    field @Deprecated public static final int LAYER_TYPE_NONE = 0; // 0x0
-    field @Deprecated public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
-    field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
-    field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
-    field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
-    field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
-    field @Deprecated public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
-    field @Deprecated public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
-    field @Deprecated public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
-    field @Deprecated public static final int MEASURED_STATE_TOO_SMALL = 16777216; // 0x1000000
-    field @Deprecated public static final int OVER_SCROLL_ALWAYS = 0; // 0x0
-    field @Deprecated public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; // 0x1
-    field @Deprecated public static final int OVER_SCROLL_NEVER = 2; // 0x2
-    field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
-    field public static final int SCROLL_AXIS_NONE = 0; // 0x0
-    field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_END = 32; // 0x20
-    field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
-    field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
-    field public static final int SCROLL_INDICATOR_START = 16; // 0x10
-    field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
-    field public static final int TYPE_NON_TOUCH = 1; // 0x1
-    field public static final int TYPE_TOUCH = 0; // 0x0
-  }
-
-  public static interface ViewCompat.OnUnhandledKeyEventListenerCompat {
-    method public boolean onUnhandledKeyEvent(android.view.View!, android.view.KeyEvent!);
-  }
-
-  public final class ViewConfigurationCompat {
-    method public static float getScaledHorizontalScrollFactor(android.view.ViewConfiguration, android.content.Context);
-    method public static int getScaledHoverSlop(android.view.ViewConfiguration!);
-    method @Deprecated public static int getScaledPagingTouchSlop(android.view.ViewConfiguration!);
-    method public static float getScaledVerticalScrollFactor(android.view.ViewConfiguration, android.content.Context);
-    method @Deprecated public static boolean hasPermanentMenuKey(android.view.ViewConfiguration!);
-    method public static boolean shouldShowMenuShortcutsWhenKeyboardPresent(android.view.ViewConfiguration!, android.content.Context);
-  }
-
-  public final class ViewGroupCompat {
-    method public static int getLayoutMode(android.view.ViewGroup);
-    method public static int getNestedScrollAxes(android.view.ViewGroup);
-    method public static boolean isTransitionGroup(android.view.ViewGroup);
-    method @Deprecated public static boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public static void setLayoutMode(android.view.ViewGroup, int);
-    method @Deprecated public static void setMotionEventSplittingEnabled(android.view.ViewGroup!, boolean);
-    method public static void setTransitionGroup(android.view.ViewGroup, boolean);
-    field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
-    field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
-  }
-
-  public final class ViewParentCompat {
-    method public static void notifySubtreeAccessibilityStateChanged(android.view.ViewParent!, android.view.View!, android.view.View!, int);
-    method public static boolean onNestedFling(android.view.ViewParent!, android.view.View!, float, float, boolean);
-    method public static boolean onNestedPreFling(android.view.ViewParent!, android.view.View!, float, float);
-    method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!);
-    method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!, int);
-    method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int);
-    method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int);
-    method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int, int[]);
-    method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int);
-    method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
-    method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int);
-    method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
-    method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!);
-    method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!, int);
-    method @Deprecated public static boolean requestSendAccessibilityEvent(android.view.ViewParent!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
-  }
-
-  public final class ViewPropertyAnimatorCompat {
-    method public androidx.core.view.ViewPropertyAnimatorCompat! alpha(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! alphaBy(float);
-    method public void cancel();
-    method public long getDuration();
-    method public android.view.animation.Interpolator! getInterpolator();
-    method public long getStartDelay();
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotation(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationX(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationXBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationY(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationYBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleX(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleXBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleY(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleYBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setDuration(long);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setInterpolator(android.view.animation.Interpolator!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setListener(androidx.core.view.ViewPropertyAnimatorListener!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setStartDelay(long);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setUpdateListener(androidx.core.view.ViewPropertyAnimatorUpdateListener!);
-    method public void start();
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationX(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationXBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationY(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationYBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationZ(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationZBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! withEndAction(Runnable!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! withLayer();
-    method public androidx.core.view.ViewPropertyAnimatorCompat! withStartAction(Runnable!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! x(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! xBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! y(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! yBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! z(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! zBy(float);
-  }
-
-  public interface ViewPropertyAnimatorListener {
-    method public void onAnimationCancel(android.view.View!);
-    method public void onAnimationEnd(android.view.View!);
-    method public void onAnimationStart(android.view.View!);
-  }
-
-  public class ViewPropertyAnimatorListenerAdapter implements androidx.core.view.ViewPropertyAnimatorListener {
-    ctor public ViewPropertyAnimatorListenerAdapter();
-    method public void onAnimationCancel(android.view.View!);
-    method public void onAnimationEnd(android.view.View!);
-    method public void onAnimationStart(android.view.View!);
-  }
-
-  public interface ViewPropertyAnimatorUpdateListener {
-    method public void onAnimationUpdate(android.view.View!);
-  }
-
-  public final class WindowCompat {
-    method public static <T extends android.view.View> T requireViewById(android.view.Window, @IdRes int);
-    field public static final int FEATURE_ACTION_BAR = 8; // 0x8
-    field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
-    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
-  }
-
-  public class WindowInsetsCompat {
-    ctor public WindowInsetsCompat(androidx.core.view.WindowInsetsCompat?);
-    method public androidx.core.view.WindowInsetsCompat consumeDisplayCutout();
-    method public androidx.core.view.WindowInsetsCompat consumeStableInsets();
-    method public androidx.core.view.WindowInsetsCompat consumeSystemWindowInsets();
-    method public androidx.core.view.DisplayCutoutCompat? getDisplayCutout();
-    method public androidx.core.graphics.Insets getMandatorySystemGestureInsets();
-    method public int getStableInsetBottom();
-    method public int getStableInsetLeft();
-    method public int getStableInsetRight();
-    method public int getStableInsetTop();
-    method public androidx.core.graphics.Insets getStableInsets();
-    method public androidx.core.graphics.Insets getSystemGestureInsets();
-    method public int getSystemWindowInsetBottom();
-    method public int getSystemWindowInsetLeft();
-    method public int getSystemWindowInsetRight();
-    method public int getSystemWindowInsetTop();
-    method public androidx.core.graphics.Insets getSystemWindowInsets();
-    method public androidx.core.graphics.Insets getTappableElementInsets();
-    method public boolean hasInsets();
-    method public boolean hasStableInsets();
-    method public boolean hasSystemWindowInsets();
-    method public androidx.core.view.WindowInsetsCompat inset(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat inset(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
-    method public boolean isConsumed();
-    method public boolean isRound();
-    method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(int, int, int, int);
-    method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(android.graphics.Rect);
-    method @RequiresApi(20) public android.view.WindowInsets? toWindowInsets();
-    method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets);
-  }
-
-  public static final class WindowInsetsCompat.Builder {
-    ctor public WindowInsetsCompat.Builder();
-    ctor public WindowInsetsCompat.Builder(androidx.core.view.WindowInsetsCompat);
-    method public androidx.core.view.WindowInsetsCompat build();
-    method public androidx.core.view.WindowInsetsCompat.Builder setDisplayCutout(androidx.core.view.DisplayCutoutCompat?);
-    method public androidx.core.view.WindowInsetsCompat.Builder setMandatorySystemGestureInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setStableInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setSystemGestureInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setSystemWindowInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setTappableElementInsets(androidx.core.graphics.Insets);
-  }
-
-}
-
-package androidx.core.view.accessibility {
-
-  public final class AccessibilityClickableSpanCompat extends android.text.style.ClickableSpan {
-    method public void onClick(android.view.View);
-  }
-
-  public final class AccessibilityEventCompat {
-    method @Deprecated public static void appendRecord(android.view.accessibility.AccessibilityEvent!, androidx.core.view.accessibility.AccessibilityRecordCompat!);
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! asRecord(android.view.accessibility.AccessibilityEvent!);
-    method public static int getAction(android.view.accessibility.AccessibilityEvent!);
-    method public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
-    method public static int getMovementGranularity(android.view.accessibility.AccessibilityEvent!);
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! getRecord(android.view.accessibility.AccessibilityEvent!, int);
-    method @Deprecated public static int getRecordCount(android.view.accessibility.AccessibilityEvent!);
-    method public static void setAction(android.view.accessibility.AccessibilityEvent!, int);
-    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, int);
-    method public static void setMovementGranularity(android.view.accessibility.AccessibilityEvent!, int);
-    field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
-    field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
-    field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
-    field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
-    field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
-    field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
-    field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
-    field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
-    field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
-    field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
-    field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
-    field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
-    field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1024; // 0x400
-    field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 512; // 0x200
-    field public static final int TYPE_TOUCH_INTERACTION_END = 2097152; // 0x200000
-    field public static final int TYPE_TOUCH_INTERACTION_START = 1048576; // 0x100000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 32768; // 0x8000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 65536; // 0x10000
-    field public static final int TYPE_VIEW_CONTEXT_CLICKED = 8388608; // 0x800000
-    field @Deprecated public static final int TYPE_VIEW_HOVER_ENTER = 128; // 0x80
-    field @Deprecated public static final int TYPE_VIEW_HOVER_EXIT = 256; // 0x100
-    field @Deprecated public static final int TYPE_VIEW_SCROLLED = 4096; // 0x1000
-    field @Deprecated public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
-    field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
-    field public static final int TYPE_WINDOWS_CHANGED = 4194304; // 0x400000
-    field @Deprecated public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
-  }
-
-  public final class AccessibilityManagerCompat {
-    method @Deprecated public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
-    method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
-    method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getEnabledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!, int);
-    method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getInstalledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!);
-    method @Deprecated public static boolean isTouchExplorationEnabled(android.view.accessibility.AccessibilityManager!);
-    method @Deprecated public static boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
-    method public static boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
-  }
-
-  @Deprecated public static interface AccessibilityManagerCompat.AccessibilityStateChangeListener {
-    method @Deprecated public void onAccessibilityStateChanged(boolean);
-  }
-
-  @Deprecated public abstract static class AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat implements androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener {
-    ctor @Deprecated public AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat();
-  }
-
-  public static interface AccessibilityManagerCompat.TouchExplorationStateChangeListener {
-    method public void onTouchExplorationStateChanged(boolean);
-  }
-
-  public class AccessibilityNodeInfoCompat {
-    ctor @Deprecated public AccessibilityNodeInfoCompat(Object!);
-    method public void addAction(int);
-    method public void addAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
-    method public void addChild(android.view.View!);
-    method public void addChild(android.view.View!, int);
-    method public boolean canOpenPopup();
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByText(String!);
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByViewId(String!);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! findFocus(int);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! focusSearch(int);
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!>! getActionList();
-    method public int getActions();
-    method @Deprecated public void getBoundsInParent(android.graphics.Rect!);
-    method public void getBoundsInScreen(android.graphics.Rect!);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getChild(int);
-    method public int getChildCount();
-    method public CharSequence! getClassName();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! getCollectionInfo();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! getCollectionItemInfo();
-    method public CharSequence! getContentDescription();
-    method public int getDrawingOrder();
-    method public CharSequence! getError();
-    method public android.os.Bundle! getExtras();
-    method public CharSequence? getHintText();
-    method @Deprecated public Object! getInfo();
-    method public int getInputType();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabelFor();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabeledBy();
-    method public int getLiveRegion();
-    method public int getMaxTextLength();
-    method public int getMovementGranularities();
-    method public CharSequence! getPackageName();
-    method public CharSequence? getPaneTitle();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
-    method public CharSequence? getRoleDescription();
-    method public CharSequence! getText();
-    method public int getTextSelectionEnd();
-    method public int getTextSelectionStart();
-    method public CharSequence? getTooltipText();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat? getTouchDelegateInfo();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalAfter();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalBefore();
-    method public String! getViewIdResourceName();
-    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getWindow();
-    method public int getWindowId();
-    method public boolean isAccessibilityFocused();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isClickable();
-    method public boolean isContentInvalid();
-    method public boolean isContextClickable();
-    method public boolean isDismissable();
-    method public boolean isEditable();
-    method public boolean isEnabled();
-    method public boolean isFocusable();
-    method public boolean isFocused();
-    method public boolean isHeading();
-    method public boolean isImportantForAccessibility();
-    method public boolean isLongClickable();
-    method public boolean isMultiLine();
-    method public boolean isPassword();
-    method public boolean isScreenReaderFocusable();
-    method public boolean isScrollable();
-    method public boolean isSelected();
-    method public boolean isShowingHintText();
-    method public boolean isTextEntryKey();
-    method public boolean isVisibleToUser();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!, int);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
-    method public boolean performAction(int);
-    method public boolean performAction(int, android.os.Bundle!);
-    method public void recycle();
-    method public boolean refresh();
-    method public boolean removeAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
-    method public boolean removeChild(android.view.View!);
-    method public boolean removeChild(android.view.View!, int);
-    method public void setAccessibilityFocused(boolean);
-    method @Deprecated public void setBoundsInParent(android.graphics.Rect!);
-    method public void setBoundsInScreen(android.graphics.Rect!);
-    method public void setCanOpenPopup(boolean);
-    method public void setCheckable(boolean);
-    method public void setChecked(boolean);
-    method public void setClassName(CharSequence!);
-    method public void setClickable(boolean);
-    method public void setCollectionInfo(Object!);
-    method public void setCollectionItemInfo(Object!);
-    method public void setContentDescription(CharSequence!);
-    method public void setContentInvalid(boolean);
-    method public void setContextClickable(boolean);
-    method public void setDismissable(boolean);
-    method public void setDrawingOrder(int);
-    method public void setEditable(boolean);
-    method public void setEnabled(boolean);
-    method public void setError(CharSequence!);
-    method public void setFocusable(boolean);
-    method public void setFocused(boolean);
-    method public void setHeading(boolean);
-    method public void setHintText(CharSequence?);
-    method public void setImportantForAccessibility(boolean);
-    method public void setInputType(int);
-    method public void setLabelFor(android.view.View!);
-    method public void setLabelFor(android.view.View!, int);
-    method public void setLabeledBy(android.view.View!);
-    method public void setLabeledBy(android.view.View!, int);
-    method public void setLiveRegion(int);
-    method public void setLongClickable(boolean);
-    method public void setMaxTextLength(int);
-    method public void setMovementGranularities(int);
-    method public void setMultiLine(boolean);
-    method public void setPackageName(CharSequence!);
-    method public void setPaneTitle(CharSequence?);
-    method public void setParent(android.view.View!);
-    method public void setParent(android.view.View!, int);
-    method public void setPassword(boolean);
-    method public void setRangeInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat!);
-    method public void setRoleDescription(CharSequence?);
-    method public void setScreenReaderFocusable(boolean);
-    method public void setScrollable(boolean);
-    method public void setSelected(boolean);
-    method public void setShowingHintText(boolean);
-    method public void setSource(android.view.View!);
-    method public void setSource(android.view.View!, int);
-    method public void setText(CharSequence!);
-    method public void setTextEntryKey(boolean);
-    method public void setTextSelection(int, int);
-    method public void setTooltipText(CharSequence?);
-    method public void setTouchDelegateInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat);
-    method public void setTraversalAfter(android.view.View!);
-    method public void setTraversalAfter(android.view.View!, int);
-    method public void setTraversalBefore(android.view.View!);
-    method public void setTraversalBefore(android.view.View!, int);
-    method public void setViewIdResourceName(String!);
-    method public void setVisibleToUser(boolean);
-    method public android.view.accessibility.AccessibilityNodeInfo! unwrap();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! wrap(android.view.accessibility.AccessibilityNodeInfo);
-    field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
-    field public static final String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
-    field public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
-    field public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
-    field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
-    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
-    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
-    field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
-    field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
-    field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
-    field public static final String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
-    field public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
-    field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
-    field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
-    field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
-    field public static final int ACTION_CLICK = 16; // 0x10
-    field public static final int ACTION_COLLAPSE = 524288; // 0x80000
-    field public static final int ACTION_COPY = 16384; // 0x4000
-    field public static final int ACTION_CUT = 65536; // 0x10000
-    field public static final int ACTION_DISMISS = 1048576; // 0x100000
-    field public static final int ACTION_EXPAND = 262144; // 0x40000
-    field public static final int ACTION_FOCUS = 1; // 0x1
-    field public static final int ACTION_LONG_CLICK = 32; // 0x20
-    field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
-    field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
-    field public static final int ACTION_PASTE = 32768; // 0x8000
-    field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
-    field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
-    field public static final int ACTION_SCROLL_BACKWARD = 8192; // 0x2000
-    field public static final int ACTION_SCROLL_FORWARD = 4096; // 0x1000
-    field public static final int ACTION_SELECT = 4; // 0x4
-    field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
-    field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
-    field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
-    field public static final int FOCUS_INPUT = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
-    field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
-    field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
-    field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
-  }
-
-  public static class AccessibilityNodeInfoCompat.AccessibilityActionCompat {
-    ctor public AccessibilityNodeInfoCompat.AccessibilityActionCompat(int, CharSequence!);
-    method public int getId();
-    method public CharSequence! getLabel();
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_ACCESSIBILITY_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_ACCESSIBILITY_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_SELECTION;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLICK;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COLLAPSE;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CONTEXT_CLICK;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COPY;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CUT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_DISMISS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_HTML_ELEMENT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_DOWN;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_LEFT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_DOWN;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_FORWARD;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_LEFT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_RIGHT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_TO_POSITION;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_UP;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SELECT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_PROGRESS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_SELECTION;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_TEXT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_ON_SCREEN;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_TOOLTIP;
-  }
-
-  public static class AccessibilityNodeInfoCompat.CollectionInfoCompat {
-    method public int getColumnCount();
-    method public int getRowCount();
-    method public int getSelectionMode();
-    method public boolean isHierarchical();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean, int);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean);
-    field public static final int SELECTION_MODE_MULTIPLE = 2; // 0x2
-    field public static final int SELECTION_MODE_NONE = 0; // 0x0
-    field public static final int SELECTION_MODE_SINGLE = 1; // 0x1
-  }
-
-  public static class AccessibilityNodeInfoCompat.CollectionItemInfoCompat {
-    method public int getColumnIndex();
-    method public int getColumnSpan();
-    method public int getRowIndex();
-    method public int getRowSpan();
-    method @Deprecated public boolean isHeading();
-    method public boolean isSelected();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean, boolean);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean);
-  }
-
-  public static class AccessibilityNodeInfoCompat.RangeInfoCompat {
-    method public float getCurrent();
-    method public float getMax();
-    method public float getMin();
-    method public int getType();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! obtain(int, float, float, float);
-    field public static final int RANGE_TYPE_FLOAT = 1; // 0x1
-    field public static final int RANGE_TYPE_INT = 0; // 0x0
-    field public static final int RANGE_TYPE_PERCENT = 2; // 0x2
-  }
-
-  public static final class AccessibilityNodeInfoCompat.TouchDelegateInfoCompat {
-    ctor public AccessibilityNodeInfoCompat.TouchDelegateInfoCompat(java.util.Map<android.graphics.Region!,android.view.View!>);
-    method public android.graphics.Region? getRegionAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getRegionCount();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? getTargetForRegion(android.graphics.Region);
-  }
-
-  public class AccessibilityNodeProviderCompat {
-    ctor public AccessibilityNodeProviderCompat();
-    ctor public AccessibilityNodeProviderCompat(Object!);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? createAccessibilityNodeInfo(int);
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>? findAccessibilityNodeInfosByText(String!, int);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? findFocus(int);
-    method public Object! getProvider();
-    method public boolean performAction(int, int, android.os.Bundle!);
-    field public static final int HOST_VIEW_ID = -1; // 0xffffffff
-  }
-
-  public class AccessibilityRecordCompat {
-    ctor @Deprecated public AccessibilityRecordCompat(Object!);
-    method @Deprecated public boolean equals(Object?);
-    method @Deprecated public int getAddedCount();
-    method @Deprecated public CharSequence! getBeforeText();
-    method @Deprecated public CharSequence! getClassName();
-    method @Deprecated public CharSequence! getContentDescription();
-    method @Deprecated public int getCurrentItemIndex();
-    method @Deprecated public int getFromIndex();
-    method @Deprecated public Object! getImpl();
-    method @Deprecated public int getItemCount();
-    method @Deprecated public int getMaxScrollX();
-    method public static int getMaxScrollX(android.view.accessibility.AccessibilityRecord!);
-    method @Deprecated public int getMaxScrollY();
-    method public static int getMaxScrollY(android.view.accessibility.AccessibilityRecord!);
-    method @Deprecated public android.os.Parcelable! getParcelableData();
-    method @Deprecated public int getRemovedCount();
-    method @Deprecated public int getScrollX();
-    method @Deprecated public int getScrollY();
-    method @Deprecated public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getSource();
-    method @Deprecated public java.util.List<java.lang.CharSequence!>! getText();
-    method @Deprecated public int getToIndex();
-    method @Deprecated public int getWindowId();
-    method @Deprecated public int hashCode();
-    method @Deprecated public boolean isChecked();
-    method @Deprecated public boolean isEnabled();
-    method @Deprecated public boolean isFullScreen();
-    method @Deprecated public boolean isPassword();
-    method @Deprecated public boolean isScrollable();
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain(androidx.core.view.accessibility.AccessibilityRecordCompat!);
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain();
-    method @Deprecated public void recycle();
-    method @Deprecated public void setAddedCount(int);
-    method @Deprecated public void setBeforeText(CharSequence!);
-    method @Deprecated public void setChecked(boolean);
-    method @Deprecated public void setClassName(CharSequence!);
-    method @Deprecated public void setContentDescription(CharSequence!);
-    method @Deprecated public void setCurrentItemIndex(int);
-    method @Deprecated public void setEnabled(boolean);
-    method @Deprecated public void setFromIndex(int);
-    method @Deprecated public void setFullScreen(boolean);
-    method @Deprecated public void setItemCount(int);
-    method @Deprecated public void setMaxScrollX(int);
-    method public static void setMaxScrollX(android.view.accessibility.AccessibilityRecord!, int);
-    method @Deprecated public void setMaxScrollY(int);
-    method public static void setMaxScrollY(android.view.accessibility.AccessibilityRecord!, int);
-    method @Deprecated public void setParcelableData(android.os.Parcelable!);
-    method @Deprecated public void setPassword(boolean);
-    method @Deprecated public void setRemovedCount(int);
-    method @Deprecated public void setScrollX(int);
-    method @Deprecated public void setScrollY(int);
-    method @Deprecated public void setScrollable(boolean);
-    method @Deprecated public void setSource(android.view.View!);
-    method @Deprecated public void setSource(android.view.View!, int);
-    method public static void setSource(android.view.accessibility.AccessibilityRecord, android.view.View!, int);
-    method @Deprecated public void setToIndex(int);
-  }
-
-  public interface AccessibilityViewCommand {
-    method public boolean perform(android.view.View, androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments?);
-  }
-
-  public abstract static class AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.CommandArguments();
-  }
-
-  public static final class AccessibilityViewCommand.MoveAtGranularityArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.MoveAtGranularityArguments();
-    method public boolean getExtendSelection();
-    method public int getGranularity();
-  }
-
-  public static final class AccessibilityViewCommand.MoveHtmlArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.MoveHtmlArguments();
-    method public String! getHTMLElement();
-  }
-
-  public static final class AccessibilityViewCommand.MoveWindowArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.MoveWindowArguments();
-    method public int getX();
-    method public int getY();
-  }
-
-  public static final class AccessibilityViewCommand.ScrollToPositionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.ScrollToPositionArguments();
-    method public int getColumn();
-    method public int getRow();
-  }
-
-  public static final class AccessibilityViewCommand.SetProgressArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.SetProgressArguments();
-    method public float getProgress();
-  }
-
-  public static final class AccessibilityViewCommand.SetSelectionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.SetSelectionArguments();
-    method public int getEnd();
-    method public int getStart();
-  }
-
-  public static final class AccessibilityViewCommand.SetTextArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.SetTextArguments();
-    method public CharSequence! getText();
-  }
-
-  public class AccessibilityWindowInfoCompat {
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getAnchor();
-    method public void getBoundsInScreen(android.graphics.Rect!);
-    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getChild(int);
-    method public int getChildCount();
-    method public int getId();
-    method public int getLayer();
-    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getParent();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getRoot();
-    method public CharSequence! getTitle();
-    method public int getType();
-    method public boolean isAccessibilityFocused();
-    method public boolean isActive();
-    method public boolean isFocused();
-    method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain();
-    method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityWindowInfoCompat!);
-    method public void recycle();
-    field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4
-    field public static final int TYPE_APPLICATION = 1; // 0x1
-    field public static final int TYPE_INPUT_METHOD = 2; // 0x2
-    field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
-    field public static final int TYPE_SYSTEM = 3; // 0x3
-  }
-
-}
-
-package androidx.core.view.animation {
-
-  public final class PathInterpolatorCompat {
-    method public static android.view.animation.Interpolator! create(android.graphics.Path!);
-    method public static android.view.animation.Interpolator! create(float, float);
-    method public static android.view.animation.Interpolator! create(float, float, float, float);
-  }
-
-}
-
-package androidx.core.view.inputmethod {
-
-  public final class EditorInfoCompat {
-    ctor @Deprecated public EditorInfoCompat();
-    method public static String![] getContentMimeTypes(android.view.inputmethod.EditorInfo!);
-    method public static void setContentMimeTypes(android.view.inputmethod.EditorInfo, String![]?);
-    field public static final int IME_FLAG_FORCE_ASCII = -2147483648; // 0x80000000
-    field public static final int IME_FLAG_NO_PERSONALIZED_LEARNING = 16777216; // 0x1000000
-  }
-
-  public final class InputConnectionCompat {
-    ctor @Deprecated public InputConnectionCompat();
-    method public static boolean commitContent(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputContentInfoCompat, int, android.os.Bundle?);
-    method public static android.view.inputmethod.InputConnection createWrapper(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener);
-    field public static final int INPUT_CONTENT_GRANT_READ_URI_PERMISSION = 1; // 0x1
-  }
-
-  public static interface InputConnectionCompat.OnCommitContentListener {
-    method public boolean onCommitContent(androidx.core.view.inputmethod.InputContentInfoCompat!, int, android.os.Bundle!);
-  }
-
-  public final class InputContentInfoCompat {
-    ctor public InputContentInfoCompat(android.net.Uri, android.content.ClipDescription, android.net.Uri?);
-    method public android.net.Uri getContentUri();
-    method public android.content.ClipDescription getDescription();
-    method public android.net.Uri? getLinkUri();
-    method public void releasePermission();
-    method public void requestPermission();
-    method public Object? unwrap();
-    method public static androidx.core.view.inputmethod.InputContentInfoCompat? wrap(Object?);
-  }
-
-}
-
-package androidx.core.widget {
-
-  public abstract class AutoScrollHelper implements android.view.View.OnTouchListener {
-    ctor public AutoScrollHelper(android.view.View);
-    method public abstract boolean canTargetScrollHorizontally(int);
-    method public abstract boolean canTargetScrollVertically(int);
-    method public boolean isEnabled();
-    method public boolean isExclusive();
-    method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
-    method public abstract void scrollTargetBy(int, int);
-    method public androidx.core.widget.AutoScrollHelper setActivationDelay(int);
-    method public androidx.core.widget.AutoScrollHelper setEdgeType(int);
-    method public androidx.core.widget.AutoScrollHelper! setEnabled(boolean);
-    method public androidx.core.widget.AutoScrollHelper! setExclusive(boolean);
-    method public androidx.core.widget.AutoScrollHelper setMaximumEdges(float, float);
-    method public androidx.core.widget.AutoScrollHelper setMaximumVelocity(float, float);
-    method public androidx.core.widget.AutoScrollHelper setMinimumVelocity(float, float);
-    method public androidx.core.widget.AutoScrollHelper setRampDownDuration(int);
-    method public androidx.core.widget.AutoScrollHelper setRampUpDuration(int);
-    method public androidx.core.widget.AutoScrollHelper setRelativeEdges(float, float);
-    method public androidx.core.widget.AutoScrollHelper setRelativeVelocity(float, float);
-    field public static final int EDGE_TYPE_INSIDE = 0; // 0x0
-    field public static final int EDGE_TYPE_INSIDE_EXTEND = 1; // 0x1
-    field public static final int EDGE_TYPE_OUTSIDE = 2; // 0x2
-    field public static final float NO_MAX = 3.4028235E38f;
-    field public static final float NO_MIN = 0.0f;
-    field public static final float RELATIVE_UNSPECIFIED = 0.0f;
-  }
-
-  public final class CompoundButtonCompat {
-    method public static android.graphics.drawable.Drawable? getButtonDrawable(android.widget.CompoundButton);
-    method public static android.content.res.ColorStateList? getButtonTintList(android.widget.CompoundButton);
-    method public static android.graphics.PorterDuff.Mode? getButtonTintMode(android.widget.CompoundButton);
-    method public static void setButtonTintList(android.widget.CompoundButton, android.content.res.ColorStateList?);
-    method public static void setButtonTintMode(android.widget.CompoundButton, android.graphics.PorterDuff.Mode?);
-  }
-
-  public class ContentLoadingProgressBar extends android.widget.ProgressBar {
-    ctor public ContentLoadingProgressBar(android.content.Context);
-    ctor public ContentLoadingProgressBar(android.content.Context, android.util.AttributeSet?);
-    method public void hide();
-    method public void onAttachedToWindow();
-    method public void onDetachedFromWindow();
-    method public void show();
-  }
-
-  public final class EdgeEffectCompat {
-    ctor @Deprecated public EdgeEffectCompat(android.content.Context!);
-    method @Deprecated public boolean draw(android.graphics.Canvas!);
-    method @Deprecated public void finish();
-    method @Deprecated public boolean isFinished();
-    method @Deprecated public boolean onAbsorb(int);
-    method @Deprecated public boolean onPull(float);
-    method @Deprecated public boolean onPull(float, float);
-    method public static void onPull(android.widget.EdgeEffect, float, float);
-    method @Deprecated public boolean onRelease();
-    method @Deprecated public void setSize(int, int);
-  }
-
-  public class ImageViewCompat {
-    method public static android.content.res.ColorStateList? getImageTintList(android.widget.ImageView);
-    method public static android.graphics.PorterDuff.Mode? getImageTintMode(android.widget.ImageView);
-    method public static void setImageTintList(android.widget.ImageView, android.content.res.ColorStateList?);
-    method public static void setImageTintMode(android.widget.ImageView, android.graphics.PorterDuff.Mode?);
-  }
-
-  public final class ListPopupWindowCompat {
-    method @Deprecated public static android.view.View.OnTouchListener! createDragToOpenListener(Object!, android.view.View!);
-    method public static android.view.View.OnTouchListener? createDragToOpenListener(android.widget.ListPopupWindow, android.view.View);
-  }
-
-  public class ListViewAutoScrollHelper extends androidx.core.widget.AutoScrollHelper {
-    ctor public ListViewAutoScrollHelper(android.widget.ListView);
-    method public boolean canTargetScrollHorizontally(int);
-    method public boolean canTargetScrollVertically(int);
-    method public void scrollTargetBy(int, int);
-  }
-
-  public final class ListViewCompat {
-    method public static boolean canScrollList(android.widget.ListView, int);
-    method public static void scrollListBy(android.widget.ListView, int);
-  }
-
-  public class NestedScrollView extends android.widget.FrameLayout implements androidx.core.view.NestedScrollingChild3 androidx.core.view.NestedScrollingParent3 androidx.core.view.ScrollingView {
-    ctor public NestedScrollView(android.content.Context);
-    ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?);
-    ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?, int);
-    method public boolean arrowScroll(int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollExtent();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollOffset();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollRange();
-    method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollExtent();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollOffset();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollRange();
-    method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
-    method public boolean executeKeyEvent(android.view.KeyEvent);
-    method public void fling(int);
-    method public boolean fullScroll(int);
-    method public int getMaxScrollAmount();
-    method public boolean hasNestedScrollingParent(int);
-    method public boolean isFillViewport();
-    method public boolean isSmoothScrollingEnabled();
-    method public void onAttachedToWindow();
-    method public void onNestedPreScroll(android.view.View, int, int, int[], int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
-    method public void onStopNestedScroll(android.view.View, int);
-    method public boolean pageScroll(int);
-    method public void setFillViewport(boolean);
-    method public void setOnScrollChangeListener(androidx.core.widget.NestedScrollView.OnScrollChangeListener?);
-    method public void setSmoothScrollingEnabled(boolean);
-    method public final void smoothScrollBy(int, int);
-    method public final void smoothScrollBy(int, int, int);
-    method public final void smoothScrollTo(int, int);
-    method public final void smoothScrollTo(int, int, int);
-    method public boolean startNestedScroll(int, int);
-    method public void stopNestedScroll(int);
-  }
-
-  public static interface NestedScrollView.OnScrollChangeListener {
-    method public void onScrollChange(androidx.core.widget.NestedScrollView!, int, int, int, int);
-  }
-
-  public final class PopupMenuCompat {
-    method public static android.view.View.OnTouchListener? getDragToOpenListener(Object);
-  }
-
-  public final class PopupWindowCompat {
-    method public static boolean getOverlapAnchor(android.widget.PopupWindow);
-    method public static int getWindowLayoutType(android.widget.PopupWindow);
-    method public static void setOverlapAnchor(android.widget.PopupWindow, boolean);
-    method public static void setWindowLayoutType(android.widget.PopupWindow, int);
-    method public static void showAsDropDown(android.widget.PopupWindow, android.view.View, int, int, int);
-  }
-
-  @Deprecated public final class ScrollerCompat {
-    method @Deprecated public void abortAnimation();
-    method @Deprecated public boolean computeScrollOffset();
-    method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!);
-    method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!, android.view.animation.Interpolator!);
-    method @Deprecated public void fling(int, int, int, int, int, int, int, int);
-    method @Deprecated public void fling(int, int, int, int, int, int, int, int, int, int);
-    method @Deprecated public float getCurrVelocity();
-    method @Deprecated public int getCurrX();
-    method @Deprecated public int getCurrY();
-    method @Deprecated public int getFinalX();
-    method @Deprecated public int getFinalY();
-    method @Deprecated public boolean isFinished();
-    method @Deprecated public boolean isOverScrolled();
-    method @Deprecated public void notifyHorizontalEdgeReached(int, int, int);
-    method @Deprecated public void notifyVerticalEdgeReached(int, int, int);
-    method @Deprecated public boolean springBack(int, int, int, int, int, int);
-    method @Deprecated public void startScroll(int, int, int, int);
-    method @Deprecated public void startScroll(int, int, int, int, int);
-  }
-
-  public final class TextViewCompat {
-    method public static int getAutoSizeMaxTextSize(android.widget.TextView);
-    method public static int getAutoSizeMinTextSize(android.widget.TextView);
-    method public static int getAutoSizeStepGranularity(android.widget.TextView);
-    method public static int[] getAutoSizeTextAvailableSizes(android.widget.TextView);
-    method public static int getAutoSizeTextType(android.widget.TextView);
-    method public static android.content.res.ColorStateList? getCompoundDrawableTintList(android.widget.TextView);
-    method public static android.graphics.PorterDuff.Mode? getCompoundDrawableTintMode(android.widget.TextView);
-    method public static android.graphics.drawable.Drawable![] getCompoundDrawablesRelative(android.widget.TextView);
-    method public static int getFirstBaselineToTopHeight(android.widget.TextView);
-    method public static int getLastBaselineToBottomHeight(android.widget.TextView);
-    method public static int getMaxLines(android.widget.TextView);
-    method public static int getMinLines(android.widget.TextView);
-    method public static androidx.core.text.PrecomputedTextCompat.Params getTextMetricsParams(android.widget.TextView);
-    method public static void setAutoSizeTextTypeUniformWithConfiguration(android.widget.TextView, int, int, int, int) throws java.lang.IllegalArgumentException;
-    method public static void setAutoSizeTextTypeUniformWithPresetSizes(android.widget.TextView, int[], int) throws java.lang.IllegalArgumentException;
-    method public static void setAutoSizeTextTypeWithDefaults(android.widget.TextView, int);
-    method public static void setCompoundDrawableTintList(android.widget.TextView, android.content.res.ColorStateList?);
-    method public static void setCompoundDrawableTintMode(android.widget.TextView, android.graphics.PorterDuff.Mode?);
-    method public static void setCompoundDrawablesRelative(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
-    method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
-    method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, @DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
-    method public static void setCustomSelectionActionModeCallback(android.widget.TextView, android.view.ActionMode.Callback);
-    method public static void setFirstBaselineToTopHeight(android.widget.TextView, @IntRange(from=0) @Px int);
-    method public static void setLastBaselineToBottomHeight(android.widget.TextView, @IntRange(from=0) @Px int);
-    method public static void setLineHeight(android.widget.TextView, @IntRange(from=0) @Px int);
-    method public static void setPrecomputedText(android.widget.TextView, androidx.core.text.PrecomputedTextCompat);
-    method public static void setTextAppearance(android.widget.TextView, @StyleRes int);
-    method public static void setTextMetricsParams(android.widget.TextView, androidx.core.text.PrecomputedTextCompat.Params);
-    field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
-    field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
-  }
-
-  public interface TintableCompoundButton {
-    method public android.content.res.ColorStateList? getSupportButtonTintList();
-    method public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
-    method public void setSupportButtonTintList(android.content.res.ColorStateList?);
-    method public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public interface TintableCompoundDrawablesView {
-    method public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
-    method public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
-    method public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
-    method public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-}
-
diff --git a/core/core/api/public_plus_experimental_1.4.0-alpha01.txt b/core/core/api/public_plus_experimental_1.4.0-alpha01.txt
index 092bfc2..7bcf485 100644
--- a/core/core/api/public_plus_experimental_1.4.0-alpha01.txt
+++ b/core/core/api/public_plus_experimental_1.4.0-alpha01.txt
@@ -968,6 +968,7 @@
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
+    method public static boolean pushDynamicShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
@@ -2674,6 +2675,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_IME_ENTER;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
diff --git a/core/core/api/public_plus_experimental_current.txt b/core/core/api/public_plus_experimental_current.txt
index 092bfc2..e9f05d7 100644
--- a/core/core/api/public_plus_experimental_current.txt
+++ b/core/core/api/public_plus_experimental_current.txt
@@ -397,7 +397,8 @@
     method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method @Deprecated public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person);
     method public android.app.Notification! build();
     method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
     method public android.os.Bundle! getExtras();
@@ -441,6 +442,7 @@
     method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
     method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
     method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(androidx.core.graphics.drawable.IconCompat);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
     method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
@@ -874,7 +876,9 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+    field public static final String EXTRA_EPOCH_TIME = "android.intent.extra.EPOCH_TIME";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
   }
@@ -932,13 +936,25 @@
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
     method public CharSequence? getDisabledMessage();
+    method public int getDisabledReason();
+    method public android.os.PersistableBundle? getExtras();
     method public String getId();
     method public android.content.Intent getIntent();
     method public android.content.Intent![] getIntents();
+    method public long getLastChangedTimestamp();
     method public androidx.core.content.LocusIdCompat? getLocusId();
     method public CharSequence? getLongLabel();
+    method public String getPackage();
     method public int getRank();
     method public CharSequence getShortLabel();
+    method public android.os.UserHandle? getUserHandle();
+    method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
+    method public boolean isDeclaredInManifest();
+    method public boolean isDynamic();
+    method public boolean isEnabled();
+    method public boolean isImmutable();
+    method public boolean isPinned();
     method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
   }
 
@@ -949,6 +965,7 @@
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
@@ -965,14 +982,28 @@
   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);
+    method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+    method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
+    method public static int getIconMaxHeight(android.content.Context);
+    method public static int getIconMaxWidth(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
+    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, int);
+    method public static boolean isRateLimitingActive(android.content.Context);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
+    method public static boolean pushDynamicShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void reportShortcutUsed(android.content.Context, String);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
+    method public static boolean setDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
   }
 
 }
@@ -1263,8 +1294,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1349,6 +1415,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -1712,11 +1783,13 @@
 
   public final class DisplayCutoutCompat {
     ctor public DisplayCutoutCompat(android.graphics.Rect!, java.util.List<android.graphics.Rect!>!);
+    ctor public DisplayCutoutCompat(androidx.core.graphics.Insets, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, androidx.core.graphics.Insets);
     method public java.util.List<android.graphics.Rect!>! getBoundingRects();
     method public int getSafeInsetBottom();
     method public int getSafeInsetLeft();
     method public int getSafeInsetRight();
     method public int getSafeInsetTop();
+    method public androidx.core.graphics.Insets getWaterfallInsets();
   }
 
   public final class DragAndDropPermissionsCompat {
@@ -2117,6 +2190,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2207,6 +2281,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, int);
     method public static void setScrollIndicators(android.view.View, int, int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2430,6 +2505,7 @@
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2513,6 +2589,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2602,6 +2679,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
@@ -2622,6 +2700,7 @@
     field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
     field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
     field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
     field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -2674,6 +2753,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_IME_ENTER;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
@@ -2683,6 +2763,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
diff --git a/core/core/api/res-1.3.0-rc01.txt b/core/core/api/res-1.3.0-rc01.txt
deleted file mode 100644
index a609e0a..0000000
--- a/core/core/api/res-1.3.0-rc01.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-attr alpha
-attr font
-attr fontProviderAuthority
-attr fontProviderCerts
-attr fontProviderFetchStrategy
-attr fontProviderFetchTimeout
-attr fontProviderPackage
-attr fontProviderQuery
-attr fontStyle
-attr fontVariationSettings
-attr fontWeight
-attr ttcIndex
-style TextAppearance_Compat_Notification
-style TextAppearance_Compat_Notification_Info
-style TextAppearance_Compat_Notification_Line2
-style TextAppearance_Compat_Notification_Time
-style TextAppearance_Compat_Notification_Title
diff --git a/core/core/api/restricted_1.3.0-alpha01.txt b/core/core/api/restricted_1.3.0-alpha01.txt
index 733507d..5ce96fb 100644
--- a/core/core/api/restricted_1.3.0-alpha01.txt
+++ b/core/core/api/restricted_1.3.0-alpha01.txt
@@ -967,9 +967,11 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
+    field public static final String EXTRA_TIME = "android.intent.extra.TIME";
   }
 
   public final class MimeTypeFilter {
@@ -1548,8 +1550,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1637,6 +1674,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -2473,6 +2515,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2563,6 +2606,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int);
     method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int, @androidx.core.view.ViewCompat.ScrollIndicators int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2793,17 +2837,18 @@
     method @Deprecated public static void appendRecord(android.view.accessibility.AccessibilityEvent!, androidx.core.view.accessibility.AccessibilityRecordCompat!);
     method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! asRecord(android.view.accessibility.AccessibilityEvent!);
     method public static int getAction(android.view.accessibility.AccessibilityEvent!);
-    method public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
+    method @androidx.core.view.accessibility.AccessibilityEventCompat.ContentChangeType public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
     method public static int getMovementGranularity(android.view.accessibility.AccessibilityEvent!);
     method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! getRecord(android.view.accessibility.AccessibilityEvent!, int);
     method @Deprecated public static int getRecordCount(android.view.accessibility.AccessibilityEvent!);
     method public static void setAction(android.view.accessibility.AccessibilityEvent!, int);
-    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, int);
+    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, @androidx.core.view.accessibility.AccessibilityEventCompat.ContentChangeType int);
     method public static void setMovementGranularity(android.view.accessibility.AccessibilityEvent!, int);
     field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2828,6 +2873,9 @@
     field @Deprecated public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
   }
 
+  @IntDef(flag=true, value={androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_SUBTREE, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_TEXT, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_UNDEFINED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface AccessibilityEventCompat.ContentChangeType {
+  }
+
   public final class AccessibilityManagerCompat {
     method @Deprecated public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
     method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
@@ -2889,6 +2937,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2978,6 +3027,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
diff --git a/core/core/api/restricted_1.3.0-alpha02.txt b/core/core/api/restricted_1.3.0-alpha02.txt
index aae1774..3cf65d0 100644
--- a/core/core/api/restricted_1.3.0-alpha02.txt
+++ b/core/core/api/restricted_1.3.0-alpha02.txt
@@ -444,7 +444,8 @@
     method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method @Deprecated public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person);
     method public android.app.Notification! build();
     method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! getBigContentView();
@@ -494,6 +495,7 @@
     method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
     method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
     method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
     method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
@@ -511,6 +513,7 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public java.util.ArrayList<androidx.core.app.NotificationCompat.Action!>! mActions;
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.Context! mContext;
     field @Deprecated public java.util.ArrayList<java.lang.String!>! mPeople;
+    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public java.util.ArrayList<androidx.core.app.Person!> mPersonList;
   }
 
   public static final class NotificationCompat.CarExtender implements androidx.core.app.NotificationCompat.Extender {
@@ -733,6 +736,7 @@
     method public String? getUri();
     method public boolean isBot();
     method public boolean isImportant();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String resolveToLegacyUri();
     method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.app.Person toAndroidPerson();
     method public androidx.core.app.Person.Builder toBuilder();
     method public android.os.Bundle toBundle();
@@ -967,9 +971,11 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
+    field public static final String EXTRA_TIME = "android.intent.extra.TIME";
   }
 
   public final class MimeTypeFilter {
@@ -1021,13 +1027,25 @@
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
     method public CharSequence? getDisabledMessage();
+    method public int getDisabledReason();
+    method public android.os.PersistableBundle? getExtras();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.core.graphics.drawable.IconCompat! getIcon();
     method public String getId();
     method public android.content.Intent getIntent();
     method public android.content.Intent![] getIntents();
+    method public long getLastChangedTimestamp();
     method public CharSequence? getLongLabel();
+    method public String getPackage();
     method public int getRank();
     method public CharSequence getShortLabel();
+    method public android.os.UserHandle? getUserHandle();
+    method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
+    method public boolean isDeclaredInManifest();
+    method public boolean isDynamic();
+    method public boolean isEnabled();
+    method public boolean isImmutable();
+    method public boolean isPinned();
     method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
   }
 
@@ -1040,6 +1058,7 @@
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
@@ -1063,14 +1082,25 @@
   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);
+    method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+    method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
+    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, @androidx.core.content.pm.ShortcutManagerCompat.ShortcutMatchFlags int);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
     method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
+  }
+
+  @IntDef(flag=true, value={androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_MANIFEST, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_DYNAMIC, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_PINNED, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_CACHED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ShortcutManagerCompat.ShortcutMatchFlags {
   }
 
 }
@@ -1548,8 +1578,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1637,6 +1702,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -2481,6 +2551,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2571,6 +2642,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int);
     method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int, @androidx.core.view.ViewCompat.ScrollIndicators int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2801,17 +2873,18 @@
     method @Deprecated public static void appendRecord(android.view.accessibility.AccessibilityEvent!, androidx.core.view.accessibility.AccessibilityRecordCompat!);
     method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! asRecord(android.view.accessibility.AccessibilityEvent!);
     method public static int getAction(android.view.accessibility.AccessibilityEvent!);
-    method public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
+    method @androidx.core.view.accessibility.AccessibilityEventCompat.ContentChangeType public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
     method public static int getMovementGranularity(android.view.accessibility.AccessibilityEvent!);
     method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! getRecord(android.view.accessibility.AccessibilityEvent!, int);
     method @Deprecated public static int getRecordCount(android.view.accessibility.AccessibilityEvent!);
     method public static void setAction(android.view.accessibility.AccessibilityEvent!, int);
-    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, int);
+    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, @androidx.core.view.accessibility.AccessibilityEventCompat.ContentChangeType int);
     method public static void setMovementGranularity(android.view.accessibility.AccessibilityEvent!, int);
     field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2836,6 +2909,9 @@
     field @Deprecated public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
   }
 
+  @IntDef(flag=true, value={androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_SUBTREE, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_TEXT, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_UNDEFINED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface AccessibilityEventCompat.ContentChangeType {
+  }
+
   public final class AccessibilityManagerCompat {
     method @Deprecated public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
     method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
@@ -2897,6 +2973,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2986,6 +3063,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
@@ -3006,6 +3084,7 @@
     field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
     field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
     field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
     field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -3071,6 +3150,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
diff --git a/core/core/api/restricted_1.3.0-alpha03.txt b/core/core/api/restricted_1.3.0-alpha03.txt
index 4a44ea0..e977717 100644
--- a/core/core/api/restricted_1.3.0-alpha03.txt
+++ b/core/core/api/restricted_1.3.0-alpha03.txt
@@ -444,7 +444,8 @@
     method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method @Deprecated public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person);
     method public android.app.Notification! build();
     method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! getBigContentView();
@@ -494,6 +495,7 @@
     method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
     method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
     method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
     method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
@@ -511,6 +513,7 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public java.util.ArrayList<androidx.core.app.NotificationCompat.Action!>! mActions;
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.Context! mContext;
     field @Deprecated public java.util.ArrayList<java.lang.String!>! mPeople;
+    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public java.util.ArrayList<androidx.core.app.Person!> mPersonList;
   }
 
   public static final class NotificationCompat.CarExtender implements androidx.core.app.NotificationCompat.Extender {
@@ -733,6 +736,7 @@
     method public String? getUri();
     method public boolean isBot();
     method public boolean isImportant();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String resolveToLegacyUri();
     method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.app.Person toAndroidPerson();
     method public androidx.core.app.Person.Builder toBuilder();
     method public android.os.Bundle toBundle();
@@ -967,7 +971,9 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+    field public static final String EXTRA_EPOCH_TIME = "android.intent.extra.EPOCH_TIME";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
   }
@@ -1021,13 +1027,25 @@
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
     method public CharSequence? getDisabledMessage();
+    method public int getDisabledReason();
+    method public android.os.PersistableBundle? getExtras();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.core.graphics.drawable.IconCompat! getIcon();
     method public String getId();
     method public android.content.Intent getIntent();
     method public android.content.Intent![] getIntents();
+    method public long getLastChangedTimestamp();
     method public CharSequence? getLongLabel();
+    method public String getPackage();
     method public int getRank();
     method public CharSequence getShortLabel();
+    method public android.os.UserHandle? getUserHandle();
+    method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
+    method public boolean isDeclaredInManifest();
+    method public boolean isDynamic();
+    method public boolean isEnabled();
+    method public boolean isImmutable();
+    method public boolean isPinned();
     method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
   }
 
@@ -1040,6 +1058,7 @@
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
@@ -1063,14 +1082,25 @@
   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);
+    method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+    method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
+    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, @androidx.core.content.pm.ShortcutManagerCompat.ShortcutMatchFlags int);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
     method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
+  }
+
+  @IntDef(flag=true, value={androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_MANIFEST, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_DYNAMIC, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_PINNED, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_CACHED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ShortcutManagerCompat.ShortcutMatchFlags {
   }
 
 }
@@ -1400,6 +1430,7 @@
     method public String getResPackage();
     method public int getType();
     method public android.net.Uri getUri();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public java.io.InputStream? getUriInputStream(android.content.Context);
     method public android.graphics.drawable.Drawable? loadDrawable(android.content.Context);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
     method public androidx.core.graphics.drawable.IconCompat! setTintList(android.content.res.ColorStateList!);
@@ -1548,8 +1579,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1637,6 +1703,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -2482,6 +2553,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2572,6 +2644,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int);
     method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int, @androidx.core.view.ViewCompat.ScrollIndicators int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2804,17 +2877,18 @@
     method @Deprecated public static void appendRecord(android.view.accessibility.AccessibilityEvent!, androidx.core.view.accessibility.AccessibilityRecordCompat!);
     method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! asRecord(android.view.accessibility.AccessibilityEvent!);
     method public static int getAction(android.view.accessibility.AccessibilityEvent!);
-    method public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
+    method @androidx.core.view.accessibility.AccessibilityEventCompat.ContentChangeType public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
     method public static int getMovementGranularity(android.view.accessibility.AccessibilityEvent!);
     method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! getRecord(android.view.accessibility.AccessibilityEvent!, int);
     method @Deprecated public static int getRecordCount(android.view.accessibility.AccessibilityEvent!);
     method public static void setAction(android.view.accessibility.AccessibilityEvent!, int);
-    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, int);
+    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, @androidx.core.view.accessibility.AccessibilityEventCompat.ContentChangeType int);
     method public static void setMovementGranularity(android.view.accessibility.AccessibilityEvent!, int);
     field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2839,6 +2913,9 @@
     field @Deprecated public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
   }
 
+  @IntDef(flag=true, value={androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_SUBTREE, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_TEXT, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_UNDEFINED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface AccessibilityEventCompat.ContentChangeType {
+  }
+
   public final class AccessibilityManagerCompat {
     method @Deprecated public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
     method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
@@ -2900,6 +2977,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -2989,6 +3067,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
@@ -3009,6 +3088,7 @@
     field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
     field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
     field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
     field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -3074,6 +3154,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
diff --git a/core/core/api/restricted_1.3.0-rc01.txt b/core/core/api/restricted_1.3.0-rc01.txt
deleted file mode 100644
index 935828e..0000000
--- a/core/core/api/restricted_1.3.0-rc01.txt
+++ /dev/null
@@ -1,3556 +0,0 @@
-// Signature format: 3.0
-package android.support.v4.os {
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ResultReceiver implements android.os.Parcelable {
-    ctor public ResultReceiver(android.os.Handler!);
-    method public int describeContents();
-    method protected void onReceiveResult(int, android.os.Bundle!);
-    method public void send(int, android.os.Bundle!);
-    method public void writeToParcel(android.os.Parcel!, int);
-    field public static final android.os.Parcelable.Creator<android.support.v4.os.ResultReceiver!>! CREATOR;
-  }
-
-}
-
-package androidx.core.accessibilityservice {
-
-  public final class AccessibilityServiceInfoCompat {
-    method public static String capabilityToString(int);
-    method public static String feedbackTypeToString(int);
-    method public static String? flagToString(int);
-    method public static int getCapabilities(android.accessibilityservice.AccessibilityServiceInfo);
-    method public static String? loadDescription(android.accessibilityservice.AccessibilityServiceInfo, android.content.pm.PackageManager);
-    field public static final int CAPABILITY_CAN_FILTER_KEY_EVENTS = 8; // 0x8
-    field public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
-    field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
-    field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
-    field public static final int FEEDBACK_ALL_MASK = -1; // 0xffffffff
-    field public static final int FEEDBACK_BRAILLE = 32; // 0x20
-    field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
-    field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
-    field public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
-    field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
-    field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
-  }
-
-}
-
-package androidx.core.app {
-
-  public class ActivityCompat extends androidx.core.content.ContextCompat {
-    ctor protected ActivityCompat();
-    method public static void finishAffinity(android.app.Activity);
-    method public static void finishAfterTransition(android.app.Activity);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.app.ActivityCompat.PermissionCompatDelegate! getPermissionCompatDelegate();
-    method public static android.net.Uri? getReferrer(android.app.Activity);
-    method @Deprecated public static boolean invalidateOptionsMenu(android.app.Activity!);
-    method public static void postponeEnterTransition(android.app.Activity);
-    method public static void recreate(android.app.Activity);
-    method public static androidx.core.view.DragAndDropPermissionsCompat? requestDragAndDropPermissions(android.app.Activity!, android.view.DragEvent!);
-    method public static void requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
-    method public static <T extends android.view.View> T requireViewById(android.app.Activity, @IdRes int);
-    method public static void setEnterSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
-    method public static void setExitSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
-    method public static void setPermissionCompatDelegate(androidx.core.app.ActivityCompat.PermissionCompatDelegate?);
-    method public static boolean shouldShowRequestPermissionRationale(android.app.Activity, String);
-    method public static void startActivityForResult(android.app.Activity, android.content.Intent, int, android.os.Bundle?);
-    method public static void startIntentSenderForResult(android.app.Activity, android.content.IntentSender, int, android.content.Intent?, int, int, int, android.os.Bundle?) throws android.content.IntentSender.SendIntentException;
-    method public static void startPostponedEnterTransition(android.app.Activity);
-  }
-
-  public static interface ActivityCompat.OnRequestPermissionsResultCallback {
-    method public void onRequestPermissionsResult(int, String![], int[]);
-  }
-
-  public static interface ActivityCompat.PermissionCompatDelegate {
-    method public boolean onActivityResult(android.app.Activity, @IntRange(from=0) int, int, android.content.Intent?);
-    method public boolean requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface ActivityCompat.RequestPermissionsRequestCodeValidator {
-    method public void validateRequestPermissionsRequestCode(int);
-  }
-
-  public final class ActivityManagerCompat {
-    method public static boolean isLowRamDevice(android.app.ActivityManager);
-  }
-
-  public class ActivityOptionsCompat {
-    ctor protected ActivityOptionsCompat();
-    method public android.graphics.Rect? getLaunchBounds();
-    method public static androidx.core.app.ActivityOptionsCompat makeBasic();
-    method public static androidx.core.app.ActivityOptionsCompat makeClipRevealAnimation(android.view.View, int, int, int, int);
-    method public static androidx.core.app.ActivityOptionsCompat makeCustomAnimation(android.content.Context, int, int);
-    method public static androidx.core.app.ActivityOptionsCompat makeScaleUpAnimation(android.view.View, int, int, int, int);
-    method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, android.view.View, String);
-    method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, androidx.core.util.Pair<android.view.View!,java.lang.String!>!...);
-    method public static androidx.core.app.ActivityOptionsCompat makeTaskLaunchBehind();
-    method public static androidx.core.app.ActivityOptionsCompat makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
-    method public void requestUsageTimeReport(android.app.PendingIntent);
-    method public androidx.core.app.ActivityOptionsCompat setLaunchBounds(android.graphics.Rect?);
-    method public android.os.Bundle? toBundle();
-    method public void update(androidx.core.app.ActivityOptionsCompat);
-    field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
-    field public static final String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
-  }
-
-  public final class AlarmManagerCompat {
-    method public static void setAlarmClock(android.app.AlarmManager, long, android.app.PendingIntent, android.app.PendingIntent);
-    method public static void setAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
-    method public static void setExact(android.app.AlarmManager, int, long, android.app.PendingIntent);
-    method public static void setExactAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
-  }
-
-  @RequiresApi(28) public class AppComponentFactory extends android.app.AppComponentFactory {
-    ctor public AppComponentFactory();
-    method public final android.app.Activity instantiateActivity(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Activity instantiateActivityCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.app.Application instantiateApplication(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Application instantiateApplicationCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.content.ContentProvider instantiateProvider(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.content.ContentProvider instantiateProviderCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.content.BroadcastReceiver instantiateReceiver(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.content.BroadcastReceiver instantiateReceiverCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public final android.app.Service instantiateService(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Service instantiateServiceCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-  }
-
-  public class AppLaunchChecker {
-    ctor @Deprecated public AppLaunchChecker();
-    method public static boolean hasStartedFromLauncher(android.content.Context);
-    method public static void onActivityCreate(android.app.Activity);
-  }
-
-  public final class AppOpsManagerCompat {
-    method public static int noteOp(android.content.Context, String, int, String);
-    method public static int noteOpNoThrow(android.content.Context, String, int, String);
-    method public static int noteProxyOp(android.content.Context, String, String);
-    method public static int noteProxyOpNoThrow(android.content.Context, String, String);
-    method public static String? permissionToOp(String);
-    field public static final int MODE_ALLOWED = 0; // 0x0
-    field public static final int MODE_DEFAULT = 3; // 0x3
-    field public static final int MODE_ERRORED = 2; // 0x2
-    field public static final int MODE_IGNORED = 1; // 0x1
-  }
-
-  public final class BundleCompat {
-    method public static android.os.IBinder? getBinder(android.os.Bundle, String?);
-    method public static void putBinder(android.os.Bundle, String?, android.os.IBinder?);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ComponentActivity extends android.app.Activity implements androidx.core.view.KeyEventDispatcher.Component androidx.lifecycle.LifecycleOwner {
-    ctor public ComponentActivity();
-    method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public <T extends androidx.core.app.ComponentActivity.ExtraData> T! getExtraData(Class<T!>!);
-    method public androidx.lifecycle.Lifecycle getLifecycle();
-    method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void putExtraData(androidx.core.app.ComponentActivity.ExtraData!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean superDispatchKeyEvent(android.view.KeyEvent!);
-  }
-
-  @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static class ComponentActivity.ExtraData {
-    ctor @Deprecated public ComponentActivity.ExtraData();
-  }
-
-  @RequiresApi(api=28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class CoreComponentFactory extends android.app.AppComponentFactory {
-    ctor public CoreComponentFactory();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface CoreComponentFactory.CompatWrapped {
-    method public Object! getWrapper();
-  }
-
-  public class DialogCompat {
-    method public static android.view.View requireViewById(android.app.Dialog, int);
-  }
-
-  public class FrameMetricsAggregator {
-    ctor public FrameMetricsAggregator();
-    ctor public FrameMetricsAggregator(@androidx.core.app.FrameMetricsAggregator.MetricType int);
-    method public void add(android.app.Activity);
-    method public android.util.SparseIntArray![]? getMetrics();
-    method public android.util.SparseIntArray![]? remove(android.app.Activity);
-    method public android.util.SparseIntArray![]? reset();
-    method public android.util.SparseIntArray![]? stop();
-    field public static final int ANIMATION_DURATION = 256; // 0x100
-    field public static final int ANIMATION_INDEX = 8; // 0x8
-    field public static final int COMMAND_DURATION = 32; // 0x20
-    field public static final int COMMAND_INDEX = 5; // 0x5
-    field public static final int DELAY_DURATION = 128; // 0x80
-    field public static final int DELAY_INDEX = 7; // 0x7
-    field public static final int DRAW_DURATION = 8; // 0x8
-    field public static final int DRAW_INDEX = 3; // 0x3
-    field public static final int EVERY_DURATION = 511; // 0x1ff
-    field public static final int INPUT_DURATION = 2; // 0x2
-    field public static final int INPUT_INDEX = 1; // 0x1
-    field public static final int LAYOUT_MEASURE_DURATION = 4; // 0x4
-    field public static final int LAYOUT_MEASURE_INDEX = 2; // 0x2
-    field public static final int SWAP_DURATION = 64; // 0x40
-    field public static final int SWAP_INDEX = 6; // 0x6
-    field public static final int SYNC_DURATION = 16; // 0x10
-    field public static final int SYNC_INDEX = 4; // 0x4
-    field public static final int TOTAL_DURATION = 1; // 0x1
-    field public static final int TOTAL_INDEX = 0; // 0x0
-  }
-
-  @IntDef(flag=true, value={androidx.core.app.FrameMetricsAggregator.TOTAL_DURATION, androidx.core.app.FrameMetricsAggregator.INPUT_DURATION, androidx.core.app.FrameMetricsAggregator.LAYOUT_MEASURE_DURATION, androidx.core.app.FrameMetricsAggregator.DRAW_DURATION, androidx.core.app.FrameMetricsAggregator.SYNC_DURATION, androidx.core.app.FrameMetricsAggregator.COMMAND_DURATION, androidx.core.app.FrameMetricsAggregator.SWAP_DURATION, androidx.core.app.FrameMetricsAggregator.DELAY_DURATION, androidx.core.app.FrameMetricsAggregator.ANIMATION_DURATION, androidx.core.app.FrameMetricsAggregator.EVERY_DURATION}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface FrameMetricsAggregator.MetricType {
-  }
-
-  public abstract class JobIntentService extends android.app.Service {
-    ctor public JobIntentService();
-    method public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
-    method public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
-    method public boolean isStopped();
-    method public android.os.IBinder! onBind(android.content.Intent);
-    method protected abstract void onHandleWork(android.content.Intent);
-    method public boolean onStopCurrentWork();
-    method public void setInterruptIfStopped(boolean);
-  }
-
-  public final class NavUtils {
-    method public static android.content.Intent? getParentActivityIntent(android.app.Activity);
-    method public static android.content.Intent? getParentActivityIntent(android.content.Context, Class<?>) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static android.content.Intent? getParentActivityIntent(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static String? getParentActivityName(android.app.Activity);
-    method public static String? getParentActivityName(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static void navigateUpFromSameTask(android.app.Activity);
-    method public static void navigateUpTo(android.app.Activity, android.content.Intent);
-    method public static boolean shouldUpRecreateTask(android.app.Activity, android.content.Intent);
-    field public static final String PARENT_ACTIVITY = "android.support.PARENT_ACTIVITY";
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface NotificationBuilderWithBuilderAccessor {
-    method public android.app.Notification.Builder! getBuilder();
-  }
-
-  public class NotificationCompat {
-    ctor @Deprecated public NotificationCompat();
-    method public static androidx.core.app.NotificationCompat.Action! getAction(android.app.Notification!, int);
-    method public static int getActionCount(android.app.Notification!);
-    method public static boolean getAllowSystemGeneratedContextualActions(android.app.Notification!);
-    method public static int getBadgeIconType(android.app.Notification!);
-    method public static androidx.core.app.NotificationCompat.BubbleMetadata? getBubbleMetadata(android.app.Notification);
-    method public static String! getCategory(android.app.Notification!);
-    method public static String! getChannelId(android.app.Notification!);
-    method @RequiresApi(19) public static CharSequence! getContentTitle(android.app.Notification!);
-    method public static android.os.Bundle? getExtras(android.app.Notification!);
-    method public static String! getGroup(android.app.Notification!);
-    method @androidx.core.app.NotificationCompat.GroupAlertBehavior public static int getGroupAlertBehavior(android.app.Notification!);
-    method @RequiresApi(21) public static java.util.List<androidx.core.app.NotificationCompat.Action!>! getInvisibleActions(android.app.Notification!);
-    method public static boolean getLocalOnly(android.app.Notification!);
-    method public static String! getShortcutId(android.app.Notification!);
-    method public static String! getSortKey(android.app.Notification!);
-    method public static long getTimeoutAfter(android.app.Notification!);
-    method public static boolean isGroupSummary(android.app.Notification!);
-    field public static final int BADGE_ICON_LARGE = 2; // 0x2
-    field public static final int BADGE_ICON_NONE = 0; // 0x0
-    field public static final int BADGE_ICON_SMALL = 1; // 0x1
-    field public static final String CATEGORY_ALARM = "alarm";
-    field public static final String CATEGORY_CALL = "call";
-    field public static final String CATEGORY_EMAIL = "email";
-    field public static final String CATEGORY_ERROR = "err";
-    field public static final String CATEGORY_EVENT = "event";
-    field public static final String CATEGORY_MESSAGE = "msg";
-    field public static final String CATEGORY_NAVIGATION = "navigation";
-    field public static final String CATEGORY_PROGRESS = "progress";
-    field public static final String CATEGORY_PROMO = "promo";
-    field public static final String CATEGORY_RECOMMENDATION = "recommendation";
-    field public static final String CATEGORY_REMINDER = "reminder";
-    field public static final String CATEGORY_SERVICE = "service";
-    field public static final String CATEGORY_SOCIAL = "social";
-    field public static final String CATEGORY_STATUS = "status";
-    field public static final String CATEGORY_SYSTEM = "sys";
-    field public static final String CATEGORY_TRANSPORT = "transport";
-    field @ColorInt public static final int COLOR_DEFAULT = 0; // 0x0
-    field public static final int DEFAULT_ALL = -1; // 0xffffffff
-    field public static final int DEFAULT_LIGHTS = 4; // 0x4
-    field public static final int DEFAULT_SOUND = 1; // 0x1
-    field public static final int DEFAULT_VIBRATE = 2; // 0x2
-    field public static final String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
-    field public static final String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
-    field public static final String EXTRA_BIG_TEXT = "android.bigText";
-    field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
-    field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
-    field public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
-    field public static final String EXTRA_HIDDEN_CONVERSATION_TITLE = "android.hiddenConversationTitle";
-    field public static final String EXTRA_INFO_TEXT = "android.infoText";
-    field public static final String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
-    field public static final String EXTRA_LARGE_ICON = "android.largeIcon";
-    field public static final String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
-    field public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
-    field public static final String EXTRA_MESSAGES = "android.messages";
-    field public static final String EXTRA_MESSAGING_STYLE_USER = "android.messagingStyleUser";
-    field public static final String EXTRA_PEOPLE = "android.people";
-    field public static final String EXTRA_PICTURE = "android.picture";
-    field public static final String EXTRA_PROGRESS = "android.progress";
-    field public static final String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
-    field public static final String EXTRA_PROGRESS_MAX = "android.progressMax";
-    field public static final String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
-    field public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
-    field public static final String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
-    field public static final String EXTRA_SHOW_WHEN = "android.showWhen";
-    field public static final String EXTRA_SMALL_ICON = "android.icon";
-    field public static final String EXTRA_SUB_TEXT = "android.subText";
-    field public static final String EXTRA_SUMMARY_TEXT = "android.summaryText";
-    field public static final String EXTRA_TEMPLATE = "android.template";
-    field public static final String EXTRA_TEXT = "android.text";
-    field public static final String EXTRA_TEXT_LINES = "android.textLines";
-    field public static final String EXTRA_TITLE = "android.title";
-    field public static final String EXTRA_TITLE_BIG = "android.title.big";
-    field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
-    field public static final int FLAG_BUBBLE = 4096; // 0x1000
-    field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
-    field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
-    field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
-    field public static final int FLAG_INSISTENT = 4; // 0x4
-    field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
-    field public static final int FLAG_NO_CLEAR = 32; // 0x20
-    field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
-    field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
-    field public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
-    field public static final int GROUP_ALERT_ALL = 0; // 0x0
-    field public static final int GROUP_ALERT_CHILDREN = 2; // 0x2
-    field public static final int GROUP_ALERT_SUMMARY = 1; // 0x1
-    field public static final String GROUP_KEY_SILENT = "silent";
-    field public static final int PRIORITY_DEFAULT = 0; // 0x0
-    field public static final int PRIORITY_HIGH = 1; // 0x1
-    field public static final int PRIORITY_LOW = -1; // 0xffffffff
-    field public static final int PRIORITY_MAX = 2; // 0x2
-    field public static final int PRIORITY_MIN = -2; // 0xfffffffe
-    field public static final int STREAM_DEFAULT = -1; // 0xffffffff
-    field public static final int VISIBILITY_PRIVATE = 0; // 0x0
-    field public static final int VISIBILITY_PUBLIC = 1; // 0x1
-    field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
-  }
-
-  public static class NotificationCompat.Action {
-    ctor public NotificationCompat.Action(int, CharSequence!, android.app.PendingIntent!);
-    ctor public NotificationCompat.Action(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
-    method public android.app.PendingIntent! getActionIntent();
-    method public boolean getAllowGeneratedReplies();
-    method public androidx.core.app.RemoteInput![]! getDataOnlyRemoteInputs();
-    method public android.os.Bundle! getExtras();
-    method @Deprecated public int getIcon();
-    method public androidx.core.graphics.drawable.IconCompat? getIconCompat();
-    method public androidx.core.app.RemoteInput![]! getRemoteInputs();
-    method @androidx.core.app.NotificationCompat.Action.SemanticAction public int getSemanticAction();
-    method public boolean getShowsUserInterface();
-    method public CharSequence! getTitle();
-    method public boolean isContextual();
-    field public static final int SEMANTIC_ACTION_ARCHIVE = 5; // 0x5
-    field public static final int SEMANTIC_ACTION_CALL = 10; // 0xa
-    field public static final int SEMANTIC_ACTION_DELETE = 4; // 0x4
-    field public static final int SEMANTIC_ACTION_MARK_AS_READ = 2; // 0x2
-    field public static final int SEMANTIC_ACTION_MARK_AS_UNREAD = 3; // 0x3
-    field public static final int SEMANTIC_ACTION_MUTE = 6; // 0x6
-    field public static final int SEMANTIC_ACTION_NONE = 0; // 0x0
-    field public static final int SEMANTIC_ACTION_REPLY = 1; // 0x1
-    field public static final int SEMANTIC_ACTION_THUMBS_DOWN = 9; // 0x9
-    field public static final int SEMANTIC_ACTION_THUMBS_UP = 8; // 0x8
-    field public static final int SEMANTIC_ACTION_UNMUTE = 7; // 0x7
-    field public android.app.PendingIntent! actionIntent;
-    field @Deprecated public int icon;
-    field public CharSequence! title;
-  }
-
-  public static final class NotificationCompat.Action.Builder {
-    ctor public NotificationCompat.Action.Builder(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
-    ctor public NotificationCompat.Action.Builder(int, CharSequence!, android.app.PendingIntent!);
-    ctor public NotificationCompat.Action.Builder(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Action.Builder! addExtras(android.os.Bundle!);
-    method public androidx.core.app.NotificationCompat.Action.Builder! addRemoteInput(androidx.core.app.RemoteInput!);
-    method public androidx.core.app.NotificationCompat.Action! build();
-    method public androidx.core.app.NotificationCompat.Action.Builder! extend(androidx.core.app.NotificationCompat.Action.Extender!);
-    method public android.os.Bundle! getExtras();
-    method public androidx.core.app.NotificationCompat.Action.Builder! setAllowGeneratedReplies(boolean);
-    method public androidx.core.app.NotificationCompat.Action.Builder setContextual(boolean);
-    method public androidx.core.app.NotificationCompat.Action.Builder! setSemanticAction(@androidx.core.app.NotificationCompat.Action.SemanticAction int);
-    method public androidx.core.app.NotificationCompat.Action.Builder! setShowsUserInterface(boolean);
-  }
-
-  public static interface NotificationCompat.Action.Extender {
-    method public androidx.core.app.NotificationCompat.Action.Builder! extend(androidx.core.app.NotificationCompat.Action.Builder!);
-  }
-
-  @IntDef({androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_NONE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_REPLY, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_UNREAD, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_DELETE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_ARCHIVE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_UNMUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_UP, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_DOWN, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_CALL}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.Action.SemanticAction {
-  }
-
-  public static final class NotificationCompat.Action.WearableExtender implements androidx.core.app.NotificationCompat.Action.Extender {
-    ctor public NotificationCompat.Action.WearableExtender();
-    ctor public NotificationCompat.Action.WearableExtender(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! clone();
-    method public androidx.core.app.NotificationCompat.Action.Builder! extend(androidx.core.app.NotificationCompat.Action.Builder!);
-    method @Deprecated public CharSequence! getCancelLabel();
-    method @Deprecated public CharSequence! getConfirmLabel();
-    method public boolean getHintDisplayActionInline();
-    method public boolean getHintLaunchesActivity();
-    method @Deprecated public CharSequence! getInProgressLabel();
-    method public boolean isAvailableOffline();
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! setAvailableOffline(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender! setCancelLabel(CharSequence!);
-    method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender! setConfirmLabel(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! setHintDisplayActionInline(boolean);
-    method public androidx.core.app.NotificationCompat.Action.WearableExtender! setHintLaunchesActivity(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender! setInProgressLabel(CharSequence!);
-  }
-
-  @IntDef({androidx.core.app.NotificationCompat.BADGE_ICON_NONE, androidx.core.app.NotificationCompat.BADGE_ICON_SMALL, androidx.core.app.NotificationCompat.BADGE_ICON_LARGE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.BadgeIconType {
-  }
-
-  public static class NotificationCompat.BigPictureStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.BigPictureStyle();
-    ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! bigLargeIcon(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! bigPicture(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! setBigContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.BigPictureStyle! setSummaryText(CharSequence!);
-  }
-
-  public static class NotificationCompat.BigTextStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.BigTextStyle();
-    ctor public NotificationCompat.BigTextStyle(androidx.core.app.NotificationCompat.Builder!);
-    method public androidx.core.app.NotificationCompat.BigTextStyle! bigText(CharSequence!);
-    method public androidx.core.app.NotificationCompat.BigTextStyle! setBigContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.BigTextStyle! setSummaryText(CharSequence!);
-  }
-
-  public static final class NotificationCompat.BubbleMetadata {
-    method @RequiresApi(29) public static androidx.core.app.NotificationCompat.BubbleMetadata? fromPlatform(android.app.Notification.BubbleMetadata?);
-    method public boolean getAutoExpandBubble();
-    method public android.app.PendingIntent? getDeleteIntent();
-    method @Dimension(unit=androidx.annotation.Dimension.DP) public int getDesiredHeight();
-    method @DimenRes public int getDesiredHeightResId();
-    method public androidx.core.graphics.drawable.IconCompat getIcon();
-    method public android.app.PendingIntent getIntent();
-    method public boolean isNotificationSuppressed();
-    method @RequiresApi(29) public static android.app.Notification.BubbleMetadata? toPlatform(androidx.core.app.NotificationCompat.BubbleMetadata?);
-  }
-
-  public static final class NotificationCompat.BubbleMetadata.Builder {
-    ctor public NotificationCompat.BubbleMetadata.Builder();
-    method public androidx.core.app.NotificationCompat.BubbleMetadata build();
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setAutoExpandBubble(boolean);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDeleteIntent(android.app.PendingIntent?);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeight(@Dimension(unit=androidx.annotation.Dimension.DP) int);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeightResId(@DimenRes int);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIcon(androidx.core.graphics.drawable.IconCompat);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIntent(android.app.PendingIntent);
-    method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setSuppressNotification(boolean);
-  }
-
-  public static class NotificationCompat.Builder {
-    ctor public NotificationCompat.Builder(android.content.Context, String);
-    ctor @Deprecated public NotificationCompat.Builder(android.content.Context!);
-    method public androidx.core.app.NotificationCompat.Builder! addAction(int, CharSequence!, android.app.PendingIntent!);
-    method public androidx.core.app.NotificationCompat.Builder! addAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
-    method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
-    method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
-    method public android.app.Notification! build();
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! getBigContentView();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.core.app.NotificationCompat.BubbleMetadata? getBubbleMetadata();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int getColor();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! getContentView();
-    method public android.os.Bundle! getExtras();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! getHeadsUpContentView();
-    method @Deprecated public android.app.Notification! getNotification();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int getPriority();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public long getWhenIfShowing();
-    method protected static CharSequence! limitCharSequenceLength(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder setAllowSystemGeneratedContextualActions(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setAutoCancel(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setBadgeIconType(@androidx.core.app.NotificationCompat.BadgeIconType int);
-    method public androidx.core.app.NotificationCompat.Builder setBubbleMetadata(androidx.core.app.NotificationCompat.BubbleMetadata?);
-    method public androidx.core.app.NotificationCompat.Builder! setCategory(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setChannelId(String);
-    method @RequiresApi(24) public androidx.core.app.NotificationCompat.Builder setChronometerCountDown(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setColor(@ColorInt int);
-    method public androidx.core.app.NotificationCompat.Builder! setColorized(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setContent(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentInfo(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentIntent(android.app.PendingIntent!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentText(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setCustomBigContentView(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setCustomContentView(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setCustomHeadsUpContentView(android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setDefaults(int);
-    method public androidx.core.app.NotificationCompat.Builder! setDeleteIntent(android.app.PendingIntent!);
-    method public androidx.core.app.NotificationCompat.Builder! setExtras(android.os.Bundle!);
-    method public androidx.core.app.NotificationCompat.Builder! setFullScreenIntent(android.app.PendingIntent!, boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setGroup(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setGroupAlertBehavior(@androidx.core.app.NotificationCompat.GroupAlertBehavior int);
-    method public androidx.core.app.NotificationCompat.Builder! setGroupSummary(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setLargeIcon(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.Builder! setLights(@ColorInt int, int, int);
-    method public androidx.core.app.NotificationCompat.Builder! setLocalOnly(boolean);
-    method public androidx.core.app.NotificationCompat.Builder setNotificationSilent();
-    method public androidx.core.app.NotificationCompat.Builder! setNumber(int);
-    method public androidx.core.app.NotificationCompat.Builder! setOngoing(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setOnlyAlertOnce(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setPriority(int);
-    method public androidx.core.app.NotificationCompat.Builder! setProgress(int, int, boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setPublicVersion(android.app.Notification!);
-    method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
-    method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
-    method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
-    method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
-    method public androidx.core.app.NotificationCompat.Builder! setSound(android.net.Uri!);
-    method public androidx.core.app.NotificationCompat.Builder! setSound(android.net.Uri!, @androidx.core.app.NotificationCompat.StreamType int);
-    method public androidx.core.app.NotificationCompat.Builder! setStyle(androidx.core.app.NotificationCompat.Style!);
-    method public androidx.core.app.NotificationCompat.Builder! setSubText(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setTicker(CharSequence!);
-    method public androidx.core.app.NotificationCompat.Builder! setTicker(CharSequence!, android.widget.RemoteViews!);
-    method public androidx.core.app.NotificationCompat.Builder! setTimeoutAfter(long);
-    method public androidx.core.app.NotificationCompat.Builder! setUsesChronometer(boolean);
-    method public androidx.core.app.NotificationCompat.Builder! setVibrate(long[]!);
-    method public androidx.core.app.NotificationCompat.Builder! setVisibility(@androidx.core.app.NotificationCompat.NotificationVisibility int);
-    method public androidx.core.app.NotificationCompat.Builder! setWhen(long);
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public java.util.ArrayList<androidx.core.app.NotificationCompat.Action!>! mActions;
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.Context! mContext;
-    field @Deprecated public java.util.ArrayList<java.lang.String!>! mPeople;
-  }
-
-  public static final class NotificationCompat.CarExtender implements androidx.core.app.NotificationCompat.Extender {
-    ctor public NotificationCompat.CarExtender();
-    ctor public NotificationCompat.CarExtender(android.app.Notification!);
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Builder!);
-    method @ColorInt public int getColor();
-    method public android.graphics.Bitmap! getLargeIcon();
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation! getUnreadConversation();
-    method public androidx.core.app.NotificationCompat.CarExtender! setColor(@ColorInt int);
-    method public androidx.core.app.NotificationCompat.CarExtender! setLargeIcon(android.graphics.Bitmap!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender! setUnreadConversation(androidx.core.app.NotificationCompat.CarExtender.UnreadConversation!);
-  }
-
-  @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation {
-    method @Deprecated public long getLatestTimestamp();
-    method @Deprecated public String![]! getMessages();
-    method @Deprecated public String! getParticipant();
-    method @Deprecated public String![]! getParticipants();
-    method @Deprecated public android.app.PendingIntent! getReadPendingIntent();
-    method @Deprecated public androidx.core.app.RemoteInput! getRemoteInput();
-    method @Deprecated public android.app.PendingIntent! getReplyPendingIntent();
-  }
-
-  @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation.Builder {
-    ctor @Deprecated public NotificationCompat.CarExtender.UnreadConversation.Builder(String!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! addMessage(String!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation! build();
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! setLatestTimestamp(long);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! setReadPendingIntent(android.app.PendingIntent!);
-    method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder! setReplyAction(android.app.PendingIntent!, androidx.core.app.RemoteInput!);
-  }
-
-  public static class NotificationCompat.DecoratedCustomViewStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.DecoratedCustomViewStyle();
-  }
-
-  public static interface NotificationCompat.Extender {
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Builder!);
-  }
-
-  @IntDef({androidx.core.app.NotificationCompat.GROUP_ALERT_ALL, androidx.core.app.NotificationCompat.GROUP_ALERT_SUMMARY, androidx.core.app.NotificationCompat.GROUP_ALERT_CHILDREN}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.GroupAlertBehavior {
-  }
-
-  public static class NotificationCompat.InboxStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor public NotificationCompat.InboxStyle();
-    ctor public NotificationCompat.InboxStyle(androidx.core.app.NotificationCompat.Builder!);
-    method public androidx.core.app.NotificationCompat.InboxStyle! addLine(CharSequence!);
-    method public androidx.core.app.NotificationCompat.InboxStyle! setBigContentTitle(CharSequence!);
-    method public androidx.core.app.NotificationCompat.InboxStyle! setSummaryText(CharSequence!);
-  }
-
-  public static class NotificationCompat.MessagingStyle extends androidx.core.app.NotificationCompat.Style {
-    ctor @Deprecated public NotificationCompat.MessagingStyle(CharSequence);
-    ctor public NotificationCompat.MessagingStyle(androidx.core.app.Person);
-    method @Deprecated public androidx.core.app.NotificationCompat.MessagingStyle! addMessage(CharSequence!, long, CharSequence!);
-    method public androidx.core.app.NotificationCompat.MessagingStyle! addMessage(CharSequence!, long, androidx.core.app.Person!);
-    method public androidx.core.app.NotificationCompat.MessagingStyle! addMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message!);
-    method public static androidx.core.app.NotificationCompat.MessagingStyle? extractMessagingStyleFromNotification(android.app.Notification!);
-    method public CharSequence? getConversationTitle();
-    method public java.util.List<androidx.core.app.NotificationCompat.MessagingStyle.Message!>! getMessages();
-    method public androidx.core.app.Person! getUser();
-    method @Deprecated public CharSequence! getUserDisplayName();
-    method public boolean isGroupConversation();
-    method public androidx.core.app.NotificationCompat.MessagingStyle! setConversationTitle(CharSequence?);
-    method public androidx.core.app.NotificationCompat.MessagingStyle! setGroupConversation(boolean);
-    field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
-  }
-
-  public static final class NotificationCompat.MessagingStyle.Message {
-    ctor public NotificationCompat.MessagingStyle.Message(CharSequence!, long, androidx.core.app.Person?);
-    ctor @Deprecated public NotificationCompat.MessagingStyle.Message(CharSequence!, long, CharSequence!);
-    method public String? getDataMimeType();
-    method public android.net.Uri? getDataUri();
-    method public android.os.Bundle getExtras();
-    method public androidx.core.app.Person? getPerson();
-    method @Deprecated public CharSequence? getSender();
-    method public CharSequence getText();
-    method public long getTimestamp();
-    method public androidx.core.app.NotificationCompat.MessagingStyle.Message! setData(String!, android.net.Uri!);
-  }
-
-  @IntDef({androidx.core.app.NotificationCompat.VISIBILITY_PUBLIC, androidx.core.app.NotificationCompat.VISIBILITY_PRIVATE, androidx.core.app.NotificationCompat.VISIBILITY_SECRET}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.NotificationVisibility {
-  }
-
-  @IntDef({android.media.AudioManager.STREAM_VOICE_CALL, android.media.AudioManager.STREAM_SYSTEM, android.media.AudioManager.STREAM_RING, android.media.AudioManager.STREAM_MUSIC, android.media.AudioManager.STREAM_ALARM, android.media.AudioManager.STREAM_NOTIFICATION, android.media.AudioManager.STREAM_DTMF, android.media.AudioManager.STREAM_ACCESSIBILITY}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.StreamType {
-  }
-
-  public abstract static class NotificationCompat.Style {
-    ctor public NotificationCompat.Style();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void addCompatExtras(android.os.Bundle!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void apply(androidx.core.app.NotificationBuilderWithBuilderAccessor!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! applyStandardTemplate(boolean, int, boolean);
-    method public android.app.Notification! build();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void buildIntoRemoteViews(android.widget.RemoteViews!, android.widget.RemoteViews!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap! createColoredBitmap(int, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! makeBigContentView(androidx.core.app.NotificationBuilderWithBuilderAccessor!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! makeContentView(androidx.core.app.NotificationBuilderWithBuilderAccessor!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! makeHeadsUpContentView(androidx.core.app.NotificationBuilderWithBuilderAccessor!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void restoreFromCompatExtras(android.os.Bundle!);
-    method public void setBuilder(androidx.core.app.NotificationCompat.Builder!);
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected androidx.core.app.NotificationCompat.Builder! mBuilder;
-  }
-
-  public static final class NotificationCompat.WearableExtender implements androidx.core.app.NotificationCompat.Extender {
-    ctor public NotificationCompat.WearableExtender();
-    ctor public NotificationCompat.WearableExtender(android.app.Notification!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! addAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! addActions(java.util.List<androidx.core.app.NotificationCompat.Action!>!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! addPage(android.app.Notification!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! addPages(java.util.List<android.app.Notification!>!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! clearActions();
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! clearPages();
-    method public androidx.core.app.NotificationCompat.WearableExtender! clone();
-    method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Builder!);
-    method public java.util.List<androidx.core.app.NotificationCompat.Action!>! getActions();
-    method @Deprecated public android.graphics.Bitmap! getBackground();
-    method public String! getBridgeTag();
-    method public int getContentAction();
-    method @Deprecated public int getContentIcon();
-    method @Deprecated public int getContentIconGravity();
-    method public boolean getContentIntentAvailableOffline();
-    method @Deprecated public int getCustomContentHeight();
-    method @Deprecated public int getCustomSizePreset();
-    method public String! getDismissalId();
-    method @Deprecated public android.app.PendingIntent! getDisplayIntent();
-    method @Deprecated public int getGravity();
-    method @Deprecated public boolean getHintAmbientBigPicture();
-    method @Deprecated public boolean getHintAvoidBackgroundClipping();
-    method public boolean getHintContentIntentLaunchesActivity();
-    method @Deprecated public boolean getHintHideIcon();
-    method @Deprecated public int getHintScreenTimeout();
-    method @Deprecated public boolean getHintShowBackgroundOnly();
-    method @Deprecated public java.util.List<android.app.Notification!>! getPages();
-    method public boolean getStartScrollBottom();
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setBackground(android.graphics.Bitmap!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setBridgeTag(String!);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setContentAction(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setContentIcon(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setContentIconGravity(int);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setContentIntentAvailableOffline(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setCustomContentHeight(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setCustomSizePreset(int);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setDismissalId(String!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setDisplayIntent(android.app.PendingIntent!);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setGravity(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintAmbientBigPicture(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintAvoidBackgroundClipping(boolean);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setHintContentIntentLaunchesActivity(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintHideIcon(boolean);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintScreenTimeout(int);
-    method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender! setHintShowBackgroundOnly(boolean);
-    method public androidx.core.app.NotificationCompat.WearableExtender! setStartScrollBottom(boolean);
-    field @Deprecated public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
-    field @Deprecated public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
-    field @Deprecated public static final int SIZE_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int SIZE_FULL_SCREEN = 5; // 0x5
-    field @Deprecated public static final int SIZE_LARGE = 4; // 0x4
-    field @Deprecated public static final int SIZE_MEDIUM = 3; // 0x3
-    field @Deprecated public static final int SIZE_SMALL = 2; // 0x2
-    field @Deprecated public static final int SIZE_XSMALL = 1; // 0x1
-    field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
-  }
-
-  public final class NotificationCompatExtras {
-    field public static final String EXTRA_ACTION_EXTRAS = "android.support.actionExtras";
-    field public static final String EXTRA_GROUP_KEY = "android.support.groupKey";
-    field public static final String EXTRA_GROUP_SUMMARY = "android.support.isGroupSummary";
-    field public static final String EXTRA_LOCAL_ONLY = "android.support.localOnly";
-    field public static final String EXTRA_REMOTE_INPUTS = "android.support.remoteInputs";
-    field public static final String EXTRA_SORT_KEY = "android.support.sortKey";
-  }
-
-  public abstract class NotificationCompatSideChannelService extends android.app.Service {
-    ctor public NotificationCompatSideChannelService();
-    method public abstract void cancel(String!, int, String!);
-    method public abstract void cancelAll(String!);
-    method public abstract void notify(String!, int, String!, android.app.Notification!);
-    method public android.os.IBinder! onBind(android.content.Intent!);
-  }
-
-  public final class NotificationManagerCompat {
-    method public boolean areNotificationsEnabled();
-    method public void cancel(int);
-    method public void cancel(String?, int);
-    method public void cancelAll();
-    method public void createNotificationChannel(android.app.NotificationChannel);
-    method public void createNotificationChannelGroup(android.app.NotificationChannelGroup);
-    method public void createNotificationChannelGroups(java.util.List<android.app.NotificationChannelGroup!>);
-    method public void createNotificationChannels(java.util.List<android.app.NotificationChannel!>);
-    method public void deleteNotificationChannel(String);
-    method public void deleteNotificationChannelGroup(String);
-    method public static androidx.core.app.NotificationManagerCompat from(android.content.Context);
-    method public static java.util.Set<java.lang.String!> getEnabledListenerPackages(android.content.Context);
-    method public int getImportance();
-    method public android.app.NotificationChannel? getNotificationChannel(String);
-    method public android.app.NotificationChannelGroup? getNotificationChannelGroup(String);
-    method public java.util.List<android.app.NotificationChannelGroup!> getNotificationChannelGroups();
-    method public java.util.List<android.app.NotificationChannel!> getNotificationChannels();
-    method public void notify(int, android.app.Notification);
-    method public void notify(String?, int, android.app.Notification);
-    field public static final String ACTION_BIND_SIDE_CHANNEL = "android.support.BIND_NOTIFICATION_SIDE_CHANNEL";
-    field public static final String EXTRA_USE_SIDE_CHANNEL = "android.support.useSideChannel";
-    field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
-    field public static final int IMPORTANCE_HIGH = 4; // 0x4
-    field public static final int IMPORTANCE_LOW = 2; // 0x2
-    field public static final int IMPORTANCE_MAX = 5; // 0x5
-    field public static final int IMPORTANCE_MIN = 1; // 0x1
-    field public static final int IMPORTANCE_NONE = 0; // 0x0
-    field public static final int IMPORTANCE_UNSPECIFIED = -1000; // 0xfffffc18
-  }
-
-  public class Person {
-    method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.app.Person fromAndroidPerson(android.app.Person);
-    method public static androidx.core.app.Person fromBundle(android.os.Bundle);
-    method @RequiresApi(22) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.app.Person fromPersistableBundle(android.os.PersistableBundle);
-    method public androidx.core.graphics.drawable.IconCompat? getIcon();
-    method public String? getKey();
-    method public CharSequence? getName();
-    method public String? getUri();
-    method public boolean isBot();
-    method public boolean isImportant();
-    method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.app.Person toAndroidPerson();
-    method public androidx.core.app.Person.Builder toBuilder();
-    method public android.os.Bundle toBundle();
-    method @RequiresApi(22) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.os.PersistableBundle toPersistableBundle();
-  }
-
-  public static class Person.Builder {
-    ctor public Person.Builder();
-    method public androidx.core.app.Person build();
-    method public androidx.core.app.Person.Builder setBot(boolean);
-    method public androidx.core.app.Person.Builder setIcon(androidx.core.graphics.drawable.IconCompat?);
-    method public androidx.core.app.Person.Builder setImportant(boolean);
-    method public androidx.core.app.Person.Builder setKey(String?);
-    method public androidx.core.app.Person.Builder setName(CharSequence?);
-    method public androidx.core.app.Person.Builder setUri(String?);
-  }
-
-  public final class RemoteActionCompat implements androidx.versionedparcelable.VersionedParcelable {
-    ctor public RemoteActionCompat(androidx.core.graphics.drawable.IconCompat, CharSequence, CharSequence, android.app.PendingIntent);
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public RemoteActionCompat();
-    ctor public RemoteActionCompat(androidx.core.app.RemoteActionCompat);
-    method @RequiresApi(26) public static androidx.core.app.RemoteActionCompat createFromRemoteAction(android.app.RemoteAction);
-    method public android.app.PendingIntent getActionIntent();
-    method public CharSequence getContentDescription();
-    method public androidx.core.graphics.drawable.IconCompat getIcon();
-    method public CharSequence getTitle();
-    method public boolean isEnabled();
-    method public void setEnabled(boolean);
-    method public void setShouldShowIcon(boolean);
-    method public boolean shouldShowIcon();
-    method @RequiresApi(26) public android.app.RemoteAction toRemoteAction();
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public android.app.PendingIntent! mActionIntent;
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public CharSequence! mContentDescription;
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public boolean mEnabled;
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.core.graphics.drawable.IconCompat! mIcon;
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public boolean mShouldShowIcon;
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public CharSequence! mTitle;
-  }
-
-  public final class RemoteInput {
-    method public static void addDataResultToIntent(androidx.core.app.RemoteInput!, android.content.Intent!, java.util.Map<java.lang.String!,android.net.Uri!>!);
-    method public static void addResultsToIntent(androidx.core.app.RemoteInput![]!, android.content.Intent!, android.os.Bundle!);
-    method public boolean getAllowFreeFormInput();
-    method public java.util.Set<java.lang.String!>! getAllowedDataTypes();
-    method public CharSequence![]! getChoices();
-    method public static java.util.Map<java.lang.String!,android.net.Uri!>! getDataResultsFromIntent(android.content.Intent!, String!);
-    method @androidx.core.app.RemoteInput.EditChoicesBeforeSending public int getEditChoicesBeforeSending();
-    method public android.os.Bundle! getExtras();
-    method public CharSequence! getLabel();
-    method public String! getResultKey();
-    method public static android.os.Bundle! getResultsFromIntent(android.content.Intent!);
-    method @androidx.core.app.RemoteInput.Source public static int getResultsSource(android.content.Intent);
-    method public boolean isDataOnly();
-    method public static void setResultsSource(android.content.Intent, @androidx.core.app.RemoteInput.Source int);
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_AUTO = 0; // 0x0
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_DISABLED = 1; // 0x1
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_ENABLED = 2; // 0x2
-    field public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
-    field public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results";
-    field public static final int SOURCE_CHOICE = 1; // 0x1
-    field public static final int SOURCE_FREE_FORM_INPUT = 0; // 0x0
-  }
-
-  public static final class RemoteInput.Builder {
-    ctor public RemoteInput.Builder(String);
-    method public androidx.core.app.RemoteInput.Builder addExtras(android.os.Bundle);
-    method public androidx.core.app.RemoteInput build();
-    method public android.os.Bundle getExtras();
-    method public androidx.core.app.RemoteInput.Builder setAllowDataType(String, boolean);
-    method public androidx.core.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
-    method public androidx.core.app.RemoteInput.Builder setChoices(CharSequence![]?);
-    method public androidx.core.app.RemoteInput.Builder setEditChoicesBeforeSending(@androidx.core.app.RemoteInput.EditChoicesBeforeSending int);
-    method public androidx.core.app.RemoteInput.Builder setLabel(CharSequence?);
-  }
-
-  @IntDef({androidx.core.app.RemoteInput.EDIT_CHOICES_BEFORE_SENDING_AUTO, androidx.core.app.RemoteInput.EDIT_CHOICES_BEFORE_SENDING_DISABLED, androidx.core.app.RemoteInput.EDIT_CHOICES_BEFORE_SENDING_ENABLED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RemoteInput.EditChoicesBeforeSending {
-  }
-
-  @IntDef({androidx.core.app.RemoteInput.SOURCE_FREE_FORM_INPUT, androidx.core.app.RemoteInput.SOURCE_CHOICE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RemoteInput.Source {
-  }
-
-  public final class ServiceCompat {
-    method public static void stopForeground(android.app.Service, @androidx.core.app.ServiceCompat.StopForegroundFlags int);
-    field public static final int START_STICKY = 1; // 0x1
-    field public static final int STOP_FOREGROUND_DETACH = 2; // 0x2
-    field public static final int STOP_FOREGROUND_REMOVE = 1; // 0x1
-  }
-
-  @IntDef(flag=true, value={androidx.core.app.ServiceCompat.STOP_FOREGROUND_REMOVE, androidx.core.app.ServiceCompat.STOP_FOREGROUND_DETACH}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ServiceCompat.StopForegroundFlags {
-  }
-
-  public final class ShareCompat {
-    method public static void configureMenuItem(android.view.MenuItem, androidx.core.app.ShareCompat.IntentBuilder);
-    method public static void configureMenuItem(android.view.Menu, @IdRes int, androidx.core.app.ShareCompat.IntentBuilder);
-    method public static android.content.ComponentName? getCallingActivity(android.app.Activity);
-    method public static String? getCallingPackage(android.app.Activity);
-    field public static final String EXTRA_CALLING_ACTIVITY = "androidx.core.app.EXTRA_CALLING_ACTIVITY";
-    field public static final String EXTRA_CALLING_ACTIVITY_INTEROP = "android.support.v4.app.EXTRA_CALLING_ACTIVITY";
-    field public static final String EXTRA_CALLING_PACKAGE = "androidx.core.app.EXTRA_CALLING_PACKAGE";
-    field public static final String EXTRA_CALLING_PACKAGE_INTEROP = "android.support.v4.app.EXTRA_CALLING_PACKAGE";
-  }
-
-  public static class ShareCompat.IntentBuilder {
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String![]);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String![]);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String);
-    method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String![]);
-    method public androidx.core.app.ShareCompat.IntentBuilder addStream(android.net.Uri);
-    method public android.content.Intent createChooserIntent();
-    method public static androidx.core.app.ShareCompat.IntentBuilder from(android.app.Activity);
-    method public android.content.Intent getIntent();
-    method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(CharSequence?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(@StringRes int);
-    method public androidx.core.app.ShareCompat.IntentBuilder setEmailBcc(String![]?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setEmailCc(String![]?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setEmailTo(String![]?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setHtmlText(String?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setStream(android.net.Uri?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setSubject(String?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setText(CharSequence?);
-    method public androidx.core.app.ShareCompat.IntentBuilder setType(String?);
-    method public void startChooser();
-  }
-
-  public static class ShareCompat.IntentReader {
-    method public static androidx.core.app.ShareCompat.IntentReader from(android.app.Activity);
-    method public android.content.ComponentName? getCallingActivity();
-    method public android.graphics.drawable.Drawable? getCallingActivityIcon();
-    method public android.graphics.drawable.Drawable? getCallingApplicationIcon();
-    method public CharSequence? getCallingApplicationLabel();
-    method public String? getCallingPackage();
-    method public String![]? getEmailBcc();
-    method public String![]? getEmailCc();
-    method public String![]? getEmailTo();
-    method public String? getHtmlText();
-    method public android.net.Uri? getStream();
-    method public android.net.Uri? getStream(int);
-    method public int getStreamCount();
-    method public String? getSubject();
-    method public CharSequence? getText();
-    method public String? getType();
-    method public boolean isMultipleShare();
-    method public boolean isShareIntent();
-    method public boolean isSingleShare();
-  }
-
-  public abstract class SharedElementCallback {
-    ctor public SharedElementCallback();
-    method public android.os.Parcelable! onCaptureSharedElementSnapshot(android.view.View!, android.graphics.Matrix!, android.graphics.RectF!);
-    method public android.view.View! onCreateSnapshotView(android.content.Context!, android.os.Parcelable!);
-    method public void onMapSharedElements(java.util.List<java.lang.String!>!, java.util.Map<java.lang.String!,android.view.View!>!);
-    method public void onRejectSharedElements(java.util.List<android.view.View!>!);
-    method public void onSharedElementEnd(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
-    method public void onSharedElementStart(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
-    method public void onSharedElementsArrived(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, androidx.core.app.SharedElementCallback.OnSharedElementsReadyListener!);
-  }
-
-  public static interface SharedElementCallback.OnSharedElementsReadyListener {
-    method public void onSharedElementsReady();
-  }
-
-  public final class TaskStackBuilder implements java.lang.Iterable<android.content.Intent> {
-    method public androidx.core.app.TaskStackBuilder addNextIntent(android.content.Intent);
-    method public androidx.core.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
-    method public androidx.core.app.TaskStackBuilder addParentStack(android.app.Activity);
-    method public androidx.core.app.TaskStackBuilder addParentStack(Class<?>);
-    method public androidx.core.app.TaskStackBuilder! addParentStack(android.content.ComponentName!);
-    method public static androidx.core.app.TaskStackBuilder create(android.content.Context);
-    method public android.content.Intent? editIntentAt(int);
-    method @Deprecated public static androidx.core.app.TaskStackBuilder! from(android.content.Context!);
-    method @Deprecated public android.content.Intent! getIntent(int);
-    method public int getIntentCount();
-    method public android.content.Intent![] getIntents();
-    method public android.app.PendingIntent? getPendingIntent(int, int);
-    method public android.app.PendingIntent? getPendingIntent(int, int, android.os.Bundle?);
-    method @Deprecated public java.util.Iterator<android.content.Intent!>! iterator();
-    method public void startActivities();
-    method public void startActivities(android.os.Bundle?);
-  }
-
-  public static interface TaskStackBuilder.SupportParentable {
-    method public android.content.Intent? getSupportParentActivityIntent();
-  }
-
-}
-
-package androidx.core.content {
-
-  public final class ContentProviderCompat {
-    method public static android.content.Context requireContext(android.content.ContentProvider);
-  }
-
-  public final class ContentResolverCompat {
-    method public static android.database.Cursor! query(android.content.ContentResolver!, android.net.Uri!, String![]!, String!, String![]!, String!, androidx.core.os.CancellationSignal!);
-  }
-
-  public class ContextCompat {
-    ctor protected ContextCompat();
-    method public static int checkSelfPermission(android.content.Context, String);
-    method public static android.content.Context? createDeviceProtectedStorageContext(android.content.Context);
-    method public static java.io.File! getCodeCacheDir(android.content.Context);
-    method @ColorInt public static int getColor(android.content.Context, @ColorRes int);
-    method public static android.content.res.ColorStateList? getColorStateList(android.content.Context, @ColorRes int);
-    method public static java.io.File? getDataDir(android.content.Context);
-    method public static android.graphics.drawable.Drawable? getDrawable(android.content.Context, @DrawableRes int);
-    method public static java.io.File![] getExternalCacheDirs(android.content.Context);
-    method public static java.io.File![] getExternalFilesDirs(android.content.Context, String?);
-    method public static java.util.concurrent.Executor! getMainExecutor(android.content.Context!);
-    method public static java.io.File? getNoBackupFilesDir(android.content.Context);
-    method public static java.io.File![] getObbDirs(android.content.Context);
-    method public static <T> T? getSystemService(android.content.Context, Class<T!>);
-    method public static String? getSystemServiceName(android.content.Context, Class<?>);
-    method public static boolean isDeviceProtectedStorage(android.content.Context);
-    method public static boolean startActivities(android.content.Context, android.content.Intent![]);
-    method public static boolean startActivities(android.content.Context, android.content.Intent![], android.os.Bundle?);
-    method public static void startActivity(android.content.Context, android.content.Intent, android.os.Bundle?);
-    method public static void startForegroundService(android.content.Context, android.content.Intent);
-  }
-
-  public class FileProvider extends android.content.ContentProvider {
-    ctor public FileProvider();
-    method public int delete(android.net.Uri, String?, String![]?);
-    method public String! getType(android.net.Uri);
-    method public static android.net.Uri! getUriForFile(android.content.Context, String, java.io.File);
-    method public android.net.Uri! insert(android.net.Uri, android.content.ContentValues!);
-    method public boolean onCreate();
-    method public android.database.Cursor! query(android.net.Uri, String![]?, String?, String![]?, String?);
-    method public int update(android.net.Uri, android.content.ContentValues!, String?, String![]?);
-  }
-
-  public final class IntentCompat {
-    method public static android.content.Intent makeMainSelectorActivity(String, String);
-    field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
-    field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
-    field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
-  }
-
-  public final class MimeTypeFilter {
-    method public static boolean matches(String?, String);
-    method public static String? matches(String?, String![]);
-    method public static String? matches(String![]?, String);
-    method public static String![] matchesMany(String![]?, String);
-  }
-
-  public final class PermissionChecker {
-    method @androidx.core.content.PermissionChecker.PermissionResult public static int checkCallingOrSelfPermission(android.content.Context, String);
-    method @androidx.core.content.PermissionChecker.PermissionResult public static int checkCallingPermission(android.content.Context, String, String?);
-    method @androidx.core.content.PermissionChecker.PermissionResult public static int checkPermission(android.content.Context, String, int, int, String?);
-    method @androidx.core.content.PermissionChecker.PermissionResult public static int checkSelfPermission(android.content.Context, String);
-    field public static final int PERMISSION_DENIED = -1; // 0xffffffff
-    field public static final int PERMISSION_DENIED_APP_OP = -2; // 0xfffffffe
-    field public static final int PERMISSION_GRANTED = 0; // 0x0
-  }
-
-  @IntDef({androidx.core.content.PermissionChecker.PERMISSION_GRANTED, androidx.core.content.PermissionChecker.PERMISSION_DENIED, androidx.core.content.PermissionChecker.PERMISSION_DENIED_APP_OP}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PermissionChecker.PermissionResult {
-  }
-
-  @Deprecated public final class SharedPreferencesCompat {
-  }
-
-  @Deprecated public static final class SharedPreferencesCompat.EditorCompat {
-    method @Deprecated public void apply(android.content.SharedPreferences.Editor);
-    method @Deprecated public static androidx.core.content.SharedPreferencesCompat.EditorCompat! getInstance();
-  }
-
-}
-
-package androidx.core.content.pm {
-
-  @Deprecated public final class ActivityInfoCompat {
-    field @Deprecated public static final int CONFIG_UI_MODE = 512; // 0x200
-  }
-
-  public final class PackageInfoCompat {
-    method public static long getLongVersionCode(android.content.pm.PackageInfo);
-  }
-
-  public final class PermissionInfoCompat {
-    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();
-    method public CharSequence? getDisabledMessage();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.core.graphics.drawable.IconCompat! getIcon();
-    method public String getId();
-    method public android.content.Intent getIntent();
-    method public android.content.Intent![] getIntents();
-    method public CharSequence? getLongLabel();
-    method public int getRank();
-    method public CharSequence getShortLabel();
-    method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
-  }
-
-  public static class ShortcutInfoCompat.Builder {
-    ctor public ShortcutInfoCompat.Builder(android.content.Context, String);
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public ShortcutInfoCompat.Builder(androidx.core.content.pm.ShortcutInfoCompat);
-    ctor @RequiresApi(25) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public ShortcutInfoCompat.Builder(android.content.Context, android.content.pm.ShortcutInfo);
-    method public androidx.core.content.pm.ShortcutInfoCompat build();
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setActivity(android.content.ComponentName);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLabel(CharSequence);
-    method @Deprecated public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived();
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived(boolean);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPerson(androidx.core.app.Person);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPersons(androidx.core.app.Person![]);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setRank(int);
-    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setShortLabel(CharSequence);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class ShortcutInfoCompatSaver<T> {
-    ctor public ShortcutInfoCompatSaver();
-    method @AnyThread public abstract T! addShortcuts(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>!);
-    method @WorkerThread public java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>! getShortcuts() throws java.lang.Exception;
-    method @AnyThread public abstract T! removeAllShortcuts();
-    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);
-    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
-    method public static int getMaxShortcutCountPerActivity(android.content.Context);
-    method public static boolean isRequestPinShortcutSupported(android.content.Context);
-    method public static void removeAllDynamicShortcuts(android.content.Context);
-    method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
-    method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
-    method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
-    field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
-  }
-
-}
-
-package androidx.core.content.res {
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class ColorStateListInflaterCompat {
-    method public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public static android.content.res.ColorStateList createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public static android.content.res.ColorStateList? inflate(android.content.res.Resources, @XmlRes int, android.content.res.Resources.Theme?);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class ComplexColorCompat {
-    method @ColorInt public int getColor();
-    method public android.graphics.Shader? getShader();
-    method public static androidx.core.content.res.ComplexColorCompat? inflate(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?);
-    method public boolean isGradient();
-    method public boolean isStateful();
-    method public boolean onStateChanged(int[]!);
-    method public void setColor(@ColorInt int);
-    method public boolean willDraw();
-  }
-
-  public final class ConfigurationHelper {
-    method public static int getDensityDpi(android.content.res.Resources);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class FontResourcesParserCompat {
-    method public static androidx.core.content.res.FontResourcesParserCompat.FamilyResourceEntry? parse(org.xmlpull.v1.XmlPullParser!, android.content.res.Resources!) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public static java.util.List<java.util.List<byte[]!>!>! readCerts(android.content.res.Resources!, @ArrayRes int);
-    field public static final int FETCH_STRATEGY_ASYNC = 1; // 0x1
-    field public static final int FETCH_STRATEGY_BLOCKING = 0; // 0x0
-    field public static final int INFINITE_TIMEOUT_VALUE = -1; // 0xffffffff
-  }
-
-  public static interface FontResourcesParserCompat.FamilyResourceEntry {
-  }
-
-  @IntDef({androidx.core.content.res.FontResourcesParserCompat.FETCH_STRATEGY_BLOCKING, androidx.core.content.res.FontResourcesParserCompat.FETCH_STRATEGY_ASYNC}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface FontResourcesParserCompat.FetchStrategy {
-  }
-
-  public static final class FontResourcesParserCompat.FontFamilyFilesResourceEntry implements androidx.core.content.res.FontResourcesParserCompat.FamilyResourceEntry {
-    ctor public FontResourcesParserCompat.FontFamilyFilesResourceEntry(androidx.core.content.res.FontResourcesParserCompat.FontFileResourceEntry![]);
-    method public androidx.core.content.res.FontResourcesParserCompat.FontFileResourceEntry![] getEntries();
-  }
-
-  public static final class FontResourcesParserCompat.FontFileResourceEntry {
-    ctor public FontResourcesParserCompat.FontFileResourceEntry(String, int, boolean, String?, int, int);
-    method public String getFileName();
-    method public int getResourceId();
-    method public int getTtcIndex();
-    method public String? getVariationSettings();
-    method public int getWeight();
-    method public boolean isItalic();
-  }
-
-  public static final class FontResourcesParserCompat.ProviderResourceEntry implements androidx.core.content.res.FontResourcesParserCompat.FamilyResourceEntry {
-    ctor public FontResourcesParserCompat.ProviderResourceEntry(androidx.core.provider.FontRequest, @androidx.core.content.res.FontResourcesParserCompat.FetchStrategy int, int);
-    method @androidx.core.content.res.FontResourcesParserCompat.FetchStrategy public int getFetchStrategy();
-    method public androidx.core.provider.FontRequest getRequest();
-    method public int getTimeout();
-  }
-
-  public final class ResourcesCompat {
-    method @ColorInt public static int getColor(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static android.content.res.ColorStateList? getColorStateList(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static android.graphics.drawable.Drawable? getDrawable(android.content.res.Resources, @DrawableRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static android.graphics.drawable.Drawable? getDrawableForDensity(android.content.res.Resources, @DrawableRes int, int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
-    method public static float getFloat(android.content.res.Resources, @DimenRes int);
-    method public static android.graphics.Typeface? getFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
-    method public static void getFont(android.content.Context, @FontRes int, androidx.core.content.res.ResourcesCompat.FontCallback, android.os.Handler?) throws android.content.res.Resources.NotFoundException;
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface! getFont(android.content.Context, @FontRes int, android.util.TypedValue!, int, androidx.core.content.res.ResourcesCompat.FontCallback?) throws android.content.res.Resources.NotFoundException;
-    field @AnyRes public static final int ID_NULL = 0; // 0x0
-  }
-
-  public abstract static class ResourcesCompat.FontCallback {
-    ctor public ResourcesCompat.FontCallback();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final void callbackFailAsync(@androidx.core.provider.FontsContractCompat.FontRequestCallback.FontRequestFailReason int, android.os.Handler?);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final void callbackSuccessAsync(android.graphics.Typeface!, android.os.Handler?);
-    method public abstract void onFontRetrievalFailed(@androidx.core.provider.FontsContractCompat.FontRequestCallback.FontRequestFailReason int);
-    method public abstract void onFontRetrieved(android.graphics.Typeface);
-  }
-
-  public static final class ResourcesCompat.ThemeCompat {
-    method public static void rebase(android.content.res.Resources.Theme);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TypedArrayUtils {
-    method public static int getAttr(android.content.Context, int, int);
-    method public static boolean getBoolean(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int, boolean);
-    method public static android.graphics.drawable.Drawable? getDrawable(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int);
-    method public static int getInt(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int, int);
-    method public static boolean getNamedBoolean(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int, boolean);
-    method @ColorInt public static int getNamedColor(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int, @ColorInt int);
-    method public static android.content.res.ColorStateList? getNamedColorStateList(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme?, String, @StyleableRes int);
-    method public static androidx.core.content.res.ComplexColorCompat! getNamedComplexColor(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme?, String, @StyleableRes int, @ColorInt int);
-    method public static float getNamedFloat(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int, float);
-    method public static int getNamedInt(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int, int);
-    method @AnyRes public static int getNamedResourceId(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int, @AnyRes int);
-    method public static String? getNamedString(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int);
-    method @AnyRes public static int getResourceId(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int, @AnyRes int);
-    method public static String? getString(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int);
-    method public static CharSequence? getText(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int);
-    method public static CharSequence![]? getTextArray(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int);
-    method public static boolean hasAttribute(org.xmlpull.v1.XmlPullParser, String);
-    method public static android.content.res.TypedArray obtainAttributes(android.content.res.Resources, android.content.res.Resources.Theme?, android.util.AttributeSet, int[]);
-    method public static android.util.TypedValue? peekNamedValue(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, int);
-  }
-
-}
-
-package androidx.core.database {
-
-  public final class CursorWindowCompat {
-    method public static android.database.CursorWindow create(String?, long);
-  }
-
-  @Deprecated public final class DatabaseUtilsCompat {
-    method @Deprecated public static String![]! appendSelectionArgs(String![]!, String![]!);
-    method @Deprecated public static String! concatenateWhere(String!, String!);
-  }
-
-}
-
-package androidx.core.database.sqlite {
-
-  public final class SQLiteCursorCompat {
-    method public static void setFillWindowForwardOnly(android.database.sqlite.SQLiteCursor, boolean);
-  }
-
-}
-
-package androidx.core.graphics {
-
-  public final class BitmapCompat {
-    method public static int getAllocationByteCount(android.graphics.Bitmap);
-    method public static boolean hasMipMap(android.graphics.Bitmap);
-    method public static void setHasMipMap(android.graphics.Bitmap, boolean);
-  }
-
-  public class BlendModeColorFilterCompat {
-    method public static android.graphics.ColorFilter? createBlendModeColorFilterCompat(int, androidx.core.graphics.BlendModeCompat);
-  }
-
-  public enum BlendModeCompat {
-    enum_constant public static final androidx.core.graphics.BlendModeCompat CLEAR;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_BURN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_DODGE;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DARKEN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat DIFFERENCE;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_ATOP;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_IN;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OUT;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OVER;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat EXCLUSION;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HARD_LIGHT;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HUE;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat LIGHTEN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat LUMINOSITY;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat MODULATE;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat MULTIPLY;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat OVERLAY;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat PLUS;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SATURATION;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SCREEN;
-    enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SOFT_LIGHT;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_ATOP;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_IN;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OUT;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OVER;
-    enum_constant public static final androidx.core.graphics.BlendModeCompat XOR;
-  }
-
-  public final class ColorUtils {
-    method @ColorInt public static int HSLToColor(float[]);
-    method @ColorInt public static int LABToColor(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double);
-    method public static void LABToXYZ(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double, double[]);
-    method public static void RGBToHSL(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, float[]);
-    method public static void RGBToLAB(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
-    method public static void RGBToXYZ(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
-    method @ColorInt public static int XYZToColor(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double);
-    method public static void XYZToLAB(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double, double[]);
-    method @ColorInt public static int blendARGB(@ColorInt int, @ColorInt int, @FloatRange(from=0.0, to=1.0) float);
-    method public static void blendHSL(float[], float[], @FloatRange(from=0.0, to=1.0) float, float[]);
-    method public static void blendLAB(double[], double[], @FloatRange(from=0.0, to=1.0) double, double[]);
-    method public static double calculateContrast(@ColorInt int, @ColorInt int);
-    method @FloatRange(from=0.0, to=1.0) public static double calculateLuminance(@ColorInt int);
-    method public static int calculateMinimumAlpha(@ColorInt int, @ColorInt int, float);
-    method public static void colorToHSL(@ColorInt int, float[]);
-    method public static void colorToLAB(@ColorInt int, double[]);
-    method public static void colorToXYZ(@ColorInt int, double[]);
-    method public static int compositeColors(@ColorInt int, @ColorInt int);
-    method @RequiresApi(26) public static android.graphics.Color compositeColors(android.graphics.Color, android.graphics.Color);
-    method public static double distanceEuclidean(double[], double[]);
-    method @ColorInt public static int setAlphaComponent(@ColorInt int, @IntRange(from=0, to=255) int);
-  }
-
-  public final class Insets {
-    method public static androidx.core.graphics.Insets of(int, int, int, int);
-    method public static androidx.core.graphics.Insets of(android.graphics.Rect);
-    method @RequiresApi(api=29) public static androidx.core.graphics.Insets toCompatInsets(android.graphics.Insets);
-    method @RequiresApi(api=29) public android.graphics.Insets toPlatformInsets();
-    method @Deprecated @RequiresApi(api=29) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.Insets wrap(android.graphics.Insets);
-    field public static final androidx.core.graphics.Insets NONE;
-    field public final int bottom;
-    field public final int left;
-    field public final int right;
-    field public final int top;
-  }
-
-  public final class PaintCompat {
-    method public static boolean hasGlyph(android.graphics.Paint, String);
-    method public static boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat?);
-  }
-
-  public final class PathSegment {
-    ctor public PathSegment(android.graphics.PointF, float, android.graphics.PointF, float);
-    method public android.graphics.PointF getEnd();
-    method public float getEndFraction();
-    method public android.graphics.PointF getStart();
-    method public float getStartFraction();
-  }
-
-  public final class PathUtils {
-    method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path);
-    method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path, @FloatRange(from=0) float);
-  }
-
-  public class TypefaceCompat {
-    method public static android.graphics.Typeface create(android.content.Context, android.graphics.Typeface?, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface? createFromFontInfo(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![], int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface? createFromResourcesFamilyXml(android.content.Context, androidx.core.content.res.FontResourcesParserCompat.FamilyResourceEntry, android.content.res.Resources, int, int, androidx.core.content.res.ResourcesCompat.FontCallback?, android.os.Handler?, boolean);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface? createFromResourcesFontFile(android.content.Context, android.content.res.Resources, int, String!, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface? findFromCache(android.content.res.Resources, int, int);
-  }
-
-  @RequiresApi(26) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TypefaceCompatApi26Impl {
-    ctor public TypefaceCompatApi26Impl();
-    method protected android.graphics.Typeface? createFromFamiliesWithDefault(Object!);
-    method public android.graphics.Typeface? createFromFontFamilyFilesResourceEntry(android.content.Context!, androidx.core.content.res.FontResourcesParserCompat.FontFamilyFilesResourceEntry!, android.content.res.Resources!, int);
-    method public android.graphics.Typeface? createFromFontInfo(android.content.Context!, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![], int);
-    method public android.graphics.Typeface? createFromResourcesFontFile(android.content.Context!, android.content.res.Resources!, int, String!, int);
-    method protected java.lang.reflect.Method! obtainAbortCreationMethod(Class<?>!) throws java.lang.NoSuchMethodException;
-    method protected java.lang.reflect.Method! obtainAddFontFromAssetManagerMethod(Class<?>!) throws java.lang.NoSuchMethodException;
-    method protected java.lang.reflect.Method! obtainAddFontFromBufferMethod(Class<?>!) throws java.lang.NoSuchMethodException;
-    method protected java.lang.reflect.Method! obtainCreateFromFamiliesWithDefaultMethod(Class<?>!) throws java.lang.NoSuchMethodException;
-    method protected Class<?>! obtainFontFamily() throws java.lang.ClassNotFoundException;
-    method protected java.lang.reflect.Constructor<?>! obtainFontFamilyCtor(Class<?>!) throws java.lang.NoSuchMethodException;
-    method protected java.lang.reflect.Method! obtainFreezeMethod(Class<?>!) throws java.lang.NoSuchMethodException;
-    field protected final java.lang.reflect.Method! mAbortCreation;
-    field protected final java.lang.reflect.Method! mAddFontFromAssetManager;
-    field protected final java.lang.reflect.Method! mAddFontFromBuffer;
-    field protected final java.lang.reflect.Method! mCreateFromFamiliesWithDefault;
-    field protected final Class<?>! mFontFamily;
-    field protected final java.lang.reflect.Constructor<?>! mFontFamilyCtor;
-    field protected final java.lang.reflect.Method! mFreeze;
-  }
-
-  @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TypefaceCompatApi28Impl extends androidx.core.graphics.TypefaceCompatApi26Impl {
-    ctor public TypefaceCompatApi28Impl();
-  }
-
-  @RequiresApi(29) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class TypefaceCompatApi29Impl {
-    ctor public TypefaceCompatApi29Impl();
-    method public android.graphics.Typeface? createFromFontFamilyFilesResourceEntry(android.content.Context!, androidx.core.content.res.FontResourcesParserCompat.FontFamilyFilesResourceEntry!, android.content.res.Resources!, int);
-    method public android.graphics.Typeface? createFromFontInfo(android.content.Context!, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![], int);
-    method protected android.graphics.Typeface! createFromInputStream(android.content.Context!, java.io.InputStream!);
-    method public android.graphics.Typeface? createFromResourcesFontFile(android.content.Context!, android.content.res.Resources!, int, String!, int);
-    method protected androidx.core.provider.FontsContractCompat.FontInfo! findBestInfo(androidx.core.provider.FontsContractCompat.FontInfo![]!, int);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TypefaceCompatUtil {
-    method public static void closeQuietly(java.io.Closeable!);
-    method @RequiresApi(19) public static java.nio.ByteBuffer? copyToDirectBuffer(android.content.Context!, android.content.res.Resources!, int);
-    method public static boolean copyToFile(java.io.File!, java.io.InputStream!);
-    method public static boolean copyToFile(java.io.File!, android.content.res.Resources!, int);
-    method public static java.io.File? getTempFile(android.content.Context!);
-    method @RequiresApi(19) public static java.nio.ByteBuffer? mmap(android.content.Context!, android.os.CancellationSignal!, android.net.Uri!);
-  }
-
-}
-
-package androidx.core.graphics.drawable {
-
-  public final class DrawableCompat {
-    method public static void applyTheme(android.graphics.drawable.Drawable, android.content.res.Resources.Theme);
-    method public static boolean canApplyTheme(android.graphics.drawable.Drawable);
-    method public static void clearColorFilter(android.graphics.drawable.Drawable);
-    method public static int getAlpha(android.graphics.drawable.Drawable);
-    method public static android.graphics.ColorFilter! getColorFilter(android.graphics.drawable.Drawable);
-    method public static int getLayoutDirection(android.graphics.drawable.Drawable);
-    method public static void inflate(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public static boolean isAutoMirrored(android.graphics.drawable.Drawable);
-    method @Deprecated public static void jumpToCurrentState(android.graphics.drawable.Drawable);
-    method public static void setAutoMirrored(android.graphics.drawable.Drawable, boolean);
-    method public static void setHotspot(android.graphics.drawable.Drawable, float, float);
-    method public static void setHotspotBounds(android.graphics.drawable.Drawable, int, int, int, int);
-    method public static boolean setLayoutDirection(android.graphics.drawable.Drawable, int);
-    method public static void setTint(android.graphics.drawable.Drawable, @ColorInt int);
-    method public static void setTintList(android.graphics.drawable.Drawable, android.content.res.ColorStateList?);
-    method public static void setTintMode(android.graphics.drawable.Drawable, android.graphics.PorterDuff.Mode);
-    method public static <T extends android.graphics.drawable.Drawable> T! unwrap(android.graphics.drawable.Drawable);
-    method public static android.graphics.drawable.Drawable! wrap(android.graphics.drawable.Drawable);
-  }
-
-  public class IconCompat extends androidx.versionedparcelable.CustomVersionedParcelable {
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void addToShortcutIntent(android.content.Intent, android.graphics.drawable.Drawable?, android.content.Context);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void checkResource(android.content.Context);
-    method public static androidx.core.graphics.drawable.IconCompat? createFromBundle(android.os.Bundle);
-    method @RequiresApi(23) public static androidx.core.graphics.drawable.IconCompat? createFromIcon(android.content.Context, android.graphics.drawable.Icon);
-    method @RequiresApi(23) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.drawable.IconCompat? createFromIcon(android.graphics.drawable.Icon);
-    method @RequiresApi(23) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.drawable.IconCompat? createFromIconOrNullIfZeroResId(android.graphics.drawable.Icon);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithAdaptiveBitmap(android.graphics.Bitmap!);
-    method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(String);
-    method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(android.net.Uri);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithBitmap(android.graphics.Bitmap!);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(String!);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(android.net.Uri!);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithData(byte[]!, int, int);
-    method public static androidx.core.graphics.drawable.IconCompat! createWithResource(android.content.Context!, @DrawableRes int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.drawable.IconCompat! createWithResource(android.content.res.Resources!, String!, @DrawableRes int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
-    method @IdRes public int getResId();
-    method public String getResPackage();
-    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);
-    method public androidx.core.graphics.drawable.IconCompat! setTintList(android.content.res.ColorStateList!);
-    method public androidx.core.graphics.drawable.IconCompat! setTintMode(android.graphics.PorterDuff.Mode!);
-    method public android.os.Bundle! toBundle();
-    method @Deprecated @RequiresApi(23) public android.graphics.drawable.Icon toIcon();
-    method @RequiresApi(23) public android.graphics.drawable.Icon toIcon(android.content.Context?);
-    field public static final int TYPE_ADAPTIVE_BITMAP = 5; // 0x5
-    field public static final int TYPE_BITMAP = 1; // 0x1
-    field public static final int TYPE_DATA = 3; // 0x3
-    field public static final int TYPE_RESOURCE = 2; // 0x2
-    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
-    field public static final int TYPE_URI = 4; // 0x4
-    field public static final int TYPE_URI_ADAPTIVE_BITMAP = 6; // 0x6
-    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();
-    method public float getCornerRadius();
-    method public int getGravity();
-    method public int getOpacity();
-    method public final android.graphics.Paint getPaint();
-    method public boolean hasAntiAlias();
-    method public boolean hasMipMap();
-    method public boolean isCircular();
-    method public void setAlpha(int);
-    method public void setAntiAlias(boolean);
-    method public void setCircular(boolean);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setCornerRadius(float);
-    method public void setDither(boolean);
-    method public void setGravity(int);
-    method public void setMipMap(boolean);
-    method public void setTargetDensity(android.graphics.Canvas);
-    method public void setTargetDensity(android.util.DisplayMetrics);
-    method public void setTargetDensity(int);
-  }
-
-  public final class RoundedBitmapDrawableFactory {
-    method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, android.graphics.Bitmap?);
-    method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, String);
-    method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, java.io.InputStream);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface TintAwareDrawable {
-    method public void setTint(@ColorInt int);
-    method public void setTintList(android.content.res.ColorStateList!);
-    method public void setTintMode(android.graphics.PorterDuff.Mode!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface WrappedDrawable {
-    method public android.graphics.drawable.Drawable! getWrappedDrawable();
-    method public void setWrappedDrawable(android.graphics.drawable.Drawable!);
-  }
-
-}
-
-package androidx.core.hardware.display {
-
-  public final class DisplayManagerCompat {
-    method public android.view.Display? getDisplay(int);
-    method public android.view.Display![] getDisplays();
-    method public android.view.Display![] getDisplays(String?);
-    method public static androidx.core.hardware.display.DisplayManagerCompat getInstance(android.content.Context);
-    field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
-  }
-
-}
-
-package androidx.core.hardware.fingerprint {
-
-  @Deprecated public class FingerprintManagerCompat {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public void authenticate(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject?, int, androidx.core.os.CancellationSignal?, androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationCallback, android.os.Handler?);
-    method @Deprecated public static androidx.core.hardware.fingerprint.FingerprintManagerCompat from(android.content.Context);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean hasEnrolledFingerprints();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean isHardwareDetected();
-  }
-
-  @Deprecated public abstract static class FingerprintManagerCompat.AuthenticationCallback {
-    ctor @Deprecated public FingerprintManagerCompat.AuthenticationCallback();
-    method @Deprecated public void onAuthenticationError(int, CharSequence!);
-    method @Deprecated public void onAuthenticationFailed();
-    method @Deprecated public void onAuthenticationHelp(int, CharSequence!);
-    method @Deprecated public void onAuthenticationSucceeded(androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationResult!);
-  }
-
-  @Deprecated public static final class FingerprintManagerCompat.AuthenticationResult {
-    ctor @Deprecated public FingerprintManagerCompat.AuthenticationResult(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject!);
-    method @Deprecated public androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject! getCryptoObject();
-  }
-
-  @Deprecated public static class FingerprintManagerCompat.CryptoObject {
-    ctor @Deprecated public FingerprintManagerCompat.CryptoObject(java.security.Signature);
-    ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Cipher);
-    ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Mac);
-    method @Deprecated public javax.crypto.Cipher? getCipher();
-    method @Deprecated public javax.crypto.Mac? getMac();
-    method @Deprecated public java.security.Signature? getSignature();
-  }
-
-}
-
-package androidx.core.internal.view {
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface SupportMenu extends android.view.Menu {
-    method public void setGroupDividerEnabled(boolean);
-    field public static final int CATEGORY_MASK = -65536; // 0xffff0000
-    field public static final int CATEGORY_SHIFT = 16; // 0x10
-    field public static final int FLAG_KEEP_OPEN_ON_SUBMENU_OPENED = 4; // 0x4
-    field public static final int SUPPORTED_MODIFIERS_MASK = 69647; // 0x1100f
-    field public static final int USER_MASK = 65535; // 0xffff
-    field public static final int USER_SHIFT = 0; // 0x0
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface SupportMenuItem extends android.view.MenuItem {
-    method public int getAlphabeticModifiers();
-    method public CharSequence! getContentDescription();
-    method public android.content.res.ColorStateList! getIconTintList();
-    method public android.graphics.PorterDuff.Mode! getIconTintMode();
-    method public int getNumericModifiers();
-    method public androidx.core.view.ActionProvider! getSupportActionProvider();
-    method public CharSequence! getTooltipText();
-    method public boolean requiresActionButton();
-    method public boolean requiresOverflow();
-    method public android.view.MenuItem! setAlphabeticShortcut(char, int);
-    method public androidx.core.internal.view.SupportMenuItem! setContentDescription(CharSequence!);
-    method public android.view.MenuItem! setIconTintList(android.content.res.ColorStateList!);
-    method public android.view.MenuItem! setIconTintMode(android.graphics.PorterDuff.Mode!);
-    method public android.view.MenuItem! setNumericShortcut(char, int);
-    method public android.view.MenuItem! setShortcut(char, char, int, int);
-    method public androidx.core.internal.view.SupportMenuItem! setSupportActionProvider(androidx.core.view.ActionProvider!);
-    method public androidx.core.internal.view.SupportMenuItem! setTooltipText(CharSequence!);
-    field public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
-    field public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
-    field public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
-    field public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
-    field public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface SupportSubMenu extends androidx.core.internal.view.SupportMenu android.view.SubMenu {
-  }
-
-}
-
-package androidx.core.location {
-
-  public final class LocationManagerCompat {
-    method public static boolean isLocationEnabled(android.location.LocationManager);
-  }
-
-}
-
-package androidx.core.math {
-
-  public class MathUtils {
-    method public static float clamp(float, float, float);
-    method public static double clamp(double, double, double);
-    method public static int clamp(int, int, int);
-    method public static long clamp(long, long, long);
-  }
-
-}
-
-package androidx.core.net {
-
-  public final class ConnectivityManagerCompat {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static android.net.NetworkInfo? getNetworkInfoFromBroadcast(android.net.ConnectivityManager, android.content.Intent);
-    method @androidx.core.net.ConnectivityManagerCompat.RestrictBackgroundStatus public static int getRestrictBackgroundStatus(android.net.ConnectivityManager);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static boolean isActiveNetworkMetered(android.net.ConnectivityManager);
-    field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
-    field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
-    field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
-  }
-
-  @IntDef({androidx.core.net.ConnectivityManagerCompat.RESTRICT_BACKGROUND_STATUS_DISABLED, androidx.core.net.ConnectivityManagerCompat.RESTRICT_BACKGROUND_STATUS_WHITELISTED, androidx.core.net.ConnectivityManagerCompat.RESTRICT_BACKGROUND_STATUS_ENABLED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ConnectivityManagerCompat.RestrictBackgroundStatus {
-  }
-
-  public final class TrafficStatsCompat {
-    method @Deprecated public static void clearThreadStatsTag();
-    method @Deprecated public static int getThreadStatsTag();
-    method @Deprecated public static void incrementOperationCount(int);
-    method @Deprecated public static void incrementOperationCount(int, int);
-    method @Deprecated public static void setThreadStatsTag(int);
-    method public static void tagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method @Deprecated public static void tagSocket(java.net.Socket!) throws java.net.SocketException;
-    method public static void untagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method @Deprecated public static void untagSocket(java.net.Socket!) throws java.net.SocketException;
-  }
-
-  public final class UriCompat {
-    method public static String toSafeString(android.net.Uri);
-  }
-
-}
-
-package androidx.core.os {
-
-  public class BuildCompat {
-    method @Deprecated public static boolean isAtLeastN();
-    method @Deprecated public static boolean isAtLeastNMR1();
-    method @Deprecated public static boolean isAtLeastO();
-    method @Deprecated public static boolean isAtLeastOMR1();
-    method @Deprecated public static boolean isAtLeastP();
-    method @Deprecated public static boolean isAtLeastQ();
-    method public static boolean isAtLeastR();
-  }
-
-  public final class CancellationSignal {
-    ctor public CancellationSignal();
-    method public void cancel();
-    method public Object? getCancellationSignalObject();
-    method public boolean isCanceled();
-    method public void setOnCancelListener(androidx.core.os.CancellationSignal.OnCancelListener?);
-    method public void throwIfCanceled();
-  }
-
-  public static interface CancellationSignal.OnCancelListener {
-    method public void onCancel();
-  }
-
-  public final class ConfigurationCompat {
-    method public static androidx.core.os.LocaleListCompat getLocales(android.content.res.Configuration);
-  }
-
-  public final class EnvironmentCompat {
-    method public static String getStorageState(java.io.File);
-    field public static final String MEDIA_UNKNOWN = "unknown";
-  }
-
-  public final class HandlerCompat {
-    method public static android.os.Handler createAsync(android.os.Looper);
-    method public static android.os.Handler createAsync(android.os.Looper, android.os.Handler.Callback);
-    method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
-  }
-
-  public final class LocaleListCompat {
-    method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
-    method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
-    method public java.util.Locale! get(int);
-    method @Size(min=1) public static androidx.core.os.LocaleListCompat getAdjustedDefault();
-    method @Size(min=1) public static androidx.core.os.LocaleListCompat getDefault();
-    method public static androidx.core.os.LocaleListCompat getEmptyLocaleList();
-    method public java.util.Locale? getFirstMatch(String![]);
-    method @IntRange(from=0xffffffff) public int indexOf(java.util.Locale!);
-    method public boolean isEmpty();
-    method @IntRange(from=0) public int size();
-    method public String toLanguageTags();
-    method public Object? unwrap();
-    method @Deprecated @RequiresApi(24) public static androidx.core.os.LocaleListCompat! wrap(Object!);
-    method @RequiresApi(24) public static androidx.core.os.LocaleListCompat wrap(android.os.LocaleList);
-  }
-
-  public final class MessageCompat {
-    method public static boolean isAsynchronous(android.os.Message);
-    method public static void setAsynchronous(android.os.Message, boolean);
-  }
-
-  public class OperationCanceledException extends java.lang.RuntimeException {
-    ctor public OperationCanceledException();
-    ctor public OperationCanceledException(String?);
-  }
-
-  public final class ParcelCompat {
-    method public static boolean readBoolean(android.os.Parcel);
-    method public static void writeBoolean(android.os.Parcel, boolean);
-  }
-
-  @Deprecated public final class ParcelableCompat {
-    method @Deprecated public static <T> android.os.Parcelable.Creator<T!>! newCreator(androidx.core.os.ParcelableCompatCreatorCallbacks<T!>!);
-  }
-
-  @Deprecated public interface ParcelableCompatCreatorCallbacks<T> {
-    method @Deprecated public T! createFromParcel(android.os.Parcel!, ClassLoader!);
-    method @Deprecated public T![]! newArray(int);
-  }
-
-  public final class TraceCompat {
-    method public static void beginAsyncSection(String, int);
-    method public static void beginSection(String);
-    method public static void endAsyncSection(String, int);
-    method public static void endSection();
-    method public static boolean isEnabled();
-    method public static void setCounter(String, int);
-  }
-
-  public class UserManagerCompat {
-    method public static boolean isUserUnlocked(android.content.Context);
-  }
-
-}
-
-package androidx.core.provider {
-
-  public final class FontRequest {
-    ctor public FontRequest(String, String, String, java.util.List<java.util.List<byte[]!>!>);
-    ctor public FontRequest(String, String, String, @ArrayRes int);
-    method public java.util.List<java.util.List<byte[]!>!>? getCertificates();
-    method @ArrayRes public int getCertificatesArrayResId();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String! getIdentifier();
-    method public String getProviderAuthority();
-    method public String getProviderPackage();
-    method public String getQuery();
-  }
-
-  public class FontsContractCompat {
-    method public static android.graphics.Typeface? buildTypeface(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![]);
-    method public static androidx.core.provider.FontsContractCompat.FontFamilyResult fetchFonts(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface! getFontSync(android.content.Context!, androidx.core.provider.FontRequest!, androidx.core.content.res.ResourcesCompat.FontCallback?, android.os.Handler?, boolean, int, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @VisibleForTesting public static android.content.pm.ProviderInfo? getProvider(android.content.pm.PackageManager, androidx.core.provider.FontRequest, android.content.res.Resources?) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static java.util.Map<android.net.Uri!,java.nio.ByteBuffer!>! prepareFontData(android.content.Context!, androidx.core.provider.FontsContractCompat.FontInfo![]!, android.os.CancellationSignal!);
-    method public static void requestFont(android.content.Context, androidx.core.provider.FontRequest, androidx.core.provider.FontsContractCompat.FontRequestCallback, android.os.Handler);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void resetCache();
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String PARCEL_FONT_RESULTS = "font_results";
-  }
-
-  public static final class FontsContractCompat.Columns implements android.provider.BaseColumns {
-    ctor public FontsContractCompat.Columns();
-    field public static final String FILE_ID = "file_id";
-    field public static final String ITALIC = "font_italic";
-    field public static final String RESULT_CODE = "result_code";
-    field public static final int RESULT_CODE_FONT_NOT_FOUND = 1; // 0x1
-    field public static final int RESULT_CODE_FONT_UNAVAILABLE = 2; // 0x2
-    field public static final int RESULT_CODE_MALFORMED_QUERY = 3; // 0x3
-    field public static final int RESULT_CODE_OK = 0; // 0x0
-    field public static final String TTC_INDEX = "font_ttc_index";
-    field public static final String VARIATION_SETTINGS = "font_variation_settings";
-    field public static final String WEIGHT = "font_weight";
-  }
-
-  public static class FontsContractCompat.FontFamilyResult {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public FontsContractCompat.FontFamilyResult(int, androidx.core.provider.FontsContractCompat.FontInfo![]?);
-    method public androidx.core.provider.FontsContractCompat.FontInfo![]! getFonts();
-    method public int getStatusCode();
-    field public static final int STATUS_OK = 0; // 0x0
-    field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
-    field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
-  }
-
-  public static class FontsContractCompat.FontInfo {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public FontsContractCompat.FontInfo(android.net.Uri, @IntRange(from=0) int, @IntRange(from=1, to=1000) int, boolean, int);
-    method public int getResultCode();
-    method @IntRange(from=0) public int getTtcIndex();
-    method public android.net.Uri getUri();
-    method @IntRange(from=1, to=1000) public int getWeight();
-    method public boolean isItalic();
-  }
-
-  public static class FontsContractCompat.FontRequestCallback {
-    ctor public FontsContractCompat.FontRequestCallback();
-    method public void onTypefaceRequestFailed(@androidx.core.provider.FontsContractCompat.FontRequestCallback.FontRequestFailReason int);
-    method public void onTypefaceRetrieved(android.graphics.Typeface!);
-    field public static final int FAIL_REASON_FONT_LOAD_ERROR = -3; // 0xfffffffd
-    field public static final int FAIL_REASON_FONT_NOT_FOUND = 1; // 0x1
-    field public static final int FAIL_REASON_FONT_UNAVAILABLE = 2; // 0x2
-    field public static final int FAIL_REASON_MALFORMED_QUERY = 3; // 0x3
-    field public static final int FAIL_REASON_PROVIDER_NOT_FOUND = -1; // 0xffffffff
-    field public static final int FAIL_REASON_SECURITY_VIOLATION = -4; // 0xfffffffc
-    field public static final int FAIL_REASON_WRONG_CERTIFICATES = -2; // 0xfffffffe
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final int RESULT_OK = 0; // 0x0
-  }
-
-  @IntDef({androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_PROVIDER_NOT_FOUND, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_FONT_LOAD_ERROR, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_FONT_NOT_FOUND, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_FONT_UNAVAILABLE, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_MALFORMED_QUERY, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_WRONG_CERTIFICATES, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_SECURITY_VIOLATION, androidx.core.provider.FontsContractCompat.FontRequestCallback.RESULT_OK}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface FontsContractCompat.FontRequestCallback.FontRequestFailReason {
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SelfDestructiveThread {
-    ctor public SelfDestructiveThread(String!, int, int);
-    method @VisibleForTesting public int getGeneration();
-    method @VisibleForTesting public boolean isRunning();
-    method public <T> void postAndReply(java.util.concurrent.Callable<T!>!, androidx.core.provider.SelfDestructiveThread.ReplyCallback<T!>!);
-    method public <T> T! postAndWait(java.util.concurrent.Callable<T!>!, int) throws java.lang.InterruptedException;
-  }
-
-  public static interface SelfDestructiveThread.ReplyCallback<T> {
-    method public void onReply(T!);
-  }
-
-}
-
-package androidx.core.telephony.mbms {
-
-  public final class MbmsHelper {
-    method public static CharSequence? getBestNameForService(android.content.Context, android.telephony.mbms.ServiceInfo);
-  }
-
-}
-
-package androidx.core.text {
-
-  public final class BidiFormatter {
-    method public static androidx.core.text.BidiFormatter! getInstance();
-    method public static androidx.core.text.BidiFormatter! getInstance(boolean);
-    method public static androidx.core.text.BidiFormatter! getInstance(java.util.Locale!);
-    method public boolean getStereoReset();
-    method public boolean isRtl(String!);
-    method public boolean isRtl(CharSequence!);
-    method public boolean isRtlContext();
-    method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
-    method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
-    method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!);
-    method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!);
-    method public String! unicodeWrap(String!, boolean);
-    method public CharSequence! unicodeWrap(CharSequence!, boolean);
-    method public String! unicodeWrap(String!);
-    method public CharSequence! unicodeWrap(CharSequence!);
-  }
-
-  public static final class BidiFormatter.Builder {
-    ctor public BidiFormatter.Builder();
-    ctor public BidiFormatter.Builder(boolean);
-    ctor public BidiFormatter.Builder(java.util.Locale!);
-    method public androidx.core.text.BidiFormatter! build();
-    method public androidx.core.text.BidiFormatter.Builder! setTextDirectionHeuristic(androidx.core.text.TextDirectionHeuristicCompat!);
-    method public androidx.core.text.BidiFormatter.Builder! stereoReset(boolean);
-  }
-
-  public final class HtmlCompat {
-    method public static android.text.Spanned fromHtml(String, int);
-    method public static android.text.Spanned fromHtml(String, int, android.text.Html.ImageGetter?, android.text.Html.TagHandler?);
-    method public static String toHtml(android.text.Spanned, int);
-    field public static final int FROM_HTML_MODE_COMPACT = 63; // 0x3f
-    field public static final int FROM_HTML_MODE_LEGACY = 0; // 0x0
-    field public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; // 0x100
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32; // 0x20
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16; // 0x10
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2; // 0x2
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8; // 0x8
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4; // 0x4
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1; // 0x1
-    field public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0; // 0x0
-    field public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; // 0x1
-  }
-
-  public final class ICUCompat {
-    method public static String? maximizeAndGetScript(java.util.Locale!);
-  }
-
-  public class PrecomputedTextCompat implements android.text.Spannable {
-    method public char charAt(int);
-    method public static androidx.core.text.PrecomputedTextCompat! create(CharSequence, androidx.core.text.PrecomputedTextCompat.Params);
-    method @IntRange(from=0) public int getParagraphCount();
-    method @IntRange(from=0) public int getParagraphEnd(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getParagraphStart(@IntRange(from=0) int);
-    method public androidx.core.text.PrecomputedTextCompat.Params getParams();
-    method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.text.PrecomputedText? getPrecomputedText();
-    method public int getSpanEnd(Object!);
-    method public int getSpanFlags(Object!);
-    method public int getSpanStart(Object!);
-    method public <T> T![]! getSpans(int, int, Class<T!>!);
-    method @UiThread public static java.util.concurrent.Future<androidx.core.text.PrecomputedTextCompat!>! getTextFuture(CharSequence, androidx.core.text.PrecomputedTextCompat.Params, java.util.concurrent.Executor?);
-    method public int length();
-    method public int nextSpanTransition(int, int, Class!);
-    method public void removeSpan(Object!);
-    method public void setSpan(Object!, int, int, int);
-    method public CharSequence! subSequence(int, int);
-  }
-
-  public static final class PrecomputedTextCompat.Params {
-    ctor @RequiresApi(28) public PrecomputedTextCompat.Params(android.text.PrecomputedText.Params);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean equalsWithoutTextDirection(androidx.core.text.PrecomputedTextCompat.Params);
-    method @RequiresApi(23) public int getBreakStrategy();
-    method @RequiresApi(23) public int getHyphenationFrequency();
-    method @RequiresApi(18) public android.text.TextDirectionHeuristic? getTextDirection();
-    method public android.text.TextPaint getTextPaint();
-  }
-
-  public static class PrecomputedTextCompat.Params.Builder {
-    ctor public PrecomputedTextCompat.Params.Builder(android.text.TextPaint);
-    method public androidx.core.text.PrecomputedTextCompat.Params build();
-    method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setBreakStrategy(int);
-    method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setHyphenationFrequency(int);
-    method @RequiresApi(18) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setTextDirection(android.text.TextDirectionHeuristic);
-  }
-
-  public interface TextDirectionHeuristicCompat {
-    method public boolean isRtl(char[]!, int, int);
-    method public boolean isRtl(CharSequence!, int, int);
-  }
-
-  public final class TextDirectionHeuristicsCompat {
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! ANYRTL_LTR;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_LTR;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_RTL;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! LOCALE;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! LTR;
-    field public static final androidx.core.text.TextDirectionHeuristicCompat! RTL;
-  }
-
-  public final class TextUtilsCompat {
-    method public static int getLayoutDirectionFromLocale(java.util.Locale?);
-    method public static String htmlEncode(String);
-  }
-
-}
-
-package androidx.core.text.util {
-
-  public final class LinkifyCompat {
-    method public static boolean addLinks(android.text.Spannable, @androidx.core.text.util.LinkifyCompat.LinkifyMask int);
-    method public static boolean addLinks(android.widget.TextView, @androidx.core.text.util.LinkifyCompat.LinkifyMask int);
-    method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?);
-    method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-    method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-    method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?);
-    method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-    method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
-  }
-
-  @IntDef(flag=true, value={android.text.util.Linkify.WEB_URLS, android.text.util.Linkify.EMAIL_ADDRESSES, android.text.util.Linkify.PHONE_NUMBERS, android.text.util.Linkify.MAP_ADDRESSES, android.text.util.Linkify.ALL}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface LinkifyCompat.LinkifyMask {
-  }
-
-}
-
-package androidx.core.util {
-
-  public class AtomicFile {
-    ctor public AtomicFile(java.io.File);
-    method public void delete();
-    method public void failWrite(java.io.FileOutputStream?);
-    method public void finishWrite(java.io.FileOutputStream?);
-    method public java.io.File getBaseFile();
-    method public java.io.FileInputStream openRead() throws java.io.FileNotFoundException;
-    method public byte[] readFully() throws java.io.IOException;
-    method public java.io.FileOutputStream startWrite() throws java.io.IOException;
-  }
-
-  public interface Consumer<T> {
-    method public void accept(T!);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class DebugUtils {
-    method public static void buildShortClassTag(Object!, StringBuilder!);
-  }
-
-  @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) 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!...);
-    method public static int hashCode(Object?);
-  }
-
-  public class Pair<F, S> {
-    ctor public Pair(F?, S?);
-    method public static <A, B> androidx.core.util.Pair<A!,B!> create(A?, B?);
-    field public final F? first;
-    field public final S? second;
-  }
-
-  public final class PatternsCompat {
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern! AUTOLINK_EMAIL_ADDRESS;
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern! AUTOLINK_WEB_URL;
-    field public static final java.util.regex.Pattern! DOMAIN_NAME;
-    field public static final java.util.regex.Pattern! EMAIL_ADDRESS;
-    field public static final java.util.regex.Pattern! IP_ADDRESS;
-    field public static final java.util.regex.Pattern! WEB_URL;
-  }
-
-  public final class Pools {
-  }
-
-  public static interface Pools.Pool<T> {
-    method public T? acquire();
-    method public boolean release(T);
-  }
-
-  public static class Pools.SimplePool<T> implements androidx.core.util.Pools.Pool<T> {
-    ctor public Pools.SimplePool(int);
-    method public T! acquire();
-    method public boolean release(T);
-  }
-
-  public static class Pools.SynchronizedPool<T> extends androidx.core.util.Pools.SimplePool<T> {
-    ctor public Pools.SynchronizedPool(int);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class Preconditions {
-    method public static void checkArgument(boolean);
-    method public static void checkArgument(boolean, Object);
-    method public static int checkArgumentInRange(int, int, int, String);
-    method @IntRange(from=0) public static int checkArgumentNonnegative(int, String?);
-    method @IntRange(from=0) public static int checkArgumentNonnegative(int);
-    method public static <T> T checkNotNull(T?);
-    method public static <T> T checkNotNull(T?, Object);
-    method public static void checkState(boolean, String?);
-    method public static void checkState(boolean);
-  }
-
-  public interface Predicate<T> {
-    method public boolean test(T!);
-  }
-
-  public interface Supplier<T> {
-    method public T! get();
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class TimeUtils {
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void formatDuration(long, StringBuilder!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void formatDuration(long, java.io.PrintWriter!, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void formatDuration(long, java.io.PrintWriter!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void formatDuration(long, long, java.io.PrintWriter!);
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final int HUNDRED_DAY_FIELD_LEN = 19; // 0x13
-  }
-
-}
-
-package androidx.core.view {
-
-  public class AccessibilityDelegateCompat {
-    ctor public AccessibilityDelegateCompat();
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public AccessibilityDelegateCompat(android.view.View.AccessibilityDelegate!);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View!);
-    method public void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public void onInitializeAccessibilityNodeInfo(android.view.View!, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
-    method public void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public boolean performAccessibilityAction(android.view.View!, int, android.os.Bundle!);
-    method public void sendAccessibilityEvent(android.view.View!, int);
-    method public void sendAccessibilityEventUnchecked(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-  }
-
-  public abstract class ActionProvider {
-    ctor public ActionProvider(android.content.Context!);
-    method public android.content.Context! getContext();
-    method public boolean hasSubMenu();
-    method public boolean isVisible();
-    method public abstract android.view.View! onCreateActionView();
-    method public android.view.View! onCreateActionView(android.view.MenuItem!);
-    method public boolean onPerformDefaultAction();
-    method public void onPrepareSubMenu(android.view.SubMenu!);
-    method public boolean overridesItemVisibility();
-    method public void refreshVisibility();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void reset();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSubUiVisibilityListener(androidx.core.view.ActionProvider.SubUiVisibilityListener!);
-    method public void setVisibilityListener(androidx.core.view.ActionProvider.VisibilityListener!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void subUiVisibilityChanged(boolean);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface ActionProvider.SubUiVisibilityListener {
-    method public void onSubUiVisibilityChanged(boolean);
-  }
-
-  public static interface ActionProvider.VisibilityListener {
-    method public void onActionProviderVisibilityChanged(boolean);
-  }
-
-  public final class DisplayCompat {
-    method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
-  }
-
-  public static final class DisplayCompat.ModeCompat {
-    method public int getPhysicalHeight();
-    method public int getPhysicalWidth();
-    method public boolean isNative();
-    method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
-  }
-
-  public final class DisplayCutoutCompat {
-    ctor public DisplayCutoutCompat(android.graphics.Rect!, java.util.List<android.graphics.Rect!>!);
-    method public java.util.List<android.graphics.Rect!>! getBoundingRects();
-    method public int getSafeInsetBottom();
-    method public int getSafeInsetLeft();
-    method public int getSafeInsetRight();
-    method public int getSafeInsetTop();
-  }
-
-  public final class DragAndDropPermissionsCompat {
-    method public void release();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.view.DragAndDropPermissionsCompat? request(android.app.Activity!, android.view.DragEvent!);
-  }
-
-  public class DragStartHelper {
-    ctor public DragStartHelper(android.view.View!, androidx.core.view.DragStartHelper.OnDragStartListener!);
-    method public void attach();
-    method public void detach();
-    method public void getTouchPosition(android.graphics.Point!);
-    method public boolean onLongClick(android.view.View!);
-    method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
-  }
-
-  public static interface DragStartHelper.OnDragStartListener {
-    method public boolean onDragStart(android.view.View!, androidx.core.view.DragStartHelper!);
-  }
-
-  public final class GestureDetectorCompat {
-    ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!);
-    ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!, android.os.Handler!);
-    method public boolean isLongpressEnabled();
-    method public boolean onTouchEvent(android.view.MotionEvent!);
-    method public void setIsLongpressEnabled(boolean);
-    method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener!);
-  }
-
-  public final class GravityCompat {
-    method public static void apply(int, int, int, android.graphics.Rect!, android.graphics.Rect!, int);
-    method public static void apply(int, int, int, android.graphics.Rect!, int, int, android.graphics.Rect!, int);
-    method public static void applyDisplay(int, android.graphics.Rect!, android.graphics.Rect!, int);
-    method public static int getAbsoluteGravity(int, int);
-    field public static final int END = 8388613; // 0x800005
-    field public static final int RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; // 0x800007
-    field public static final int RELATIVE_LAYOUT_DIRECTION = 8388608; // 0x800000
-    field public static final int START = 8388611; // 0x800003
-  }
-
-  public final class InputDeviceCompat {
-    field public static final int SOURCE_ANY = -256; // 0xffffff00
-    field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
-    field public static final int SOURCE_CLASS_JOYSTICK = 16; // 0x10
-    field public static final int SOURCE_CLASS_MASK = 255; // 0xff
-    field public static final int SOURCE_CLASS_NONE = 0; // 0x0
-    field public static final int SOURCE_CLASS_POINTER = 2; // 0x2
-    field public static final int SOURCE_CLASS_POSITION = 8; // 0x8
-    field public static final int SOURCE_CLASS_TRACKBALL = 4; // 0x4
-    field public static final int SOURCE_DPAD = 513; // 0x201
-    field public static final int SOURCE_GAMEPAD = 1025; // 0x401
-    field public static final int SOURCE_HDMI = 33554433; // 0x2000001
-    field public static final int SOURCE_JOYSTICK = 16777232; // 0x1000010
-    field public static final int SOURCE_KEYBOARD = 257; // 0x101
-    field public static final int SOURCE_MOUSE = 8194; // 0x2002
-    field public static final int SOURCE_ROTARY_ENCODER = 4194304; // 0x400000
-    field public static final int SOURCE_STYLUS = 16386; // 0x4002
-    field public static final int SOURCE_TOUCHPAD = 1048584; // 0x100008
-    field public static final int SOURCE_TOUCHSCREEN = 4098; // 0x1002
-    field public static final int SOURCE_TOUCH_NAVIGATION = 2097152; // 0x200000
-    field public static final int SOURCE_TRACKBALL = 65540; // 0x10004
-    field public static final int SOURCE_UNKNOWN = 0; // 0x0
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class KeyEventDispatcher {
-    method public static boolean dispatchBeforeHierarchy(android.view.View, android.view.KeyEvent);
-    method public static boolean dispatchKeyEvent(androidx.core.view.KeyEventDispatcher.Component, android.view.View?, android.view.Window.Callback?, android.view.KeyEvent);
-  }
-
-  public static interface KeyEventDispatcher.Component {
-    method public boolean superDispatchKeyEvent(android.view.KeyEvent!);
-  }
-
-  public final class LayoutInflaterCompat {
-    method @Deprecated public static androidx.core.view.LayoutInflaterFactory! getFactory(android.view.LayoutInflater!);
-    method @Deprecated public static void setFactory(android.view.LayoutInflater, androidx.core.view.LayoutInflaterFactory);
-    method public static void setFactory2(android.view.LayoutInflater, android.view.LayoutInflater.Factory2);
-  }
-
-  @Deprecated public interface LayoutInflaterFactory {
-    method @Deprecated public android.view.View! onCreateView(android.view.View!, String!, android.content.Context!, android.util.AttributeSet!);
-  }
-
-  public final class MarginLayoutParamsCompat {
-    method public static int getLayoutDirection(android.view.ViewGroup.MarginLayoutParams!);
-    method public static int getMarginEnd(android.view.ViewGroup.MarginLayoutParams!);
-    method public static int getMarginStart(android.view.ViewGroup.MarginLayoutParams!);
-    method public static boolean isMarginRelative(android.view.ViewGroup.MarginLayoutParams!);
-    method public static void resolveLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
-    method public static void setLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
-    method public static void setMarginEnd(android.view.ViewGroup.MarginLayoutParams!, int);
-    method public static void setMarginStart(android.view.ViewGroup.MarginLayoutParams!, int);
-  }
-
-  public final class MenuCompat {
-    method public static void setGroupDividerEnabled(android.view.Menu!, boolean);
-    method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
-  }
-
-  public final class MenuItemCompat {
-    method @Deprecated public static boolean collapseActionView(android.view.MenuItem!);
-    method @Deprecated public static boolean expandActionView(android.view.MenuItem!);
-    method public static androidx.core.view.ActionProvider! getActionProvider(android.view.MenuItem!);
-    method @Deprecated public static android.view.View! getActionView(android.view.MenuItem!);
-    method public static int getAlphabeticModifiers(android.view.MenuItem!);
-    method public static CharSequence! getContentDescription(android.view.MenuItem!);
-    method public static android.content.res.ColorStateList! getIconTintList(android.view.MenuItem!);
-    method public static android.graphics.PorterDuff.Mode! getIconTintMode(android.view.MenuItem!);
-    method public static int getNumericModifiers(android.view.MenuItem!);
-    method public static CharSequence! getTooltipText(android.view.MenuItem!);
-    method @Deprecated public static boolean isActionViewExpanded(android.view.MenuItem!);
-    method public static android.view.MenuItem! setActionProvider(android.view.MenuItem!, androidx.core.view.ActionProvider!);
-    method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, android.view.View!);
-    method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, int);
-    method public static void setAlphabeticShortcut(android.view.MenuItem!, char, int);
-    method public static void setContentDescription(android.view.MenuItem!, CharSequence!);
-    method public static void setIconTintList(android.view.MenuItem!, android.content.res.ColorStateList!);
-    method public static void setIconTintMode(android.view.MenuItem!, android.graphics.PorterDuff.Mode!);
-    method public static void setNumericShortcut(android.view.MenuItem!, char, int);
-    method @Deprecated public static android.view.MenuItem! setOnActionExpandListener(android.view.MenuItem!, androidx.core.view.MenuItemCompat.OnActionExpandListener!);
-    method public static void setShortcut(android.view.MenuItem!, char, char, int, int);
-    method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
-    method public static void setTooltipText(android.view.MenuItem!, CharSequence!);
-    field @Deprecated public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
-    field @Deprecated public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
-    field @Deprecated public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
-    field @Deprecated public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
-    field @Deprecated public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
-  }
-
-  @Deprecated public static interface MenuItemCompat.OnActionExpandListener {
-    method @Deprecated public boolean onMenuItemActionCollapse(android.view.MenuItem!);
-    method @Deprecated public boolean onMenuItemActionExpand(android.view.MenuItem!);
-  }
-
-  public final class MotionEventCompat {
-    method @Deprecated public static int findPointerIndex(android.view.MotionEvent!, int);
-    method @Deprecated public static int getActionIndex(android.view.MotionEvent!);
-    method @Deprecated public static int getActionMasked(android.view.MotionEvent!);
-    method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int);
-    method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int, int);
-    method @Deprecated public static int getButtonState(android.view.MotionEvent!);
-    method @Deprecated public static int getPointerCount(android.view.MotionEvent!);
-    method @Deprecated public static int getPointerId(android.view.MotionEvent!, int);
-    method @Deprecated public static int getSource(android.view.MotionEvent!);
-    method @Deprecated public static float getX(android.view.MotionEvent!, int);
-    method @Deprecated public static float getY(android.view.MotionEvent!, int);
-    method public static boolean isFromSource(android.view.MotionEvent!, int);
-    field @Deprecated public static final int ACTION_HOVER_ENTER = 9; // 0x9
-    field @Deprecated public static final int ACTION_HOVER_EXIT = 10; // 0xa
-    field @Deprecated public static final int ACTION_HOVER_MOVE = 7; // 0x7
-    field @Deprecated public static final int ACTION_MASK = 255; // 0xff
-    field @Deprecated public static final int ACTION_POINTER_DOWN = 5; // 0x5
-    field @Deprecated public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
-    field @Deprecated public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
-    field @Deprecated public static final int ACTION_POINTER_UP = 6; // 0x6
-    field @Deprecated public static final int ACTION_SCROLL = 8; // 0x8
-    field @Deprecated public static final int AXIS_BRAKE = 23; // 0x17
-    field @Deprecated public static final int AXIS_DISTANCE = 24; // 0x18
-    field @Deprecated public static final int AXIS_GAS = 22; // 0x16
-    field @Deprecated public static final int AXIS_GENERIC_1 = 32; // 0x20
-    field @Deprecated public static final int AXIS_GENERIC_10 = 41; // 0x29
-    field @Deprecated public static final int AXIS_GENERIC_11 = 42; // 0x2a
-    field @Deprecated public static final int AXIS_GENERIC_12 = 43; // 0x2b
-    field @Deprecated public static final int AXIS_GENERIC_13 = 44; // 0x2c
-    field @Deprecated public static final int AXIS_GENERIC_14 = 45; // 0x2d
-    field @Deprecated public static final int AXIS_GENERIC_15 = 46; // 0x2e
-    field @Deprecated public static final int AXIS_GENERIC_16 = 47; // 0x2f
-    field @Deprecated public static final int AXIS_GENERIC_2 = 33; // 0x21
-    field @Deprecated public static final int AXIS_GENERIC_3 = 34; // 0x22
-    field @Deprecated public static final int AXIS_GENERIC_4 = 35; // 0x23
-    field @Deprecated public static final int AXIS_GENERIC_5 = 36; // 0x24
-    field @Deprecated public static final int AXIS_GENERIC_6 = 37; // 0x25
-    field @Deprecated public static final int AXIS_GENERIC_7 = 38; // 0x26
-    field @Deprecated public static final int AXIS_GENERIC_8 = 39; // 0x27
-    field @Deprecated public static final int AXIS_GENERIC_9 = 40; // 0x28
-    field @Deprecated public static final int AXIS_HAT_X = 15; // 0xf
-    field @Deprecated public static final int AXIS_HAT_Y = 16; // 0x10
-    field @Deprecated public static final int AXIS_HSCROLL = 10; // 0xa
-    field @Deprecated public static final int AXIS_LTRIGGER = 17; // 0x11
-    field @Deprecated public static final int AXIS_ORIENTATION = 8; // 0x8
-    field @Deprecated public static final int AXIS_PRESSURE = 2; // 0x2
-    field public static final int AXIS_RELATIVE_X = 27; // 0x1b
-    field public static final int AXIS_RELATIVE_Y = 28; // 0x1c
-    field @Deprecated public static final int AXIS_RTRIGGER = 18; // 0x12
-    field @Deprecated public static final int AXIS_RUDDER = 20; // 0x14
-    field @Deprecated public static final int AXIS_RX = 12; // 0xc
-    field @Deprecated public static final int AXIS_RY = 13; // 0xd
-    field @Deprecated public static final int AXIS_RZ = 14; // 0xe
-    field public static final int AXIS_SCROLL = 26; // 0x1a
-    field @Deprecated public static final int AXIS_SIZE = 3; // 0x3
-    field @Deprecated public static final int AXIS_THROTTLE = 19; // 0x13
-    field @Deprecated public static final int AXIS_TILT = 25; // 0x19
-    field @Deprecated public static final int AXIS_TOOL_MAJOR = 6; // 0x6
-    field @Deprecated public static final int AXIS_TOOL_MINOR = 7; // 0x7
-    field @Deprecated public static final int AXIS_TOUCH_MAJOR = 4; // 0x4
-    field @Deprecated public static final int AXIS_TOUCH_MINOR = 5; // 0x5
-    field @Deprecated public static final int AXIS_VSCROLL = 9; // 0x9
-    field @Deprecated public static final int AXIS_WHEEL = 21; // 0x15
-    field @Deprecated public static final int AXIS_X = 0; // 0x0
-    field @Deprecated public static final int AXIS_Y = 1; // 0x1
-    field @Deprecated public static final int AXIS_Z = 11; // 0xb
-    field @Deprecated public static final int BUTTON_PRIMARY = 1; // 0x1
-  }
-
-  public interface NestedScrollingChild {
-    method public boolean dispatchNestedFling(float, float, boolean);
-    method public boolean dispatchNestedPreFling(float, float);
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
-    method public boolean hasNestedScrollingParent();
-    method public boolean isNestedScrollingEnabled();
-    method public void setNestedScrollingEnabled(boolean);
-    method public boolean startNestedScroll(@androidx.core.view.ViewCompat.ScrollAxis int);
-    method public void stopNestedScroll();
-  }
-
-  public interface NestedScrollingChild2 extends androidx.core.view.NestedScrollingChild {
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public boolean hasNestedScrollingParent(@androidx.core.view.ViewCompat.NestedScrollType int);
-    method public boolean startNestedScroll(@androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public void stopNestedScroll(@androidx.core.view.ViewCompat.NestedScrollType int);
-  }
-
-  public interface NestedScrollingChild3 extends androidx.core.view.NestedScrollingChild2 {
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int, int[]);
-  }
-
-  public class NestedScrollingChildHelper {
-    ctor public NestedScrollingChildHelper(android.view.View);
-    method public boolean dispatchNestedFling(float, float, boolean);
-    method public boolean dispatchNestedPreFling(float, float);
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
-    method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int, int[]?);
-    method public boolean hasNestedScrollingParent();
-    method public boolean hasNestedScrollingParent(@androidx.core.view.ViewCompat.NestedScrollType int);
-    method public boolean isNestedScrollingEnabled();
-    method public void onDetachedFromWindow();
-    method public void onStopNestedScroll(android.view.View);
-    method public void setNestedScrollingEnabled(boolean);
-    method public boolean startNestedScroll(@androidx.core.view.ViewCompat.ScrollAxis int);
-    method public boolean startNestedScroll(@androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public void stopNestedScroll();
-    method public void stopNestedScroll(@androidx.core.view.ViewCompat.NestedScrollType int);
-  }
-
-  public interface NestedScrollingParent {
-    method @androidx.core.view.ViewCompat.ScrollAxis public int getNestedScrollAxes();
-    method public boolean onNestedFling(android.view.View, float, float, boolean);
-    method public boolean onNestedPreFling(android.view.View, float, float);
-    method public void onNestedPreScroll(android.view.View, int, int, int[]);
-    method public void onNestedScroll(android.view.View, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int);
-    method public void onStopNestedScroll(android.view.View);
-  }
-
-  public interface NestedScrollingParent2 extends androidx.core.view.NestedScrollingParent {
-    method public void onNestedPreScroll(android.view.View, int, int, int[], @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public void onStopNestedScroll(android.view.View, @androidx.core.view.ViewCompat.NestedScrollType int);
-  }
-
-  public interface NestedScrollingParent3 extends androidx.core.view.NestedScrollingParent2 {
-    method public void onNestedScroll(android.view.View, int, int, int, int, @androidx.core.view.ViewCompat.NestedScrollType int, int[]);
-  }
-
-  public class NestedScrollingParentHelper {
-    ctor public NestedScrollingParentHelper(android.view.ViewGroup);
-    method @androidx.core.view.ViewCompat.ScrollAxis public int getNestedScrollAxes();
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public void onStopNestedScroll(android.view.View);
-    method public void onStopNestedScroll(android.view.View, @androidx.core.view.ViewCompat.NestedScrollType int);
-  }
-
-  public interface OnApplyWindowInsetsListener {
-    method public androidx.core.view.WindowInsetsCompat! onApplyWindowInsets(android.view.View!, androidx.core.view.WindowInsetsCompat!);
-  }
-
-  public final class OneShotPreDrawListener implements android.view.View.OnAttachStateChangeListener android.view.ViewTreeObserver.OnPreDrawListener {
-    method public static androidx.core.view.OneShotPreDrawListener add(android.view.View, Runnable);
-    method public boolean onPreDraw();
-    method public void onViewAttachedToWindow(android.view.View!);
-    method public void onViewDetachedFromWindow(android.view.View!);
-    method public void removeListener();
-  }
-
-  public final class PointerIconCompat {
-    method public static androidx.core.view.PointerIconCompat! create(android.graphics.Bitmap!, float, float);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public Object! getPointerIcon();
-    method public static androidx.core.view.PointerIconCompat! getSystemIcon(android.content.Context!, int);
-    method public static androidx.core.view.PointerIconCompat! load(android.content.res.Resources!, int);
-    field public static final int TYPE_ALIAS = 1010; // 0x3f2
-    field public static final int TYPE_ALL_SCROLL = 1013; // 0x3f5
-    field public static final int TYPE_ARROW = 1000; // 0x3e8
-    field public static final int TYPE_CELL = 1006; // 0x3ee
-    field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
-    field public static final int TYPE_COPY = 1011; // 0x3f3
-    field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
-    field public static final int TYPE_DEFAULT = 1000; // 0x3e8
-    field public static final int TYPE_GRAB = 1020; // 0x3fc
-    field public static final int TYPE_GRABBING = 1021; // 0x3fd
-    field public static final int TYPE_HAND = 1002; // 0x3ea
-    field public static final int TYPE_HELP = 1003; // 0x3eb
-    field public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014; // 0x3f6
-    field public static final int TYPE_NO_DROP = 1012; // 0x3f4
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_TEXT = 1008; // 0x3f0
-    field public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017; // 0x3f9
-    field public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016; // 0x3f8
-    field public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015; // 0x3f7
-    field public static final int TYPE_VERTICAL_TEXT = 1009; // 0x3f1
-    field public static final int TYPE_WAIT = 1004; // 0x3ec
-    field public static final int TYPE_ZOOM_IN = 1018; // 0x3fa
-    field public static final int TYPE_ZOOM_OUT = 1019; // 0x3fb
-  }
-
-  public final class ScaleGestureDetectorCompat {
-    method @Deprecated public static boolean isQuickScaleEnabled(Object!);
-    method public static boolean isQuickScaleEnabled(android.view.ScaleGestureDetector!);
-    method @Deprecated public static void setQuickScaleEnabled(Object!, boolean);
-    method public static void setQuickScaleEnabled(android.view.ScaleGestureDetector!, boolean);
-  }
-
-  public interface ScrollingView {
-    method public int computeHorizontalScrollExtent();
-    method public int computeHorizontalScrollOffset();
-    method public int computeHorizontalScrollRange();
-    method public int computeVerticalScrollExtent();
-    method public int computeVerticalScrollOffset();
-    method public int computeVerticalScrollRange();
-  }
-
-  public interface TintableBackgroundView {
-    method public android.content.res.ColorStateList? getSupportBackgroundTintList();
-    method public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
-    method public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
-    method public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  @Deprecated public final class VelocityTrackerCompat {
-    method @Deprecated public static float getXVelocity(android.view.VelocityTracker!, int);
-    method @Deprecated public static float getYVelocity(android.view.VelocityTracker!, int);
-  }
-
-  public class ViewCompat {
-    ctor protected ViewCompat();
-    method public static int addAccessibilityAction(android.view.View, CharSequence, androidx.core.view.accessibility.AccessibilityViewCommand);
-    method public static void addKeyboardNavigationClusters(android.view.View, java.util.Collection<android.view.View!>, int);
-    method public static void addOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
-    method public static androidx.core.view.ViewPropertyAnimatorCompat animate(android.view.View);
-    method @Deprecated public static boolean canScrollHorizontally(android.view.View!, int);
-    method @Deprecated public static boolean canScrollVertically(android.view.View!, int);
-    method public static void cancelDragAndDrop(android.view.View);
-    method @Deprecated public static int combineMeasuredStates(int, int);
-    method public static androidx.core.view.WindowInsetsCompat computeSystemWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat, android.graphics.Rect);
-    method public static androidx.core.view.WindowInsetsCompat dispatchApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
-    method public static void dispatchFinishTemporaryDetach(android.view.View);
-    method public static boolean dispatchNestedFling(android.view.View, float, float, boolean);
-    method public static boolean dispatchNestedPreFling(android.view.View, float, float);
-    method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?);
-    method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?);
-    method public static void dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int, int[]);
-    method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public static void dispatchStartTemporaryDetach(android.view.View);
-    method public static void enableAccessibleClickableSpanSupport(android.view.View!);
-    method public static int generateViewId();
-    method public static androidx.core.view.AccessibilityDelegateCompat? getAccessibilityDelegate(android.view.View);
-    method public static int getAccessibilityLiveRegion(android.view.View);
-    method public static androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View);
-    method @UiThread public static CharSequence! getAccessibilityPaneTitle(android.view.View!);
-    method @Deprecated public static float getAlpha(android.view.View!);
-    method public static android.content.res.ColorStateList! getBackgroundTintList(android.view.View);
-    method public static android.graphics.PorterDuff.Mode! getBackgroundTintMode(android.view.View);
-    method public static android.graphics.Rect? getClipBounds(android.view.View);
-    method public static android.view.Display? getDisplay(android.view.View);
-    method public static float getElevation(android.view.View);
-    method public static boolean getFitsSystemWindows(android.view.View);
-    method public static int getImportantForAccessibility(android.view.View);
-    method public static int getImportantForAutofill(android.view.View);
-    method public static int getLabelFor(android.view.View);
-    method @Deprecated public static int getLayerType(android.view.View!);
-    method public static int getLayoutDirection(android.view.View);
-    method @Deprecated public static android.graphics.Matrix? getMatrix(android.view.View!);
-    method @Deprecated public static int getMeasuredHeightAndState(android.view.View!);
-    method @Deprecated public static int getMeasuredState(android.view.View!);
-    method @Deprecated public static int getMeasuredWidthAndState(android.view.View!);
-    method public static int getMinimumHeight(android.view.View);
-    method public static int getMinimumWidth(android.view.View);
-    method public static int getNextClusterForwardId(android.view.View);
-    method @Deprecated public static int getOverScrollMode(android.view.View!);
-    method @Px public static int getPaddingEnd(android.view.View);
-    method @Px public static int getPaddingStart(android.view.View);
-    method public static android.view.ViewParent! getParentForAccessibility(android.view.View);
-    method @Deprecated public static float getPivotX(android.view.View!);
-    method @Deprecated public static float getPivotY(android.view.View!);
-    method public static androidx.core.view.WindowInsetsCompat? getRootWindowInsets(android.view.View);
-    method @Deprecated public static float getRotation(android.view.View!);
-    method @Deprecated public static float getRotationX(android.view.View!);
-    method @Deprecated public static float getRotationY(android.view.View!);
-    method @Deprecated public static float getScaleX(android.view.View!);
-    method @Deprecated public static float getScaleY(android.view.View!);
-    method public static int getScrollIndicators(android.view.View);
-    method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
-    method public static String? getTransitionName(android.view.View);
-    method @Deprecated public static float getTranslationX(android.view.View!);
-    method @Deprecated public static float getTranslationY(android.view.View!);
-    method public static float getTranslationZ(android.view.View);
-    method public static int getWindowSystemUiVisibility(android.view.View);
-    method @Deprecated public static float getX(android.view.View!);
-    method @Deprecated public static float getY(android.view.View!);
-    method public static float getZ(android.view.View);
-    method public static boolean hasAccessibilityDelegate(android.view.View);
-    method public static boolean hasExplicitFocusable(android.view.View);
-    method public static boolean hasNestedScrollingParent(android.view.View);
-    method public static boolean hasNestedScrollingParent(android.view.View, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public static boolean hasOnClickListeners(android.view.View);
-    method public static boolean hasOverlappingRendering(android.view.View);
-    method public static boolean hasTransientState(android.view.View);
-    method @UiThread public static boolean isAccessibilityHeading(android.view.View!);
-    method public static boolean isAttachedToWindow(android.view.View);
-    method public static boolean isFocusedByDefault(android.view.View);
-    method public static boolean isImportantForAccessibility(android.view.View);
-    method public static boolean isImportantForAutofill(android.view.View);
-    method public static boolean isInLayout(android.view.View);
-    method public static boolean isKeyboardNavigationCluster(android.view.View);
-    method public static boolean isLaidOut(android.view.View);
-    method public static boolean isLayoutDirectionResolved(android.view.View);
-    method public static boolean isNestedScrollingEnabled(android.view.View);
-    method @Deprecated public static boolean isOpaque(android.view.View!);
-    method public static boolean isPaddingRelative(android.view.View);
-    method @UiThread public static boolean isScreenReaderFocusable(android.view.View!);
-    method @Deprecated public static void jumpDrawablesToCurrentState(android.view.View!);
-    method public static android.view.View! keyboardNavigationClusterSearch(android.view.View, android.view.View!, @androidx.core.view.ViewCompat.FocusDirection int);
-    method public static void offsetLeftAndRight(android.view.View, int);
-    method public static void offsetTopAndBottom(android.view.View, int);
-    method public static androidx.core.view.WindowInsetsCompat onApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
-    method @Deprecated public static void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public static void onInitializeAccessibilityNodeInfo(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
-    method @Deprecated public static void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public static boolean performAccessibilityAction(android.view.View, int, android.os.Bundle!);
-    method public static void postInvalidateOnAnimation(android.view.View);
-    method public static void postInvalidateOnAnimation(android.view.View, int, int, int, int);
-    method public static void postOnAnimation(android.view.View, Runnable!);
-    method public static void postOnAnimationDelayed(android.view.View, Runnable!, long);
-    method public static void removeAccessibilityAction(android.view.View, int);
-    method public static void removeOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
-    method public static void replaceAccessibilityAction(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat, CharSequence?, androidx.core.view.accessibility.AccessibilityViewCommand?);
-    method public static void requestApplyInsets(android.view.View);
-    method public static <T extends android.view.View> T requireViewById(android.view.View, @IdRes int);
-    method @Deprecated public static int resolveSizeAndState(int, int, int);
-    method public static boolean restoreDefaultFocus(android.view.View);
-    method public static void saveAttributeDataForStyleable(android.view.View, android.content.Context, int[], android.util.AttributeSet?, android.content.res.TypedArray, int, int);
-    method public static void setAccessibilityDelegate(android.view.View, androidx.core.view.AccessibilityDelegateCompat!);
-    method @UiThread public static void setAccessibilityHeading(android.view.View!, boolean);
-    method public static void setAccessibilityLiveRegion(android.view.View, int);
-    method @UiThread public static void setAccessibilityPaneTitle(android.view.View!, CharSequence!);
-    method @Deprecated public static void setActivated(android.view.View!, boolean);
-    method @Deprecated public static void setAlpha(android.view.View!, @FloatRange(from=0.0, to=1.0) float);
-    method public static void setAutofillHints(android.view.View, java.lang.String!...);
-    method public static void setBackground(android.view.View, android.graphics.drawable.Drawable?);
-    method public static void setBackgroundTintList(android.view.View, android.content.res.ColorStateList!);
-    method public static void setBackgroundTintMode(android.view.View, android.graphics.PorterDuff.Mode!);
-    method @Deprecated public static void setChildrenDrawingOrderEnabled(android.view.ViewGroup!, boolean);
-    method public static void setClipBounds(android.view.View, android.graphics.Rect!);
-    method public static void setElevation(android.view.View, float);
-    method @Deprecated public static void setFitsSystemWindows(android.view.View!, boolean);
-    method public static void setFocusedByDefault(android.view.View, boolean);
-    method public static void setHasTransientState(android.view.View, boolean);
-    method public static void setImportantForAccessibility(android.view.View, int);
-    method public static void setImportantForAutofill(android.view.View, int);
-    method public static void setKeyboardNavigationCluster(android.view.View, boolean);
-    method public static void setLabelFor(android.view.View, @IdRes int);
-    method public static void setLayerPaint(android.view.View, android.graphics.Paint!);
-    method @Deprecated public static void setLayerType(android.view.View!, int, android.graphics.Paint!);
-    method public static void setLayoutDirection(android.view.View, int);
-    method public static void setNestedScrollingEnabled(android.view.View, boolean);
-    method public static void setNextClusterForwardId(android.view.View, int);
-    method public static void setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener?);
-    method @Deprecated public static void setOverScrollMode(android.view.View!, int);
-    method public static void setPaddingRelative(android.view.View, @Px int, @Px int, @Px int, @Px int);
-    method @Deprecated public static void setPivotX(android.view.View!, float);
-    method @Deprecated public static void setPivotY(android.view.View!, float);
-    method public static void setPointerIcon(android.view.View, androidx.core.view.PointerIconCompat!);
-    method @Deprecated public static void setRotation(android.view.View!, float);
-    method @Deprecated public static void setRotationX(android.view.View!, float);
-    method @Deprecated public static void setRotationY(android.view.View!, float);
-    method @Deprecated public static void setSaveFromParentEnabled(android.view.View!, boolean);
-    method @Deprecated public static void setScaleX(android.view.View!, float);
-    method @Deprecated public static void setScaleY(android.view.View!, float);
-    method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
-    method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int);
-    method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int, @androidx.core.view.ViewCompat.ScrollIndicators int);
-    method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
-    method public static void setTooltipText(android.view.View, CharSequence?);
-    method public static void setTransitionName(android.view.View, String!);
-    method @Deprecated public static void setTranslationX(android.view.View!, float);
-    method @Deprecated public static void setTranslationY(android.view.View!, float);
-    method public static void setTranslationZ(android.view.View, float);
-    method @Deprecated public static void setX(android.view.View!, float);
-    method @Deprecated public static void setY(android.view.View!, float);
-    method public static void setZ(android.view.View, float);
-    method public static boolean startDragAndDrop(android.view.View, android.content.ClipData!, android.view.View.DragShadowBuilder!, Object!, int);
-    method public static boolean startNestedScroll(android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int);
-    method public static boolean startNestedScroll(android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public static void stopNestedScroll(android.view.View);
-    method public static void stopNestedScroll(android.view.View, @androidx.core.view.ViewCompat.NestedScrollType int);
-    method public static void updateDragShadow(android.view.View, android.view.View.DragShadowBuilder!);
-    field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
-    field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
-    field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; // 0x0
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; // 0x2
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; // 0x4
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; // 0x1
-    field @Deprecated public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
-    field @Deprecated public static final int LAYER_TYPE_NONE = 0; // 0x0
-    field @Deprecated public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
-    field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
-    field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
-    field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
-    field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
-    field @Deprecated public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
-    field @Deprecated public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
-    field @Deprecated public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
-    field @Deprecated public static final int MEASURED_STATE_TOO_SMALL = 16777216; // 0x1000000
-    field @Deprecated public static final int OVER_SCROLL_ALWAYS = 0; // 0x0
-    field @Deprecated public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; // 0x1
-    field @Deprecated public static final int OVER_SCROLL_NEVER = 2; // 0x2
-    field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
-    field public static final int SCROLL_AXIS_NONE = 0; // 0x0
-    field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_END = 32; // 0x20
-    field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
-    field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
-    field public static final int SCROLL_INDICATOR_START = 16; // 0x10
-    field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
-    field public static final int TYPE_NON_TOUCH = 1; // 0x1
-    field public static final int TYPE_TOUCH = 0; // 0x0
-  }
-
-  @IntDef({android.view.View.FOCUS_LEFT, android.view.View.FOCUS_UP, android.view.View.FOCUS_RIGHT, android.view.View.FOCUS_DOWN, android.view.View.FOCUS_FORWARD, android.view.View.FOCUS_BACKWARD}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.FocusDirection {
-  }
-
-  @IntDef({android.view.View.FOCUS_LEFT, android.view.View.FOCUS_UP, android.view.View.FOCUS_RIGHT, android.view.View.FOCUS_DOWN}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.FocusRealDirection {
-  }
-
-  @IntDef({android.view.View.FOCUS_FORWARD, android.view.View.FOCUS_BACKWARD}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.FocusRelativeDirection {
-  }
-
-  @IntDef({androidx.core.view.ViewCompat.TYPE_TOUCH, androidx.core.view.ViewCompat.TYPE_NON_TOUCH}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.NestedScrollType {
-  }
-
-  public static interface ViewCompat.OnUnhandledKeyEventListenerCompat {
-    method public boolean onUnhandledKeyEvent(android.view.View!, android.view.KeyEvent!);
-  }
-
-  @IntDef(value={androidx.core.view.ViewCompat.SCROLL_AXIS_NONE, androidx.core.view.ViewCompat.SCROLL_AXIS_HORIZONTAL, androidx.core.view.ViewCompat.SCROLL_AXIS_VERTICAL}, flag=true) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.ScrollAxis {
-  }
-
-  @IntDef(flag=true, value={androidx.core.view.ViewCompat.SCROLL_INDICATOR_TOP, androidx.core.view.ViewCompat.SCROLL_INDICATOR_BOTTOM, androidx.core.view.ViewCompat.SCROLL_INDICATOR_LEFT, androidx.core.view.ViewCompat.SCROLL_INDICATOR_RIGHT, androidx.core.view.ViewCompat.SCROLL_INDICATOR_START, androidx.core.view.ViewCompat.SCROLL_INDICATOR_END}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.ScrollIndicators {
-  }
-
-  public final class ViewConfigurationCompat {
-    method public static float getScaledHorizontalScrollFactor(android.view.ViewConfiguration, android.content.Context);
-    method public static int getScaledHoverSlop(android.view.ViewConfiguration!);
-    method @Deprecated public static int getScaledPagingTouchSlop(android.view.ViewConfiguration!);
-    method public static float getScaledVerticalScrollFactor(android.view.ViewConfiguration, android.content.Context);
-    method @Deprecated public static boolean hasPermanentMenuKey(android.view.ViewConfiguration!);
-    method public static boolean shouldShowMenuShortcutsWhenKeyboardPresent(android.view.ViewConfiguration!, android.content.Context);
-  }
-
-  public final class ViewGroupCompat {
-    method public static int getLayoutMode(android.view.ViewGroup);
-    method @androidx.core.view.ViewCompat.ScrollAxis public static int getNestedScrollAxes(android.view.ViewGroup);
-    method public static boolean isTransitionGroup(android.view.ViewGroup);
-    method @Deprecated public static boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
-    method public static void setLayoutMode(android.view.ViewGroup, int);
-    method @Deprecated public static void setMotionEventSplittingEnabled(android.view.ViewGroup!, boolean);
-    method public static void setTransitionGroup(android.view.ViewGroup, boolean);
-    field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
-    field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
-  }
-
-  public final class ViewParentCompat {
-    method public static void notifySubtreeAccessibilityStateChanged(android.view.ViewParent!, android.view.View!, android.view.View!, int);
-    method public static boolean onNestedFling(android.view.ViewParent!, android.view.View!, float, float, boolean);
-    method public static boolean onNestedPreFling(android.view.ViewParent!, android.view.View!, float, float);
-    method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!);
-    method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!, int);
-    method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int);
-    method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int);
-    method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int, int[]);
-    method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int);
-    method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
-    method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int);
-    method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
-    method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!);
-    method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!, int);
-    method @Deprecated public static boolean requestSendAccessibilityEvent(android.view.ViewParent!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
-  }
-
-  public final class ViewPropertyAnimatorCompat {
-    method public androidx.core.view.ViewPropertyAnimatorCompat! alpha(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! alphaBy(float);
-    method public void cancel();
-    method public long getDuration();
-    method public android.view.animation.Interpolator! getInterpolator();
-    method public long getStartDelay();
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotation(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationX(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationXBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationY(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! rotationYBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleX(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleXBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleY(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! scaleYBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setDuration(long);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setInterpolator(android.view.animation.Interpolator!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setListener(androidx.core.view.ViewPropertyAnimatorListener!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setStartDelay(long);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! setUpdateListener(androidx.core.view.ViewPropertyAnimatorUpdateListener!);
-    method public void start();
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationX(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationXBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationY(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationYBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationZ(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! translationZBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! withEndAction(Runnable!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! withLayer();
-    method public androidx.core.view.ViewPropertyAnimatorCompat! withStartAction(Runnable!);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! x(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! xBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! y(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! yBy(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! z(float);
-    method public androidx.core.view.ViewPropertyAnimatorCompat! zBy(float);
-  }
-
-  public interface ViewPropertyAnimatorListener {
-    method public void onAnimationCancel(android.view.View!);
-    method public void onAnimationEnd(android.view.View!);
-    method public void onAnimationStart(android.view.View!);
-  }
-
-  public class ViewPropertyAnimatorListenerAdapter implements androidx.core.view.ViewPropertyAnimatorListener {
-    ctor public ViewPropertyAnimatorListenerAdapter();
-    method public void onAnimationCancel(android.view.View!);
-    method public void onAnimationEnd(android.view.View!);
-    method public void onAnimationStart(android.view.View!);
-  }
-
-  public interface ViewPropertyAnimatorUpdateListener {
-    method public void onAnimationUpdate(android.view.View!);
-  }
-
-  public final class WindowCompat {
-    method public static <T extends android.view.View> T requireViewById(android.view.Window, @IdRes int);
-    field public static final int FEATURE_ACTION_BAR = 8; // 0x8
-    field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
-    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
-  }
-
-  public class WindowInsetsCompat {
-    ctor public WindowInsetsCompat(androidx.core.view.WindowInsetsCompat?);
-    method public androidx.core.view.WindowInsetsCompat consumeDisplayCutout();
-    method public androidx.core.view.WindowInsetsCompat consumeStableInsets();
-    method public androidx.core.view.WindowInsetsCompat consumeSystemWindowInsets();
-    method public androidx.core.view.DisplayCutoutCompat? getDisplayCutout();
-    method public androidx.core.graphics.Insets getMandatorySystemGestureInsets();
-    method public int getStableInsetBottom();
-    method public int getStableInsetLeft();
-    method public int getStableInsetRight();
-    method public int getStableInsetTop();
-    method public androidx.core.graphics.Insets getStableInsets();
-    method public androidx.core.graphics.Insets getSystemGestureInsets();
-    method public int getSystemWindowInsetBottom();
-    method public int getSystemWindowInsetLeft();
-    method public int getSystemWindowInsetRight();
-    method public int getSystemWindowInsetTop();
-    method public androidx.core.graphics.Insets getSystemWindowInsets();
-    method public androidx.core.graphics.Insets getTappableElementInsets();
-    method public boolean hasInsets();
-    method public boolean hasStableInsets();
-    method public boolean hasSystemWindowInsets();
-    method public androidx.core.view.WindowInsetsCompat inset(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat inset(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
-    method public boolean isConsumed();
-    method public boolean isRound();
-    method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(int, int, int, int);
-    method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(android.graphics.Rect);
-    method @RequiresApi(20) public android.view.WindowInsets? toWindowInsets();
-    method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets);
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final androidx.core.view.WindowInsetsCompat! CONSUMED;
-  }
-
-  public static final class WindowInsetsCompat.Builder {
-    ctor public WindowInsetsCompat.Builder();
-    ctor public WindowInsetsCompat.Builder(androidx.core.view.WindowInsetsCompat);
-    method public androidx.core.view.WindowInsetsCompat build();
-    method public androidx.core.view.WindowInsetsCompat.Builder setDisplayCutout(androidx.core.view.DisplayCutoutCompat?);
-    method public androidx.core.view.WindowInsetsCompat.Builder setMandatorySystemGestureInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setStableInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setSystemGestureInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setSystemWindowInsets(androidx.core.graphics.Insets);
-    method public androidx.core.view.WindowInsetsCompat.Builder setTappableElementInsets(androidx.core.graphics.Insets);
-  }
-
-}
-
-package androidx.core.view.accessibility {
-
-  public final class AccessibilityClickableSpanCompat extends android.text.style.ClickableSpan {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public AccessibilityClickableSpanCompat(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!, int);
-    method public void onClick(android.view.View);
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String SPAN_ID = "ACCESSIBILITY_CLICKABLE_SPAN_ID";
-  }
-
-  public final class AccessibilityEventCompat {
-    method @Deprecated public static void appendRecord(android.view.accessibility.AccessibilityEvent!, androidx.core.view.accessibility.AccessibilityRecordCompat!);
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! asRecord(android.view.accessibility.AccessibilityEvent!);
-    method public static int getAction(android.view.accessibility.AccessibilityEvent!);
-    method public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
-    method public static int getMovementGranularity(android.view.accessibility.AccessibilityEvent!);
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! getRecord(android.view.accessibility.AccessibilityEvent!, int);
-    method @Deprecated public static int getRecordCount(android.view.accessibility.AccessibilityEvent!);
-    method public static void setAction(android.view.accessibility.AccessibilityEvent!, int);
-    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, int);
-    method public static void setMovementGranularity(android.view.accessibility.AccessibilityEvent!, int);
-    field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
-    field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
-    field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
-    field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
-    field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
-    field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
-    field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
-    field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
-    field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
-    field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
-    field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
-    field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
-    field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1024; // 0x400
-    field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 512; // 0x200
-    field public static final int TYPE_TOUCH_INTERACTION_END = 2097152; // 0x200000
-    field public static final int TYPE_TOUCH_INTERACTION_START = 1048576; // 0x100000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 32768; // 0x8000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 65536; // 0x10000
-    field public static final int TYPE_VIEW_CONTEXT_CLICKED = 8388608; // 0x800000
-    field @Deprecated public static final int TYPE_VIEW_HOVER_ENTER = 128; // 0x80
-    field @Deprecated public static final int TYPE_VIEW_HOVER_EXIT = 256; // 0x100
-    field @Deprecated public static final int TYPE_VIEW_SCROLLED = 4096; // 0x1000
-    field @Deprecated public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
-    field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
-    field public static final int TYPE_WINDOWS_CHANGED = 4194304; // 0x400000
-    field @Deprecated public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
-  }
-
-  public final class AccessibilityManagerCompat {
-    method @Deprecated public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
-    method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
-    method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getEnabledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!, int);
-    method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getInstalledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!);
-    method @Deprecated public static boolean isTouchExplorationEnabled(android.view.accessibility.AccessibilityManager!);
-    method @Deprecated public static boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
-    method public static boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
-  }
-
-  @Deprecated public static interface AccessibilityManagerCompat.AccessibilityStateChangeListener {
-    method @Deprecated public void onAccessibilityStateChanged(boolean);
-  }
-
-  @Deprecated public abstract static class AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat implements androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener {
-    ctor @Deprecated public AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat();
-  }
-
-  public static interface AccessibilityManagerCompat.TouchExplorationStateChangeListener {
-    method public void onTouchExplorationStateChanged(boolean);
-  }
-
-  public class AccessibilityNodeInfoCompat {
-    ctor @Deprecated public AccessibilityNodeInfoCompat(Object!);
-    method public void addAction(int);
-    method public void addAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
-    method public void addChild(android.view.View!);
-    method public void addChild(android.view.View!, int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void addSpansToExtras(CharSequence!, android.view.View!);
-    method public boolean canOpenPopup();
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByText(String!);
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByViewId(String!);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! findFocus(int);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! focusSearch(int);
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!>! getActionList();
-    method public int getActions();
-    method @Deprecated public void getBoundsInParent(android.graphics.Rect!);
-    method public void getBoundsInScreen(android.graphics.Rect!);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getChild(int);
-    method public int getChildCount();
-    method public CharSequence! getClassName();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.text.style.ClickableSpan![]! getClickableSpans(CharSequence!);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! getCollectionInfo();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! getCollectionItemInfo();
-    method public CharSequence! getContentDescription();
-    method public int getDrawingOrder();
-    method public CharSequence! getError();
-    method public android.os.Bundle! getExtras();
-    method public CharSequence? getHintText();
-    method @Deprecated public Object! getInfo();
-    method public int getInputType();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabelFor();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabeledBy();
-    method public int getLiveRegion();
-    method public int getMaxTextLength();
-    method public int getMovementGranularities();
-    method public CharSequence! getPackageName();
-    method public CharSequence? getPaneTitle();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
-    method public CharSequence? getRoleDescription();
-    method public CharSequence! getText();
-    method public int getTextSelectionEnd();
-    method public int getTextSelectionStart();
-    method public CharSequence? getTooltipText();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat? getTouchDelegateInfo();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalAfter();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalBefore();
-    method public String! getViewIdResourceName();
-    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getWindow();
-    method public int getWindowId();
-    method public boolean isAccessibilityFocused();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isClickable();
-    method public boolean isContentInvalid();
-    method public boolean isContextClickable();
-    method public boolean isDismissable();
-    method public boolean isEditable();
-    method public boolean isEnabled();
-    method public boolean isFocusable();
-    method public boolean isFocused();
-    method public boolean isHeading();
-    method public boolean isImportantForAccessibility();
-    method public boolean isLongClickable();
-    method public boolean isMultiLine();
-    method public boolean isPassword();
-    method public boolean isScreenReaderFocusable();
-    method public boolean isScrollable();
-    method public boolean isSelected();
-    method public boolean isShowingHintText();
-    method public boolean isTextEntryKey();
-    method public boolean isVisibleToUser();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!, int);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
-    method public boolean performAction(int);
-    method public boolean performAction(int, android.os.Bundle!);
-    method public void recycle();
-    method public boolean refresh();
-    method public boolean removeAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
-    method public boolean removeChild(android.view.View!);
-    method public boolean removeChild(android.view.View!, int);
-    method public void setAccessibilityFocused(boolean);
-    method @Deprecated public void setBoundsInParent(android.graphics.Rect!);
-    method public void setBoundsInScreen(android.graphics.Rect!);
-    method public void setCanOpenPopup(boolean);
-    method public void setCheckable(boolean);
-    method public void setChecked(boolean);
-    method public void setClassName(CharSequence!);
-    method public void setClickable(boolean);
-    method public void setCollectionInfo(Object!);
-    method public void setCollectionItemInfo(Object!);
-    method public void setContentDescription(CharSequence!);
-    method public void setContentInvalid(boolean);
-    method public void setContextClickable(boolean);
-    method public void setDismissable(boolean);
-    method public void setDrawingOrder(int);
-    method public void setEditable(boolean);
-    method public void setEnabled(boolean);
-    method public void setError(CharSequence!);
-    method public void setFocusable(boolean);
-    method public void setFocused(boolean);
-    method public void setHeading(boolean);
-    method public void setHintText(CharSequence?);
-    method public void setImportantForAccessibility(boolean);
-    method public void setInputType(int);
-    method public void setLabelFor(android.view.View!);
-    method public void setLabelFor(android.view.View!, int);
-    method public void setLabeledBy(android.view.View!);
-    method public void setLabeledBy(android.view.View!, int);
-    method public void setLiveRegion(int);
-    method public void setLongClickable(boolean);
-    method public void setMaxTextLength(int);
-    method public void setMovementGranularities(int);
-    method public void setMultiLine(boolean);
-    method public void setPackageName(CharSequence!);
-    method public void setPaneTitle(CharSequence?);
-    method public void setParent(android.view.View!);
-    method public void setParent(android.view.View!, int);
-    method public void setPassword(boolean);
-    method public void setRangeInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat!);
-    method public void setRoleDescription(CharSequence?);
-    method public void setScreenReaderFocusable(boolean);
-    method public void setScrollable(boolean);
-    method public void setSelected(boolean);
-    method public void setShowingHintText(boolean);
-    method public void setSource(android.view.View!);
-    method public void setSource(android.view.View!, int);
-    method public void setText(CharSequence!);
-    method public void setTextEntryKey(boolean);
-    method public void setTextSelection(int, int);
-    method public void setTooltipText(CharSequence?);
-    method public void setTouchDelegateInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat);
-    method public void setTraversalAfter(android.view.View!);
-    method public void setTraversalAfter(android.view.View!, int);
-    method public void setTraversalBefore(android.view.View!);
-    method public void setTraversalBefore(android.view.View!, int);
-    method public void setViewIdResourceName(String!);
-    method public void setVisibleToUser(boolean);
-    method public android.view.accessibility.AccessibilityNodeInfo! unwrap();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! wrap(android.view.accessibility.AccessibilityNodeInfo);
-    field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
-    field public static final String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
-    field public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
-    field public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
-    field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
-    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
-    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
-    field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
-    field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
-    field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
-    field public static final String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
-    field public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
-    field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
-    field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
-    field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
-    field public static final int ACTION_CLICK = 16; // 0x10
-    field public static final int ACTION_COLLAPSE = 524288; // 0x80000
-    field public static final int ACTION_COPY = 16384; // 0x4000
-    field public static final int ACTION_CUT = 65536; // 0x10000
-    field public static final int ACTION_DISMISS = 1048576; // 0x100000
-    field public static final int ACTION_EXPAND = 262144; // 0x40000
-    field public static final int ACTION_FOCUS = 1; // 0x1
-    field public static final int ACTION_LONG_CLICK = 32; // 0x20
-    field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
-    field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
-    field public static final int ACTION_PASTE = 32768; // 0x8000
-    field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
-    field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
-    field public static final int ACTION_SCROLL_BACKWARD = 8192; // 0x2000
-    field public static final int ACTION_SCROLL_FORWARD = 4096; // 0x1000
-    field public static final int ACTION_SELECT = 4; // 0x4
-    field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
-    field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
-    field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
-    field public static final int FOCUS_INPUT = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
-    field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
-    field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
-    field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mParentVirtualDescendantId;
-  }
-
-  public static class AccessibilityNodeInfoCompat.AccessibilityActionCompat {
-    ctor public AccessibilityNodeInfoCompat.AccessibilityActionCompat(int, CharSequence!);
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public AccessibilityNodeInfoCompat.AccessibilityActionCompat(int, CharSequence!, androidx.core.view.accessibility.AccessibilityViewCommand!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! createReplacementAction(CharSequence!, androidx.core.view.accessibility.AccessibilityViewCommand!);
-    method public int getId();
-    method public CharSequence! getLabel();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean perform(android.view.View!, android.os.Bundle!);
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_ACCESSIBILITY_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_ACCESSIBILITY_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_SELECTION;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLICK;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COLLAPSE;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CONTEXT_CLICK;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COPY;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CUT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_DISMISS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_HTML_ELEMENT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_DOWN;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_LEFT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_DOWN;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_FORWARD;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_LEFT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_RIGHT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_TO_POSITION;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_UP;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SELECT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_PROGRESS;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_SELECTION;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_TEXT;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_ON_SCREEN;
-    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_TOOLTIP;
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected final androidx.core.view.accessibility.AccessibilityViewCommand! mCommand;
-  }
-
-  public static class AccessibilityNodeInfoCompat.CollectionInfoCompat {
-    method public int getColumnCount();
-    method public int getRowCount();
-    method public int getSelectionMode();
-    method public boolean isHierarchical();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean, int);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean);
-    field public static final int SELECTION_MODE_MULTIPLE = 2; // 0x2
-    field public static final int SELECTION_MODE_NONE = 0; // 0x0
-    field public static final int SELECTION_MODE_SINGLE = 1; // 0x1
-  }
-
-  public static class AccessibilityNodeInfoCompat.CollectionItemInfoCompat {
-    method public int getColumnIndex();
-    method public int getColumnSpan();
-    method public int getRowIndex();
-    method public int getRowSpan();
-    method @Deprecated public boolean isHeading();
-    method public boolean isSelected();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean, boolean);
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean);
-  }
-
-  public static class AccessibilityNodeInfoCompat.RangeInfoCompat {
-    method public float getCurrent();
-    method public float getMax();
-    method public float getMin();
-    method public int getType();
-    method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! obtain(int, float, float, float);
-    field public static final int RANGE_TYPE_FLOAT = 1; // 0x1
-    field public static final int RANGE_TYPE_INT = 0; // 0x0
-    field public static final int RANGE_TYPE_PERCENT = 2; // 0x2
-  }
-
-  public static final class AccessibilityNodeInfoCompat.TouchDelegateInfoCompat {
-    ctor public AccessibilityNodeInfoCompat.TouchDelegateInfoCompat(java.util.Map<android.graphics.Region!,android.view.View!>);
-    method public android.graphics.Region? getRegionAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getRegionCount();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? getTargetForRegion(android.graphics.Region);
-  }
-
-  public class AccessibilityNodeProviderCompat {
-    ctor public AccessibilityNodeProviderCompat();
-    ctor public AccessibilityNodeProviderCompat(Object!);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? createAccessibilityNodeInfo(int);
-    method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>? findAccessibilityNodeInfosByText(String!, int);
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? findFocus(int);
-    method public Object! getProvider();
-    method public boolean performAction(int, int, android.os.Bundle!);
-    field public static final int HOST_VIEW_ID = -1; // 0xffffffff
-  }
-
-  public class AccessibilityRecordCompat {
-    ctor @Deprecated public AccessibilityRecordCompat(Object!);
-    method @Deprecated public boolean equals(Object?);
-    method @Deprecated public int getAddedCount();
-    method @Deprecated public CharSequence! getBeforeText();
-    method @Deprecated public CharSequence! getClassName();
-    method @Deprecated public CharSequence! getContentDescription();
-    method @Deprecated public int getCurrentItemIndex();
-    method @Deprecated public int getFromIndex();
-    method @Deprecated public Object! getImpl();
-    method @Deprecated public int getItemCount();
-    method @Deprecated public int getMaxScrollX();
-    method public static int getMaxScrollX(android.view.accessibility.AccessibilityRecord!);
-    method @Deprecated public int getMaxScrollY();
-    method public static int getMaxScrollY(android.view.accessibility.AccessibilityRecord!);
-    method @Deprecated public android.os.Parcelable! getParcelableData();
-    method @Deprecated public int getRemovedCount();
-    method @Deprecated public int getScrollX();
-    method @Deprecated public int getScrollY();
-    method @Deprecated public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getSource();
-    method @Deprecated public java.util.List<java.lang.CharSequence!>! getText();
-    method @Deprecated public int getToIndex();
-    method @Deprecated public int getWindowId();
-    method @Deprecated public int hashCode();
-    method @Deprecated public boolean isChecked();
-    method @Deprecated public boolean isEnabled();
-    method @Deprecated public boolean isFullScreen();
-    method @Deprecated public boolean isPassword();
-    method @Deprecated public boolean isScrollable();
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain(androidx.core.view.accessibility.AccessibilityRecordCompat!);
-    method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain();
-    method @Deprecated public void recycle();
-    method @Deprecated public void setAddedCount(int);
-    method @Deprecated public void setBeforeText(CharSequence!);
-    method @Deprecated public void setChecked(boolean);
-    method @Deprecated public void setClassName(CharSequence!);
-    method @Deprecated public void setContentDescription(CharSequence!);
-    method @Deprecated public void setCurrentItemIndex(int);
-    method @Deprecated public void setEnabled(boolean);
-    method @Deprecated public void setFromIndex(int);
-    method @Deprecated public void setFullScreen(boolean);
-    method @Deprecated public void setItemCount(int);
-    method @Deprecated public void setMaxScrollX(int);
-    method public static void setMaxScrollX(android.view.accessibility.AccessibilityRecord!, int);
-    method @Deprecated public void setMaxScrollY(int);
-    method public static void setMaxScrollY(android.view.accessibility.AccessibilityRecord!, int);
-    method @Deprecated public void setParcelableData(android.os.Parcelable!);
-    method @Deprecated public void setPassword(boolean);
-    method @Deprecated public void setRemovedCount(int);
-    method @Deprecated public void setScrollX(int);
-    method @Deprecated public void setScrollY(int);
-    method @Deprecated public void setScrollable(boolean);
-    method @Deprecated public void setSource(android.view.View!);
-    method @Deprecated public void setSource(android.view.View!, int);
-    method public static void setSource(android.view.accessibility.AccessibilityRecord, android.view.View!, int);
-    method @Deprecated public void setToIndex(int);
-  }
-
-  public interface AccessibilityViewCommand {
-    method public boolean perform(android.view.View, androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments?);
-  }
-
-  public abstract static class AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.CommandArguments();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setBundle(android.os.Bundle!);
-  }
-
-  public static final class AccessibilityViewCommand.MoveAtGranularityArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.MoveAtGranularityArguments();
-    method public boolean getExtendSelection();
-    method public int getGranularity();
-  }
-
-  public static final class AccessibilityViewCommand.MoveHtmlArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.MoveHtmlArguments();
-    method public String! getHTMLElement();
-  }
-
-  public static final class AccessibilityViewCommand.MoveWindowArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.MoveWindowArguments();
-    method public int getX();
-    method public int getY();
-  }
-
-  public static final class AccessibilityViewCommand.ScrollToPositionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.ScrollToPositionArguments();
-    method public int getColumn();
-    method public int getRow();
-  }
-
-  public static final class AccessibilityViewCommand.SetProgressArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.SetProgressArguments();
-    method public float getProgress();
-  }
-
-  public static final class AccessibilityViewCommand.SetSelectionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.SetSelectionArguments();
-    method public int getEnd();
-    method public int getStart();
-  }
-
-  public static final class AccessibilityViewCommand.SetTextArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
-    ctor public AccessibilityViewCommand.SetTextArguments();
-    method public CharSequence! getText();
-  }
-
-  public class AccessibilityWindowInfoCompat {
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getAnchor();
-    method public void getBoundsInScreen(android.graphics.Rect!);
-    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getChild(int);
-    method public int getChildCount();
-    method public int getId();
-    method public int getLayer();
-    method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getParent();
-    method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getRoot();
-    method public CharSequence! getTitle();
-    method public int getType();
-    method public boolean isAccessibilityFocused();
-    method public boolean isActive();
-    method public boolean isFocused();
-    method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain();
-    method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityWindowInfoCompat!);
-    method public void recycle();
-    field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4
-    field public static final int TYPE_APPLICATION = 1; // 0x1
-    field public static final int TYPE_INPUT_METHOD = 2; // 0x2
-    field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
-    field public static final int TYPE_SYSTEM = 3; // 0x3
-  }
-
-}
-
-package androidx.core.view.animation {
-
-  public final class PathInterpolatorCompat {
-    method public static android.view.animation.Interpolator! create(android.graphics.Path!);
-    method public static android.view.animation.Interpolator! create(float, float);
-    method public static android.view.animation.Interpolator! create(float, float, float, float);
-  }
-
-}
-
-package androidx.core.view.inputmethod {
-
-  public final class EditorInfoCompat {
-    ctor @Deprecated public EditorInfoCompat();
-    method public static String![] getContentMimeTypes(android.view.inputmethod.EditorInfo!);
-    method public static void setContentMimeTypes(android.view.inputmethod.EditorInfo, String![]?);
-    field public static final int IME_FLAG_FORCE_ASCII = -2147483648; // 0x80000000
-    field public static final int IME_FLAG_NO_PERSONALIZED_LEARNING = 16777216; // 0x1000000
-  }
-
-  public final class InputConnectionCompat {
-    ctor @Deprecated public InputConnectionCompat();
-    method public static boolean commitContent(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputContentInfoCompat, int, android.os.Bundle?);
-    method public static android.view.inputmethod.InputConnection createWrapper(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener);
-    field public static final int INPUT_CONTENT_GRANT_READ_URI_PERMISSION = 1; // 0x1
-  }
-
-  public static interface InputConnectionCompat.OnCommitContentListener {
-    method public boolean onCommitContent(androidx.core.view.inputmethod.InputContentInfoCompat!, int, android.os.Bundle!);
-  }
-
-  public final class InputContentInfoCompat {
-    ctor public InputContentInfoCompat(android.net.Uri, android.content.ClipDescription, android.net.Uri?);
-    method public android.net.Uri getContentUri();
-    method public android.content.ClipDescription getDescription();
-    method public android.net.Uri? getLinkUri();
-    method public void releasePermission();
-    method public void requestPermission();
-    method public Object? unwrap();
-    method public static androidx.core.view.inputmethod.InputContentInfoCompat? wrap(Object?);
-  }
-
-}
-
-package androidx.core.widget {
-
-  public abstract class AutoScrollHelper implements android.view.View.OnTouchListener {
-    ctor public AutoScrollHelper(android.view.View);
-    method public abstract boolean canTargetScrollHorizontally(int);
-    method public abstract boolean canTargetScrollVertically(int);
-    method public boolean isEnabled();
-    method public boolean isExclusive();
-    method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
-    method public abstract void scrollTargetBy(int, int);
-    method public androidx.core.widget.AutoScrollHelper setActivationDelay(int);
-    method public androidx.core.widget.AutoScrollHelper setEdgeType(int);
-    method public androidx.core.widget.AutoScrollHelper! setEnabled(boolean);
-    method public androidx.core.widget.AutoScrollHelper! setExclusive(boolean);
-    method public androidx.core.widget.AutoScrollHelper setMaximumEdges(float, float);
-    method public androidx.core.widget.AutoScrollHelper setMaximumVelocity(float, float);
-    method public androidx.core.widget.AutoScrollHelper setMinimumVelocity(float, float);
-    method public androidx.core.widget.AutoScrollHelper setRampDownDuration(int);
-    method public androidx.core.widget.AutoScrollHelper setRampUpDuration(int);
-    method public androidx.core.widget.AutoScrollHelper setRelativeEdges(float, float);
-    method public androidx.core.widget.AutoScrollHelper setRelativeVelocity(float, float);
-    field public static final int EDGE_TYPE_INSIDE = 0; // 0x0
-    field public static final int EDGE_TYPE_INSIDE_EXTEND = 1; // 0x1
-    field public static final int EDGE_TYPE_OUTSIDE = 2; // 0x2
-    field public static final float NO_MAX = 3.4028235E38f;
-    field public static final float NO_MIN = 0.0f;
-    field public static final float RELATIVE_UNSPECIFIED = 0.0f;
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface AutoSizeableTextView {
-    method public int getAutoSizeMaxTextSize();
-    method public int getAutoSizeMinTextSize();
-    method public int getAutoSizeStepGranularity();
-    method public int[]! getAutoSizeTextAvailableSizes();
-    method @androidx.core.widget.TextViewCompat.AutoSizeTextType public int getAutoSizeTextType();
-    method public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) throws java.lang.IllegalArgumentException;
-    method public void setAutoSizeTextTypeUniformWithPresetSizes(int[], int) throws java.lang.IllegalArgumentException;
-    method public void setAutoSizeTextTypeWithDefaults(@androidx.core.widget.TextViewCompat.AutoSizeTextType int);
-    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final boolean PLATFORM_SUPPORTS_AUTOSIZE;
-  }
-
-  public final class CompoundButtonCompat {
-    method public static android.graphics.drawable.Drawable? getButtonDrawable(android.widget.CompoundButton);
-    method public static android.content.res.ColorStateList? getButtonTintList(android.widget.CompoundButton);
-    method public static android.graphics.PorterDuff.Mode? getButtonTintMode(android.widget.CompoundButton);
-    method public static void setButtonTintList(android.widget.CompoundButton, android.content.res.ColorStateList?);
-    method public static void setButtonTintMode(android.widget.CompoundButton, android.graphics.PorterDuff.Mode?);
-  }
-
-  public class ContentLoadingProgressBar extends android.widget.ProgressBar {
-    ctor public ContentLoadingProgressBar(android.content.Context);
-    ctor public ContentLoadingProgressBar(android.content.Context, android.util.AttributeSet?);
-    method public void hide();
-    method public void onAttachedToWindow();
-    method public void onDetachedFromWindow();
-    method public void show();
-  }
-
-  public final class EdgeEffectCompat {
-    ctor @Deprecated public EdgeEffectCompat(android.content.Context!);
-    method @Deprecated public boolean draw(android.graphics.Canvas!);
-    method @Deprecated public void finish();
-    method @Deprecated public boolean isFinished();
-    method @Deprecated public boolean onAbsorb(int);
-    method @Deprecated public boolean onPull(float);
-    method @Deprecated public boolean onPull(float, float);
-    method public static void onPull(android.widget.EdgeEffect, float, float);
-    method @Deprecated public boolean onRelease();
-    method @Deprecated public void setSize(int, int);
-  }
-
-  public class ImageViewCompat {
-    method public static android.content.res.ColorStateList? getImageTintList(android.widget.ImageView);
-    method public static android.graphics.PorterDuff.Mode? getImageTintMode(android.widget.ImageView);
-    method public static void setImageTintList(android.widget.ImageView, android.content.res.ColorStateList?);
-    method public static void setImageTintMode(android.widget.ImageView, android.graphics.PorterDuff.Mode?);
-  }
-
-  public final class ListPopupWindowCompat {
-    method @Deprecated public static android.view.View.OnTouchListener! createDragToOpenListener(Object!, android.view.View!);
-    method public static android.view.View.OnTouchListener? createDragToOpenListener(android.widget.ListPopupWindow, android.view.View);
-  }
-
-  public class ListViewAutoScrollHelper extends androidx.core.widget.AutoScrollHelper {
-    ctor public ListViewAutoScrollHelper(android.widget.ListView);
-    method public boolean canTargetScrollHorizontally(int);
-    method public boolean canTargetScrollVertically(int);
-    method public void scrollTargetBy(int, int);
-  }
-
-  public final class ListViewCompat {
-    method public static boolean canScrollList(android.widget.ListView, int);
-    method public static void scrollListBy(android.widget.ListView, int);
-  }
-
-  public class NestedScrollView extends android.widget.FrameLayout implements androidx.core.view.NestedScrollingChild3 androidx.core.view.NestedScrollingParent3 androidx.core.view.ScrollingView {
-    ctor public NestedScrollView(android.content.Context);
-    ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?);
-    ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?, int);
-    method public boolean arrowScroll(int);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollExtent();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollOffset();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollRange();
-    method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollExtent();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollOffset();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollRange();
-    method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
-    method public boolean executeKeyEvent(android.view.KeyEvent);
-    method public void fling(int);
-    method public boolean fullScroll(int);
-    method public int getMaxScrollAmount();
-    method public boolean hasNestedScrollingParent(int);
-    method public boolean isFillViewport();
-    method public boolean isSmoothScrollingEnabled();
-    method public void onAttachedToWindow();
-    method public void onNestedPreScroll(android.view.View, int, int, int[], int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
-    method public void onStopNestedScroll(android.view.View, int);
-    method public boolean pageScroll(int);
-    method public void setFillViewport(boolean);
-    method public void setOnScrollChangeListener(androidx.core.widget.NestedScrollView.OnScrollChangeListener?);
-    method public void setSmoothScrollingEnabled(boolean);
-    method public final void smoothScrollBy(int, int);
-    method public final void smoothScrollBy(int, int, int);
-    method public final void smoothScrollTo(int, int);
-    method public final void smoothScrollTo(int, int, int);
-    method public boolean startNestedScroll(int, int);
-    method public void stopNestedScroll(int);
-  }
-
-  public static interface NestedScrollView.OnScrollChangeListener {
-    method public void onScrollChange(androidx.core.widget.NestedScrollView!, int, int, int, int);
-  }
-
-  public final class PopupMenuCompat {
-    method public static android.view.View.OnTouchListener? getDragToOpenListener(Object);
-  }
-
-  public final class PopupWindowCompat {
-    method public static boolean getOverlapAnchor(android.widget.PopupWindow);
-    method public static int getWindowLayoutType(android.widget.PopupWindow);
-    method public static void setOverlapAnchor(android.widget.PopupWindow, boolean);
-    method public static void setWindowLayoutType(android.widget.PopupWindow, int);
-    method public static void showAsDropDown(android.widget.PopupWindow, android.view.View, int, int, int);
-  }
-
-  @Deprecated public final class ScrollerCompat {
-    method @Deprecated public void abortAnimation();
-    method @Deprecated public boolean computeScrollOffset();
-    method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!);
-    method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!, android.view.animation.Interpolator!);
-    method @Deprecated public void fling(int, int, int, int, int, int, int, int);
-    method @Deprecated public void fling(int, int, int, int, int, int, int, int, int, int);
-    method @Deprecated public float getCurrVelocity();
-    method @Deprecated public int getCurrX();
-    method @Deprecated public int getCurrY();
-    method @Deprecated public int getFinalX();
-    method @Deprecated public int getFinalY();
-    method @Deprecated public boolean isFinished();
-    method @Deprecated public boolean isOverScrolled();
-    method @Deprecated public void notifyHorizontalEdgeReached(int, int, int);
-    method @Deprecated public void notifyVerticalEdgeReached(int, int, int);
-    method @Deprecated public boolean springBack(int, int, int, int, int, int);
-    method @Deprecated public void startScroll(int, int, int, int);
-    method @Deprecated public void startScroll(int, int, int, int, int);
-  }
-
-  public final class TextViewCompat {
-    method public static int getAutoSizeMaxTextSize(android.widget.TextView);
-    method public static int getAutoSizeMinTextSize(android.widget.TextView);
-    method public static int getAutoSizeStepGranularity(android.widget.TextView);
-    method public static int[] getAutoSizeTextAvailableSizes(android.widget.TextView);
-    method public static int getAutoSizeTextType(android.widget.TextView);
-    method public static android.content.res.ColorStateList? getCompoundDrawableTintList(android.widget.TextView);
-    method public static android.graphics.PorterDuff.Mode? getCompoundDrawableTintMode(android.widget.TextView);
-    method public static android.graphics.drawable.Drawable![] getCompoundDrawablesRelative(android.widget.TextView);
-    method public static int getFirstBaselineToTopHeight(android.widget.TextView);
-    method public static int getLastBaselineToBottomHeight(android.widget.TextView);
-    method public static int getMaxLines(android.widget.TextView);
-    method public static int getMinLines(android.widget.TextView);
-    method public static androidx.core.text.PrecomputedTextCompat.Params getTextMetricsParams(android.widget.TextView);
-    method public static void setAutoSizeTextTypeUniformWithConfiguration(android.widget.TextView, int, int, int, int) throws java.lang.IllegalArgumentException;
-    method public static void setAutoSizeTextTypeUniformWithPresetSizes(android.widget.TextView, int[], int) throws java.lang.IllegalArgumentException;
-    method public static void setAutoSizeTextTypeWithDefaults(android.widget.TextView, int);
-    method public static void setCompoundDrawableTintList(android.widget.TextView, android.content.res.ColorStateList?);
-    method public static void setCompoundDrawableTintMode(android.widget.TextView, android.graphics.PorterDuff.Mode?);
-    method public static void setCompoundDrawablesRelative(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
-    method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
-    method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, @DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
-    method public static void setCustomSelectionActionModeCallback(android.widget.TextView, android.view.ActionMode.Callback);
-    method public static void setFirstBaselineToTopHeight(android.widget.TextView, @IntRange(from=0) @Px int);
-    method public static void setLastBaselineToBottomHeight(android.widget.TextView, @IntRange(from=0) @Px int);
-    method public static void setLineHeight(android.widget.TextView, @IntRange(from=0) @Px int);
-    method public static void setPrecomputedText(android.widget.TextView, androidx.core.text.PrecomputedTextCompat);
-    method public static void setTextAppearance(android.widget.TextView, @StyleRes int);
-    method public static void setTextMetricsParams(android.widget.TextView, androidx.core.text.PrecomputedTextCompat.Params);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.view.ActionMode.Callback wrapCustomSelectionActionModeCallback(android.widget.TextView, android.view.ActionMode.Callback);
-    field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
-    field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
-  }
-
-  @IntDef({androidx.core.widget.TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE, androidx.core.widget.TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface TextViewCompat.AutoSizeTextType {
-  }
-
-  public interface TintableCompoundButton {
-    method public android.content.res.ColorStateList? getSupportButtonTintList();
-    method public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
-    method public void setSupportButtonTintList(android.content.res.ColorStateList?);
-    method public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  public interface TintableCompoundDrawablesView {
-    method public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
-    method public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
-    method public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
-    method public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface TintableImageSourceView {
-    method public android.content.res.ColorStateList? getSupportImageTintList();
-    method public android.graphics.PorterDuff.Mode? getSupportImageTintMode();
-    method public void setSupportImageTintList(android.content.res.ColorStateList?);
-    method public void setSupportImageTintMode(android.graphics.PorterDuff.Mode?);
-  }
-
-}
-
diff --git a/core/core/api/restricted_1.4.0-alpha01.txt b/core/core/api/restricted_1.4.0-alpha01.txt
index 7b3106b..fc0b9b36 100644
--- a/core/core/api/restricted_1.4.0-alpha01.txt
+++ b/core/core/api/restricted_1.4.0-alpha01.txt
@@ -1077,6 +1077,7 @@
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
+    method public static boolean pushDynamicShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
@@ -3084,6 +3085,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_IME_ENTER;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
diff --git a/core/core/api/restricted_current.txt b/core/core/api/restricted_current.txt
index 7b3106b..46ed0bf 100644
--- a/core/core/api/restricted_current.txt
+++ b/core/core/api/restricted_current.txt
@@ -445,7 +445,8 @@
     method public androidx.core.app.NotificationCompat.Builder! addExtras(android.os.Bundle!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(int, CharSequence!, android.app.PendingIntent!);
     method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder! addInvisibleAction(androidx.core.app.NotificationCompat.Action!);
-    method public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method @Deprecated public androidx.core.app.NotificationCompat.Builder! addPerson(String!);
+    method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person);
     method public android.app.Notification! build();
     method public androidx.core.app.NotificationCompat.Builder! extend(androidx.core.app.NotificationCompat.Extender!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! getBigContentView();
@@ -496,6 +497,7 @@
     method public androidx.core.app.NotificationCompat.Builder! setRemoteInputHistory(CharSequence![]!);
     method public androidx.core.app.NotificationCompat.Builder! setShortcutId(String!);
     method public androidx.core.app.NotificationCompat.Builder! setShowWhen(boolean);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(androidx.core.graphics.drawable.IconCompat);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int);
     method public androidx.core.app.NotificationCompat.Builder! setSmallIcon(int, int);
     method public androidx.core.app.NotificationCompat.Builder! setSortKey(String!);
@@ -513,6 +515,7 @@
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public java.util.ArrayList<androidx.core.app.NotificationCompat.Action!>! mActions;
     field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.Context! mContext;
     field @Deprecated public java.util.ArrayList<java.lang.String!>! mPeople;
+    field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public java.util.ArrayList<androidx.core.app.Person!> mPersonList;
   }
 
   public static final class NotificationCompat.CarExtender implements androidx.core.app.NotificationCompat.Extender {
@@ -735,6 +738,7 @@
     method public String? getUri();
     method public boolean isBot();
     method public boolean isImportant();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String resolveToLegacyUri();
     method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.app.Person toAndroidPerson();
     method public androidx.core.app.Person.Builder toBuilder();
     method public android.os.Bundle toBundle();
@@ -969,7 +973,9 @@
 
   public final class IntentCompat {
     method public static android.content.Intent makeMainSelectorActivity(String, String);
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+    field public static final String EXTRA_EPOCH_TIME = "android.intent.extra.EPOCH_TIME";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
   }
@@ -1030,14 +1036,26 @@
     method public android.content.ComponentName? getActivity();
     method public java.util.Set<java.lang.String!>? getCategories();
     method public CharSequence? getDisabledMessage();
+    method public int getDisabledReason();
+    method public android.os.PersistableBundle? getExtras();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.core.graphics.drawable.IconCompat! getIcon();
     method public String getId();
     method public android.content.Intent getIntent();
     method public android.content.Intent![] getIntents();
+    method public long getLastChangedTimestamp();
     method public androidx.core.content.LocusIdCompat? getLocusId();
     method public CharSequence? getLongLabel();
+    method public String getPackage();
     method public int getRank();
     method public CharSequence getShortLabel();
+    method public android.os.UserHandle? getUserHandle();
+    method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
+    method public boolean isDeclaredInManifest();
+    method public boolean isDynamic();
+    method public boolean isEnabled();
+    method public boolean isImmutable();
+    method public boolean isPinned();
     method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
   }
 
@@ -1050,6 +1068,7 @@
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+    method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
     method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
@@ -1074,14 +1093,31 @@
   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);
+    method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+    method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
+    method public static int getIconMaxHeight(android.content.Context);
+    method public static int getIconMaxWidth(android.content.Context);
     method public static int getMaxShortcutCountPerActivity(android.content.Context);
+    method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, @androidx.core.content.pm.ShortcutManagerCompat.ShortcutMatchFlags int);
+    method public static boolean isRateLimitingActive(android.content.Context);
     method public static boolean isRequestPinShortcutSupported(android.content.Context);
+    method public static boolean pushDynamicShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
     method public static void removeAllDynamicShortcuts(android.content.Context);
     method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+    method public static void reportShortcutUsed(android.content.Context, String);
     method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
+    method public static boolean setDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
     field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
+  }
+
+  @IntDef(flag=true, value={androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_MANIFEST, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_DYNAMIC, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_PINNED, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_CACHED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ShortcutManagerCompat.ShortcutMatchFlags {
   }
 
 }
@@ -1411,6 +1447,7 @@
     method public String getResPackage();
     method public int getType();
     method public android.net.Uri getUri();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public java.io.InputStream? getUriInputStream(android.content.Context);
     method public android.graphics.drawable.Drawable? loadDrawable(android.content.Context);
     method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
     method public androidx.core.graphics.drawable.IconCompat! setTintList(android.content.res.ColorStateList!);
@@ -1559,8 +1596,43 @@
 
 package androidx.core.location {
 
+  public abstract class GnssStatusCompat {
+    method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+    method public abstract int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public abstract int getSatelliteCount();
+    method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+    method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+    method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+    method public abstract boolean usedInFix(@IntRange(from=0) int);
+    method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+    method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssStatusCompat.Callback {
+    ctor public GnssStatusCompat.Callback();
+    method public void onFirstFix(@IntRange(from=0) int);
+    method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
   public final class LocationManagerCompat {
     method public static boolean isLocationEnabled(android.location.LocationManager);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+    method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
   }
 
 }
@@ -1648,6 +1720,11 @@
     method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
   }
 
+  public class HandlerExecutor implements java.util.concurrent.Executor {
+    ctor public HandlerExecutor(android.os.Handler);
+    method public void execute(Runnable);
+  }
+
   public final class LocaleListCompat {
     method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
     method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
@@ -2084,11 +2161,13 @@
 
   public final class DisplayCutoutCompat {
     ctor public DisplayCutoutCompat(android.graphics.Rect!, java.util.List<android.graphics.Rect!>!);
+    ctor public DisplayCutoutCompat(androidx.core.graphics.Insets, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, androidx.core.graphics.Insets);
     method public java.util.List<android.graphics.Rect!>! getBoundingRects();
     method public int getSafeInsetBottom();
     method public int getSafeInsetLeft();
     method public int getSafeInsetRight();
     method public int getSafeInsetTop();
+    method public androidx.core.graphics.Insets getWaterfallInsets();
   }
 
   public final class DragAndDropPermissionsCompat {
@@ -2500,6 +2579,7 @@
     method @Deprecated public static float getScaleX(android.view.View!);
     method @Deprecated public static float getScaleY(android.view.View!);
     method public static int getScrollIndicators(android.view.View);
+    method @UiThread public static final CharSequence? getStateDescription(android.view.View);
     method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
     method public static String? getTransitionName(android.view.View);
     method @Deprecated public static float getTranslationX(android.view.View!);
@@ -2590,6 +2670,7 @@
     method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
     method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int);
     method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int, @androidx.core.view.ViewCompat.ScrollIndicators int);
+    method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
     method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
     method public static void setTooltipText(android.view.View, CharSequence?);
     method public static void setTransitionName(android.view.View, String!);
@@ -2823,17 +2904,18 @@
     method @Deprecated public static void appendRecord(android.view.accessibility.AccessibilityEvent!, androidx.core.view.accessibility.AccessibilityRecordCompat!);
     method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! asRecord(android.view.accessibility.AccessibilityEvent!);
     method public static int getAction(android.view.accessibility.AccessibilityEvent!);
-    method public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
+    method @androidx.core.view.accessibility.AccessibilityEventCompat.ContentChangeType public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
     method public static int getMovementGranularity(android.view.accessibility.AccessibilityEvent!);
     method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! getRecord(android.view.accessibility.AccessibilityEvent!, int);
     method @Deprecated public static int getRecordCount(android.view.accessibility.AccessibilityEvent!);
     method public static void setAction(android.view.accessibility.AccessibilityEvent!, int);
-    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, int);
+    method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, @androidx.core.view.accessibility.AccessibilityEventCompat.ContentChangeType int);
     method public static void setMovementGranularity(android.view.accessibility.AccessibilityEvent!, int);
     field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
     field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
     field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
     field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
     field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
     field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
     field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
@@ -2858,6 +2940,9 @@
     field @Deprecated public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
   }
 
+  @IntDef(flag=true, value={androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_SUBTREE, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_TEXT, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_UNDEFINED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface AccessibilityEventCompat.ContentChangeType {
+  }
+
   public final class AccessibilityManagerCompat {
     method @Deprecated public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
     method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
@@ -2919,6 +3004,7 @@
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
     method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
     method public CharSequence? getRoleDescription();
+    method public CharSequence? getStateDescription();
     method public CharSequence! getText();
     method public int getTextSelectionEnd();
     method public int getTextSelectionStart();
@@ -3008,6 +3094,7 @@
     method public void setShowingHintText(boolean);
     method public void setSource(android.view.View!);
     method public void setSource(android.view.View!, int);
+    method public void setStateDescription(CharSequence?);
     method public void setText(CharSequence!);
     method public void setTextEntryKey(boolean);
     method public void setTextSelection(int, int);
@@ -3028,6 +3115,7 @@
     field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
     field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
     field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
     field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
     field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -3084,6 +3172,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_IME_ENTER;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
@@ -3093,6 +3182,7 @@
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+    field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
     field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
diff --git a/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java b/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java
index cc26ecb..c2c63e3 100644
--- a/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java
@@ -41,6 +41,7 @@
 import android.content.Intent;
 import android.graphics.BitmapFactory;
 import android.graphics.Color;
+import android.graphics.drawable.Icon;
 import android.media.AudioAttributes;
 import android.media.AudioManager;
 import android.net.Uri;
@@ -48,6 +49,7 @@
 import android.os.Bundle;
 import android.support.v4.BaseInstrumentationTestCase;
 
+import androidx.collection.ArraySet;
 import androidx.core.R;
 import androidx.core.app.NotificationCompat.MessagingStyle.Message;
 import androidx.core.content.LocusIdCompat;
@@ -61,9 +63,9 @@
 import org.junit.runner.RunWith;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
-
 @RunWith(AndroidJUnit4.class)
 @SmallTest
 public class NotificationCompatTest extends BaseInstrumentationTestCase<TestActivity> {
@@ -375,6 +377,19 @@
                 .getAllowGeneratedReplies());
     }
 
+    @Test
+    @SdkSuppress(minSdkVersion = 23)
+    public void testNotificationSmallIcon() {
+        IconCompat icon = IconCompat.createWithResource(mContext,
+                R.drawable.notification_action_background);
+        NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext, null);
+
+        builder.setSmallIcon(icon);
+
+        Notification notification = builder.build();
+
+        assertEquals(icon.toIcon(mContext).toString(), notification.getSmallIcon().toString());
+    }
 
     @SdkSuppress(maxSdkVersion = 16)
     @SmallTest
@@ -491,7 +506,7 @@
     }
 
     @Test
-    public void testSetNotificationSilent() throws Throwable {
+    public void testSetNotificationSilent() {
 
         Notification nSummary = new NotificationCompat.Builder(mActivityTestRule.getActivity())
                 .setVibrate(new long[] {235})
@@ -1315,6 +1330,43 @@
         assertNull(NotificationCompat.getBubbleMetadata(notification));
     }
 
+    @Test
+    public void testPeopleField() {
+        final Person person = new Person.Builder().setName("test name").setKey("key").build();
+        final Person person2 = new Person.Builder()
+                .setName("test name 2").setKey("key 2").setImportant(true).build();
+
+        final Notification notification = new NotificationCompat.Builder(mContext, "test channel")
+                .addPerson("self name")
+                .addPerson(person)
+                .addPerson(person2)
+                .build();
+
+        if (Build.VERSION.SDK_INT >= 28) {
+            final ArrayList<android.app.Person> peopleList =
+                    notification.extras.getParcelableArrayList(Notification.EXTRA_PEOPLE_LIST);
+            final ArraySet<android.app.Person> people = new ArraySet<>(peopleList);
+            final ArraySet<android.app.Person> expected = new ArraySet<>();
+            expected.add(new Person.Builder().setUri("self name").build().toAndroidPerson());
+            expected.add(person.toAndroidPerson());
+            expected.add(person2.toAndroidPerson());
+            assertEquals(expected, people);
+        } else if (Build.VERSION.SDK_INT >= 19) {
+            final String[] peopleArray =
+                    notification.extras.getStringArray(Notification.EXTRA_PEOPLE);
+            if (peopleArray == null) {
+                throw new IllegalStateException("Notification.EXTRA_PEOPLE is null");
+            }
+            final List<String> peopleList = Arrays.asList(peopleArray);
+            final ArraySet<String> people = new ArraySet<>(peopleList);
+            final ArraySet<String> expected = new ArraySet<>();
+            expected.add("name:test name");
+            expected.add("name:test name 2");
+            expected.add("self name");
+            assertEquals(expected, people);
+        }
+    }
+
     // Add the @Test annotation to enable this test. This test is disabled by default as it's not a
     // unit test. This will simply create 4 MessagingStyle notifications so a developer may see what
     // the end result will look like on a physical device (or emulator).
diff --git a/core/core/src/androidTest/java/androidx/core/app/PersonTest.java b/core/core/src/androidTest/java/androidx/core/app/PersonTest.java
index 10c8f72..2f7a774 100644
--- a/core/core/src/androidTest/java/androidx/core/app/PersonTest.java
+++ b/core/core/src/androidTest/java/androidx/core/app/PersonTest.java
@@ -222,4 +222,10 @@
         Person person = new Person.Builder().setImportant(TEST_IS_IMPORTANT).build();
         assertEquals(TEST_IS_IMPORTANT, person.isImportant());
     }
+
+    @Test
+    public void resolveToLegacyUri() {
+        Person person = new Person.Builder().setUri(TEST_URI).build();
+        assertEquals(TEST_URI, person.resolveToLegacyUri());
+    }
 }
diff --git a/core/core/src/androidTest/java/androidx/core/content/pm/ShortcutInfoCompatTest.java b/core/core/src/androidTest/java/androidx/core/content/pm/ShortcutInfoCompatTest.java
index 7405471..87dfd9c 100644
--- a/core/core/src/androidTest/java/androidx/core/content/pm/ShortcutInfoCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/content/pm/ShortcutInfoCompatTest.java
@@ -19,6 +19,7 @@
 import static androidx.core.graphics.drawable.IconCompatTest.verifyBadgeBitmap;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -33,6 +34,8 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ShortcutInfo;
+import android.os.Build;
+import android.os.PersistableBundle;
 
 import androidx.core.app.Person;
 import androidx.core.app.TestActivity;
@@ -49,6 +52,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.lang.reflect.Method;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -58,6 +62,16 @@
 
     private static final String TEST_SHORTCUT_ID = "test-shortcut";
     private static final String TEST_SHORTCUT_SHORT_LABEL = "Test shortcut label";
+    private static final String TEST_EXTRAS_ID = "test-extras-id";
+    private static final String TEST_EXTRAS_VALUE = "test-extras-id-value";
+
+    private static final int FLAG_DYNAMIC = 1 << 0;
+    private static final int FLAG_PINNED = 1 << 1;
+    private static final int FLAG_KEY_FIELDS_ONLY = 1 << 4;
+    private static final int FLAG_MANIFEST = 1 << 5;
+    private static final int FLAG_DISABLED = 1 << 6;
+    private static final int FLAG_IMMUTABLE = 1 << 8;
+    private static final int FLAG_CACHED = 1 << 14;
 
     private Intent mAction;
 
@@ -132,6 +146,7 @@
         assertNull(compat.getDisabledMessage());
         assertNull(compat.getActivity());
         assertNull(compat.getCategories());
+        assertNull(compat.getExtras());
     }
 
     @Test
@@ -144,6 +159,7 @@
         categories.add("cat2");
         LocusIdCompat locusId = new LocusIdCompat("Chat_A_B");
         int rank = 3;
+        PersistableBundle persistableBundle = new PersistableBundle();
         ShortcutInfoCompat compat = mBuilder
                 .setActivity(activity)
                 .setCategories(categories)
@@ -151,6 +167,7 @@
                 .setLongLabel(longLabel)
                 .setLocusId(locusId)
                 .setRank(rank)
+                .setExtras(persistableBundle)
                 .build();
 
         ShortcutInfoCompat copyCompat = new ShortcutInfoCompat.Builder(compat).build();
@@ -163,11 +180,13 @@
         assertEquals(categories, copyCompat.getCategories());
         assertEquals(locusId, copyCompat.getLocusId());
         assertEquals(rank, copyCompat.getRank());
+        assertEquals(persistableBundle, copyCompat.getExtras());
     }
 
     @Test
     @SdkSuppress(minSdkVersion = 26)
-    public void testBuilder_fromShortcutInfo() {
+    public void testBuilder_fromShortcutInfo() throws Exception {
+        final long ts = System.currentTimeMillis();
         String longLabel = "Test long label";
         ComponentName activity = new ComponentName("Package name", "Class name");
         String disabledMessage = "Test disabled message";
@@ -175,6 +194,7 @@
         categories.add("cat1");
         categories.add("cat2");
         int rank = 3;
+        PersistableBundle persistableBundle = new PersistableBundle();
         ShortcutInfo.Builder builder = new ShortcutInfo.Builder(mContext, TEST_SHORTCUT_ID);
         ShortcutInfo shortcut = builder.setIntent(mAction)
                 .setShortLabel(TEST_SHORTCUT_SHORT_LABEL)
@@ -183,8 +203,8 @@
                 .setDisabledMessage(disabledMessage)
                 .setLongLabel(longLabel)
                 .setRank(rank)
+                .setExtras(persistableBundle)
                 .build();
-
         ShortcutInfoCompat compat = new ShortcutInfoCompat.Builder(mContext, shortcut).build();
         assertEquals(TEST_SHORTCUT_ID, compat.getId());
         assertEquals(TEST_SHORTCUT_SHORT_LABEL, compat.getShortLabel());
@@ -195,6 +215,44 @@
         assertEquals(activity, compat.getActivity());
         assertEquals(categories, compat.getCategories());
         assertEquals(rank, compat.getRank());
+        assertEquals(persistableBundle, compat.getExtras());
+        assertEquals(ShortcutInfo.DISABLED_REASON_NOT_DISABLED, compat.getDisabledReason());
+        assertTrue(compat.getLastChangedTimestamp() > ts);
+        assertNotNull(compat.getUserHandle());
+        assertNotNull(compat.getPackage());
+        assertFalse(compat.isCached());
+        assertFalse(compat.isDeclaredInManifest());
+        assertFalse(compat.isDynamic());
+        assertTrue(compat.isEnabled());
+        assertFalse(compat.isImmutable());
+        assertFalse(compat.isPinned());
+        assertFalse(compat.hasKeyFieldsOnly());
+
+        if (Build.VERSION.SDK_INT >= 28) {
+            final Method setDisabledReason = ShortcutInfo.class.getDeclaredMethod(
+                    "setDisabledReason", int.class);
+            setDisabledReason.setAccessible(true);
+            setDisabledReason.invoke(shortcut, ShortcutInfo.DISABLED_REASON_BY_APP);
+        }
+
+        final int flag = FLAG_PINNED | FLAG_DYNAMIC | FLAG_MANIFEST | FLAG_IMMUTABLE | FLAG_DISABLED
+                | FLAG_CACHED | FLAG_KEY_FIELDS_ONLY;
+        final Method replaceFlags = ShortcutInfo.class.getDeclaredMethod("replaceFlags", int.class);
+        replaceFlags.setAccessible(true);
+        replaceFlags.invoke(shortcut, flag);
+
+        compat = new ShortcutInfoCompat.Builder(mContext, shortcut).build();
+        assertEquals(Build.VERSION.SDK_INT >= 28 ? ShortcutInfo.DISABLED_REASON_BY_APP :
+                ShortcutInfo.DISABLED_REASON_UNKNOWN, compat.getDisabledReason());
+        if (Build.VERSION.SDK_INT >= 30) {
+            assertTrue(compat.isCached());
+        }
+        assertTrue(compat.isDeclaredInManifest());
+        assertTrue(compat.isDynamic());
+        assertFalse(compat.isEnabled());
+        assertTrue(compat.isImmutable());
+        assertTrue(compat.isPinned());
+        assertTrue(compat.hasKeyFieldsOnly());
     }
 
     @Test
@@ -206,12 +264,14 @@
         categories.add("cat1");
         categories.add("cat2");
         int rank = 3;
+        PersistableBundle persistableBundle = new PersistableBundle();
         ShortcutInfoCompat compat = mBuilder
                 .setActivity(activity)
                 .setCategories(categories)
                 .setDisabledMessage(disabledMessage)
                 .setLongLabel(longLabel)
                 .setRank(3)
+                .setExtras(persistableBundle)
                 .build();
         assertEquals(TEST_SHORTCUT_ID, compat.getId());
         assertEquals(TEST_SHORTCUT_SHORT_LABEL, compat.getShortLabel());
@@ -221,6 +281,7 @@
         assertEquals(activity, compat.getActivity());
         assertEquals(categories, compat.getCategories());
         assertEquals(rank, compat.getRank());
+        assertEquals(persistableBundle, compat.getExtras());
     }
 
     @Test
@@ -260,17 +321,21 @@
         Person[] persons = {
                 new Person.Builder().setName("P1").build(),
                 new Person.Builder().setName("P2").build()};
+        PersistableBundle persistableBundle = new PersistableBundle();
+        persistableBundle.putString(TEST_EXTRAS_ID, TEST_EXTRAS_VALUE);
         LocusIdCompat locusId = new LocusIdCompat("Chat_A_B");
         ShortcutInfoCompat compat = mBuilder
                 .setPersons(persons)
                 .setLocusId(locusId)
                 .setLongLived(true)
+                .setExtras(persistableBundle)
                 .build();
 
         ShortcutInfo shortcut = compat.toShortcutInfo();
 
         assertNotNull(shortcut.getExtras());
         assertTrue(ShortcutInfoCompat.getLongLivedFromExtra(shortcut.getExtras()));
+        assertEquals(compat.getExtras().getString(TEST_EXTRAS_ID), TEST_EXTRAS_VALUE);
         Person[] retrievedPersons = ShortcutInfoCompat.getPersonsFromExtra(shortcut.getExtras());
         assertNotNull(retrievedPersons);
         assertEquals(persons.length, retrievedPersons.length);
diff --git a/core/core/src/androidTest/java/androidx/core/content/pm/ShortcutManagerCompatTest.java b/core/core/src/androidTest/java/androidx/core/content/pm/ShortcutManagerCompatTest.java
index 37e95fd..e80b105 100644
--- a/core/core/src/androidTest/java/androidx/core/content/pm/ShortcutManagerCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/content/pm/ShortcutManagerCompatTest.java
@@ -16,8 +16,16 @@
 
 package androidx.core.content.pm;
 
+import static android.graphics.drawable.Icon.TYPE_ADAPTIVE_BITMAP;
+import static android.graphics.drawable.Icon.TYPE_BITMAP;
+
+import static androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_DYNAMIC;
+import static androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_MANIFEST;
+import static androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_PINNED;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.nullable;
@@ -45,29 +53,48 @@
 import android.content.pm.ShortcutInfo;
 import android.content.pm.ShortcutManager;
 import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.v4.BaseInstrumentationTestCase;
 
 import androidx.core.app.TestActivity;
+import androidx.core.content.FileProvider;
 import androidx.core.graphics.drawable.IconCompat;
+import androidx.core.test.R;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.LargeTest;
 import androidx.test.filters.MediumTest;
 import androidx.test.filters.SdkSuppress;
 
+import com.google.common.collect.Lists;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatchers;
 
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 @RunWith(AndroidJUnit4.class)
 public class ShortcutManagerCompatTest extends BaseInstrumentationTestCase<TestActivity> {
 
+    private static final String SHORTCUT_ICON_PATH = "shortcut_icons";
+    private static final String TEST_AUTHORITY = "moocow";
+
     Context mContext;
     ShortcutInfoCompat mInfoCompat;
+    ShortcutInfoCompatSaver<Void> mShortcutInfoCompatSaver;
 
     public ShortcutManagerCompatTest() {
         super(TestActivity.class);
@@ -82,6 +109,8 @@
                 .setShortLabel("Test shortcut")
                 .setIntent(new Intent("Dummy"))
                 .build();
+        mShortcutInfoCompatSaver = mock(ShortcutInfoCompatSaver.class);
+        ShortcutManagerCompat.setShortcutInfoCompatSaver(mShortcutInfoCompatSaver);
     }
 
     @Test
@@ -191,6 +220,165 @@
         verifyLegacyIntent(ShortcutManagerCompat.createShortcutResultIntent(mContext, mInfoCompat));
     }
 
+    @LargeTest
+    @Test
+    public void testShortcut() {
+        final List<String> shortcutIds = Lists.newArrayList("test-id");
+        final String disableMessage = "disabled";
+        final List<ShortcutInfoCompat> shortcuts = Lists.newArrayList(mInfoCompat);
+        final ShortcutManager mockShortcutManager = mock(ShortcutManager.class);
+        doReturn(mockShortcutManager).when(mContext).getSystemService(eq(Context.SHORTCUT_SERVICE));
+
+        reset(mockShortcutManager);
+        reset(mShortcutInfoCompatSaver);
+        ShortcutManagerCompat.enableShortcuts(mContext, shortcuts);
+        if (Build.VERSION.SDK_INT >= 25) {
+            verify(mockShortcutManager).enableShortcuts(shortcutIds);
+        }
+        verify(mShortcutInfoCompatSaver).addShortcuts(shortcuts);
+
+        reset(mockShortcutManager);
+        reset(mShortcutInfoCompatSaver);
+        ShortcutManagerCompat.removeLongLivedShortcuts(mContext, shortcutIds);
+        if (Build.VERSION.SDK_INT >= 30) {
+            verify(mockShortcutManager).removeLongLivedShortcuts(shortcutIds);
+        } else if (Build.VERSION.SDK_INT >= 25) {
+            verify(mockShortcutManager).removeDynamicShortcuts(shortcutIds);
+        }
+        verify(mShortcutInfoCompatSaver).removeShortcuts(shortcutIds);
+
+        reset(mockShortcutManager);
+        reset(mShortcutInfoCompatSaver);
+        ShortcutManagerCompat.disableShortcuts(mContext, shortcutIds, disableMessage);
+        if (Build.VERSION.SDK_INT >= 25) {
+            verify(mockShortcutManager).disableShortcuts(shortcutIds, disableMessage);
+        }
+        verify(mShortcutInfoCompatSaver).removeShortcuts(shortcutIds);
+
+        reset(mockShortcutManager);
+        reset(mShortcutInfoCompatSaver);
+        when(mockShortcutManager.setDynamicShortcuts(ArgumentMatchers.<ShortcutInfo>anyList()))
+                .thenReturn(true);
+        ShortcutManagerCompat.setDynamicShortcuts(mContext, shortcuts);
+        if (Build.VERSION.SDK_INT >= 25) {
+            verify(mockShortcutManager)
+                    .setDynamicShortcuts(ArgumentMatchers.<ShortcutInfo>anyList());
+        }
+        verify(mShortcutInfoCompatSaver).removeAllShortcuts();
+        verify(mShortcutInfoCompatSaver).addShortcuts(shortcuts);
+    }
+
+    @MediumTest
+    @Test
+    public void testGetShortcut() throws Throwable {
+        final int flag = FLAG_MATCH_MANIFEST | FLAG_MATCH_DYNAMIC | FLAG_MATCH_PINNED;
+        final ShortcutManager mockShortcutManager = mock(ShortcutManager.class);
+        doReturn(mockShortcutManager).when(mContext).getSystemService(eq(Context.SHORTCUT_SERVICE));
+        ShortcutManagerCompat.getShortcuts(mContext, flag);
+
+        if (Build.VERSION.SDK_INT >= 30) {
+            verify(mockShortcutManager).getShortcuts(flag);
+        } else if (Build.VERSION.SDK_INT >= 25) {
+            verify(mockShortcutManager).getManifestShortcuts();
+            verify(mockShortcutManager).getDynamicShortcuts();
+            verify(mockShortcutManager).getPinnedShortcuts();
+        } else {
+            verify(mShortcutInfoCompatSaver).getShortcuts();
+        }
+    }
+
+    @MediumTest
+    @Test
+    public void testDynamicShortcuts() {
+        if (Build.VERSION.SDK_INT >= 25) {
+            ShortcutManager mockShortcutManager = mock(ShortcutManager.class);
+            doReturn(mockShortcutManager).when(mContext).getSystemService(
+                    eq(Context.SHORTCUT_SERVICE));
+            when(mockShortcutManager.addDynamicShortcuts(ArgumentMatchers.<ShortcutInfo>anyList()))
+                    .thenReturn(true);
+        }
+        assertTrue(ShortcutManagerCompat.addDynamicShortcuts(mContext, getShortcuts()));
+        removeShortcuts();
+    }
+
+    @MediumTest
+    @Test
+    @SdkSuppress(minSdkVersion = 25)
+    public void testPushDynamicShortcuts() throws Throwable {
+        // setup mock objects
+        final ShortcutManager mockShortcutManager = mock(ShortcutManager.class);
+        doReturn(mockShortcutManager).when(mContext).getSystemService(
+                eq(Context.SHORTCUT_SERVICE));
+        when(mockShortcutManager.addDynamicShortcuts(ArgumentMatchers.<ShortcutInfo>anyList()))
+                .thenReturn(true);
+        when(mockShortcutManager.getMaxShortcutCountPerActivity()).thenReturn(4);
+        doReturn(getShortcuts()).when(mockShortcutManager).getDynamicShortcuts();
+        doReturn(getShortcuts()).when(mShortcutInfoCompatSaver).getShortcuts();
+        // push a new shortcut
+        final ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(
+                mContext, "bitmap-shortcut")
+                .setShortLabel("bitmap")
+                .setIcon(createBitmapIcon())
+                .setIntent(new Intent().setAction(Intent.ACTION_DEFAULT))
+                .setRank(0)
+                .build();
+        ShortcutManagerCompat.pushDynamicShortcut(mContext, shortcutInfo);
+        if (Build.VERSION.SDK_INT >= 30) {
+            verify(mockShortcutManager).pushDynamicShortcut(any(ShortcutInfo.class));
+        } else if (Build.VERSION.SDK_INT >= 25) {
+            // verify the shortcut with lowest rank has been removed
+            final ArgumentCaptor<List<String>> stringCaptor =
+                    ArgumentCaptor.forClass(ArrayList.class);
+            verify(mockShortcutManager).removeDynamicShortcuts(stringCaptor.capture());
+            verifyShortcutRemoved(stringCaptor);
+            // verify the new shortcut has been added
+            final ArgumentCaptor<List<ShortcutInfo>> shortcutInfoCaptor =
+                    ArgumentCaptor.forClass(ArrayList.class);
+            verify(mockShortcutManager).addDynamicShortcuts(shortcutInfoCaptor.capture());
+            final List<ShortcutInfo> actualShortcutInfos = shortcutInfoCaptor.getValue();
+            assertEquals(1, actualShortcutInfos.size());
+            assertEquals(shortcutInfo, actualShortcutInfos.get(0));
+        }
+        // verify the shortcut with lowest rank has been removed
+        final ArgumentCaptor<List<String>> stringCaptor = ArgumentCaptor.forClass(ArrayList.class);
+        verify(mShortcutInfoCompatSaver).removeShortcuts(stringCaptor.capture());
+        verifyShortcutRemoved(stringCaptor);
+        // verify the new shortcut has been added
+        final ArgumentCaptor<List<ShortcutInfoCompat>> shortcutInfoCaptor =
+                ArgumentCaptor.forClass(ArrayList.class);
+        verify(mShortcutInfoCompatSaver).addShortcuts(shortcutInfoCaptor.capture());
+        final List<ShortcutInfoCompat> actualShortcutInfos = shortcutInfoCaptor.getValue();
+        assertEquals(1, actualShortcutInfos.size());
+        assertEquals(shortcutInfo, actualShortcutInfos.get(0));
+    }
+
+    private void verifyShortcutRemoved(final ArgumentCaptor<List<String>> stringCaptor) {
+        final List<String> actualStrings = stringCaptor.getValue();
+        assertEquals(1, actualStrings.size());
+        assertEquals("uri-bitmap-shortcut", actualStrings.get(0));
+    }
+
+    @MediumTest
+    @Test
+    public void testConvertUriIconsToBitmapIcons() {
+        ArrayList<ShortcutInfoCompat> shortcuts = getShortcuts();
+        assertEquals(5, shortcuts.size());
+        ShortcutManagerCompat.convertUriIconsToBitmapIcons(mContext, shortcuts);
+        assertEquals(4, shortcuts.size());  // shortcut with invalid icon uri was removed
+        for (ShortcutInfoCompat info : shortcuts) {
+            assertTrue(info.mIcon.mType == TYPE_BITMAP
+                    || info.mIcon.mType == TYPE_ADAPTIVE_BITMAP);
+            assertNotNull(info.mIcon.getBitmap());
+        }
+    }
+
+    @LargeTest
+    @Test
+    public void testGetIconDimension() {
+        assertNotEquals(0, ShortcutManagerCompat.getIconMaxWidth(mContext));
+        assertNotEquals(0, ShortcutManagerCompat.getIconMaxHeight(mContext));
+    }
+
     private void verifyLegacyIntent(Intent intent) {
         assertNotNull(intent);
         assertEquals("Test shortcut", intent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
@@ -218,4 +406,112 @@
         rInfo.activityInfo = aInfo;
         return rInfo;
     }
+
+    private ArrayList<ShortcutInfoCompat> getShortcuts() {
+        ArrayList<ShortcutInfoCompat> shortcuts = new ArrayList<>();
+
+        shortcuts.add(new ShortcutInfoCompat.Builder(mContext, "bitmap-shortcut")
+                .setShortLabel("bitmap")
+                .setIcon(createBitmapIcon())
+                .setIntent(new Intent().setAction(Intent.ACTION_DEFAULT))
+                .setRank(0)
+                .build());
+
+        shortcuts.add(new ShortcutInfoCompat.Builder(mContext, "adaptive-bitmap-shortcut")
+                .setShortLabel("adaptive bitmap")
+                .setIcon(createAdaptiveBitmapIcon())
+                .setIntent(new Intent().setAction(Intent.ACTION_DEFAULT))
+                .setRank(2)
+                .build());
+
+        shortcuts.add(new ShortcutInfoCompat.Builder(mContext, "uri-bitmap-shortcut")
+                .setShortLabel("uri bitmap")
+                .setIcon(createUriIcon())
+                .setIntent(new Intent().setAction(Intent.ACTION_DEFAULT))
+                .setRank(4)
+                .build());
+
+        shortcuts.add(new ShortcutInfoCompat.Builder(mContext, "uri-adaptive-bitmap-shortcut")
+                .setShortLabel("uri adaptive bitmap")
+                .setIcon(createUriAdaptiveIcon())
+                .setIntent(new Intent().setAction(Intent.ACTION_DEFAULT))
+                .setRank(4)
+                .build());
+
+        shortcuts.add(new ShortcutInfoCompat.Builder(mContext,
+                "uri-adaptive-bitmap-shortcut-with-invalid-uri")
+                .setShortLabel("uri adaptive bitmap with invalid uri")
+                .setIcon(IconCompat.createWithAdaptiveBitmapContentUri(
+                        "http://non-existing-uri"))
+                .setIntent(new Intent().setAction(Intent.ACTION_DEFAULT))
+                .setRank(4)
+                .build());
+
+        return shortcuts;
+    }
+
+    private void removeShortcuts() {
+        ShortcutManagerCompat.removeAllDynamicShortcuts(mContext);
+    }
+
+    private Bitmap createRawBitmap(String text) {
+        Bitmap.Config conf = Bitmap.Config.ARGB_8888;
+        float density = mContext.getResources().getDisplayMetrics().density;
+        int x = (int) (72 * density);
+        int y = (int) (72 * density);
+        Bitmap bmp = Bitmap.createBitmap(x, y, conf);
+        Canvas canvas = new Canvas(bmp);
+        canvas.drawColor(Color.BLUE);
+
+        Paint mTextPaint = new Paint();
+        mTextPaint.setColor(Color.RED);
+        mTextPaint.setTextSize(mContext.getResources().getDimension(R.dimen.text_medium_size));
+        mTextPaint.setTextAlign(Paint.Align.CENTER);
+        int xPos = (canvas.getWidth() / 2);
+        int yPos = (int) ((canvas.getHeight() / 2)
+                - ((mTextPaint.descent() + mTextPaint.ascent()) / 2));
+        canvas.drawText(text, xPos, yPos, mTextPaint);
+        return bmp;
+    }
+
+    private Uri bitmapToUri(Bitmap bmp, String name) {
+        File root = new File(mContext.getFilesDir(), SHORTCUT_ICON_PATH);
+        if (!root.exists()) {
+            root.mkdir();
+        }
+        File file = new File(root, name);
+        if (!file.exists()) {
+            try {
+                file.createNewFile();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        try (FileOutputStream out = new FileOutputStream(file)) {
+            bmp.compress(Bitmap.CompressFormat.JPEG, 100, out);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return FileProvider.getUriForFile(mContext, TEST_AUTHORITY, file);
+    }
+
+    private IconCompat createBitmapIcon() {
+        return IconCompat.createWithBitmap(createRawBitmap("B"));
+    }
+
+    private IconCompat createAdaptiveBitmapIcon() {
+        return IconCompat.createWithAdaptiveBitmap(createRawBitmap("AB"));
+    }
+
+    private IconCompat createUriIcon() {
+        Uri uri = bitmapToUri(createRawBitmap("U"), "uri-icon");
+        return IconCompat.createWithContentUri(uri);
+    }
+
+    private IconCompat createUriAdaptiveIcon() {
+        Uri uri = bitmapToUri(createRawBitmap("AU"), "uri-adaptive-icon");
+        return IconCompat.createWithAdaptiveBitmapContentUri(uri);
+    }
 }
diff --git a/core/core/src/androidTest/java/androidx/core/os/HandlerExecutorTest.java b/core/core/src/androidTest/java/androidx/core/os/HandlerExecutorTest.java
new file mode 100644
index 0000000..c49a597
--- /dev/null
+++ b/core/core/src/androidTest/java/androidx/core/os/HandlerExecutorTest.java
@@ -0,0 +1,77 @@
+/*
+ * 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.core.os;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.os.Handler;
+import android.os.Looper;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests for {@link HandlerExecutor}.
+ */
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class HandlerExecutorTest {
+
+    private static final long TIMEOUT_MS = 5000;
+
+    @Test
+    public void testExecutor() throws Exception {
+        final CountDownLatch latch = new CountDownLatch(1);
+        HandlerExecutor executor = new HandlerExecutor(new Handler(Looper.getMainLooper()));
+        executor.execute(new Runnable() {
+            @Override
+            public void run() {
+                latch.countDown();
+            }
+        });
+        assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testConstructor_Null() {
+        try {
+            new HandlerExecutor(null);
+            fail();
+        } catch (NullPointerException e) {
+            // pass
+        }
+    }
+
+    @Test
+    public void testExecute_Null() {
+        HandlerExecutor executor = new HandlerExecutor(new Handler(Looper.getMainLooper()));
+        try {
+            executor.execute(null);
+            fail();
+        } catch (NullPointerException e) {
+            // pass
+        }
+    }
+}
+
diff --git a/core/core/src/androidTest/java/androidx/core/view/AccessibilityDelegateCompatTest.java b/core/core/src/androidTest/java/androidx/core/view/AccessibilityDelegateCompatTest.java
index 76a8a84..c765005 100644
--- a/core/core/src/androidTest/java/androidx/core/view/AccessibilityDelegateCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/view/AccessibilityDelegateCompatTest.java
@@ -18,6 +18,7 @@
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
@@ -34,6 +35,8 @@
 import static org.mockito.Mockito.when;
 
 import android.app.Activity;
+import android.app.Instrumentation;
+import android.app.UiAutomation;
 import android.os.Build;
 import android.os.Bundle;
 import android.support.v4.BaseInstrumentationTestCase;
@@ -52,6 +55,7 @@
 import androidx.core.view.accessibility.AccessibilityNodeProviderCompat;
 import androidx.core.view.accessibility.AccessibilityViewCommand;
 import androidx.core.view.accessibility.AccessibilityViewCommand.MoveAtGranularityArguments;
+import androidx.test.InstrumentationRegistry;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.MediumTest;
 import androidx.test.filters.SdkSuppress;
@@ -62,11 +66,16 @@
 import org.mockito.ArgumentCaptor;
 
 import java.util.List;
+import java.util.concurrent.TimeoutException;
 
 @RunWith(AndroidJUnit4.class)
 @MediumTest
 public class AccessibilityDelegateCompatTest extends
         BaseInstrumentationTestCase<ViewCompatActivity> {
+    private static final int TIMEOUT_ASYNC_PROCESSING = 5000;
+
+    private static Instrumentation sInstrumentation;
+    private static UiAutomation sUiAutomation;
 
     private ViewGroup mView;
 
@@ -76,6 +85,8 @@
 
     @Before
     public void setUp() {
+        sInstrumentation = InstrumentationRegistry.getInstrumentation();
+        sUiAutomation = sInstrumentation.getUiAutomation();
         final Activity activity = mActivityTestRule.getActivity();
         // Use a group, so it has a child
         mView = (ViewGroup) activity.findViewById(androidx.core.test.R.id.view).getParent();
@@ -358,6 +369,83 @@
         assertMockAccessibilityDelegateWorkingOnView(mockDelegate);
     }
 
+    @Test
+    @SdkSuppress(minSdkVersion = 19)
+    public void testSetAccessibilityPaneTitle_sendsOutCorrectEvent() throws TimeoutException {
+        final Activity activity = mActivityTestRule.getActivity();
+
+        AccessibilityEvent awaitedEvent =
+                sUiAutomation.executeAndWaitForEvent(new Runnable() {
+                    @Override
+                    public void run() {
+                        ViewCompat.setAccessibilityPaneTitle(mView, "test");
+                    }
+                }, new UiAutomation.AccessibilityEventFilter() {
+                    @Override
+                    public boolean accept(AccessibilityEvent event) {
+                        boolean isWindowStateChanged = event.getEventType()
+                                == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
+                        int isPaneTitle = (event.getContentChangeTypes()
+                                & AccessibilityEvent.CONTENT_CHANGE_TYPE_PANE_TITLE);
+                        boolean isFromThisPackage = TextUtils.equals(event.getPackageName(),
+                                activity.getPackageName());
+                        boolean isFromThisSource =
+                                event.getSource().equals(mView.createAccessibilityNodeInfo());
+                        return isWindowStateChanged && (isPaneTitle != 0) && isFromThisPackage
+                                && isFromThisSource;
+                    }
+                }, TIMEOUT_ASYNC_PROCESSING);
+
+        // The event should come from a view that's important for accessibility, even though the
+        // layout we added it to isn't important. Otherwise services may not find out about the
+        // new button.
+        assertTrue(awaitedEvent.getSource().isImportantForAccessibility());
+    }
+
+    @Test
+    @SdkSuppress(minSdkVersion = 19)
+    public void testSetStateDescription_propagatesToAccessibilityNodeInfo_sendsOutCorrectEvent()
+            throws TimeoutException {
+        final Activity activity = mActivityTestRule.getActivity();
+        final CharSequence state = "test";
+
+        assertThat(ViewCompat.getStateDescription(mView), is(nullValue()));
+        assertThat(getNodeCompatForView(mView).getStateDescription(), is(nullValue()));
+
+        AccessibilityEvent awaitedEvent =
+                sUiAutomation.executeAndWaitForEvent(new Runnable() {
+                    @Override
+                    public void run() {
+                        ViewCompat.setStateDescription(mView, state);
+                    }
+                }, new UiAutomation.AccessibilityEventFilter() {
+                    @Override
+                    public boolean accept(AccessibilityEvent event) {
+                        boolean isContentChanged = event.getEventType()
+                                == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
+                        int isStateDescription = (event.getContentChangeTypes()
+                                & AccessibilityEvent.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION);
+                        boolean isFromThisPackage = TextUtils.equals(event.getPackageName(),
+                                activity.getPackageName());
+                        return isContentChanged && (isStateDescription != 0) && isFromThisPackage;
+                    }
+                }, TIMEOUT_ASYNC_PROCESSING);
+
+        // The event should come from a view that's important for accessibility, even though the
+        // layout we added it to isn't important. Otherwise services may not find out about the
+        // new button.
+        assertTrue(awaitedEvent.getSource().isImportantForAccessibility());
+
+        assertThat(ViewCompat.getStateDescription(mView), is(state));
+        assertThat(getNodeCompatForView(mView).getStateDescription(), is(state));
+
+        // The value should still propagate even if we attach and detach another delegate compat
+        ViewCompat.setAccessibilityDelegate(mView, new AccessibilityDelegateCompat());
+        assertThat(getNodeCompatForView(mView).getStateDescription(), is(state));
+        ViewCompat.setAccessibilityDelegate(mView, null);
+        assertThat(getNodeCompatForView(mView).getStateDescription(), is(state));
+    }
+
     private void assertMockAccessibilityDelegateWorkingOnView(
             View.AccessibilityDelegate mockDelegate) {
         final AccessibilityEvent event = AccessibilityEvent.obtain();
diff --git a/core/core/src/androidTest/java/androidx/core/view/DisplayCutoutCompatTest.java b/core/core/src/androidTest/java/androidx/core/view/DisplayCutoutCompatTest.java
index 027a6ed..15bea4f 100644
--- a/core/core/src/androidTest/java/androidx/core/view/DisplayCutoutCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/view/DisplayCutoutCompatTest.java
@@ -24,6 +24,8 @@
 
 import android.graphics.Rect;
 
+import androidx.core.graphics.Insets;
+import androidx.core.os.BuildCompat;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
@@ -36,11 +38,12 @@
 @RunWith(AndroidJUnit4.class)
 @SmallTest
 public class DisplayCutoutCompatTest {
-
+    private static final Rect ZERO_RECT = new Rect();
     DisplayCutoutCompat mCutoutTop;
     DisplayCutoutCompat mCutoutTopBottom;
     DisplayCutoutCompat mCutoutTopBottomClone;
     DisplayCutoutCompat mCutoutLeftRight;
+    DisplayCutoutCompat mCutoutWaterfall;
 
     @Before
     public void setUp() throws Exception {
@@ -55,6 +58,8 @@
         mCutoutLeftRight = new DisplayCutoutCompat(new Rect(30, 0, 40, 0), Arrays.asList(
                 new Rect(0, 50, 30, 60),
                 new Rect(100, 60, 140, 50)));
+        mCutoutWaterfall = new DisplayCutoutCompat(Insets.of(0, 20, 0, 20), ZERO_RECT, ZERO_RECT,
+                ZERO_RECT, ZERO_RECT, Insets.of(0, 20, 0, 20));
     }
 
     @Test
@@ -82,6 +87,15 @@
     }
 
     @Test
+    public void testWaterfallInsets() {
+        if (BuildCompat.isAtLeastR()) {
+            assertEquals(Insets.of(0, 20, 0, 20), mCutoutWaterfall.getWaterfallInsets());
+        } else {
+            assertEquals(Insets.NONE, mCutoutWaterfall.getWaterfallInsets());
+        }
+    }
+
+    @Test
     public void testEquals() {
         assertEquals(mCutoutTopBottomClone, mCutoutTopBottom);
 
diff --git a/core/core/src/androidTest/java/androidx/core/view/ViewCompatTest.java b/core/core/src/androidTest/java/androidx/core/view/ViewCompatTest.java
index ff7935e..88bdf75 100644
--- a/core/core/src/androidTest/java/androidx/core/view/ViewCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/view/ViewCompatTest.java
@@ -15,6 +15,9 @@
  */
 package androidx.core.view;
 
+import static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT;
+import static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
+
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -24,6 +27,7 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
@@ -32,6 +36,7 @@
 import android.content.Context;
 import android.graphics.Rect;
 import android.os.Build;
+import android.os.Bundle;
 import android.support.v4.BaseInstrumentationTestCase;
 import android.view.Display;
 import android.view.View;
@@ -46,6 +51,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -264,6 +270,22 @@
         }
     }
 
+    @SdkSuppress(minSdkVersion = 21)
+    @Test
+    public void testPerformAction_ExpectedActionAndArguments() {
+        AccessibilityActionCompat actionCompat = AccessibilityActionCompat.ACTION_PRESS_AND_HOLD;
+        View view = mock(View.class);
+        Bundle bundle = new Bundle();
+        bundle.putInt(ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT, 100);
+
+        ViewCompat.performAccessibilityAction(view, actionCompat.getId(), bundle);
+
+        ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class);
+        verify(view).performAccessibilityAction(eq(actionCompat.getId()), bundleCaptor.capture());
+        assertEquals(100,
+                bundleCaptor.getValue().getInt(ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT));
+    }
+
     private static boolean isViewIdGenerated(int id) {
         return (id & 0xFF000000) == 0 && (id & 0x00FFFFFF) != 0;
     }
diff --git a/core/core/src/androidTest/java/androidx/core/view/accessibility/AccessibilityNodeInfoCompatTest.java b/core/core/src/androidTest/java/androidx/core/view/accessibility/AccessibilityNodeInfoCompatTest.java
index 7f21d47..fe129ba 100644
--- a/core/core/src/androidTest/java/androidx/core/view/accessibility/AccessibilityNodeInfoCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/view/accessibility/AccessibilityNodeInfoCompatTest.java
@@ -161,6 +161,12 @@
             actionCompat = AccessibilityActionCompat.ACTION_HIDE_TOOLTIP;
             assertThat(actionCompat.getId(),
                     is(getExpectedActionId(android.R.id.accessibilityActionHideTooltip)));
+            actionCompat = AccessibilityActionCompat.ACTION_PRESS_AND_HOLD;
+            assertThat(actionCompat.getId(),
+                    is(getExpectedActionId(android.R.id.accessibilityActionPressAndHold)));
+            actionCompat = AccessibilityActionCompat.ACTION_IME_ENTER;
+            assertThat(actionCompat.getId(),
+                    is(getExpectedActionId(android.R.id.accessibilityActionImeEnter)));
         } catch (NullPointerException e) {
             Assert.fail("Expected no NullPointerException, but got: " + e.getMessage());
         }
diff --git a/core/core/src/androidTest/res/xml/paths.xml b/core/core/src/androidTest/res/xml/paths.xml
index bea396a..e9be519 100644
--- a/core/core/src/androidTest/res/xml/paths.xml
+++ b/core/core/src/androidTest/res/xml/paths.xml
@@ -7,6 +7,8 @@
     <files-path name="test_files" />
     <!-- /data/data/com.example/files/thumbs -->
     <files-path name="test_thumbs" path="thumbs/" />
+    <!-- /data/data/com.example/files/shortcut_icons -->
+    <files-path name="shortcut_icons" path="shortcut_icons/"/>
     <!-- /data/data/com.example/cache -->
     <cache-path name="test_cache" />
     <!-- /storage/emulated/0 -->
diff --git a/core/core/src/main/java/androidx/core/app/JobIntentService.java b/core/core/src/main/java/androidx/core/app/JobIntentService.java
index 12f657d..2f63c3c 100644
--- a/core/core/src/main/java/androidx/core/app/JobIntentService.java
+++ b/core/core/src/main/java/androidx/core/app/JobIntentService.java
@@ -25,7 +25,6 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.os.AsyncTask;
 import android.os.Build;
 import android.os.IBinder;
 import android.os.PowerManager;
@@ -380,7 +379,7 @@
     /**
      * This is a task to dequeue and process work in the background.
      */
-    final class CommandProcessor extends AsyncTask<Void, Void, Void> {
+    final class CommandProcessor extends android.os.AsyncTask<Void, Void, Void> {
         @Override
         protected Void doInBackground(Void... params) {
             GenericWorkItem work;
@@ -562,7 +561,7 @@
      * Control whether code executing in {@link #onHandleWork(Intent)} will be interrupted
      * if the job is stopped.  By default this is false.  If called and set to true, any
      * time {@link #onStopCurrentWork()} is called, the class will first call
-     * {@link AsyncTask#cancel(boolean) AsyncTask.cancel(true)} to interrupt the running
+     * {@link android.os.AsyncTask#cancel(boolean) AsyncTask.cancel(true)} to interrupt the running
      * task.
      *
      * @param interruptIfStopped Set to true to allow the system to interrupt actively
@@ -603,6 +602,7 @@
         return onStopCurrentWork();
     }
 
+    @SuppressWarnings("deprecation") /* AsyncTask */
     void ensureProcessorRunningLocked(boolean reportStarted) {
         if (mCurProcessor == null) {
             mCurProcessor = new CommandProcessor();
@@ -610,7 +610,7 @@
                 mCompatWorkEnqueuer.serviceProcessingStarted();
             }
             if (DEBUG) Log.d(TAG, "Starting processor: " + mCurProcessor);
-            mCurProcessor.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+            mCurProcessor.executeOnExecutor(android.os.AsyncTask.THREAD_POOL_EXECUTOR);
         }
     }
 
diff --git a/core/core/src/main/java/androidx/core/app/NotificationCompat.java b/core/core/src/main/java/androidx/core/app/NotificationCompat.java
index bcdd6f6a..b471eed 100644
--- a/core/core/src/main/java/androidx/core/app/NotificationCompat.java
+++ b/core/core/src/main/java/androidx/core/app/NotificationCompat.java
@@ -34,6 +34,7 @@
 import android.graphics.PorterDuff;
 import android.graphics.PorterDuffColorFilter;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.Icon;
 import android.media.AudioAttributes;
 import android.media.AudioManager;
 import android.net.Uri;
@@ -704,6 +705,11 @@
         @RestrictTo(LIBRARY_GROUP_PREFIX)
         public ArrayList<Action> mActions = new ArrayList<>();
 
+        /** @hide */
+        @RestrictTo(LIBRARY_GROUP_PREFIX)
+        @NonNull
+        public ArrayList<Person> mPersonList = new ArrayList<>();
+
         // Invisible actions are stored in the CarExtender bundle without actually being owned by
         // CarExtender. This is to comply with an optimization of the Android OS which removes
         // Actions from the Notification if there are no listeners for those Actions.
@@ -751,6 +757,7 @@
         BubbleMetadata mBubbleMetadata;
         Notification mNotification = new Notification();
         boolean mSilent;
+        Icon mSmallIcon;
 
         /**
          * @deprecated This field was not meant to be public.
@@ -775,7 +782,6 @@
         public Builder(@NonNull Context context, @NonNull String channelId) {
             mContext = context;
             mChannelId = channelId;
-
             // Set defaults to match the defaults of a Notification
             mNotification.when = System.currentTimeMillis();
             mNotification.audioStreamType = Notification.STREAM_DEFAULT;
@@ -812,6 +818,19 @@
         }
 
         /**
+         * Set the small icon to use in the notification layouts.  Different classes of devices
+         * may return different sizes.  See the UX guidelines for more information on how to
+         * design these icons.
+         *
+         * @param icon The small Icon object to use
+         */
+        @RequiresApi(23)
+        public @NonNull Builder setSmallIcon(@NonNull IconCompat icon) {
+            this.mSmallIcon = icon.toIcon(mContext);
+            return this;
+        }
+
+        /**
          * Show the {@link Notification#when} field as a stopwatch.
          *
          * Instead of presenting <code>when</code> as a timestamp, the notification will show an
@@ -1301,14 +1320,41 @@
          *
          * @param uri A URI for the person.
          * @see Notification#EXTRA_PEOPLE
+         * @deprecated use {@link #addPerson(Person)}
          */
-        @SuppressWarnings("deprecation")
+        @Deprecated
         public Builder addPerson(String uri) {
             mPeople.add(uri);
             return this;
         }
 
         /**
+         * Add a person that is relevant to this notification.
+         *
+         * <P>
+         * Depending on user preferences, this annotation may allow the notification to pass
+         * through interruption filters, if this notification is of category {@link #CATEGORY_CALL}
+         * or {@link #CATEGORY_MESSAGE}. The addition of people may also cause this notification to
+         * appear more prominently in the user interface.
+         * </P>
+         *
+         * <P>
+         * A person should usually contain a uri in order to benefit from the ranking boost.
+         * However, even if no uri is provided, it's beneficial to provide other people in the
+         * notification, such that listeners and voice only devices can announce and handle them
+         * properly.
+         * </P>
+         *
+         * @param person the person to add.
+         * @see Notification#EXTRA_PEOPLE_LIST
+         */
+        @NonNull
+        public Builder addPerson(@NonNull final Person person) {
+            mPersonList.add(person);
+            return this;
+        }
+
+        /**
          * Set this notification to be part of a group of notifications sharing the same key.
          * Grouped notifications may display in a cluster or stack on devices which
          * support such rendering.
diff --git a/core/core/src/main/java/androidx/core/app/NotificationCompatBuilder.java b/core/core/src/main/java/androidx/core/app/NotificationCompatBuilder.java
index e007540..35f062e 100644
--- a/core/core/src/main/java/androidx/core/app/NotificationCompatBuilder.java
+++ b/core/core/src/main/java/androidx/core/app/NotificationCompatBuilder.java
@@ -31,7 +31,9 @@
 import android.util.SparseArray;
 import android.widget.RemoteViews;
 
+import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
+import androidx.collection.ArraySet;
 import androidx.core.graphics.drawable.IconCompat;
 
 import java.util.ArrayList;
@@ -128,7 +130,8 @@
             mBuilder.setShowWhen(b.mShowWhen);
 
             if (Build.VERSION.SDK_INT < 21) {
-                if (b.mPeople != null && !b.mPeople.isEmpty()) {
+                final List<String> people = combineLists(getPeople(b.mPersonList), b.mPeople);
+                if (people != null && !people.isEmpty()) {
                     mExtras.putStringArray(Notification.EXTRA_PEOPLE,
                             b.mPeople.toArray(new String[b.mPeople.size()]));
                 }
@@ -149,9 +152,19 @@
                     .setPublicVersion(b.mPublicVersion)
                     .setSound(n.sound, n.audioAttributes);
 
-            for (String person: b.mPeople) {
-                mBuilder.addPerson(person);
+
+            final List<String> people;
+            if (Build.VERSION.SDK_INT < 28) {
+                people = combineLists(getPeople(b.mPersonList), b.mPeople);
+            } else {
+                people = b.mPeople;
             }
+            if (people != null && !people.isEmpty()) {
+                for (String person : people) {
+                    mBuilder.addPerson(person);
+                }
+            }
+
             mHeadsUpContentView = b.mHeadsUpContentView;
 
             if (b.mInvisibleActions.size() > 0) {
@@ -177,6 +190,11 @@
                         NotificationCompat.CarExtender.EXTRA_CAR_EXTENDER, carExtenderBundle);
             }
         }
+        if (Build.VERSION.SDK_INT >= 23) {
+            if (b.mSmallIcon != null) {
+                mBuilder.setSmallIcon(b.mSmallIcon);
+            }
+        }
         if (Build.VERSION.SDK_INT >= 24) {
             mBuilder.setExtras(b.mExtras)
                     .setRemoteInputHistory(b.mRemoteInputHistory);
@@ -206,6 +224,11 @@
                         .setVibrate(null);
             }
         }
+        if (Build.VERSION.SDK_INT >= 28) {
+            for (Person p : b.mPersonList) {
+                mBuilder.addPerson(p.toAndroidPerson());
+            }
+        }
         if (Build.VERSION.SDK_INT >= 29) {
             mBuilder.setAllowSystemGeneratedContextualActions(
                     b.mAllowSystemGeneratedContextualActions);
@@ -239,6 +262,33 @@
         }
     }
 
+    @Nullable
+    private static List<String> combineLists(@Nullable final List<String> first,
+            @Nullable final List<String> second) {
+        if (first == null) {
+            return second;
+        }
+        if (second == null) {
+            return first;
+        }
+        final ArraySet<String> people = new ArraySet<>(first.size() + second.size());
+        people.addAll(first);
+        people.addAll(second);
+        return new ArrayList<>(people);
+    }
+
+    @Nullable
+    private static List<String> getPeople(@Nullable final List<Person> people) {
+        if (people == null) {
+            return null;
+        }
+        final ArrayList<String> result = new ArrayList<>(people.size());
+        for (Person person : people) {
+            result.add(person.resolveToLegacyUri());
+        }
+        return result;
+    }
+
     @Override
     public Notification.Builder getBuilder() {
         return mBuilder;
diff --git a/core/core/src/main/java/androidx/core/app/Person.java b/core/core/src/main/java/androidx/core/app/Person.java
index 44f5c9c..cb95bb7 100644
--- a/core/core/src/main/java/androidx/core/app/Person.java
+++ b/core/core/src/main/java/androidx/core/app/Person.java
@@ -240,6 +240,22 @@
         return mIsImportant;
     }
 
+    /**
+     * @return the URI associated with this person, or "name:mName" otherwise
+     * @hide
+     */
+    @NonNull
+    @RestrictTo(LIBRARY_GROUP_PREFIX)
+    public String resolveToLegacyUri() {
+        if (mUri != null) {
+            return mUri;
+        }
+        if (mName != null) {
+            return "name:" + mName;
+        }
+        return "";
+    }
+
     /** Builder for the immutable {@link Person} class. */
     public static class Builder {
         @Nullable CharSequence mName;
diff --git a/core/core/src/main/java/androidx/core/content/IntentCompat.java b/core/core/src/main/java/androidx/core/content/IntentCompat.java
index 1909ac8..0eb6998 100644
--- a/core/core/src/main/java/androidx/core/content/IntentCompat.java
+++ b/core/core/src/main/java/androidx/core/content/IntentCompat.java
@@ -16,6 +16,7 @@
 
 package androidx.core.content;
 
+import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.os.Build;
 
@@ -30,6 +31,25 @@
     }
 
     /**
+     * Activity Action: Creates a reminder.
+     * <p>Input: {@link android.content.Intent#EXTRA_TITLE} The title of the
+     * reminder that will be shown to the user.
+     * {@link android.content.Intent#EXTRA_TEXT} The reminder text that will be
+     * shown to the user. The intent should at least specify a title or a text.
+     * {@link #EXTRA_EPOCH_TIME} The time when the reminder will
+     * be shown to the user. The time is specified in milliseconds since the
+     * Epoch (optional).
+     * </p>
+     * <p>Output: Nothing.</p>
+     *
+     * @see android.content.Intent#EXTRA_TITLE
+     * @see android.content.Intent#EXTRA_TEXT
+     * @see #EXTRA_EPOCH_TIME
+     */
+    @SuppressLint("ActionValue")
+    public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
+
+    /**
      * A constant String that is associated with the Intent, used with
      * {@link android.content.Intent#ACTION_SEND} to supply an alternative to
      * {@link android.content.Intent#EXTRA_TEXT}
@@ -46,6 +66,16 @@
     public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
 
     /**
+     * Optional extra specifying a time in milliseconds since the Epoch. The value must be
+     * non-negative.
+     * <p>
+     * Type: long
+     * </p>
+     */
+    @SuppressLint("ActionValue")
+    public static final String EXTRA_EPOCH_TIME = "android.intent.extra.EPOCH_TIME";
+
+    /**
      * Indicates an activity optimized for Leanback mode, and that should
      * be displayed in the Leanback launcher.
      */
diff --git a/core/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompat.java b/core/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompat.java
index 6e18711..382925a 100644
--- a/core/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompat.java
+++ b/core/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompat.java
@@ -22,9 +22,11 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.os.PersistableBundle;
+import android.os.UserHandle;
 import android.text.TextUtils;
 
 import androidx.annotation.NonNull;
@@ -36,8 +38,10 @@
 import androidx.core.content.LocusIdCompat;
 import androidx.core.graphics.drawable.IconCompat;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -52,7 +56,7 @@
 
     Context mContext;
     String mId;
-
+    String mPackageName;
     Intent[] mIntents;
     ComponentName mActivity;
 
@@ -73,6 +77,20 @@
 
     int mRank;
 
+    PersistableBundle mExtras;
+
+    // Read-Only fields
+    long mLastChangedTimestamp;
+    UserHandle mUser;
+    boolean mIsCached;
+    boolean mIsDynamic;
+    boolean mIsPinned;
+    boolean mIsDeclaredInManifest;
+    boolean mIsImmutable;
+    boolean mIsEnabled = true;
+    boolean mHasKeyFieldsOnly;
+    int mDisabledReason;
+
     ShortcutInfoCompat() { }
 
     /**
@@ -99,7 +117,9 @@
             builder.setCategories(mCategories);
         }
         builder.setRank(mRank);
-
+        if (mExtras != null) {
+            builder.setExtras(mExtras);
+        }
         if (Build.VERSION.SDK_INT >= 29) {
             if (mPersons != null && mPersons.length > 0) {
                 android.app.Person[] persons = new android.app.Person[mPersons.length];
@@ -127,19 +147,21 @@
     @RequiresApi(22)
     @RestrictTo(LIBRARY_GROUP_PREFIX)
     private PersistableBundle buildLegacyExtrasBundle() {
-        PersistableBundle bundle = new PersistableBundle();
+        if (mExtras == null) {
+            mExtras = new PersistableBundle();
+        }
         if (mPersons != null && mPersons.length > 0) {
-            bundle.putInt(EXTRA_PERSON_COUNT, mPersons.length);
+            mExtras.putInt(EXTRA_PERSON_COUNT, mPersons.length);
             for (int i = 0; i < mPersons.length; i++) {
-                bundle.putPersistableBundle(EXTRA_PERSON_ + (i + 1),
+                mExtras.putPersistableBundle(EXTRA_PERSON_ + (i + 1),
                         mPersons[i].toPersistableBundle());
             }
         }
         if (mLocusId != null) {
-            bundle.putString(EXTRA_LOCUS_ID, mLocusId.getId());
+            mExtras.putString(EXTRA_LOCUS_ID, mLocusId.getId());
         }
-        bundle.putBoolean(EXTRA_LONG_LIVED, mIsLongLived);
-        return bundle;
+        mExtras.putBoolean(EXTRA_LONG_LIVED, mIsLongLived);
+        return mExtras;
     }
 
     Intent addToIntent(Intent outIntent) {
@@ -178,6 +200,14 @@
     }
 
     /**
+     * Return the package name of the publisher app.
+     */
+    @NonNull
+    public String getPackage() {
+        return mPackageName;
+    }
+
+    /**
      * Return the target activity.
      *
      * <p>This has nothing to do with the activity that this shortcut will launch.
@@ -223,6 +253,13 @@
     }
 
     /**
+     * Returns why a shortcut has been disabled.
+     */
+    public int getDisabledReason() {
+        return mDisabledReason;
+    }
+
+    /**
      * Returns the intent that is executed when the user selects this shortcut.
      * If setIntents() was used, then return the last intent in the array.
      *
@@ -309,7 +346,7 @@
     @RequiresApi(25)
     @RestrictTo(LIBRARY_GROUP_PREFIX)
     @VisibleForTesting
-    static boolean getLongLivedFromExtra(@NonNull PersistableBundle bundle) {
+    static boolean getLongLivedFromExtra(@Nullable PersistableBundle bundle) {
         if (bundle == null || !bundle.containsKey(EXTRA_LONG_LIVED)) {
             return false;
         }
@@ -321,6 +358,109 @@
      */
     @RequiresApi(25)
     @RestrictTo(LIBRARY_GROUP_PREFIX)
+    static List<ShortcutInfoCompat> fromShortcuts(@NonNull final Context context,
+            @NonNull final List<ShortcutInfo> shortcuts) {
+        final List<ShortcutInfoCompat> results = new ArrayList<>(shortcuts.size());
+        for (ShortcutInfo s : shortcuts) {
+            results.add(new ShortcutInfoCompat.Builder(context, s).build());
+        }
+        return results;
+    }
+
+    @Nullable
+    public PersistableBundle getExtras() {
+        return mExtras;
+    }
+
+    /**
+     * {@link UserHandle} on which the publisher created this shortcut.
+     */
+    @Nullable
+    public UserHandle getUserHandle() {
+        return mUser;
+    }
+
+    /**
+     * Last time when any of the fields was updated.
+     */
+    public long getLastChangedTimestamp() {
+        return mLastChangedTimestamp;
+    }
+
+    /** Return whether a shortcut is cached. */
+    public boolean isCached() {
+        return mIsCached;
+    }
+
+    /** Return whether a shortcut is dynamic. */
+    public boolean isDynamic() {
+        return mIsDynamic;
+    }
+
+    /** Return whether a shortcut is pinned. */
+    public boolean isPinned() {
+        return mIsPinned;
+    }
+
+    /**
+     * Return whether a shortcut is static; that is, whether a shortcut is
+     * published from AndroidManifest.xml.  If {@code true}, the shortcut is
+     * also {@link #isImmutable()}.
+     *
+     * <p>When an app is upgraded and a shortcut is no longer published from AndroidManifest.xml,
+     * this will be set to {@code false}.  If the shortcut is not pinned, then it'll disappear.
+     * However, if it's pinned, it will still be visible, {@link #isEnabled()} will be
+     * {@code false} and {@link #isEnabled()} will be {@code true}.
+     */
+    public boolean isDeclaredInManifest() {
+        return mIsDeclaredInManifest;
+    }
+
+    /**
+     * Return if a shortcut is immutable, in which case it cannot be modified with any of
+     * {@link ShortcutManagerCompat} APIs.
+     *
+     * <p>All static shortcuts are immutable.  When a static shortcut is pinned and is then
+     * disabled because it doesn't appear in AndroidManifest.xml for a newer version of the
+     * app, {@link #isDeclaredInManifest} returns {@code false}, but the shortcut is still
+     * immutable.
+     *
+     * <p>All shortcuts originally published via the {@link ShortcutManager} APIs
+     * are all mutable.
+     */
+    public boolean isImmutable() {
+        return mIsImmutable;
+    }
+
+    /**
+     * Returns {@code false} if a shortcut is disabled with
+     * {@link ShortcutManagerCompat#disableShortcuts}.
+     */
+    public boolean isEnabled() {
+        return mIsEnabled;
+    }
+
+    /**
+     * Return whether a shortcut only contains "key" information only or not.  If true, only the
+     * following fields are available.
+     * <ul>
+     *     <li>{@link #getId()}
+     *     <li>{@link #getPackage()}
+     *     <li>{@link #getActivity()}
+     *     <li>{@link #getLastChangedTimestamp()}
+     *     <li>{@link #isDynamic()}
+     *     <li>{@link #isPinned()}
+     *     <li>{@link #isDeclaredInManifest()}
+     *     <li>{@link #isImmutable()}
+     *     <li>{@link #isEnabled()}
+     *     <li>{@link #getUserHandle()}
+     * </ul>
+     */
+    public boolean hasKeyFieldsOnly() {
+        return mHasKeyFieldsOnly;
+    }
+
+    @RequiresApi(25)
     @Nullable
     static LocusIdCompat getLocusId(@NonNull final ShortcutInfo shortcutInfo) {
         if (Build.VERSION.SDK_INT >= 29) {
@@ -364,15 +504,26 @@
             mInfo = new ShortcutInfoCompat();
             mInfo.mContext = shortcutInfo.mContext;
             mInfo.mId = shortcutInfo.mId;
+            mInfo.mPackageName = shortcutInfo.mPackageName;
             mInfo.mIntents = Arrays.copyOf(shortcutInfo.mIntents, shortcutInfo.mIntents.length);
             mInfo.mActivity = shortcutInfo.mActivity;
             mInfo.mLabel = shortcutInfo.mLabel;
             mInfo.mLongLabel = shortcutInfo.mLongLabel;
             mInfo.mDisabledMessage = shortcutInfo.mDisabledMessage;
+            mInfo.mDisabledReason = shortcutInfo.mDisabledReason;
             mInfo.mIcon = shortcutInfo.mIcon;
             mInfo.mIsAlwaysBadged = shortcutInfo.mIsAlwaysBadged;
+            mInfo.mUser = shortcutInfo.mUser;
+            mInfo.mLastChangedTimestamp = shortcutInfo.mLastChangedTimestamp;
+            mInfo.mIsCached = shortcutInfo.mIsCached;
+            mInfo.mIsDynamic = shortcutInfo.mIsDynamic;
+            mInfo.mIsPinned = shortcutInfo.mIsPinned;
+            mInfo.mIsDeclaredInManifest = shortcutInfo.mIsDeclaredInManifest;
+            mInfo.mIsImmutable = shortcutInfo.mIsImmutable;
+            mInfo.mIsEnabled = shortcutInfo.mIsEnabled;
             mInfo.mLocusId = shortcutInfo.mLocusId;
             mInfo.mIsLongLived = shortcutInfo.mIsLongLived;
+            mInfo.mHasKeyFieldsOnly = shortcutInfo.mHasKeyFieldsOnly;
             mInfo.mRank = shortcutInfo.mRank;
             if (shortcutInfo.mPersons != null) {
                 mInfo.mPersons = Arrays.copyOf(shortcutInfo.mPersons, shortcutInfo.mPersons.length);
@@ -380,6 +531,9 @@
             if (shortcutInfo.mCategories != null) {
                 mInfo.mCategories = new HashSet<>(shortcutInfo.mCategories);
             }
+            if (shortcutInfo.mExtras != null) {
+                mInfo.mExtras = shortcutInfo.mExtras;
+            }
         }
 
         /**
@@ -391,16 +545,36 @@
             mInfo = new ShortcutInfoCompat();
             mInfo.mContext = context;
             mInfo.mId = shortcutInfo.getId();
+            mInfo.mPackageName = shortcutInfo.getPackage();
             Intent[] intents = shortcutInfo.getIntents();
             mInfo.mIntents = Arrays.copyOf(intents, intents.length);
             mInfo.mActivity = shortcutInfo.getActivity();
             mInfo.mLabel = shortcutInfo.getShortLabel();
             mInfo.mLongLabel = shortcutInfo.getLongLabel();
             mInfo.mDisabledMessage = shortcutInfo.getDisabledMessage();
+            if (Build.VERSION.SDK_INT >= 28) {
+                mInfo.mDisabledReason = shortcutInfo.getDisabledReason();
+            } else {
+                mInfo.mDisabledReason = shortcutInfo.isEnabled()
+                        ? ShortcutInfo.DISABLED_REASON_NOT_DISABLED
+                        : ShortcutInfo.DISABLED_REASON_UNKNOWN;
+            }
             mInfo.mCategories = shortcutInfo.getCategories();
             mInfo.mPersons = ShortcutInfoCompat.getPersonsFromExtra(shortcutInfo.getExtras());
+            mInfo.mUser = shortcutInfo.getUserHandle();
+            mInfo.mLastChangedTimestamp = shortcutInfo.getLastChangedTimestamp();
+            if (Build.VERSION.SDK_INT >= 30) {
+                mInfo.mIsCached = shortcutInfo.isCached();
+            }
+            mInfo.mIsDynamic = shortcutInfo.isDynamic();
+            mInfo.mIsPinned = shortcutInfo.isPinned();
+            mInfo.mIsDeclaredInManifest = shortcutInfo.isDeclaredInManifest();
+            mInfo.mIsImmutable = shortcutInfo.isImmutable();
+            mInfo.mIsEnabled = shortcutInfo.isEnabled();
+            mInfo.mHasKeyFieldsOnly = shortcutInfo.hasKeyFieldsOnly();
             mInfo.mLocusId = ShortcutInfoCompat.getLocusId(shortcutInfo);
             mInfo.mRank = shortcutInfo.getRank();
+            mInfo.mExtras = shortcutInfo.getExtras();
         }
 
         /**
@@ -592,6 +766,20 @@
         }
 
         /**
+         * Extras that the app can set for any purpose.
+         *
+         * <p>Apps can store arbitrary shortcut metadata in extras and retrieve the
+         * metadata later using {@link ShortcutInfo#getExtras()}.
+         *
+         * @see ShortcutInfo#getExtras
+         */
+        @NonNull
+        public Builder setExtras(@NonNull PersistableBundle extras) {
+            mInfo.mExtras = extras;
+            return this;
+        }
+
+        /**
          * Creates a {@link ShortcutInfoCompat} instance.
          */
         @NonNull
diff --git a/core/core/src/main/java/androidx/core/content/pm/ShortcutManagerCompat.java b/core/core/src/main/java/androidx/core/content/pm/ShortcutManagerCompat.java
index 41965b1..91e45c1 100644
--- a/core/core/src/main/java/androidx/core/content/pm/ShortcutManagerCompat.java
+++ b/core/core/src/main/java/androidx/core/content/pm/ShortcutManagerCompat.java
@@ -16,7 +16,11 @@
 
 package androidx.core.content.pm;
 
+import static androidx.core.graphics.drawable.IconCompat.TYPE_URI;
+import static androidx.core.graphics.drawable.IconCompat.TYPE_URI_ADAPTIVE_BITMAP;
+
 import android.app.Activity;
+import android.app.ActivityManager;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -25,16 +29,30 @@
 import android.content.pm.ResolveInfo;
 import android.content.pm.ShortcutInfo;
 import android.content.pm.ShortcutManager;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.os.Build;
 import android.text.TextUtils;
+import android.util.DisplayMetrics;
 
+import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RestrictTo;
+import androidx.annotation.RestrictTo.Scope;
 import androidx.annotation.VisibleForTesting;
 import androidx.core.content.ContextCompat;
+import androidx.core.graphics.drawable.IconCompat;
+import androidx.core.util.Preconditions;
 
+import java.io.InputStream;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -42,11 +60,53 @@
  */
 public class ShortcutManagerCompat {
 
+    /**
+     * Include manifest shortcuts in the result.
+     *
+     * @see #getShortcuts
+     */
+    public static final int FLAG_MATCH_MANIFEST = 1 << 0;
+
+    /**
+     * Include dynamic shortcuts in the result.
+     *
+     * @see #getShortcuts
+     */
+    public static final int FLAG_MATCH_DYNAMIC = 1 << 1;
+
+    /**
+     * Include pinned shortcuts in the result.
+     *
+     * @see #getShortcuts
+     */
+    public static final int FLAG_MATCH_PINNED = 1 << 2;
+
+    /**
+     * Include cached shortcuts in the result.
+     *
+     * @see #getShortcuts
+     */
+    public static final int FLAG_MATCH_CACHED = 1 << 3;
+
+    /** @hide */
+    @RestrictTo(Scope.LIBRARY_GROUP_PREFIX)
+    @IntDef(flag = true, value = {
+            FLAG_MATCH_MANIFEST,
+            FLAG_MATCH_DYNAMIC,
+            FLAG_MATCH_PINNED,
+            FLAG_MATCH_CACHED,
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ShortcutMatchFlags {}
+
     @VisibleForTesting static final String ACTION_INSTALL_SHORTCUT =
             "com.android.launcher.action.INSTALL_SHORTCUT";
     @VisibleForTesting static final String INSTALL_SHORTCUT_PERMISSION =
             "com.android.launcher.permission.INSTALL_SHORTCUT";
 
+    private static final int DEFAULT_MAX_ICON_DIMENSION_DP = 96;
+    private static final int DEFAULT_MAX_ICON_DIMENSION_LOWRAM_DP = 48;
+
     /**
      * Key to get the shortcut ID from extras of a share intent.
      *
@@ -165,6 +225,64 @@
     }
 
     /**
+     * Returns {@link ShortcutInfoCompat}s that match {@code matchFlags}.
+     *
+     * @param matchFlags result includes shortcuts matching this flags. Any combination of:
+     * <ul>
+     *     <li>{@link #FLAG_MATCH_MANIFEST}
+     *     <li>{@link #FLAG_MATCH_DYNAMIC}
+     *     <li>{@link #FLAG_MATCH_PINNED}
+     *     <li>{@link #FLAG_MATCH_CACHED}
+     * </ul>
+     *
+     * Compatibility behavior:
+     * <ul>
+     *      <li>API 30 and above, this method matches platform behavior.
+     *      <li>API 25 through 29, this method aggregates the result from corresponding platform
+     *                   api.
+     *      <li>API 24 and earlier, this method can only returns dynamic shortcut. Calling this
+     *                   method with other flag will be ignored.
+     * </ul>
+     *
+     * @return list of {@link ShortcutInfoCompat}s that match the flag.
+     *
+     * <p>At least one of the {@code MATCH} flags should be set. Otherwise no shortcuts will be
+     * returned.
+     *
+     * @throws IllegalStateException when the user is locked.
+     */
+    @NonNull
+    public static List<ShortcutInfoCompat> getShortcuts(@NonNull final Context context,
+            @ShortcutMatchFlags int matchFlags) {
+        if (Build.VERSION.SDK_INT >= 30) {
+            final List<ShortcutInfo> shortcuts =
+                    context.getSystemService(ShortcutManager.class).getShortcuts(matchFlags);
+            return ShortcutInfoCompat.fromShortcuts(context, shortcuts);
+        } else if (Build.VERSION.SDK_INT >= 25) {
+            final ShortcutManager manager = context.getSystemService(ShortcutManager.class);
+            final List<ShortcutInfo> shortcuts = new ArrayList<>();
+            if ((matchFlags & FLAG_MATCH_MANIFEST) != 0) {
+                shortcuts.addAll(manager.getManifestShortcuts());
+            }
+            if ((matchFlags & FLAG_MATCH_DYNAMIC) != 0) {
+                shortcuts.addAll(manager.getDynamicShortcuts());
+            }
+            if ((matchFlags & FLAG_MATCH_PINNED) != 0) {
+                shortcuts.addAll(manager.getPinnedShortcuts());
+            }
+            return ShortcutInfoCompat.fromShortcuts(context, shortcuts);
+        }
+        if ((matchFlags & FLAG_MATCH_DYNAMIC) != 0) {
+            try {
+                return getShortcutInfoSaverInstance(context).getShortcuts();
+            } catch (Exception e) {
+                // Ignore
+            }
+        }
+        return Collections.emptyList();
+    }
+
+    /**
      * Publish the list of dynamic shortcuts. If there are already dynamic or pinned shortcuts with
      * the same IDs, each mutable shortcut is updated.
      *
@@ -178,6 +296,9 @@
      */
     public static boolean addDynamicShortcuts(@NonNull Context context,
             @NonNull List<ShortcutInfoCompat> shortcutInfoList) {
+        if (Build.VERSION.SDK_INT <= 29) {
+            convertUriIconsToBitmapIcons(context, shortcutInfoList);
+        }
         if (Build.VERSION.SDK_INT >= 25) {
             ArrayList<ShortcutInfo> shortcuts = new ArrayList<>();
             for (ShortcutInfoCompat item : shortcutInfoList) {
@@ -197,12 +318,124 @@
      * can have at a time.
      */
     public static int getMaxShortcutCountPerActivity(@NonNull Context context) {
+        Preconditions.checkNotNull(context);
         if (Build.VERSION.SDK_INT >= 25) {
             return context.getSystemService(ShortcutManager.class).getMaxShortcutCountPerActivity();
         }
 
-        // TODO: decide on this limit when ShortcutManager is not available.
-        return 0;
+        return 5;
+    }
+
+    /**
+     * Return {@code true} when rate-limiting is active for the caller app.
+     *
+     * <p>For details, see <a href="/guide/topics/ui/shortcuts/managing-shortcuts#rate-limiting">
+     * Rate limiting</a>.
+     *
+     * @throws IllegalStateException when the user is locked.
+     */
+    public static boolean isRateLimitingActive(@NonNull final Context context) {
+        Preconditions.checkNotNull(context);
+        if (Build.VERSION.SDK_INT >= 25) {
+            return context.getSystemService(ShortcutManager.class).isRateLimitingActive();
+        }
+
+        return getShortcuts(context, FLAG_MATCH_MANIFEST | FLAG_MATCH_DYNAMIC).size()
+                == getMaxShortcutCountPerActivity(context);
+    }
+
+    /**
+     * Return the max width for icons, in pixels.
+     *
+     * <p> Note that this method returns max width of icon's visible part. Hence, it does not take
+     * into account the inset introduced by {@link android.graphics.drawable.AdaptiveIconDrawable}.
+     * To calculate bitmap image to function as
+     * {@link android.graphics.drawable.AdaptiveIconDrawable}, multiply
+     * 1 + 2 * {@link android.graphics.drawable.AdaptiveIconDrawable#getExtraInsetFraction()} to
+     * the returned size.
+     */
+    public static int getIconMaxWidth(@NonNull final Context context) {
+        Preconditions.checkNotNull(context);
+        if (Build.VERSION.SDK_INT >= 25) {
+            return context.getSystemService(ShortcutManager.class).getIconMaxWidth();
+        }
+        return getIconDimensionInternal(context, true);
+    }
+
+    /**
+     * Return the max height for icons, in pixels.
+     */
+    public static int getIconMaxHeight(@NonNull final Context context) {
+        Preconditions.checkNotNull(context);
+        if (Build.VERSION.SDK_INT >= 25) {
+            return context.getSystemService(ShortcutManager.class).getIconMaxHeight();
+        }
+        return getIconDimensionInternal(context, false);
+    }
+
+    /**
+     * Apps that publish shortcuts should call this method whenever the user
+     * selects the shortcut containing the given ID or when the user completes
+     * an action in the app that is equivalent to selecting the shortcut.
+     * For more details, read about
+     * <a href="/guide/topics/ui/shortcuts/managing-shortcuts.html#track-usage">
+     * tracking shortcut usage</a>.
+     *
+     * <p>The information is accessible via {@link android.app.usage.UsageStatsManager#queryEvents}
+     * Typically, launcher apps use this information to build a prediction model
+     * so that they can promote the shortcuts that are likely to be used at the moment.
+     *
+     * @throws IllegalStateException when the user is locked.
+     *
+     * <p>This method is not supported on devices running SDK < 25 since the platform class will
+     * not be available.
+     */
+    public static void reportShortcutUsed(@NonNull final Context context,
+            @NonNull final String shortcutId) {
+        Preconditions.checkNotNull(context);
+        Preconditions.checkNotNull(shortcutId);
+        if (Build.VERSION.SDK_INT >= 25) {
+            context.getSystemService(ShortcutManager.class).reportShortcutUsed(shortcutId);
+        }
+    }
+
+    /**
+     * Publish the list of shortcuts.  All existing dynamic shortcuts from the caller app
+     * will be replaced.  If there are already pinned shortcuts with the same IDs,
+     * the mutable pinned shortcuts are updated.
+     *
+     * <p>This API will be rate-limited.
+     *
+     * Compatibility behavior:
+     * <ul>
+     *      <li>API 25 and above, this method matches platform behavior.
+     *      <li>API 24 and earlier, this method is equivalent of calling
+     *      {@link #removeAllDynamicShortcuts} and {@link #addDynamicShortcuts} consecutively.
+     * </ul>
+     *
+     * @return {@code true} if the call has succeeded. {@code false} if the call is rate-limited.
+     *
+     * @throws IllegalArgumentException if {@link #getMaxShortcutCountPerActivity} is exceeded,
+     * or when trying to update immutable shortcuts.
+     *
+     * @throws IllegalStateException when the user is locked.
+     */
+    public static boolean setDynamicShortcuts(@NonNull final Context context,
+            @NonNull final List<ShortcutInfoCompat> shortcutInfoList) {
+        Preconditions.checkNotNull(context);
+        Preconditions.checkNotNull(shortcutInfoList);
+        if (Build.VERSION.SDK_INT >= 25) {
+            List<ShortcutInfo> shortcuts = new ArrayList<>(shortcutInfoList.size());
+            for (ShortcutInfoCompat compat : shortcutInfoList) {
+                shortcuts.add(compat.toShortcutInfo());
+            }
+            if (!context.getSystemService(ShortcutManager.class).setDynamicShortcuts(shortcuts)) {
+                return false;
+            }
+        }
+        getShortcutInfoSaverInstance(context).removeAllShortcuts();
+        getShortcutInfoSaverInstance(context).addShortcuts(shortcutInfoList);
+        return true;
     }
 
     /**
@@ -246,6 +479,9 @@
      */
     public static boolean updateShortcuts(@NonNull Context context,
             @NonNull List<ShortcutInfoCompat> shortcutInfoList) {
+        if (Build.VERSION.SDK_INT <= 29) {
+            convertUriIconsToBitmapIcons(context, shortcutInfoList);
+        }
         if (Build.VERSION.SDK_INT >= 25) {
             ArrayList<ShortcutInfo> shortcuts = new ArrayList<>();
             for (ShortcutInfoCompat item : shortcutInfoList) {
@@ -260,6 +496,91 @@
         return true;
     }
 
+    @VisibleForTesting
+    static boolean convertUriIconToBitmapIcon(@NonNull final Context context,
+            @NonNull final ShortcutInfoCompat info) {
+        final int type = info.mIcon.mType;
+        if (type != TYPE_URI_ADAPTIVE_BITMAP && type != TYPE_URI) {
+            return true;
+        }
+        InputStream is = info.mIcon.getUriInputStream(context);
+        if (is == null) {
+            return false;
+        }
+        final Bitmap bitmap = BitmapFactory.decodeStream(is);
+        if (bitmap == null) {
+            return false;
+        }
+        info.mIcon = (type == TYPE_URI_ADAPTIVE_BITMAP)
+                ? IconCompat.createWithAdaptiveBitmap(bitmap)
+                : IconCompat.createWithBitmap(bitmap);
+        return true;
+    }
+
+    @VisibleForTesting
+    static void convertUriIconsToBitmapIcons(@NonNull final Context context,
+            @NonNull final List<ShortcutInfoCompat> shortcutInfoList) {
+        for (ShortcutInfoCompat info : shortcutInfoList) {
+            if (!convertUriIconToBitmapIcon(context, info)) {
+                shortcutInfoList.remove(info);
+            }
+        }
+    }
+
+    /**
+     * Disable pinned shortcuts, showing the user a custom error message when they try to select
+     * the disabled shortcuts.
+     * For more details, read
+     * <a href="/guide/topics/ui/shortcuts/managing-shortcuts.html#disable-shortcuts">
+     * Disable shortcuts</a>.
+     *
+     * Compatibility behavior:
+     * <ul>
+     *      <li>API 25 and above, this method matches platform behavior.
+     *      <li>API 24 and earlier, this method behalves the same as {@link #removeDynamicShortcuts}
+     * </ul>
+     *
+     * @throws IllegalArgumentException If trying to disable immutable shortcuts.
+     *
+     * @throws IllegalStateException when the user is locked.
+     */
+    public static void disableShortcuts(@NonNull final Context context,
+            @NonNull final List<String> shortcutIds, @Nullable final CharSequence disabledMessage) {
+        if (Build.VERSION.SDK_INT >= 25) {
+            context.getSystemService(ShortcutManager.class)
+                    .disableShortcuts(shortcutIds, disabledMessage);
+        }
+
+        getShortcutInfoSaverInstance(context).removeShortcuts(shortcutIds);
+    }
+
+    /**
+     * Re-enable pinned shortcuts that were previously disabled.  If the target shortcuts
+     * are already enabled, this method does nothing.
+     *
+     * Compatibility behavior:
+     * <ul>
+     *      <li>API 25 and above, this method matches platform behavior.
+     *      <li>API 24 and earlier, this method behalves the same as {@link #addDynamicShortcuts}
+     * </ul>
+     *
+     * @throws IllegalArgumentException If trying to enable immutable shortcuts.
+     *
+     * @throws IllegalStateException when the user is locked.
+     */
+    public static void enableShortcuts(@NonNull final Context context,
+            @NonNull final List<ShortcutInfoCompat> shortcutInfoList) {
+        if (Build.VERSION.SDK_INT >= 25) {
+            final ArrayList<String> shortcutIds = new ArrayList<>(shortcutInfoList.size());
+            for (ShortcutInfoCompat shortcut : shortcutInfoList) {
+                shortcutIds.add(shortcut.mId);
+            }
+            context.getSystemService(ShortcutManager.class).enableShortcuts(shortcutIds);
+        }
+
+        getShortcutInfoSaverInstance(context).addShortcuts(shortcutInfoList);
+    }
+
     /**
      * Delete dynamic shortcuts by ID.
      */
@@ -283,6 +604,135 @@
         getShortcutInfoSaverInstance(context).removeAllShortcuts();
     }
 
+    /**
+     * Delete long lived shortcuts by ID.
+     *
+     * Compatibility behavior:
+     * <ul>
+     *      <li>API 30 and above, this method matches platform behavior.
+     *      <li>API 29 and earlier, this method behalves the same as {@link #removeDynamicShortcuts}
+     * </ul>
+     *
+     * @throws IllegalStateException when the user is locked.
+     */
+    public static void removeLongLivedShortcuts(@NonNull final Context context,
+            @NonNull final List<String> shortcutIds) {
+        if (Build.VERSION.SDK_INT < 30) {
+            removeDynamicShortcuts(context, shortcutIds);
+            return;
+        }
+
+        context.getSystemService(ShortcutManager.class).removeLongLivedShortcuts(shortcutIds);
+        getShortcutInfoSaverInstance(context).removeShortcuts(shortcutIds);
+    }
+
+    /**
+     * Publish a single dynamic shortcut. If there are already dynamic or pinned shortcuts with the
+     * same ID, each mutable shortcut is updated.
+     *
+     * <p>This method is useful when posting notifications which are tagged with shortcut IDs; In
+     * order to make sure shortcuts exist and are up-to-date, without the need to explicitly handle
+     * the shortcut count limit.
+     * @see androidx.core.app.NotificationManagerCompat#notify(int, android.app.Notification)
+     * @see androidx.core.app.NotificationCompat.Builder#setShortcutId(String)
+     *
+     * <p>If {@link #getMaxShortcutCountPerActivity} is already reached, an existing shortcut with
+     * the lowest rank will be removed to add space for the new shortcut.
+     *
+     * <p>If the rank of the shortcut is not explicitly set, it will be set to zero, and shortcut
+     * will be added to the top of the list.
+     *
+     * Compatibility behavior:
+     * <ul>
+     *      <li>API 30 and above, this method matches platform behavior.
+     *      <li>API 25 to 29, this api is simulated by
+     *      {@link ShortcutManager#addDynamicShortcuts(List)} and
+     *      {@link ShortcutManager#removeDynamicShortcuts(List)} and thus will be rate-limited.
+     *      <li>API 24 and earlier, this method uses internal implementation and matches platform
+     *      behavior.
+     * </ul>
+     *
+     * @return {@code true} if the call has succeeded. {@code false} if the call fails or is
+     * rate-limited.
+     *
+     * @throws IllegalArgumentException if trying to update an immutable shortcut.
+     *
+     * @throws IllegalStateException when the user is locked.
+     */
+    public static boolean pushDynamicShortcut(@NonNull final Context context,
+            @NonNull final ShortcutInfoCompat shortcut) {
+        Preconditions.checkNotNull(context);
+        Preconditions.checkNotNull(shortcut);
+
+        int maxShortcutCount = getMaxShortcutCountPerActivity(context);
+        if (maxShortcutCount == 0) {
+            return false;
+        }
+        if (Build.VERSION.SDK_INT <= 29) {
+            convertUriIconToBitmapIcon(context, shortcut);
+        }
+        if (Build.VERSION.SDK_INT >= 30) {
+            context.getSystemService(ShortcutManager.class).pushDynamicShortcut(
+                    shortcut.toShortcutInfo());
+        } else if (Build.VERSION.SDK_INT >= 25) {
+            final ShortcutManager sm = context.getSystemService(ShortcutManager.class);
+            if (sm.isRateLimitingActive()) {
+                return false;
+            }
+            final List<ShortcutInfo> shortcuts = sm.getDynamicShortcuts();
+            if (shortcuts.size() >= maxShortcutCount) {
+                sm.removeDynamicShortcuts(Arrays.asList(
+                        Api25Impl.getShortcutInfoWithLowestRank(shortcuts)));
+            }
+            sm.addDynamicShortcuts(Arrays.asList(shortcut.toShortcutInfo()));
+        }
+        final ShortcutInfoCompatSaver<?> saver = getShortcutInfoSaverInstance(context);
+        try {
+            final List<ShortcutInfoCompat> oldShortcuts = saver.getShortcuts();
+            if (oldShortcuts.size() >= maxShortcutCount) {
+                saver.removeShortcuts(Arrays.asList(
+                        getShortcutInfoCompatWithLowestRank(oldShortcuts)));
+            }
+            saver.addShortcuts(Arrays.asList(shortcut));
+            return true;
+        } catch (Exception e) {
+            // Ignore
+        }
+        return false;
+    }
+
+    private static String getShortcutInfoCompatWithLowestRank(
+            @NonNull final List<ShortcutInfoCompat> shortcuts) {
+        int rank = -1;
+        String target = null;
+        for (ShortcutInfoCompat s : shortcuts) {
+            if (s.getRank() > rank) {
+                target = s.getId();
+                rank = s.getRank();
+            }
+        }
+        return target;
+    }
+
+    @VisibleForTesting
+    static void setShortcutInfoCompatSaver(final ShortcutInfoCompatSaver<Void> saver) {
+        sShortcutInfoCompatSaver = saver;
+    }
+
+    private static int getIconDimensionInternal(@NonNull final Context context,
+            final boolean isHorizontal) {
+        final ActivityManager am = (ActivityManager)
+                context.getSystemService(Context.ACTIVITY_SERVICE);
+        final boolean isLowRamDevice =
+                Build.VERSION.SDK_INT < 19 || am == null || am.isLowRamDevice();
+        final int iconDimensionDp = Math.max(1, isLowRamDevice
+                ? DEFAULT_MAX_ICON_DIMENSION_LOWRAM_DP : DEFAULT_MAX_ICON_DIMENSION_DP);
+        final DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
+        float density = (isHorizontal ? displayMetrics.xdpi : displayMetrics.ydpi)
+                / DisplayMetrics.DENSITY_MEDIUM;
+        return (int) (iconDimensionDp * density);
+    }
+
     private static ShortcutInfoCompatSaver<?> getShortcutInfoSaverInstance(Context context) {
         if (sShortcutInfoCompatSaver == null) {
             if (Build.VERSION.SDK_INT >= 23) {
@@ -303,4 +753,19 @@
         }
         return sShortcutInfoCompatSaver;
     }
+
+    @RequiresApi(25)
+    private static class Api25Impl {
+        static String getShortcutInfoWithLowestRank(@NonNull final List<ShortcutInfo> shortcuts) {
+            int rank = -1;
+            String target = null;
+            for (ShortcutInfo s : shortcuts) {
+                if (s.getRank() > rank) {
+                    target = s.getId();
+                    rank = s.getRank();
+                }
+            }
+            return target;
+        }
+    }
 }
diff --git a/core/core/src/main/java/androidx/core/graphics/drawable/IconCompat.java b/core/core/src/main/java/androidx/core/graphics/drawable/IconCompat.java
index 51a29d3..c7bc99d 100644
--- a/core/core/src/main/java/androidx/core/graphics/drawable/IconCompat.java
+++ b/core/core/src/main/java/androidx/core/graphics/drawable/IconCompat.java
@@ -17,6 +17,7 @@
 package androidx.core.graphics.drawable;
 
 import static androidx.annotation.RestrictTo.Scope.LIBRARY;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
 
 import android.app.ActivityManager;
@@ -107,11 +108,11 @@
      * An icon that was created using {@link #createWithAdaptiveBitmap}.
      */
     public static final int TYPE_ADAPTIVE_BITMAP = Icon.TYPE_ADAPTIVE_BITMAP;
-    // TODO: (b/143878043) replace with android.graphics.drawable.TYPE_URI_ADAPTIVE_BITMAP
+
     /**
      * An icon that was created using {@link #createWithAdaptiveBitmapContentUri}.
      */
-    public static final int TYPE_URI_ADAPTIVE_BITMAP = 6;
+    public static final int TYPE_URI_ADAPTIVE_BITMAP = Icon.TYPE_URI_ADAPTIVE_BITMAP;
 
     /**
      * @hide
@@ -336,9 +337,8 @@
      * design guideline defined by {@link AdaptiveIconDrawable}.
      *
      * @param uri A uri referring to local content:// or file:// image data.
+     * @see android.graphics.drawable.Icon#createWithAdaptiveBitmapContentUri(String)
      */
-    // TODO: (b/143878043) update comment when corresponding api is available
-    // @see android.graphics.drawable.Icon#createWithAdaptiveBitmapContentUri(String)
     @NonNull
     public static IconCompat createWithAdaptiveBitmapContentUri(@NonNull String uri) {
         if (uri == null) {
@@ -354,9 +354,8 @@
      * design guideline defined by {@link AdaptiveIconDrawable}.
      *
      * @param uri A uri referring to local content:// or file:// image data.
+     * @see android.graphics.drawable.Icon#createWithAdaptiveBitmapContentUri(String)
      */
-    // TODO: (b/143878043) update comment when corresponding api is available
-    // @see android.graphics.drawable.Icon#createWithAdaptiveBitmapContentUri(String)
     @NonNull
     public static IconCompat createWithAdaptiveBitmapContentUri(@NonNull Uri uri) {
         if (uri == null) {
@@ -551,7 +550,10 @@
                 icon = Icon.createWithContentUri((String) mObj1);
                 break;
             case TYPE_URI_ADAPTIVE_BITMAP:
-                // TODO: (b/143878043) call Icon#createWithAdaptiveBitmapContentUri
+                if (Build.VERSION.SDK_INT >= 30) {
+                    icon = Icon.createWithAdaptiveBitmapContentUri(getUri());
+                    break;
+                }
                 if (context == null) {
                     throw new IllegalArgumentException(
                             "Context is required to resolve the file uri of the icon: " + getUri());
@@ -684,7 +686,14 @@
         return null;
     }
 
-    private InputStream getUriInputStream(Context context) {
+    /**
+     * Create an input stream for bitmap by resolving corresponding content uri.
+     *
+     * @hide
+     */
+    @Nullable
+    @RestrictTo(LIBRARY_GROUP)
+    public InputStream getUriInputStream(@NonNull Context context) {
         final Uri uri = getUri();
         final String scheme = uri.getScheme();
         if (ContentResolver.SCHEME_CONTENT.equals(scheme)
diff --git a/core/core/src/main/java/androidx/core/hardware/display/DisplayManagerCompat.java b/core/core/src/main/java/androidx/core/hardware/display/DisplayManagerCompat.java
index ff927a6..0bb5067 100644
--- a/core/core/src/main/java/androidx/core/hardware/display/DisplayManagerCompat.java
+++ b/core/core/src/main/java/androidx/core/hardware/display/DisplayManagerCompat.java
@@ -79,6 +79,7 @@
      * @return The display object, or null if there is no valid display with the given id.
      */
     @Nullable
+    @SuppressWarnings("deprecation") /* getDefaultDisplay */
     public Display getDisplay(int displayId) {
         if (Build.VERSION.SDK_INT >= 17) {
             return ((DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE))
@@ -127,6 +128,7 @@
      * @see #DISPLAY_CATEGORY_PRESENTATION
      */
     @NonNull
+    @SuppressWarnings("deprecation") /* getDefaultDisplay */
     public Display[] getDisplays(@Nullable String category) {
         if (Build.VERSION.SDK_INT >= 17) {
             return ((DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE))
diff --git a/core/core/src/main/java/androidx/core/location/GnssStatusCompat.java b/core/core/src/main/java/androidx/core/location/GnssStatusCompat.java
new file mode 100644
index 0000000..850a1d0
--- /dev/null
+++ b/core/core/src/main/java/androidx/core/location/GnssStatusCompat.java
@@ -0,0 +1,216 @@
+/*
+ * 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.core.location;
+
+import static android.os.Build.VERSION_CODES;
+
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
+
+import android.annotation.SuppressLint;
+import android.location.GnssStatus;
+import android.location.GpsSatellite;
+import android.location.GpsStatus;
+
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RestrictTo;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * GnssStatus representation that works across all Android versions. See {@link GnssStatus} and
+ * {@link GpsStatus}.
+ *
+ * <p>Note: When used to wrap {@link GpsStatus}, the best performance can be obtained by using a
+ * monotonically increasing {@code satelliteIndex} parameter (for instance, by using a loop from
+ * 0 to {@link #getSatelliteCount()}). Random access is supported but performance may suffer.
+ */
+public abstract class GnssStatusCompat {
+
+    // NOTE: CONSTELLATION_* values are copied from GnssStatus.java - any updates there should
+    // also be copied to this file.
+
+    /** Unknown constellation type. */
+    @SuppressLint("InlinedApi")
+    public static final int CONSTELLATION_UNKNOWN = GnssStatus.CONSTELLATION_UNKNOWN;
+    /** Constellation type constant for GPS. */
+    @SuppressLint("InlinedApi")
+    public static final int CONSTELLATION_GPS = GnssStatus.CONSTELLATION_GPS;
+    /** Constellation type constant for SBAS. */
+    @SuppressLint("InlinedApi")
+    public static final int CONSTELLATION_SBAS = GnssStatus.CONSTELLATION_SBAS;
+    /** Constellation type constant for Glonass. */
+    @SuppressLint("InlinedApi")
+    public static final int CONSTELLATION_GLONASS = GnssStatus.CONSTELLATION_GLONASS;
+    /** Constellation type constant for QZSS. */
+    @SuppressLint("InlinedApi")
+    public static final int CONSTELLATION_QZSS = GnssStatus.CONSTELLATION_QZSS;
+    /** Constellation type constant for Beidou. */
+    @SuppressLint("InlinedApi")
+    public static final int CONSTELLATION_BEIDOU = GnssStatus.CONSTELLATION_BEIDOU;
+    /** Constellation type constant for Galileo. */
+    @SuppressLint("InlinedApi")
+    public static final int CONSTELLATION_GALILEO = GnssStatus.CONSTELLATION_GALILEO;
+    /** Constellation type constant for IRNSS. */
+    @SuppressLint("InlinedApi")
+    public static final int CONSTELLATION_IRNSS = GnssStatus.CONSTELLATION_IRNSS;
+
+    /**
+     * @hide
+     */
+    @RestrictTo(LIBRARY)
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({CONSTELLATION_UNKNOWN, CONSTELLATION_GPS, CONSTELLATION_SBAS, CONSTELLATION_GLONASS,
+            CONSTELLATION_QZSS, CONSTELLATION_BEIDOU, CONSTELLATION_GALILEO, CONSTELLATION_IRNSS})
+    public @interface ConstellationType {}
+
+    /**
+     * See {@link GnssStatus.Callback}.
+     */
+    public abstract static class Callback {
+
+        /**
+         * See {@link GnssStatus.Callback#onStarted()}.
+         */
+        public void onStarted() {}
+
+        /**
+         * See {@link GnssStatus.Callback#onStopped()}.
+         */
+        public void onStopped() {}
+
+        /**
+         * See {@link GnssStatus.Callback#onFirstFix(int)}.
+         */
+        public void onFirstFix(@IntRange(from = 0) int ttffMillis) {}
+
+        /**
+         * See {@link GnssStatus.Callback#onSatelliteStatusChanged(GnssStatus)}.
+         */
+        public void onSatelliteStatusChanged(@NonNull GnssStatusCompat status) {}
+    }
+
+    /**
+     * Wraps the given {@link GnssStatus} as GnssStatusCompat.
+     */
+    @RequiresApi(VERSION_CODES.N)
+    @NonNull
+    public static GnssStatusCompat wrap(@NonNull GnssStatus gnssStatus) {
+        return new GnssStatusWrapper(gnssStatus);
+    }
+
+    /**
+     * Wraps the given {@link GpsStatus} as GnssStatusCompat.
+     */
+    @SuppressLint("ReferencesDeprecated")
+    @NonNull
+    public static GnssStatusCompat wrap(@NonNull GpsStatus gpsStatus) {
+        return new GpsStatusWrapper(gpsStatus);
+    }
+
+    // package private to prevent subclassing by clients
+    GnssStatusCompat() {}
+
+    /**
+     * See {@link GnssStatus#getSatelliteCount()} and {@link GpsStatus#getMaxSatellites()}.
+     */
+    @IntRange(from = 0)
+    public abstract int getSatelliteCount();
+
+    /**
+     * See {@link GnssStatus#getConstellationType(int)}. Will always return a value for the GPS
+     * constellation below Android N.
+     *
+     * @param satelliteIndex A index from zero to {@link #getSatelliteCount()} - 1
+     */
+    @ConstellationType
+    public abstract int getConstellationType(@IntRange(from = 0) int satelliteIndex);
+
+    /**
+     * See {@link GnssStatus#getSvid(int)} and {@link GpsSatellite#getPrn()}.
+     *
+     * @param satelliteIndex A index from zero to {@link #getSatelliteCount()} - 1
+     */
+    @IntRange(from = 1, to = 200)
+    public abstract int getSvid(@IntRange(from = 0) int satelliteIndex);
+
+    /**
+     * See {@link GnssStatus#getCn0DbHz(int)} and {@link GpsSatellite#getSnr()}.
+     *
+     * @param satelliteIndex A index from zero to {@link #getSatelliteCount()} - 1
+     */
+    @FloatRange(from = 0, to = 63)
+    public abstract float getCn0DbHz(@IntRange(from = 0) int satelliteIndex);
+
+    /**
+     * See {@link GnssStatus#getElevationDegrees(int)} and {@link GpsSatellite#getElevation()}.
+     *
+     * @param satelliteIndex A index from zero to {@link #getSatelliteCount()} - 1
+     */
+    @FloatRange(from = -90, to = 90)
+    public abstract float getElevationDegrees(@IntRange(from = 0) int satelliteIndex);
+
+    /**
+     * See {@link GnssStatus#getAzimuthDegrees(int)} and {@link GpsSatellite#getAzimuth()}.
+     *
+     * @param satelliteIndex A index from zero to {@link #getSatelliteCount()} - 1
+     */
+    @FloatRange(from = 0, to = 360)
+    public abstract float getAzimuthDegrees(@IntRange(from = 0) int satelliteIndex);
+
+    /**
+     * See {@link GnssStatus#hasEphemerisData(int)} and {@link GpsSatellite#hasEphemeris()}.
+     *
+     * @param satelliteIndex A index from zero to {@link #getSatelliteCount()} - 1
+     */
+    public abstract boolean hasEphemerisData(@IntRange(from = 0) int satelliteIndex);
+
+    /**
+     * See {@link GnssStatus#hasAlmanacData(int)} and {@link GpsSatellite#hasAlmanac()}.
+     *
+     * @param satelliteIndex A index from zero to {@link #getSatelliteCount()} - 1
+     */
+    public abstract boolean hasAlmanacData(@IntRange(from = 0) int satelliteIndex);
+
+    /**
+     * See {@link GnssStatus#usedInFix(int)} and {@link GpsSatellite#usedInFix()}.
+     *
+     * @param satelliteIndex A index from zero to {@link #getSatelliteCount()} - 1
+     */
+    public abstract boolean usedInFix(@IntRange(from = 0) int satelliteIndex);
+
+    /**
+     * See {@link GnssStatus#hasCarrierFrequencyHz(int)}. This will always return false prior to
+     * Android O.
+     *
+     * @param satelliteIndex A index from zero to {@link #getSatelliteCount()} - 1
+     */
+    public abstract boolean hasCarrierFrequencyHz(@IntRange(from = 0) int satelliteIndex);
+
+    /**
+     * See {@link GnssStatus#getCarrierFrequencyHz(int)}. Behavior is undefined if
+     * {@link #hasCarrierFrequencyHz(int)} returns false.
+     *
+     * @param satelliteIndex A index from zero to {@link #getSatelliteCount()} - 1
+     */
+    @FloatRange(from = 0)
+    public abstract float getCarrierFrequencyHz(@IntRange(from = 0) int satelliteIndex);
+}
diff --git a/core/core/src/main/java/androidx/core/location/GnssStatusWrapper.java b/core/core/src/main/java/androidx/core/location/GnssStatusWrapper.java
new file mode 100644
index 0000000..5a2cced
--- /dev/null
+++ b/core/core/src/main/java/androidx/core/location/GnssStatusWrapper.java
@@ -0,0 +1,103 @@
+/*
+ * 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.core.location;
+
+import static android.os.Build.VERSION;
+import static android.os.Build.VERSION_CODES;
+
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
+
+import android.location.GnssStatus;
+
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RestrictTo;
+import androidx.core.util.Preconditions;
+
+/** @hide */
+@RestrictTo(LIBRARY)
+@RequiresApi(VERSION_CODES.N)
+class GnssStatusWrapper extends GnssStatusCompat {
+
+    private final GnssStatus mWrapped;
+
+    GnssStatusWrapper(GnssStatus gnssStatus) {
+        mWrapped = Preconditions.checkNotNull(gnssStatus);
+    }
+
+    @Override
+    public int getSatelliteCount() {
+        return mWrapped.getSatelliteCount();
+    }
+
+    @Override
+    public int getConstellationType(int satelliteIndex) {
+        return mWrapped.getConstellationType(satelliteIndex);
+    }
+
+    @Override
+    public int getSvid(int satelliteIndex) {
+        return mWrapped.getSvid(satelliteIndex);
+    }
+
+    @Override
+    public float getCn0DbHz(int satelliteIndex) {
+        return mWrapped.getCn0DbHz(satelliteIndex);
+    }
+
+    @Override
+    public float getElevationDegrees(int satelliteIndex) {
+        return mWrapped.getElevationDegrees(satelliteIndex);
+    }
+
+    @Override
+    public float getAzimuthDegrees(int satelliteIndex) {
+        return mWrapped.getAzimuthDegrees(satelliteIndex);
+    }
+
+    @Override
+    public boolean hasEphemerisData(int satelliteIndex) {
+        return mWrapped.hasEphemerisData(satelliteIndex);
+    }
+
+    @Override
+    public boolean hasAlmanacData(int satelliteIndex) {
+        return mWrapped.hasAlmanacData(satelliteIndex);
+    }
+
+    @Override
+    public boolean usedInFix(int satelliteIndex) {
+        return mWrapped.usedInFix(satelliteIndex);
+    }
+
+    @Override
+    public boolean hasCarrierFrequencyHz(int satelliteIndex) {
+        if (VERSION.SDK_INT >= VERSION_CODES.O) {
+            return mWrapped.hasCarrierFrequencyHz(satelliteIndex);
+        } else {
+            return false;
+        }
+    }
+
+    @Override
+    public float getCarrierFrequencyHz(int satelliteIndex) {
+        if (VERSION.SDK_INT >= VERSION_CODES.O) {
+            return mWrapped.getCarrierFrequencyHz(satelliteIndex);
+        } else {
+            throw new UnsupportedOperationException();
+        }
+    }
+}
diff --git a/core/core/src/main/java/androidx/core/location/GpsStatusWrapper.java b/core/core/src/main/java/androidx/core/location/GpsStatusWrapper.java
new file mode 100644
index 0000000..3ac9610
--- /dev/null
+++ b/core/core/src/main/java/androidx/core/location/GpsStatusWrapper.java
@@ -0,0 +1,191 @@
+/*
+ * 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.core.location;
+
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
+
+import android.location.GpsSatellite;
+import android.location.GpsStatus;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+
+import androidx.annotation.GuardedBy;
+import androidx.annotation.RestrictTo;
+import androidx.core.util.Preconditions;
+
+import java.util.Iterator;
+
+/** @hide */
+@RestrictTo(LIBRARY)
+class GpsStatusWrapper extends GnssStatusCompat {
+
+    private static final int GPS_PRN_OFFSET = 0;
+    private static final int GPS_PRN_COUNT = 32;
+    private static final int SBAS_PRN_MIN = 33;
+    private static final int SBAS_PRN_MAX = 64;
+    private static final int SBAS_PRN_OFFSET = -87;
+    private static final int GLONASS_PRN_OFFSET = 64;
+    private static final int GLONASS_PRN_COUNT = 24;
+    private static final int QZSS_SVID_MIN = 193;
+    private static final int QZSS_SVID_MAX = 200;
+    private static final int BEIDOU_PRN_OFFSET = 200;
+    private static final int BEIDOU_PRN_COUNT = 35;
+
+    private final GpsStatus mWrapped;
+
+    @GuardedBy("mWrapped")
+    private int mCachedSatelliteCount;
+
+    @GuardedBy("mWrapped")
+    private Iterator<GpsSatellite> mCachedIterator;
+    @GuardedBy("mWrapped")
+    private int mCachedIteratorPosition;
+    @GuardedBy("mWrapped")
+    private GpsSatellite mCachedSatellite;
+
+    GpsStatusWrapper(GpsStatus gpsStatus) {
+        mWrapped = Preconditions.checkNotNull(gpsStatus);
+        mCachedSatelliteCount = -1;
+        mCachedIterator = mWrapped.getSatellites().iterator();
+        mCachedIteratorPosition = -1;
+        mCachedSatellite = null;
+    }
+
+    @Override
+    public int getSatelliteCount() {
+        synchronized (mWrapped) {
+            if (mCachedSatelliteCount == -1) {
+                for (@SuppressWarnings("unused") GpsSatellite ignored : mWrapped.getSatellites()) {
+                    mCachedSatelliteCount++;
+                }
+                mCachedSatelliteCount++;
+            }
+
+            return mCachedSatelliteCount;
+        }
+    }
+
+    @Override
+    public int getConstellationType(int satelliteIndex) {
+        if (VERSION.SDK_INT < VERSION_CODES.N) {
+            return CONSTELLATION_GPS;
+        } else {
+            return getConstellationFromPrn(getSatellite(satelliteIndex).getPrn());
+        }
+    }
+
+    @Override
+    public int getSvid(int satelliteIndex) {
+        if (VERSION.SDK_INT < VERSION_CODES.N) {
+            return getSatellite(satelliteIndex).getPrn();
+        } else {
+            return getSvidFromPrn(getSatellite(satelliteIndex).getPrn());
+        }
+    }
+
+    @Override
+    public float getCn0DbHz(int satelliteIndex) {
+        return getSatellite(satelliteIndex).getSnr();
+    }
+
+    @Override
+    public float getElevationDegrees(int satelliteIndex) {
+        return getSatellite(satelliteIndex).getElevation();
+    }
+
+    @Override
+    public float getAzimuthDegrees(int satelliteIndex) {
+        return getSatellite(satelliteIndex).getAzimuth();
+    }
+
+    @Override
+    public boolean hasEphemerisData(int satelliteIndex) {
+        return getSatellite(satelliteIndex).hasEphemeris();
+    }
+
+    @Override
+    public boolean hasAlmanacData(int satelliteIndex) {
+        return getSatellite(satelliteIndex).hasAlmanac();
+    }
+
+    @Override
+    public boolean usedInFix(int satelliteIndex) {
+        return getSatellite(satelliteIndex).usedInFix();
+    }
+
+    @Override
+    public boolean hasCarrierFrequencyHz(int satelliteIndex) {
+        return false;
+    }
+
+    @Override
+    public float getCarrierFrequencyHz(int satelliteIndex) {
+        throw new UnsupportedOperationException();
+    }
+
+    private GpsSatellite getSatellite(int satelliteIndex) {
+        GpsSatellite satellite;
+        synchronized (mWrapped) {
+            if (satelliteIndex < mCachedIteratorPosition) {
+                mCachedIterator = mWrapped.getSatellites().iterator();
+                mCachedIteratorPosition = -1;
+            }
+            while (mCachedIteratorPosition < satelliteIndex) {
+                mCachedIteratorPosition++;
+                if (!mCachedIterator.hasNext()) {
+                    mCachedSatellite = null;
+                    break;
+                } else {
+                    mCachedSatellite = mCachedIterator.next();
+                }
+            }
+            satellite = mCachedSatellite;
+        }
+        return Preconditions.checkNotNull(satellite);
+    }
+
+    private static int getConstellationFromPrn(int prn) {
+        if (prn > GPS_PRN_OFFSET && prn <= GPS_PRN_OFFSET + GPS_PRN_COUNT) {
+            return CONSTELLATION_GPS;
+        } else if (prn >= SBAS_PRN_MIN && prn <= SBAS_PRN_MAX) {
+            return CONSTELLATION_SBAS;
+        } else if (prn > GLONASS_PRN_OFFSET && prn <= GLONASS_PRN_OFFSET + GLONASS_PRN_COUNT) {
+            return CONSTELLATION_GLONASS;
+        } else if (prn > BEIDOU_PRN_OFFSET && prn <= BEIDOU_PRN_OFFSET + BEIDOU_PRN_COUNT) {
+            return CONSTELLATION_BEIDOU;
+        } else if (prn >= QZSS_SVID_MIN && prn <= QZSS_SVID_MAX) {
+            return CONSTELLATION_QZSS;
+        } else {
+            return CONSTELLATION_UNKNOWN;
+        }
+    }
+
+    private static int getSvidFromPrn(int prn) {
+        switch (getConstellationFromPrn(prn)) {
+            case CONSTELLATION_SBAS:
+                prn -= SBAS_PRN_OFFSET;
+                break;
+            case CONSTELLATION_GLONASS:
+                prn -= GLONASS_PRN_OFFSET;
+                break;
+            case CONSTELLATION_BEIDOU:
+                prn -= BEIDOU_PRN_OFFSET;
+                break;
+        }
+        return prn;
+    }
+}
diff --git a/core/core/src/main/java/androidx/core/location/LocationManagerCompat.java b/core/core/src/main/java/androidx/core/location/LocationManagerCompat.java
index 71f2c24..2aca0a3 100644
--- a/core/core/src/main/java/androidx/core/location/LocationManagerCompat.java
+++ b/core/core/src/main/java/androidx/core/location/LocationManagerCompat.java
@@ -16,17 +16,40 @@
 
 package androidx.core.location;
 
+import static android.Manifest.permission.ACCESS_FINE_LOCATION;
+
+import android.location.GnssStatus;
+import android.location.GpsStatus;
 import android.location.LocationManager;
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
+import android.os.Handler;
+import android.os.Looper;
 
+import androidx.annotation.GuardedBy;
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RequiresPermission;
+import androidx.collection.SimpleArrayMap;
+import androidx.core.os.HandlerExecutor;
+import androidx.core.util.Preconditions;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 
 /**
  * Helper for accessing features in {@link LocationManager}.
  */
 public final class LocationManagerCompat {
 
+    private static final long PRE_N_LOOPER_TIMEOUT_S = 4;
+
     /**
      * Returns the current enabled/disabled state of location.
      *
@@ -47,5 +70,414 @@
         }
     }
 
+    @GuardedBy("sGnssStatusListeners")
+    private static final SimpleArrayMap<Object, Object> sGnssStatusListeners =
+            new SimpleArrayMap<>();
+
+    /**
+     * Registers a platform agnostic {@link GnssStatusCompat.Callback}. See
+     * {@link LocationManager#addGpsStatusListener(GpsStatus.Listener)} and
+     * {@link LocationManager#registerGnssStatusCallback(GnssStatus.Callback, Handler)}.
+     *
+     * @see #registerGnssStatusCallback(LocationManager, Executor, GnssStatusCompat.Callback)
+     */
+    @RequiresPermission(ACCESS_FINE_LOCATION)
+    public static boolean registerGnssStatusCallback(@NonNull LocationManager locationManager,
+            @NonNull GnssStatusCompat.Callback callback, @NonNull Handler handler) {
+        if (VERSION.SDK_INT >= VERSION_CODES.R) {
+            return registerGnssStatusCallback(locationManager, new HandlerExecutor(handler),
+                callback);
+        } else {
+            return registerGnssStatusCallback(locationManager, new InlineHandlerExecutor(handler),
+                    callback);
+        }
+    }
+
+    /**
+     * Registers a platform agnostic {@link GnssStatusCompat.Callback}. See
+     * {@link LocationManager#addGpsStatusListener(GpsStatus.Listener)} and
+     * {@link LocationManager#registerGnssStatusCallback(Executor, GnssStatus.Callback)}.
+     *
+     * <p>Internally, this API will always utilize GnssStatus APIs and instances on Android N and
+     * above, and will always utilize GpsStatus APIs and instances below Android N. Callbacks will
+     * always occur on the given executor.
+     *
+     * <p>If invoked on Android M or below, this will result in GpsStatus registration being run on
+     * either the current Looper or main Looper. If the thread this function is invoked on is
+     * different from that Looper, the caller must ensure that the Looper thread cannot be blocked
+     * by the thread this function is invoked on. The easiest way to avoid this is to ensure this
+     * function is invoked on a Looper thread.
+     *
+     * @throws IllegalStateException on Android M or below, if the current Looper or main Looper
+     *                               is blocked by the thread this function is invoked on
+     */
+    @RequiresPermission(ACCESS_FINE_LOCATION)
+    public static boolean registerGnssStatusCallback(@NonNull LocationManager locationManager,
+            @NonNull Executor executor, @NonNull GnssStatusCompat.Callback callback) {
+        if (VERSION.SDK_INT >= VERSION_CODES.R) {
+            return registerGnssStatusCallback(locationManager, null, executor, callback);
+        } else {
+            Looper looper = Looper.myLooper();
+            if (looper == null) {
+                looper = Looper.getMainLooper();
+            }
+            return registerGnssStatusCallback(locationManager, new Handler(looper), executor,
+                    callback);
+        }
+    }
+
+    @RequiresPermission(ACCESS_FINE_LOCATION)
+    private static boolean registerGnssStatusCallback(final LocationManager locationManager,
+            Handler baseHandler, Executor executor, GnssStatusCompat.Callback callback) {
+        if (VERSION.SDK_INT >= VERSION_CODES.R) {
+            synchronized (sGnssStatusListeners) {
+                GnssStatusTransport transport =
+                        (GnssStatusTransport) sGnssStatusListeners.get(callback);
+                if (transport == null) {
+                    transport = new GnssStatusTransport(callback);
+                }
+                if (locationManager.registerGnssStatusCallback(executor, transport)) {
+                    sGnssStatusListeners.put(callback, transport);
+                    return true;
+                } else {
+                    return false;
+                }
+            }
+        } else if (VERSION.SDK_INT >= VERSION_CODES.N) {
+            Preconditions.checkArgument(baseHandler != null);
+            synchronized (sGnssStatusListeners) {
+                PreRGnssStatusTransport transport =
+                        (PreRGnssStatusTransport) sGnssStatusListeners.get(callback);
+                if (transport == null) {
+                    transport = new PreRGnssStatusTransport(callback);
+                } else {
+                    transport.unregister();
+                }
+                transport.register(executor);
+
+                if (locationManager.registerGnssStatusCallback(transport, baseHandler)) {
+                    sGnssStatusListeners.put(callback, transport);
+                    return true;
+                } else {
+                    transport.unregister();
+                    return false;
+                }
+            }
+        } else {
+            Preconditions.checkArgument(baseHandler != null);
+            synchronized (sGnssStatusListeners) {
+                GpsStatusTransport transport =
+                        (GpsStatusTransport) sGnssStatusListeners.get(callback);
+                if (transport == null) {
+                    transport = new GpsStatusTransport(locationManager, callback);
+                } else {
+                    transport.unregister();
+                }
+                transport.register(executor);
+
+                final GpsStatusTransport myTransport = transport;
+                FutureTask<Boolean> task = new FutureTask<>(new Callable<Boolean>() {
+                    @RequiresPermission(ACCESS_FINE_LOCATION)
+                    @Override
+                    public Boolean call() {
+                        return locationManager.addGpsStatusListener(myTransport);
+                    }
+                });
+
+                if (Looper.myLooper() == baseHandler.getLooper()) {
+                    task.run();
+                } else if (!baseHandler.post(task)) {
+                    throw new IllegalStateException(baseHandler + " is shutting down");
+                }
+                try {
+                    if (task.get(PRE_N_LOOPER_TIMEOUT_S, TimeUnit.SECONDS)) {
+                        sGnssStatusListeners.put(callback, myTransport);
+                        return true;
+                    } else {
+                        transport.unregister();
+                        return false;
+                    }
+                } catch (ExecutionException | InterruptedException e) {
+                    throw new IllegalStateException(e);
+                } catch (TimeoutException e) {
+                    throw new IllegalStateException(baseHandler + " appears to be blocked, please"
+                            + " run registerGnssStatusCallback() directly on a Looper thread or "
+                            + "ensure the main Looper is not blocked by this thread", e);
+                }
+            }
+        }
+    }
+
+    /**
+     * Unregisters a platform agnostic {@link GnssStatusCompat.Callback}. See
+     * {@link LocationManager#removeGpsStatusListener(GpsStatus.Listener)}
+     * and {@link LocationManager#unregisterGnssStatusCallback(GnssStatus.Callback)}.
+     */
+    public static void unregisterGnssStatusCallback(@NonNull LocationManager locationManager,
+            @NonNull GnssStatusCompat.Callback callback) {
+        if (VERSION.SDK_INT >= VERSION_CODES.R) {
+            synchronized (sGnssStatusListeners) {
+                GnssStatusTransport transport =
+                        (GnssStatusTransport) sGnssStatusListeners.remove(callback);
+                if (transport != null) {
+                    locationManager.unregisterGnssStatusCallback(transport);
+                }
+            }
+        } else if (VERSION.SDK_INT >= VERSION_CODES.N) {
+            synchronized (sGnssStatusListeners) {
+                PreRGnssStatusTransport transport =
+                        (PreRGnssStatusTransport) sGnssStatusListeners.remove(callback);
+                if (transport != null) {
+                    transport.unregister();
+                    locationManager.unregisterGnssStatusCallback(transport);
+                }
+            }
+        } else {
+            synchronized (sGnssStatusListeners) {
+                GpsStatusTransport transport =
+                        (GpsStatusTransport) sGnssStatusListeners.remove(callback);
+                if (transport != null) {
+                    transport.unregister();
+                    locationManager.removeGpsStatusListener(transport);
+                }
+            }
+        }
+    }
+
     private LocationManagerCompat() {}
+
+    @RequiresApi(VERSION_CODES.R)
+    private static class GnssStatusTransport extends GnssStatus.Callback {
+
+        final GnssStatusCompat.Callback mCallback;
+
+        GnssStatusTransport(GnssStatusCompat.Callback callback) {
+            Preconditions.checkArgument(callback != null, "invalid null callback");
+            mCallback = callback;
+        }
+
+        @Override
+        public void onStarted() {
+            mCallback.onStarted();
+        }
+
+        @Override
+        public void onStopped() {
+            mCallback.onStopped();
+        }
+
+        @Override
+        public void onFirstFix(int ttffMillis) {
+            mCallback.onFirstFix(ttffMillis);
+        }
+
+        @Override
+        public void onSatelliteStatusChanged(GnssStatus status) {
+            mCallback.onSatelliteStatusChanged(GnssStatusCompat.wrap(status));
+        }
+    }
+
+    @RequiresApi(VERSION_CODES.N)
+    private static class PreRGnssStatusTransport extends GnssStatus.Callback {
+
+        final GnssStatusCompat.Callback mCallback;
+
+        @Nullable volatile Executor mExecutor;
+
+        PreRGnssStatusTransport(GnssStatusCompat.Callback callback) {
+            Preconditions.checkArgument(callback != null, "invalid null callback");
+            mCallback = callback;
+        }
+
+        public void register(Executor executor) {
+            Preconditions.checkArgument(executor != null, "invalid null executor");
+            Preconditions.checkState(mExecutor == null);
+            mExecutor = executor;
+        }
+
+        public void unregister() {
+            mExecutor = null;
+        }
+
+        @Override
+        public void onStarted() {
+            final Executor executor = mExecutor;
+            if (executor == null) {
+                return;
+            }
+
+            executor.execute(new Runnable() {
+                @Override
+                public void run() {
+                    if (mExecutor != executor) {
+                        return;
+                    }
+                    mCallback.onStarted();
+                }
+            });
+        }
+
+        @Override
+        public void onStopped() {
+            final Executor executor = mExecutor;
+            if (executor == null) {
+                return;
+            }
+
+            executor.execute(new Runnable() {
+                @Override
+                public void run() {
+                    if (mExecutor != executor) {
+                        return;
+                    }
+                    mCallback.onStopped();
+                }
+            });
+        }
+
+        @Override
+        public void onFirstFix(final int ttffMillis) {
+            final Executor executor = mExecutor;
+            if (executor == null) {
+                return;
+            }
+
+            executor.execute(new Runnable() {
+                @Override
+                public void run() {
+                    if (mExecutor != executor) {
+                        return;
+                    }
+                    mCallback.onFirstFix(ttffMillis);
+                }
+            });
+        }
+
+        @Override
+        public void onSatelliteStatusChanged(final GnssStatus status) {
+            final Executor executor = mExecutor;
+            if (executor == null) {
+                return;
+            }
+
+            executor.execute(new Runnable() {
+                @Override
+                public void run() {
+                    if (mExecutor != executor) {
+                        return;
+                    }
+                    mCallback.onSatelliteStatusChanged(GnssStatusCompat.wrap(status));
+                }
+            });
+        }
+    }
+
+    private static class GpsStatusTransport implements GpsStatus.Listener {
+
+        private final LocationManager mLocationManager;
+        final GnssStatusCompat.Callback mCallback;
+
+        @Nullable volatile Executor mExecutor;
+
+        GpsStatusTransport(LocationManager locationManager,
+                GnssStatusCompat.Callback callback) {
+            Preconditions.checkArgument(callback != null, "invalid null callback");
+            mLocationManager = locationManager;
+            mCallback = callback;
+        }
+
+        public void register(Executor executor) {
+            Preconditions.checkState(mExecutor == null);
+            mExecutor = executor;
+        }
+
+        public void unregister() {
+            mExecutor = null;
+        }
+
+        @RequiresPermission(ACCESS_FINE_LOCATION)
+        @Override
+        public void onGpsStatusChanged(int event) {
+            final Executor executor = mExecutor;
+            if (executor == null) {
+                return;
+            }
+
+            GpsStatus gpsStatus;
+
+            switch (event) {
+                case GpsStatus.GPS_EVENT_STARTED:
+                    executor.execute(new Runnable() {
+                        @Override
+                        public void run() {
+                            if (mExecutor != executor) {
+                                return;
+                            }
+                            mCallback.onStarted();
+                        }
+                    });
+                    break;
+                case GpsStatus.GPS_EVENT_STOPPED:
+                    executor.execute(new Runnable() {
+                        @Override
+                        public void run() {
+                            if (mExecutor != executor) {
+                                return;
+                            }
+                            mCallback.onStopped();
+                        }
+                    });
+                    break;
+                case GpsStatus.GPS_EVENT_FIRST_FIX:
+                    gpsStatus = mLocationManager.getGpsStatus(null);
+                    if (gpsStatus != null) {
+                        final int ttff = gpsStatus.getTimeToFirstFix();
+                        executor.execute(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (mExecutor != executor) {
+                                    return;
+                                }
+                                mCallback.onFirstFix(ttff);
+                            }
+                        });
+                    }
+                    break;
+                case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+                    gpsStatus = mLocationManager.getGpsStatus(null);
+                    if (gpsStatus != null) {
+                        final GnssStatusCompat gnssStatus = GnssStatusCompat.wrap(gpsStatus);
+                        executor.execute(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (mExecutor != executor) {
+                                    return;
+                                }
+                                mCallback.onSatelliteStatusChanged(gnssStatus);
+                            }
+                        });
+                    }
+                    break;
+            }
+        }
+    }
+
+    // using this class allows listeners to be run more efficiently in the common case for pre-R
+    // SDKs where the AOSP callback is already on the same Looper the listener wants
+    private static class InlineHandlerExecutor implements Executor {
+        private final Handler mHandler;
+
+        InlineHandlerExecutor(@NonNull Handler handler) {
+            mHandler = Preconditions.checkNotNull(handler);
+        }
+
+        @Override
+        public void execute(@NonNull Runnable command) {
+            if (Looper.myLooper() == mHandler.getLooper()) {
+                command.run();
+            } else if (!mHandler.post(Preconditions.checkNotNull(command))) {
+                throw new RejectedExecutionException(mHandler + " is shutting down");
+            }
+        }
+    }
 }
diff --git a/core/core/src/main/java/androidx/core/location/OWNERS b/core/core/src/main/java/androidx/core/location/OWNERS
new file mode 100644
index 0000000..a420c39
--- /dev/null
+++ b/core/core/src/main/java/androidx/core/location/OWNERS
@@ -0,0 +1,3 @@
[email protected]
[email protected]
[email protected]
diff --git a/core/core/src/main/java/androidx/core/os/HandlerExecutor.java b/core/core/src/main/java/androidx/core/os/HandlerExecutor.java
new file mode 100644
index 0000000..962a076
--- /dev/null
+++ b/core/core/src/main/java/androidx/core/os/HandlerExecutor.java
@@ -0,0 +1,41 @@
+/*
+ * 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.core.os;
+
+import android.os.Handler;
+
+import androidx.annotation.NonNull;
+import androidx.core.util.Preconditions;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.RejectedExecutionException;
+
+/** An adapter {@link Executor} that posts all executed tasks onto the given {@link Handler}. */
+public class HandlerExecutor implements Executor {
+    private final Handler mHandler;
+
+    public HandlerExecutor(@NonNull Handler handler) {
+        mHandler = Preconditions.checkNotNull(handler);
+    }
+
+    @Override
+    public void execute(@NonNull Runnable command) {
+        if (!mHandler.post(Preconditions.checkNotNull(command))) {
+            throw new RejectedExecutionException(mHandler + " is shutting down");
+        }
+    }
+}
diff --git a/core/core/src/main/java/androidx/core/view/AccessibilityDelegateCompat.java b/core/core/src/main/java/androidx/core/view/AccessibilityDelegateCompat.java
index a1f6081..de873ba 100644
--- a/core/core/src/main/java/androidx/core/view/AccessibilityDelegateCompat.java
+++ b/core/core/src/main/java/androidx/core/view/AccessibilityDelegateCompat.java
@@ -83,6 +83,7 @@
             nodeInfoCompat.setScreenReaderFocusable(ViewCompat.isScreenReaderFocusable(host));
             nodeInfoCompat.setHeading(ViewCompat.isAccessibilityHeading(host));
             nodeInfoCompat.setPaneTitle(ViewCompat.getAccessibilityPaneTitle(host));
+            nodeInfoCompat.setStateDescription(ViewCompat.getStateDescription(host));
             mCompat.onInitializeAccessibilityNodeInfo(host, nodeInfoCompat);
             nodeInfoCompat.addSpansToExtras(info.getText(), host);
             List<AccessibilityActionCompat> actions = getActionList(host);
diff --git a/core/core/src/main/java/androidx/core/view/DisplayCutoutCompat.java b/core/core/src/main/java/androidx/core/view/DisplayCutoutCompat.java
index b10f94d..2268425 100644
--- a/core/core/src/main/java/androidx/core/view/DisplayCutoutCompat.java
+++ b/core/core/src/main/java/androidx/core/view/DisplayCutoutCompat.java
@@ -19,10 +19,16 @@
 import static android.os.Build.VERSION.SDK_INT;
 
 import android.graphics.Rect;
+import android.os.Build;
 import android.view.DisplayCutout;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
+import androidx.core.graphics.Insets;
+import androidx.core.os.BuildCompat;
 
+import java.util.ArrayList;
 import java.util.List;
 
 
@@ -48,6 +54,59 @@
         this(SDK_INT >= 28 ? new DisplayCutout(safeInsets, boundingRects) : null);
     }
 
+    /**
+     * Creates a DisplayCutout instance.
+     *
+     * @param safeInsets the insets from each edge which avoid the display cutout as returned by
+     *                   {@link #getSafeInsetTop()} etc.
+     * @param boundLeft the left bounding rect of the display cutout in pixels. If null is passed,
+     *                  it's treated as an empty rectangle (0,0)-(0,0).
+     * @param boundTop the top bounding rect of the display cutout in pixels. If null is passed,
+     *                  it's treated as an empty rectangle (0,0)-(0,0).
+     * @param boundRight the right bounding rect of the display cutout in pixels. If null is
+     *                  passed, it's treated as an empty rectangle (0,0)-(0,0).
+     * @param boundBottom the bottom bounding rect of the display cutout in pixels. If null is
+     *                   passed, it's treated as an empty rectangle (0,0)-(0,0).
+     * @param waterfallInsets the insets for the curved areas in waterfall display.
+     */
+    public DisplayCutoutCompat(@NonNull Insets safeInsets, @Nullable Rect boundLeft,
+            @Nullable Rect boundTop, @Nullable Rect boundRight, @Nullable Rect boundBottom,
+            @NonNull Insets waterfallInsets) {
+        this(constructDisplayCutout(safeInsets, boundLeft, boundTop, boundRight, boundBottom,
+                waterfallInsets));
+    }
+
+    private static DisplayCutout constructDisplayCutout(@NonNull Insets safeInsets,
+            @Nullable Rect boundLeft, @Nullable Rect boundTop, @Nullable Rect boundRight,
+            @Nullable Rect boundBottom, @NonNull Insets waterfallInsets) {
+        if (BuildCompat.isAtLeastR()) {
+            return new DisplayCutout(safeInsets.toPlatformInsets(), boundLeft,
+                    boundTop, boundRight, boundBottom, waterfallInsets.toPlatformInsets());
+        } else if (SDK_INT >= Build.VERSION_CODES.Q) {
+            return new DisplayCutout(safeInsets.toPlatformInsets(), boundLeft,
+                    boundTop, boundRight, boundBottom);
+        } else if (SDK_INT >= Build.VERSION_CODES.P) {
+            final Rect safeInsetRect = new Rect(safeInsets.left, safeInsets.top, safeInsets.right,
+                    safeInsets.bottom);
+            final ArrayList<Rect> boundingRects = new ArrayList<>();
+            if (boundLeft != null) {
+                boundingRects.add(boundLeft);
+            }
+            if (boundTop != null) {
+                boundingRects.add(boundTop);
+            }
+            if (boundRight != null) {
+                boundingRects.add(boundRight);
+            }
+            if (boundBottom != null) {
+                boundingRects.add(boundBottom);
+            }
+            return new DisplayCutout(safeInsetRect, boundingRects);
+        } else {
+            return null;
+        }
+    }
+
     private DisplayCutoutCompat(Object displayCutout) {
         mDisplayCutout = displayCutout;
     }
@@ -105,6 +164,25 @@
         }
     }
 
+    /**
+     * Returns the insets representing the curved areas of a waterfall display.
+     *
+     * A waterfall display has curved areas along the edges of the screen. Apps should be careful
+     * when showing UI and handling touch input in those insets because the curve may impair
+     * legibility and can frequently lead to unintended touch inputs.
+     *
+     * @return the insets for the curved areas of a waterfall display in pixels or {@code
+     * Insets.NONE} if there are no curved areas or they don't overlap with the window.
+     */
+    @NonNull
+    public Insets getWaterfallInsets() {
+        if (BuildCompat.isAtLeastR()) {
+            return Insets.toCompatInsets(((DisplayCutout) mDisplayCutout).getWaterfallInsets());
+        } else {
+            return Insets.NONE;
+        }
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) {
diff --git a/core/core/src/main/java/androidx/core/view/ViewCompat.java b/core/core/src/main/java/androidx/core/view/ViewCompat.java
index a5c8b65..3cbc4fb 100644
--- a/core/core/src/main/java/androidx/core/view/ViewCompat.java
+++ b/core/core/src/main/java/androidx/core/view/ViewCompat.java
@@ -663,6 +663,7 @@
      * <li>{@link AccessibilityNodeInfoCompat#setPackageName(CharSequence)},</li>
      * <li>{@link AccessibilityNodeInfoCompat#setClassName(CharSequence)},</li>
      * <li>{@link AccessibilityNodeInfoCompat#setContentDescription(CharSequence)},</li>
+     * <li>{@link AccessibilityNodeInfoCompat#setStateDescription(CharSequence)},</li>
      * <li>{@link AccessibilityNodeInfoCompat#setEnabled(boolean)},</li>
      * <li>{@link AccessibilityNodeInfoCompat#setClickable(boolean)},</li>
      * <li>{@link AccessibilityNodeInfoCompat#setFocusable(boolean)},</li>
@@ -1347,6 +1348,43 @@
     }
 
     /**
+     * Sets the state description of this node.
+     * <p>
+     *   <strong>Note:</strong> Cannot be called from an
+     *   {@link android.accessibilityservice.AccessibilityService}.
+     *   This class is made immutable before being delivered to an AccessibilityService.
+     * </p>
+     *
+     * @param stateDescription the state description of this node.
+     *
+     * @throws IllegalStateException If called from an AccessibilityService.
+     */
+    @UiThread
+    public static void setStateDescription(@NonNull View view,
+            @Nullable CharSequence stateDescription) {
+        if (Build.VERSION.SDK_INT >= 19) {
+            stateDescriptionProperty().set(view, stateDescription);
+        }
+    }
+
+    /**
+     * Returns the {@link View}'s state description.
+     * <p>
+     * <strong>Note:</strong> Do not override this method, as it will have no
+     * effect on the state description presented to accessibility services.
+     * You must call {@link #setStateDescription(View, CharSequence)} to modify the
+     * state description.
+     *
+     * @return the state description
+     * @see #setStateDescription(View, CharSequence)
+     */
+    @UiThread
+    public static final @Nullable CharSequence getStateDescription(@NonNull View view) {
+        return stateDescriptionProperty().get(view);
+    }
+
+
+    /**
      * Allow accessibility services to find and activate clickable spans in the application.
      *
      * @param view The view
@@ -3535,6 +3573,7 @@
      * @return The logical display, or null if the view is not currently attached to a window.
      */
     @Nullable
+    @SuppressWarnings("deprecation") /* getDefaultDisplay */
     public static Display getDisplay(@NonNull View view) {
         if (Build.VERSION.SDK_INT >= 17) {
             return view.getDisplay();
@@ -4036,6 +4075,29 @@
         };
     }
 
+    private static AccessibilityViewProperty<CharSequence> stateDescriptionProperty() {
+        return new AccessibilityViewProperty<CharSequence>(R.id.tag_state_description,
+                CharSequence.class, AccessibilityEvent.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION, 30) {
+
+            @RequiresApi(30)
+            @Override
+            CharSequence frameworkGet(View view) {
+                return view.getStateDescription();
+            }
+
+            @RequiresApi(30)
+            @Override
+            void frameworkSet(View view, CharSequence value) {
+                view.setStateDescription(value);
+            }
+
+            @Override
+            boolean shouldUpdate(CharSequence oldValue, CharSequence newValue) {
+                return !TextUtils.equals(oldValue, newValue);
+            }
+        };
+    }
+
     /**
      * Gets whether this view is a heading for accessibility purposes.
      *
@@ -4098,6 +4160,7 @@
         private final int mTagKey;
         private final Class<T> mType;
         private final int mFrameworkMinimumSdk;
+        private final int mContentChangeType;
 
         AccessibilityViewProperty(int tagKey, Class<T> type, int frameworkMinimumSdk) {
             this(tagKey, type,
@@ -4108,7 +4171,9 @@
                 int tagKey, Class<T> type, int contentChangeType, int frameworkMinimumSdk) {
             mTagKey = tagKey;
             mType = type;
+            mContentChangeType = contentChangeType;
             mFrameworkMinimumSdk = frameworkMinimumSdk;
+
         }
 
         void set(View view, T value) {
@@ -4120,8 +4185,7 @@
                 // If we're here, we're guaranteed to be on v19+ (see the logic in
                 // extrasAvailable), so we can call notifyViewAccessibilityStateChangedIfNeeded
                 // which requires 19.
-                notifyViewAccessibilityStateChangedIfNeeded(view,
-                        AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
+                notifyViewAccessibilityStateChangedIfNeeded(view, mContentChangeType);
             }
         }
 
diff --git a/core/core/src/main/java/androidx/core/view/accessibility/AccessibilityEventCompat.java b/core/core/src/main/java/androidx/core/view/accessibility/AccessibilityEventCompat.java
index 93e5a90..281348a 100644
--- a/core/core/src/main/java/androidx/core/view/accessibility/AccessibilityEventCompat.java
+++ b/core/core/src/main/java/androidx/core/view/accessibility/AccessibilityEventCompat.java
@@ -16,10 +16,19 @@
 
 package androidx.core.view.accessibility;
 
+import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
+
 import android.os.Build;
 import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityRecord;
 
+import androidx.annotation.IntDef;
+import androidx.annotation.RestrictTo;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
 /**
  * Helper for accessing features in {@link AccessibilityEvent}.
  */
@@ -181,6 +190,13 @@
     public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 0x00000020;
 
     /**
+     * Change type for {@link AccessibilityEvent#TYPE_WINDOW_CONTENT_CHANGED} event:
+     * state description of the node as returned by
+     * {@link AccessibilityNodeInfo#getStateDescription} was changed.
+     */
+    public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 0x00000040;
+
+    /**
      * Mask for {@link AccessibilityEvent} all types.
      *
      * @see AccessibilityEvent#TYPE_VIEW_CLICKED
@@ -209,6 +225,20 @@
      */
     public static final int TYPES_ALL_MASK = 0xFFFFFFFF;
 
+    /** @hide */
+    @IntDef(
+            flag = true,
+            value = {
+                    CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION,
+                    CONTENT_CHANGE_TYPE_STATE_DESCRIPTION,
+                    CONTENT_CHANGE_TYPE_SUBTREE,
+                    CONTENT_CHANGE_TYPE_TEXT,
+                    CONTENT_CHANGE_TYPE_UNDEFINED
+            })
+    @RestrictTo(LIBRARY_GROUP_PREFIX)
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ContentChangeType {}
+
     /*
      * Hide constructor from clients.
      */
@@ -287,7 +317,8 @@
      * @throws IllegalStateException If called from an AccessibilityService.
      * @see #getContentChangeTypes(AccessibilityEvent)
      */
-    public static void setContentChangeTypes(AccessibilityEvent event, int changeTypes) {
+    public static void setContentChangeTypes(AccessibilityEvent event,
+            @ContentChangeType int changeTypes) {
         if (Build.VERSION.SDK_INT >= 19) {
             event.setContentChangeTypes(changeTypes);
         }
@@ -301,11 +332,13 @@
      * @return The bit mask of change types. One or more of:
      *         <ul>
      *         <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION}
+     *         <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_STATE_DESCRIPTION}
      *         <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_SUBTREE}
      *         <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_TEXT}
      *         <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_UNDEFINED}
      *         </ul>
      */
+    @ContentChangeType
     public static int getContentChangeTypes(AccessibilityEvent event) {
         if (Build.VERSION.SDK_INT >= 19) {
             return event.getContentChangeTypes();
diff --git a/core/core/src/main/java/androidx/core/view/accessibility/AccessibilityNodeInfoCompat.java b/core/core/src/main/java/androidx/core/view/accessibility/AccessibilityNodeInfoCompat.java
index c5983d6..5304351 100644
--- a/core/core/src/main/java/androidx/core/view/accessibility/AccessibilityNodeInfoCompat.java
+++ b/core/core/src/main/java/androidx/core/view/accessibility/AccessibilityNodeInfoCompat.java
@@ -20,6 +20,7 @@
 
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
 
+import android.annotation.SuppressLint;
 import android.graphics.Rect;
 import android.graphics.Region;
 import android.os.Build;
@@ -42,6 +43,7 @@
 import androidx.annotation.RestrictTo;
 import androidx.core.R;
 import androidx.core.accessibilityservice.AccessibilityServiceInfoCompat;
+import androidx.core.os.BuildCompat;
 import androidx.core.view.ViewCompat;
 import androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments;
 import androidx.core.view.accessibility.AccessibilityViewCommand.MoveAtGranularityArguments;
@@ -544,6 +546,49 @@
                         ? AccessibilityNodeInfo.AccessibilityAction.ACTION_HIDE_TOOLTIP : null,
                         android.R.id.accessibilityActionHideTooltip, null, null, null);
 
+        /**
+         * Action that presses and holds a node.
+         * <p>
+         * This action is for nodes that have distinct behavior that depends on how long a press is
+         * held. Nodes having a single action for long press should use {@link #ACTION_LONG_CLICK}
+         *  instead of this action, and nodes should not expose both actions.
+         * <p>
+         * When calling {@code performAction(ACTION_PRESS_AND_HOLD, bundle}, use
+         * {@link #ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT} to specify how long the
+         * node is pressed. The first time an accessibility service performs ACTION_PRES_AND_HOLD
+         * on a node, it must specify 0 as ACTION_ARGUMENT_PRESS_AND_HOLD, so the application is
+         * notified that the held state has started. To ensure reasonable behavior, the values
+         * must be increased incrementally and may not exceed 10,000. UIs requested
+         * to hold for times outside of this range should ignore the action.
+         * <p>
+         * The total time the element is held could be specified by an accessibility user up-front,
+         * or may depend on what happens on the UI as the user continues to request the hold.
+         * <p>
+         *   <strong>Note:</strong> The time between dispatching the action and it arriving in the
+         *     UI process is not guaranteed. It is possible on a busy system for the time to expire
+         *     unexpectedly. For the case of holding down a key for a repeating action, a delayed
+         *     arrival should be benign. Please do not use this sort of action in cases where such
+         *     delays will lead to unexpected UI behavior.
+         * <p>
+         */
+        @NonNull public static final AccessibilityActionCompat ACTION_PRESS_AND_HOLD =
+                new AccessibilityActionCompat(Build.VERSION.SDK_INT >= 30
+                        ? AccessibilityNodeInfo.AccessibilityAction.ACTION_PRESS_AND_HOLD : null,
+                        android.R.id.accessibilityActionPressAndHold, null, null, null);
+
+        /**
+         * Action to send an ime actionId which is from
+         * {@link android.view.inputmethod.EditorInfo#actionId}. This ime actionId sets by
+         * {@link android.widget.TextView#setImeActionLabel(CharSequence, int)}, or it would be
+         * {@link android.view.inputmethod.EditorInfo#IME_ACTION_UNSPECIFIED} if no specific
+         * actionId has set. A node should expose this action only for views that are currently
+         * with input focus and editable.
+         */
+        @NonNull public static final AccessibilityActionCompat ACTION_IME_ENTER =
+                new AccessibilityActionCompat(Build.VERSION.SDK_INT >= 30
+                        ? AccessibilityNodeInfo.AccessibilityAction.ACTION_IME_ENTER : null,
+                        android.R.id.accessibilityActionImeEnter, null, null, null);
+
         final Object mAction;
         private final int mId;
         private final Class<? extends CommandArguments> mViewCommandArgumentClass;
@@ -1185,6 +1230,9 @@
     private static final String SPANS_ACTION_ID_KEY =
             "androidx.view.accessibility.AccessibilityNodeInfoCompat.SPANS_ACTION_ID_KEY";
 
+    private static final String STATE_DESCRIPTION_KEY =
+            "androidx.view.accessibility.AccessibilityNodeInfoCompat.STATE_DESCRIPTION_KEY";
+
     // These don't line up with the internal framework constants, since they are independent
     // and we might as well get all 32 bits of utility here.
     private static final int BOOLEAN_PROPERTY_SCREEN_READER_FOCUSABLE = 0x00000001;
@@ -1566,6 +1614,21 @@
     public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y =
             "ACTION_ARGUMENT_MOVE_WINDOW_Y";
 
+    /**
+     * Argument to represent the duration in milliseconds to press and hold a node.
+     * <p>
+     * <strong>Type:</strong> int<br>
+     * <strong>Actions:</strong>
+     * <ul>
+     *     <li>{@link AccessibilityActionCompat#ACTION_PRESS_AND_HOLD}</li>
+     * </ul>
+     *
+     * @see AccessibilityActionCompat#ACTION_PRESS_AND_HOLD
+     */
+    @SuppressLint("ActionValue")
+    public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT =
+            "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
+
     // Focus types
 
     /**
@@ -2740,6 +2803,21 @@
     }
 
     /**
+     * Gets the state description of this node.
+     *
+     * @return the state description or null if android version smaller
+     * than 19.
+     */
+    public @Nullable CharSequence getStateDescription() {
+        if (BuildCompat.isAtLeastR()) {
+            return mInfo.getStateDescription();
+        } else if (Build.VERSION.SDK_INT >= 19) {
+            return mInfo.getExtras().getCharSequence(STATE_DESCRIPTION_KEY);
+        }
+        return null;
+    }
+
+    /**
      * Sets the content description of this node.
      * <p>
      * <strong>Note:</strong> Cannot be called from an
@@ -2755,6 +2833,25 @@
     }
 
     /**
+     * Sets the state description of this node.
+     * <p>
+     *   <strong>Note:</strong> Cannot be called from an
+     *   {@link android.accessibilityservice.AccessibilityService}.
+     *   This class is made immutable before being delivered to an AccessibilityService.
+     * </p>
+     *
+     * @param stateDescription the state description of this node.
+     * @throws IllegalStateException If called from an AccessibilityService.
+     */
+    public void setStateDescription(@Nullable CharSequence stateDescription) {
+        if (BuildCompat.isAtLeastR()) {
+            mInfo.setStateDescription(stateDescription);
+        } else if (Build.VERSION.SDK_INT >= 19) {
+            mInfo.getExtras().putCharSequence(STATE_DESCRIPTION_KEY, stateDescription);
+        }
+    }
+
+    /**
      * Return an instance back to be reused.
      * <p>
      * <strong>Note:</strong> You must not touch the object after calling this function.
@@ -4158,6 +4255,10 @@
                 return "ACTION_SHOW_TOOLTIP";
             case android.R.id.accessibilityActionHideTooltip:
                 return "ACTION_HIDE_TOOLTIP";
+            case android.R.id.accessibilityActionPressAndHold:
+                return "ACTION_PRESS_AND_HOLD";
+            case android.R.id.accessibilityActionImeEnter:
+                return "ACTION_IME_ENTER";
             default:
                 return"ACTION_UNKNOWN";
         }
diff --git a/core/core/src/main/res/values/ids.xml b/core/core/src/main/res/values/ids.xml
index 444a976..5147433 100644
--- a/core/core/src/main/res/values/ids.xml
+++ b/core/core/src/main/res/values/ids.xml
@@ -29,6 +29,7 @@
     <item name="tag_accessibility_pane_title" type="id"/>
     <item name="tag_accessibility_clickable_spans" type="id"/>
     <item name="tag_accessibility_actions" type="id"/>
+    <item name="tag_state_description" type="id"/>
     <item name="accessibility_custom_action_0" type="id"/>
     <item name="accessibility_custom_action_1" type="id"/>
     <item name="accessibility_custom_action_2" type="id"/>
diff --git a/core/core/src/test/java/androidx/core/view/DisplayCompatTest.java b/core/core/src/test/java/androidx/core/view/DisplayCompatTest.java
index dc9d969..50e19db 100644
--- a/core/core/src/test/java/androidx/core/view/DisplayCompatTest.java
+++ b/core/core/src/test/java/androidx/core/view/DisplayCompatTest.java
@@ -80,6 +80,7 @@
     }
 
     @Before
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     public void setup() {
         mUiModeManagerShadow = shadowOf((UiModeManager) mContext.getSystemService(UI_MODE_SERVICE));
         mUiModeManagerShadow.currentModeType = UI_MODE_TYPE_NORMAL;
diff --git a/customview/customview/api/1.1.0-rc01.txt b/customview/customview/api/1.1.0-rc01.txt
deleted file mode 100644
index 82c4509..0000000
--- a/customview/customview/api/1.1.0-rc01.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-// Signature format: 3.0
-package androidx.customview.view {
-
-  public abstract class AbsSavedState implements android.os.Parcelable {
-    ctor protected AbsSavedState(android.os.Parcelable);
-    ctor protected AbsSavedState(android.os.Parcel);
-    ctor protected AbsSavedState(android.os.Parcel, ClassLoader?);
-    method public int describeContents();
-    method public final android.os.Parcelable? getSuperState();
-    method public void writeToParcel(android.os.Parcel!, int);
-    field public static final android.os.Parcelable.Creator<androidx.customview.view.AbsSavedState!>! CREATOR;
-    field public static final androidx.customview.view.AbsSavedState! EMPTY_STATE;
-  }
-
-}
-
-package androidx.customview.widget {
-
-  public abstract class ExploreByTouchHelper extends androidx.core.view.AccessibilityDelegateCompat {
-    ctor public ExploreByTouchHelper(android.view.View);
-    method public final boolean clearKeyboardFocusForVirtualView(int);
-    method public final boolean dispatchHoverEvent(android.view.MotionEvent);
-    method public final boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public final int getAccessibilityFocusedVirtualViewId();
-    method @Deprecated public int getFocusedVirtualView();
-    method public final int getKeyboardFocusedVirtualViewId();
-    method protected abstract int getVirtualViewAt(float, float);
-    method protected abstract void getVisibleVirtualViews(java.util.List<java.lang.Integer!>!);
-    method public final void invalidateRoot();
-    method public final void invalidateVirtualView(int);
-    method public final void invalidateVirtualView(int, int);
-    method public final void onFocusChanged(boolean, int, android.graphics.Rect?);
-    method protected abstract boolean onPerformActionForVirtualView(int, int, android.os.Bundle?);
-    method protected void onPopulateEventForHost(android.view.accessibility.AccessibilityEvent);
-    method protected void onPopulateEventForVirtualView(int, android.view.accessibility.AccessibilityEvent);
-    method protected void onPopulateNodeForHost(androidx.core.view.accessibility.AccessibilityNodeInfoCompat);
-    method protected abstract void onPopulateNodeForVirtualView(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat);
-    method protected void onVirtualViewKeyboardFocusChanged(int, boolean);
-    method public final boolean requestKeyboardFocusForVirtualView(int);
-    method public final boolean sendEventForVirtualView(int, int);
-    field public static final int HOST_ID = -1; // 0xffffffff
-    field public static final int INVALID_ID = -2147483648; // 0x80000000
-  }
-
-  public interface Openable {
-    method public void close();
-    method public boolean isOpen();
-    method public void open();
-  }
-
-  public class ViewDragHelper {
-    method public void abort();
-    method protected boolean canScroll(android.view.View, boolean, int, int, int, int);
-    method public void cancel();
-    method public void captureChildView(android.view.View, int);
-    method public boolean checkTouchSlop(int);
-    method public boolean checkTouchSlop(int, int);
-    method public boolean continueSettling(boolean);
-    method public static androidx.customview.widget.ViewDragHelper! create(android.view.ViewGroup, androidx.customview.widget.ViewDragHelper.Callback);
-    method public static androidx.customview.widget.ViewDragHelper! create(android.view.ViewGroup, float, androidx.customview.widget.ViewDragHelper.Callback);
-    method public android.view.View? findTopChildUnder(int, int);
-    method public void flingCapturedView(int, int, int, int);
-    method public int getActivePointerId();
-    method public android.view.View? getCapturedView();
-    method @Px public int getDefaultEdgeSize();
-    method @Px public int getEdgeSize();
-    method public float getMinVelocity();
-    method @Px public int getTouchSlop();
-    method public int getViewDragState();
-    method public boolean isCapturedViewUnder(int, int);
-    method public boolean isEdgeTouched(int);
-    method public boolean isEdgeTouched(int, int);
-    method public boolean isPointerDown(int);
-    method public boolean isViewUnder(android.view.View?, int, int);
-    method public void processTouchEvent(android.view.MotionEvent);
-    method public void setEdgeSize(@IntRange(from=0) @Px int);
-    method public void setEdgeTrackingEnabled(int);
-    method public void setMinVelocity(float);
-    method public boolean settleCapturedViewAt(int, int);
-    method public boolean shouldInterceptTouchEvent(android.view.MotionEvent);
-    method public boolean smoothSlideViewTo(android.view.View, int, int);
-    field public static final int DIRECTION_ALL = 3; // 0x3
-    field public static final int DIRECTION_HORIZONTAL = 1; // 0x1
-    field public static final int DIRECTION_VERTICAL = 2; // 0x2
-    field public static final int EDGE_ALL = 15; // 0xf
-    field public static final int EDGE_BOTTOM = 8; // 0x8
-    field public static final int EDGE_LEFT = 1; // 0x1
-    field public static final int EDGE_RIGHT = 2; // 0x2
-    field public static final int EDGE_TOP = 4; // 0x4
-    field public static final int INVALID_POINTER = -1; // 0xffffffff
-    field public static final int STATE_DRAGGING = 1; // 0x1
-    field public static final int STATE_IDLE = 0; // 0x0
-    field public static final int STATE_SETTLING = 2; // 0x2
-  }
-
-  public abstract static class ViewDragHelper.Callback {
-    ctor public ViewDragHelper.Callback();
-    method public int clampViewPositionHorizontal(android.view.View, int, int);
-    method public int clampViewPositionVertical(android.view.View, int, int);
-    method public int getOrderedChildIndex(int);
-    method public int getViewHorizontalDragRange(android.view.View);
-    method public int getViewVerticalDragRange(android.view.View);
-    method public void onEdgeDragStarted(int, int);
-    method public boolean onEdgeLock(int);
-    method public void onEdgeTouched(int, int);
-    method public void onViewCaptured(android.view.View, int);
-    method public void onViewDragStateChanged(int);
-    method public void onViewPositionChanged(android.view.View, int, int, @Px int, @Px int);
-    method public void onViewReleased(android.view.View, float, float);
-    method public abstract boolean tryCaptureView(android.view.View, int);
-  }
-
-}
-
diff --git a/customview/customview/api/public_plus_experimental_1.1.0-rc01.txt b/customview/customview/api/public_plus_experimental_1.1.0-rc01.txt
deleted file mode 100644
index 82c4509..0000000
--- a/customview/customview/api/public_plus_experimental_1.1.0-rc01.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-// Signature format: 3.0
-package androidx.customview.view {
-
-  public abstract class AbsSavedState implements android.os.Parcelable {
-    ctor protected AbsSavedState(android.os.Parcelable);
-    ctor protected AbsSavedState(android.os.Parcel);
-    ctor protected AbsSavedState(android.os.Parcel, ClassLoader?);
-    method public int describeContents();
-    method public final android.os.Parcelable? getSuperState();
-    method public void writeToParcel(android.os.Parcel!, int);
-    field public static final android.os.Parcelable.Creator<androidx.customview.view.AbsSavedState!>! CREATOR;
-    field public static final androidx.customview.view.AbsSavedState! EMPTY_STATE;
-  }
-
-}
-
-package androidx.customview.widget {
-
-  public abstract class ExploreByTouchHelper extends androidx.core.view.AccessibilityDelegateCompat {
-    ctor public ExploreByTouchHelper(android.view.View);
-    method public final boolean clearKeyboardFocusForVirtualView(int);
-    method public final boolean dispatchHoverEvent(android.view.MotionEvent);
-    method public final boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public final int getAccessibilityFocusedVirtualViewId();
-    method @Deprecated public int getFocusedVirtualView();
-    method public final int getKeyboardFocusedVirtualViewId();
-    method protected abstract int getVirtualViewAt(float, float);
-    method protected abstract void getVisibleVirtualViews(java.util.List<java.lang.Integer!>!);
-    method public final void invalidateRoot();
-    method public final void invalidateVirtualView(int);
-    method public final void invalidateVirtualView(int, int);
-    method public final void onFocusChanged(boolean, int, android.graphics.Rect?);
-    method protected abstract boolean onPerformActionForVirtualView(int, int, android.os.Bundle?);
-    method protected void onPopulateEventForHost(android.view.accessibility.AccessibilityEvent);
-    method protected void onPopulateEventForVirtualView(int, android.view.accessibility.AccessibilityEvent);
-    method protected void onPopulateNodeForHost(androidx.core.view.accessibility.AccessibilityNodeInfoCompat);
-    method protected abstract void onPopulateNodeForVirtualView(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat);
-    method protected void onVirtualViewKeyboardFocusChanged(int, boolean);
-    method public final boolean requestKeyboardFocusForVirtualView(int);
-    method public final boolean sendEventForVirtualView(int, int);
-    field public static final int HOST_ID = -1; // 0xffffffff
-    field public static final int INVALID_ID = -2147483648; // 0x80000000
-  }
-
-  public interface Openable {
-    method public void close();
-    method public boolean isOpen();
-    method public void open();
-  }
-
-  public class ViewDragHelper {
-    method public void abort();
-    method protected boolean canScroll(android.view.View, boolean, int, int, int, int);
-    method public void cancel();
-    method public void captureChildView(android.view.View, int);
-    method public boolean checkTouchSlop(int);
-    method public boolean checkTouchSlop(int, int);
-    method public boolean continueSettling(boolean);
-    method public static androidx.customview.widget.ViewDragHelper! create(android.view.ViewGroup, androidx.customview.widget.ViewDragHelper.Callback);
-    method public static androidx.customview.widget.ViewDragHelper! create(android.view.ViewGroup, float, androidx.customview.widget.ViewDragHelper.Callback);
-    method public android.view.View? findTopChildUnder(int, int);
-    method public void flingCapturedView(int, int, int, int);
-    method public int getActivePointerId();
-    method public android.view.View? getCapturedView();
-    method @Px public int getDefaultEdgeSize();
-    method @Px public int getEdgeSize();
-    method public float getMinVelocity();
-    method @Px public int getTouchSlop();
-    method public int getViewDragState();
-    method public boolean isCapturedViewUnder(int, int);
-    method public boolean isEdgeTouched(int);
-    method public boolean isEdgeTouched(int, int);
-    method public boolean isPointerDown(int);
-    method public boolean isViewUnder(android.view.View?, int, int);
-    method public void processTouchEvent(android.view.MotionEvent);
-    method public void setEdgeSize(@IntRange(from=0) @Px int);
-    method public void setEdgeTrackingEnabled(int);
-    method public void setMinVelocity(float);
-    method public boolean settleCapturedViewAt(int, int);
-    method public boolean shouldInterceptTouchEvent(android.view.MotionEvent);
-    method public boolean smoothSlideViewTo(android.view.View, int, int);
-    field public static final int DIRECTION_ALL = 3; // 0x3
-    field public static final int DIRECTION_HORIZONTAL = 1; // 0x1
-    field public static final int DIRECTION_VERTICAL = 2; // 0x2
-    field public static final int EDGE_ALL = 15; // 0xf
-    field public static final int EDGE_BOTTOM = 8; // 0x8
-    field public static final int EDGE_LEFT = 1; // 0x1
-    field public static final int EDGE_RIGHT = 2; // 0x2
-    field public static final int EDGE_TOP = 4; // 0x4
-    field public static final int INVALID_POINTER = -1; // 0xffffffff
-    field public static final int STATE_DRAGGING = 1; // 0x1
-    field public static final int STATE_IDLE = 0; // 0x0
-    field public static final int STATE_SETTLING = 2; // 0x2
-  }
-
-  public abstract static class ViewDragHelper.Callback {
-    ctor public ViewDragHelper.Callback();
-    method public int clampViewPositionHorizontal(android.view.View, int, int);
-    method public int clampViewPositionVertical(android.view.View, int, int);
-    method public int getOrderedChildIndex(int);
-    method public int getViewHorizontalDragRange(android.view.View);
-    method public int getViewVerticalDragRange(android.view.View);
-    method public void onEdgeDragStarted(int, int);
-    method public boolean onEdgeLock(int);
-    method public void onEdgeTouched(int, int);
-    method public void onViewCaptured(android.view.View, int);
-    method public void onViewDragStateChanged(int);
-    method public void onViewPositionChanged(android.view.View, int, int, @Px int, @Px int);
-    method public void onViewReleased(android.view.View, float, float);
-    method public abstract boolean tryCaptureView(android.view.View, int);
-  }
-
-}
-
diff --git a/customview/customview/api/res-1.1.0-rc01.txt b/customview/customview/api/res-1.1.0-rc01.txt
deleted file mode 100644
index e69de29..0000000
--- a/customview/customview/api/res-1.1.0-rc01.txt
+++ /dev/null
diff --git a/customview/customview/api/restricted_1.1.0-rc01.txt b/customview/customview/api/restricted_1.1.0-rc01.txt
deleted file mode 100644
index 82c4509..0000000
--- a/customview/customview/api/restricted_1.1.0-rc01.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-// Signature format: 3.0
-package androidx.customview.view {
-
-  public abstract class AbsSavedState implements android.os.Parcelable {
-    ctor protected AbsSavedState(android.os.Parcelable);
-    ctor protected AbsSavedState(android.os.Parcel);
-    ctor protected AbsSavedState(android.os.Parcel, ClassLoader?);
-    method public int describeContents();
-    method public final android.os.Parcelable? getSuperState();
-    method public void writeToParcel(android.os.Parcel!, int);
-    field public static final android.os.Parcelable.Creator<androidx.customview.view.AbsSavedState!>! CREATOR;
-    field public static final androidx.customview.view.AbsSavedState! EMPTY_STATE;
-  }
-
-}
-
-package androidx.customview.widget {
-
-  public abstract class ExploreByTouchHelper extends androidx.core.view.AccessibilityDelegateCompat {
-    ctor public ExploreByTouchHelper(android.view.View);
-    method public final boolean clearKeyboardFocusForVirtualView(int);
-    method public final boolean dispatchHoverEvent(android.view.MotionEvent);
-    method public final boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public final int getAccessibilityFocusedVirtualViewId();
-    method @Deprecated public int getFocusedVirtualView();
-    method public final int getKeyboardFocusedVirtualViewId();
-    method protected abstract int getVirtualViewAt(float, float);
-    method protected abstract void getVisibleVirtualViews(java.util.List<java.lang.Integer!>!);
-    method public final void invalidateRoot();
-    method public final void invalidateVirtualView(int);
-    method public final void invalidateVirtualView(int, int);
-    method public final void onFocusChanged(boolean, int, android.graphics.Rect?);
-    method protected abstract boolean onPerformActionForVirtualView(int, int, android.os.Bundle?);
-    method protected void onPopulateEventForHost(android.view.accessibility.AccessibilityEvent);
-    method protected void onPopulateEventForVirtualView(int, android.view.accessibility.AccessibilityEvent);
-    method protected void onPopulateNodeForHost(androidx.core.view.accessibility.AccessibilityNodeInfoCompat);
-    method protected abstract void onPopulateNodeForVirtualView(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat);
-    method protected void onVirtualViewKeyboardFocusChanged(int, boolean);
-    method public final boolean requestKeyboardFocusForVirtualView(int);
-    method public final boolean sendEventForVirtualView(int, int);
-    field public static final int HOST_ID = -1; // 0xffffffff
-    field public static final int INVALID_ID = -2147483648; // 0x80000000
-  }
-
-  public interface Openable {
-    method public void close();
-    method public boolean isOpen();
-    method public void open();
-  }
-
-  public class ViewDragHelper {
-    method public void abort();
-    method protected boolean canScroll(android.view.View, boolean, int, int, int, int);
-    method public void cancel();
-    method public void captureChildView(android.view.View, int);
-    method public boolean checkTouchSlop(int);
-    method public boolean checkTouchSlop(int, int);
-    method public boolean continueSettling(boolean);
-    method public static androidx.customview.widget.ViewDragHelper! create(android.view.ViewGroup, androidx.customview.widget.ViewDragHelper.Callback);
-    method public static androidx.customview.widget.ViewDragHelper! create(android.view.ViewGroup, float, androidx.customview.widget.ViewDragHelper.Callback);
-    method public android.view.View? findTopChildUnder(int, int);
-    method public void flingCapturedView(int, int, int, int);
-    method public int getActivePointerId();
-    method public android.view.View? getCapturedView();
-    method @Px public int getDefaultEdgeSize();
-    method @Px public int getEdgeSize();
-    method public float getMinVelocity();
-    method @Px public int getTouchSlop();
-    method public int getViewDragState();
-    method public boolean isCapturedViewUnder(int, int);
-    method public boolean isEdgeTouched(int);
-    method public boolean isEdgeTouched(int, int);
-    method public boolean isPointerDown(int);
-    method public boolean isViewUnder(android.view.View?, int, int);
-    method public void processTouchEvent(android.view.MotionEvent);
-    method public void setEdgeSize(@IntRange(from=0) @Px int);
-    method public void setEdgeTrackingEnabled(int);
-    method public void setMinVelocity(float);
-    method public boolean settleCapturedViewAt(int, int);
-    method public boolean shouldInterceptTouchEvent(android.view.MotionEvent);
-    method public boolean smoothSlideViewTo(android.view.View, int, int);
-    field public static final int DIRECTION_ALL = 3; // 0x3
-    field public static final int DIRECTION_HORIZONTAL = 1; // 0x1
-    field public static final int DIRECTION_VERTICAL = 2; // 0x2
-    field public static final int EDGE_ALL = 15; // 0xf
-    field public static final int EDGE_BOTTOM = 8; // 0x8
-    field public static final int EDGE_LEFT = 1; // 0x1
-    field public static final int EDGE_RIGHT = 2; // 0x2
-    field public static final int EDGE_TOP = 4; // 0x4
-    field public static final int INVALID_POINTER = -1; // 0xffffffff
-    field public static final int STATE_DRAGGING = 1; // 0x1
-    field public static final int STATE_IDLE = 0; // 0x0
-    field public static final int STATE_SETTLING = 2; // 0x2
-  }
-
-  public abstract static class ViewDragHelper.Callback {
-    ctor public ViewDragHelper.Callback();
-    method public int clampViewPositionHorizontal(android.view.View, int, int);
-    method public int clampViewPositionVertical(android.view.View, int, int);
-    method public int getOrderedChildIndex(int);
-    method public int getViewHorizontalDragRange(android.view.View);
-    method public int getViewVerticalDragRange(android.view.View);
-    method public void onEdgeDragStarted(int, int);
-    method public boolean onEdgeLock(int);
-    method public void onEdgeTouched(int, int);
-    method public void onViewCaptured(android.view.View, int);
-    method public void onViewDragStateChanged(int);
-    method public void onViewPositionChanged(android.view.View, int, int, @Px int, @Px int);
-    method public void onViewReleased(android.view.View, float, float);
-    method public abstract boolean tryCaptureView(android.view.View, int);
-  }
-
-}
-
diff --git a/customview/customview/build.gradle b/customview/customview/build.gradle
index 55d59f2..474e25e 100644
--- a/customview/customview/build.gradle
+++ b/customview/customview/build.gradle
@@ -17,7 +17,7 @@
 
 dependencies {
     api("androidx.annotation:annotation:1.1.0")
-    api("androidx.core:core:1.3.0-rc01")
+    api("androidx.core:core:1.3.0-beta01")
     implementation("androidx.collection:collection:1.1.0")
 
     androidTestImplementation(JUNIT)
diff --git a/development/studio/idea.properties b/development/studio/idea.properties
index cf80e9b..5696ad1 100644
--- a/development/studio/idea.properties
+++ b/development/studio/idea.properties
@@ -5,12 +5,12 @@
 #---------------------------------------------------------------------
 # Uncomment this option if you want to customize path to IDE config folder. Make sure you're using forward slashes.
 #---------------------------------------------------------------------
-idea.config.path=${user.home}/.AndroidStudioAndroidX/config
+idea.config.path=${user.home}/.AndroidStudioAndroidXPlatform/config
 
 #---------------------------------------------------------------------
 # Uncomment this option if you want to customize path to IDE system folder. Make sure you're using forward slashes.
 #---------------------------------------------------------------------
-idea.system.path=${user.home}/.AndroidStudioAndroidX/system
+idea.system.path=${user.home}/.AndroidStudioAndroidXPlatform/system
 
 #---------------------------------------------------------------------
 # Uncomment this option if you want to customize path to user installed plugins folder. Make sure you're using forward slashes.
diff --git a/drawerlayout/drawerlayout/api/1.1.0-rc01.txt b/drawerlayout/drawerlayout/api/1.1.0-rc01.txt
deleted file mode 100644
index 5b202b5..0000000
--- a/drawerlayout/drawerlayout/api/1.1.0-rc01.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-// Signature format: 3.0
-package androidx.drawerlayout.widget {
-
-  public class DrawerLayout extends android.view.ViewGroup implements androidx.customview.widget.Openable {
-    ctor public DrawerLayout(android.content.Context);
-    ctor public DrawerLayout(android.content.Context, android.util.AttributeSet?);
-    ctor public DrawerLayout(android.content.Context, android.util.AttributeSet?, int);
-    method public void addDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method public void close();
-    method public void closeDrawer(android.view.View);
-    method public void closeDrawer(android.view.View, boolean);
-    method public void closeDrawer(int);
-    method public void closeDrawer(int, boolean);
-    method public void closeDrawers();
-    method public float getDrawerElevation();
-    method public int getDrawerLockMode(int);
-    method public int getDrawerLockMode(android.view.View);
-    method public CharSequence? getDrawerTitle(int);
-    method public android.graphics.drawable.Drawable? getStatusBarBackgroundDrawable();
-    method public boolean isDrawerOpen(android.view.View);
-    method public boolean isDrawerOpen(int);
-    method public boolean isDrawerVisible(android.view.View);
-    method public boolean isDrawerVisible(int);
-    method public boolean isOpen();
-    method public void onDraw(android.graphics.Canvas!);
-    method public void open();
-    method public void openDrawer(android.view.View);
-    method public void openDrawer(android.view.View, boolean);
-    method public void openDrawer(int);
-    method public void openDrawer(int, boolean);
-    method public void removeDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method public void setDrawerElevation(float);
-    method @Deprecated public void setDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener!);
-    method public void setDrawerLockMode(int);
-    method public void setDrawerLockMode(int, int);
-    method public void setDrawerLockMode(int, android.view.View);
-    method public void setDrawerShadow(android.graphics.drawable.Drawable!, int);
-    method public void setDrawerShadow(@DrawableRes int, int);
-    method public void setDrawerTitle(int, CharSequence?);
-    method public void setScrimColor(@ColorInt int);
-    method public void setStatusBarBackground(android.graphics.drawable.Drawable?);
-    method public void setStatusBarBackground(int);
-    method public void setStatusBarBackgroundColor(@ColorInt int);
-    field public static final int LOCK_MODE_LOCKED_CLOSED = 1; // 0x1
-    field public static final int LOCK_MODE_LOCKED_OPEN = 2; // 0x2
-    field public static final int LOCK_MODE_UNDEFINED = 3; // 0x3
-    field public static final int LOCK_MODE_UNLOCKED = 0; // 0x0
-    field public static final int STATE_DRAGGING = 1; // 0x1
-    field public static final int STATE_IDLE = 0; // 0x0
-    field public static final int STATE_SETTLING = 2; // 0x2
-  }
-
-  public static interface DrawerLayout.DrawerListener {
-    method public void onDrawerClosed(android.view.View);
-    method public void onDrawerOpened(android.view.View);
-    method public void onDrawerSlide(android.view.View, float);
-    method public void onDrawerStateChanged(int);
-  }
-
-  public static class DrawerLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public DrawerLayout.LayoutParams(android.content.Context, android.util.AttributeSet?);
-    ctor public DrawerLayout.LayoutParams(int, int);
-    ctor public DrawerLayout.LayoutParams(int, int, int);
-    ctor public DrawerLayout.LayoutParams(androidx.drawerlayout.widget.DrawerLayout.LayoutParams);
-    ctor public DrawerLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public DrawerLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    field public int gravity;
-  }
-
-  protected static class DrawerLayout.SavedState extends androidx.customview.view.AbsSavedState {
-    ctor public DrawerLayout.SavedState(android.os.Parcel, ClassLoader?);
-    ctor public DrawerLayout.SavedState(android.os.Parcelable);
-    field public static final android.os.Parcelable.Creator<androidx.drawerlayout.widget.DrawerLayout.SavedState!>! CREATOR;
-  }
-
-  public abstract static class DrawerLayout.SimpleDrawerListener implements androidx.drawerlayout.widget.DrawerLayout.DrawerListener {
-    ctor public DrawerLayout.SimpleDrawerListener();
-    method public void onDrawerClosed(android.view.View!);
-    method public void onDrawerOpened(android.view.View!);
-    method public void onDrawerSlide(android.view.View!, float);
-    method public void onDrawerStateChanged(int);
-  }
-
-}
-
diff --git a/drawerlayout/drawerlayout/api/public_plus_experimental_1.1.0-rc01.txt b/drawerlayout/drawerlayout/api/public_plus_experimental_1.1.0-rc01.txt
deleted file mode 100644
index 5b202b5..0000000
--- a/drawerlayout/drawerlayout/api/public_plus_experimental_1.1.0-rc01.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-// Signature format: 3.0
-package androidx.drawerlayout.widget {
-
-  public class DrawerLayout extends android.view.ViewGroup implements androidx.customview.widget.Openable {
-    ctor public DrawerLayout(android.content.Context);
-    ctor public DrawerLayout(android.content.Context, android.util.AttributeSet?);
-    ctor public DrawerLayout(android.content.Context, android.util.AttributeSet?, int);
-    method public void addDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method public void close();
-    method public void closeDrawer(android.view.View);
-    method public void closeDrawer(android.view.View, boolean);
-    method public void closeDrawer(int);
-    method public void closeDrawer(int, boolean);
-    method public void closeDrawers();
-    method public float getDrawerElevation();
-    method public int getDrawerLockMode(int);
-    method public int getDrawerLockMode(android.view.View);
-    method public CharSequence? getDrawerTitle(int);
-    method public android.graphics.drawable.Drawable? getStatusBarBackgroundDrawable();
-    method public boolean isDrawerOpen(android.view.View);
-    method public boolean isDrawerOpen(int);
-    method public boolean isDrawerVisible(android.view.View);
-    method public boolean isDrawerVisible(int);
-    method public boolean isOpen();
-    method public void onDraw(android.graphics.Canvas!);
-    method public void open();
-    method public void openDrawer(android.view.View);
-    method public void openDrawer(android.view.View, boolean);
-    method public void openDrawer(int);
-    method public void openDrawer(int, boolean);
-    method public void removeDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method public void setDrawerElevation(float);
-    method @Deprecated public void setDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener!);
-    method public void setDrawerLockMode(int);
-    method public void setDrawerLockMode(int, int);
-    method public void setDrawerLockMode(int, android.view.View);
-    method public void setDrawerShadow(android.graphics.drawable.Drawable!, int);
-    method public void setDrawerShadow(@DrawableRes int, int);
-    method public void setDrawerTitle(int, CharSequence?);
-    method public void setScrimColor(@ColorInt int);
-    method public void setStatusBarBackground(android.graphics.drawable.Drawable?);
-    method public void setStatusBarBackground(int);
-    method public void setStatusBarBackgroundColor(@ColorInt int);
-    field public static final int LOCK_MODE_LOCKED_CLOSED = 1; // 0x1
-    field public static final int LOCK_MODE_LOCKED_OPEN = 2; // 0x2
-    field public static final int LOCK_MODE_UNDEFINED = 3; // 0x3
-    field public static final int LOCK_MODE_UNLOCKED = 0; // 0x0
-    field public static final int STATE_DRAGGING = 1; // 0x1
-    field public static final int STATE_IDLE = 0; // 0x0
-    field public static final int STATE_SETTLING = 2; // 0x2
-  }
-
-  public static interface DrawerLayout.DrawerListener {
-    method public void onDrawerClosed(android.view.View);
-    method public void onDrawerOpened(android.view.View);
-    method public void onDrawerSlide(android.view.View, float);
-    method public void onDrawerStateChanged(int);
-  }
-
-  public static class DrawerLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public DrawerLayout.LayoutParams(android.content.Context, android.util.AttributeSet?);
-    ctor public DrawerLayout.LayoutParams(int, int);
-    ctor public DrawerLayout.LayoutParams(int, int, int);
-    ctor public DrawerLayout.LayoutParams(androidx.drawerlayout.widget.DrawerLayout.LayoutParams);
-    ctor public DrawerLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public DrawerLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    field public int gravity;
-  }
-
-  protected static class DrawerLayout.SavedState extends androidx.customview.view.AbsSavedState {
-    ctor public DrawerLayout.SavedState(android.os.Parcel, ClassLoader?);
-    ctor public DrawerLayout.SavedState(android.os.Parcelable);
-    field public static final android.os.Parcelable.Creator<androidx.drawerlayout.widget.DrawerLayout.SavedState!>! CREATOR;
-  }
-
-  public abstract static class DrawerLayout.SimpleDrawerListener implements androidx.drawerlayout.widget.DrawerLayout.DrawerListener {
-    ctor public DrawerLayout.SimpleDrawerListener();
-    method public void onDrawerClosed(android.view.View!);
-    method public void onDrawerOpened(android.view.View!);
-    method public void onDrawerSlide(android.view.View!, float);
-    method public void onDrawerStateChanged(int);
-  }
-
-}
-
diff --git a/drawerlayout/drawerlayout/api/res-1.1.0-rc01.txt b/drawerlayout/drawerlayout/api/res-1.1.0-rc01.txt
deleted file mode 100644
index 3756729..0000000
--- a/drawerlayout/drawerlayout/api/res-1.1.0-rc01.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-attr drawerLayoutStyle
-attr elevation
diff --git a/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha03.txt b/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha03.txt
index f6fef7e..26c01ab 100644
--- a/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha03.txt
+++ b/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha03.txt
@@ -26,7 +26,7 @@
     method public void openDrawer(int);
     method public void openDrawer(int, boolean);
     method public void removeDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(Object!, boolean);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(androidx.core.view.WindowInsetsCompat!, boolean);
     method public void setDrawerElevation(float);
     method @Deprecated public void setDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener!);
     method public void setDrawerLockMode(int);
diff --git a/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha04.txt b/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha04.txt
index e6d4605..a771903 100644
--- a/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha04.txt
+++ b/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha04.txt
@@ -29,7 +29,7 @@
     method public void openDrawer(int);
     method public void openDrawer(int, boolean);
     method public void removeDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(Object!, boolean);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(androidx.core.view.WindowInsetsCompat!, boolean);
     method public void setDrawerElevation(float);
     method @Deprecated public void setDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener!);
     method public void setDrawerLockMode(int);
diff --git a/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha05.txt b/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha05.txt
index e6d4605..a771903 100644
--- a/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha05.txt
+++ b/drawerlayout/drawerlayout/api/restricted_1.1.0-alpha05.txt
@@ -29,7 +29,7 @@
     method public void openDrawer(int);
     method public void openDrawer(int, boolean);
     method public void removeDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(Object!, boolean);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(androidx.core.view.WindowInsetsCompat!, boolean);
     method public void setDrawerElevation(float);
     method @Deprecated public void setDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener!);
     method public void setDrawerLockMode(int);
diff --git a/drawerlayout/drawerlayout/api/restricted_1.1.0-beta01.txt b/drawerlayout/drawerlayout/api/restricted_1.1.0-beta01.txt
index e6d4605..a771903 100644
--- a/drawerlayout/drawerlayout/api/restricted_1.1.0-beta01.txt
+++ b/drawerlayout/drawerlayout/api/restricted_1.1.0-beta01.txt
@@ -29,7 +29,7 @@
     method public void openDrawer(int);
     method public void openDrawer(int, boolean);
     method public void removeDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(Object!, boolean);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(androidx.core.view.WindowInsetsCompat!, boolean);
     method public void setDrawerElevation(float);
     method @Deprecated public void setDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener!);
     method public void setDrawerLockMode(int);
diff --git a/drawerlayout/drawerlayout/api/restricted_1.1.0-rc01.txt b/drawerlayout/drawerlayout/api/restricted_1.1.0-rc01.txt
deleted file mode 100644
index e6d4605..0000000
--- a/drawerlayout/drawerlayout/api/restricted_1.1.0-rc01.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-// Signature format: 3.0
-package androidx.drawerlayout.widget {
-
-  public class DrawerLayout extends android.view.ViewGroup implements androidx.customview.widget.Openable {
-    ctor public DrawerLayout(android.content.Context);
-    ctor public DrawerLayout(android.content.Context, android.util.AttributeSet?);
-    ctor public DrawerLayout(android.content.Context, android.util.AttributeSet?, int);
-    method public void addDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method public void close();
-    method public void closeDrawer(android.view.View);
-    method public void closeDrawer(android.view.View, boolean);
-    method public void closeDrawer(int);
-    method public void closeDrawer(int, boolean);
-    method public void closeDrawers();
-    method public float getDrawerElevation();
-    method public int getDrawerLockMode(int);
-    method public int getDrawerLockMode(android.view.View);
-    method public CharSequence? getDrawerTitle(int);
-    method public android.graphics.drawable.Drawable? getStatusBarBackgroundDrawable();
-    method public boolean isDrawerOpen(android.view.View);
-    method public boolean isDrawerOpen(int);
-    method public boolean isDrawerVisible(android.view.View);
-    method public boolean isDrawerVisible(int);
-    method public boolean isOpen();
-    method public void onDraw(android.graphics.Canvas!);
-    method public void open();
-    method public void openDrawer(android.view.View);
-    method public void openDrawer(android.view.View, boolean);
-    method public void openDrawer(int);
-    method public void openDrawer(int, boolean);
-    method public void removeDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(Object!, boolean);
-    method public void setDrawerElevation(float);
-    method @Deprecated public void setDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener!);
-    method public void setDrawerLockMode(int);
-    method public void setDrawerLockMode(int, int);
-    method public void setDrawerLockMode(int, android.view.View);
-    method public void setDrawerShadow(android.graphics.drawable.Drawable!, int);
-    method public void setDrawerShadow(@DrawableRes int, int);
-    method public void setDrawerTitle(int, CharSequence?);
-    method public void setScrimColor(@ColorInt int);
-    method public void setStatusBarBackground(android.graphics.drawable.Drawable?);
-    method public void setStatusBarBackground(int);
-    method public void setStatusBarBackgroundColor(@ColorInt int);
-    field public static final int LOCK_MODE_LOCKED_CLOSED = 1; // 0x1
-    field public static final int LOCK_MODE_LOCKED_OPEN = 2; // 0x2
-    field public static final int LOCK_MODE_UNDEFINED = 3; // 0x3
-    field public static final int LOCK_MODE_UNLOCKED = 0; // 0x0
-    field public static final int STATE_DRAGGING = 1; // 0x1
-    field public static final int STATE_IDLE = 0; // 0x0
-    field public static final int STATE_SETTLING = 2; // 0x2
-  }
-
-  public static interface DrawerLayout.DrawerListener {
-    method public void onDrawerClosed(android.view.View);
-    method public void onDrawerOpened(android.view.View);
-    method public void onDrawerSlide(android.view.View, float);
-    method public void onDrawerStateChanged(int);
-  }
-
-  public static class DrawerLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public DrawerLayout.LayoutParams(android.content.Context, android.util.AttributeSet?);
-    ctor public DrawerLayout.LayoutParams(int, int);
-    ctor public DrawerLayout.LayoutParams(int, int, int);
-    ctor public DrawerLayout.LayoutParams(androidx.drawerlayout.widget.DrawerLayout.LayoutParams);
-    ctor public DrawerLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public DrawerLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    field public int gravity;
-  }
-
-  protected static class DrawerLayout.SavedState extends androidx.customview.view.AbsSavedState {
-    ctor public DrawerLayout.SavedState(android.os.Parcel, ClassLoader?);
-    ctor public DrawerLayout.SavedState(android.os.Parcelable);
-    field public static final android.os.Parcelable.Creator<androidx.drawerlayout.widget.DrawerLayout.SavedState!>! CREATOR;
-  }
-
-  public abstract static class DrawerLayout.SimpleDrawerListener implements androidx.drawerlayout.widget.DrawerLayout.DrawerListener {
-    ctor public DrawerLayout.SimpleDrawerListener();
-    method public void onDrawerClosed(android.view.View!);
-    method public void onDrawerOpened(android.view.View!);
-    method public void onDrawerSlide(android.view.View!, float);
-    method public void onDrawerStateChanged(int);
-  }
-
-}
-
diff --git a/drawerlayout/drawerlayout/api/restricted_current.txt b/drawerlayout/drawerlayout/api/restricted_current.txt
index e6d4605..a771903 100644
--- a/drawerlayout/drawerlayout/api/restricted_current.txt
+++ b/drawerlayout/drawerlayout/api/restricted_current.txt
@@ -29,7 +29,7 @@
     method public void openDrawer(int);
     method public void openDrawer(int, boolean);
     method public void removeDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(Object!, boolean);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setChildInsets(androidx.core.view.WindowInsetsCompat!, boolean);
     method public void setDrawerElevation(float);
     method @Deprecated public void setDrawerListener(androidx.drawerlayout.widget.DrawerLayout.DrawerListener!);
     method public void setDrawerLockMode(int);
diff --git a/drawerlayout/drawerlayout/src/main/java/androidx/drawerlayout/widget/DrawerLayout.java b/drawerlayout/drawerlayout/src/main/java/androidx/drawerlayout/widget/DrawerLayout.java
index 20330d6..1b683ac 100644
--- a/drawerlayout/drawerlayout/src/main/java/androidx/drawerlayout/widget/DrawerLayout.java
+++ b/drawerlayout/drawerlayout/src/main/java/androidx/drawerlayout/widget/DrawerLayout.java
@@ -162,7 +162,6 @@
     @Retention(RetentionPolicy.SOURCE)
     private @interface EdgeGravity {}
 
-
     private static final int MIN_DRAWER_MARGIN = 64; // dp
 
     private static final int DEFAULT_SCRIM_COLOR = 0x99000000;
@@ -239,7 +238,7 @@
     private CharSequence mTitleLeft;
     private CharSequence mTitleRight;
 
-    private Object mLastInsets;
+    private WindowInsetsCompat mLastInsets;
     private boolean mDrawStatusBarBackground;
 
     /** Shadow drawables for different gravity */
@@ -332,6 +331,7 @@
         this(context, attrs, R.attr.drawerLayoutStyle);
     }
 
+    @SuppressWarnings("deprecation") /* SYSTEM_UI_FLAG_LAYOUT_* */
     public DrawerLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
         setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
@@ -362,14 +362,17 @@
         setMotionEventSplittingEnabled(false);
         if (ViewCompat.getFitsSystemWindows(this)) {
             if (Build.VERSION.SDK_INT >= 21) {
-                setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
-                    @Override
-                    public WindowInsets onApplyWindowInsets(View view, WindowInsets insets) {
-                        final DrawerLayout drawerLayout = (DrawerLayout) view;
-                        drawerLayout.setChildInsets(insets, insets.getSystemWindowInsetTop() > 0);
-                        return insets.consumeSystemWindowInsets();
-                    }
-                });
+                ViewCompat.setOnApplyWindowInsetsListener(this,
+                        new androidx.core.view.OnApplyWindowInsetsListener() {
+                            @Override
+                            public WindowInsetsCompat onApplyWindowInsets(View view,
+                                    WindowInsetsCompat insets) {
+                                final DrawerLayout drawerLayout = (DrawerLayout) view;
+                                drawerLayout.setChildInsets(insets,
+                                        insets.getSystemWindowInsets().top > 0);
+                                return insets.consumeSystemWindowInsets();
+                            }
+                        });
                 setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                         | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
                 final TypedArray a = context.obtainStyledAttributes(THEME_ATTRS);
@@ -433,7 +436,7 @@
      * with fitsSystemWindows="true"
      */
     @RestrictTo(LIBRARY_GROUP_PREFIX)
-    public void setChildInsets(Object insets, boolean draw) {
+    public void setChildInsets(WindowInsetsCompat insets, boolean draw) {
         mLastInsets = insets;
         mDrawStatusBarBackground = draw;
         setWillNotDraw(!draw && getBackground() == null);
@@ -1115,7 +1118,7 @@
                 final int cgrav = GravityCompat.getAbsoluteGravity(lp.gravity, layoutDirection);
                 if (ViewCompat.getFitsSystemWindows(child)) {
                     if (Build.VERSION.SDK_INT >= 21) {
-                        WindowInsets wi = (WindowInsets) mLastInsets;
+                        WindowInsetsCompat wi = mLastInsets;
                         if (cgrav == Gravity.LEFT) {
                             wi = wi.replaceSystemWindowInsets(wi.getSystemWindowInsetLeft(),
                                     wi.getSystemWindowInsetTop(), 0,
@@ -1125,11 +1128,11 @@
                                     wi.getSystemWindowInsetRight(),
                                     wi.getSystemWindowInsetBottom());
                         }
-                        child.dispatchApplyWindowInsets(wi);
+                        ViewCompat.dispatchApplyWindowInsets(child, wi);
                     }
                 } else {
                     if (Build.VERSION.SDK_INT >= 21) {
-                        WindowInsets wi = (WindowInsets) mLastInsets;
+                        WindowInsetsCompat wi = mLastInsets;
                         if (cgrav == Gravity.LEFT) {
                             wi = wi.replaceSystemWindowInsets(wi.getSystemWindowInsetLeft(),
                                     wi.getSystemWindowInsetTop(), 0,
@@ -1436,8 +1439,7 @@
         if (mDrawStatusBarBackground && mStatusBarBackground != null) {
             final int inset;
             if (Build.VERSION.SDK_INT >= 21) {
-                inset = mLastInsets != null
-                        ? ((WindowInsets) mLastInsets).getSystemWindowInsetTop() : 0;
+                inset = mLastInsets != null ? mLastInsets.getSystemWindowInsetTop() : 0;
             } else {
                 inset = 0;
             }
diff --git a/enterprise/feedback/src/main/java/androidx/enterprise/feedback/KeyedAppStatesService.java b/enterprise/feedback/src/main/java/androidx/enterprise/feedback/KeyedAppStatesService.java
index 41cc5b1..13a7a8f 100644
--- a/enterprise/feedback/src/main/java/androidx/enterprise/feedback/KeyedAppStatesService.java
+++ b/enterprise/feedback/src/main/java/androidx/enterprise/feedback/KeyedAppStatesService.java
@@ -23,7 +23,6 @@
 import android.annotation.SuppressLint;
 import android.app.Service;
 import android.content.Intent;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -63,8 +62,10 @@
 
     // This form is used instead of AsyncTask.execute(Runnable) as Robolectric causes tests to wait
     // for execution of these but does not currently wait for execution of
-    // AsyncTask.execute(runnable).
-    private static final class KeyedAppStatesServiceAsyncTask extends AsyncTask<Void, Void, Void> {
+    // android.os.AsyncTask.execute(runnable).
+    @SuppressWarnings("deprecation") /* AsyncTask */
+    private static final class KeyedAppStatesServiceAsyncTask
+            extends android.os.AsyncTask<Void, Void, Void> {
 
         @SuppressLint("StaticFieldLeak")
         // Instances are short-lived so won't block garbage collection.
@@ -90,6 +91,7 @@
         }
     }
 
+    @SuppressWarnings("deprecation") /* AsyncTask */
     private static class IncomingHandler extends Handler {
         private final KeyedAppStatesService mKeyedAppStatesService;
 
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentContainerViewTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentContainerViewTest.kt
index 866d69d..fe5580b 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentContainerViewTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentContainerViewTest.kt
@@ -116,6 +116,7 @@
             .isInstanceOf(FragmentContainerView::class.java)
     }
 
+    @Suppress("DEPRECATION") /* systemWindowInsets */
     @SdkSuppress(minSdkVersion = 29) // WindowInsets.Builder requires API 29
     @Test
     fun windowInsetsDispatchToChildren() {
diff --git a/gradle.properties b/gradle.properties
index 8e610d2..c99740c0 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -12,3 +12,4 @@
 kotlin.parallel.tasks.in.project=true
 # Workaround for b/141364941
 android.forceJacocoOutOfProcess=true
+androidx.writeVersionedApiFiles=false
diff --git a/leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseTestFragment.java b/leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseTestFragment.java
index 6e1d5ed..58d81a4 100644
--- a/leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseTestFragment.java
+++ b/leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseTestFragment.java
@@ -20,10 +20,8 @@
 import static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_LOAD_DATA_DELAY;
 import static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_NUM_ROWS;
 import static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_REPEAT_PER_ROW;
-import static androidx.leanback.app.BrowseFragmentTestActivity
-        .EXTRA_SET_ADAPTER_AFTER_DATA_LOAD;
-import static androidx.leanback.app.BrowseFragmentTestActivity
-        .EXTRA_TEST_ENTRANCE_TRANSITION;
+import static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_SET_ADAPTER_AFTER_DATA_LOAD;
+import static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_TEST_ENTRANCE_TRANSITION;
 
 import android.os.Bundle;
 import android.os.Handler;
diff --git a/leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseTestSupportFragment.java b/leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseTestSupportFragment.java
index ee71687..d242e44 100644
--- a/leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseTestSupportFragment.java
+++ b/leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseTestSupportFragment.java
@@ -17,10 +17,8 @@
 import static androidx.leanback.app.BrowseSupportFragmentTestActivity.EXTRA_LOAD_DATA_DELAY;
 import static androidx.leanback.app.BrowseSupportFragmentTestActivity.EXTRA_NUM_ROWS;
 import static androidx.leanback.app.BrowseSupportFragmentTestActivity.EXTRA_REPEAT_PER_ROW;
-import static androidx.leanback.app.BrowseSupportFragmentTestActivity
-        .EXTRA_SET_ADAPTER_AFTER_DATA_LOAD;
-import static androidx.leanback.app.BrowseSupportFragmentTestActivity
-        .EXTRA_TEST_ENTRANCE_TRANSITION;
+import static androidx.leanback.app.BrowseSupportFragmentTestActivity.EXTRA_SET_ADAPTER_AFTER_DATA_LOAD;
+import static androidx.leanback.app.BrowseSupportFragmentTestActivity.EXTRA_TEST_ENTRANCE_TRANSITION;
 
 import android.os.Bundle;
 import android.os.Handler;
diff --git a/leanback/leanback/src/main/java/androidx/leanback/widget/GuidedActionsStylist.java b/leanback/leanback/src/main/java/androidx/leanback/widget/GuidedActionsStylist.java
index bb472a9..d13fb77 100644
--- a/leanback/leanback/src/main/java/androidx/leanback/widget/GuidedActionsStylist.java
+++ b/leanback/leanback/src/main/java/androidx/leanback/widget/GuidedActionsStylist.java
@@ -438,6 +438,7 @@
      * <code>LayoutInflater.inflate</code>.
      * @return The view to be added to the caller's view hierarchy.
      */
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     public View onCreateView(LayoutInflater inflater, final ViewGroup container) {
         TypedArray ta = inflater.getContext().getTheme().obtainStyledAttributes(
                 R.styleable.LeanbackGuidedStepTheme);
diff --git a/loader/loader/src/androidTest/java/androidx/loader/content/ModernAsyncTaskTest.java b/loader/loader/src/androidTest/java/androidx/loader/content/ModernAsyncTaskTest.java
index a3aefeb..eadcb19 100644
--- a/loader/loader/src/androidTest/java/androidx/loader/content/ModernAsyncTaskTest.java
+++ b/loader/loader/src/androidTest/java/androidx/loader/content/ModernAsyncTaskTest.java
@@ -18,8 +18,6 @@
 
 import static org.junit.Assert.fail;
 
-import android.os.AsyncTask;
-
 import androidx.annotation.NonNull;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.LargeTest;
@@ -33,6 +31,7 @@
 import java.util.concurrent.TimeUnit;
 
 @RunWith(AndroidJUnit4.class)
+@SuppressWarnings("deprecation") /* AsyncTask */
 public class ModernAsyncTaskTest {
 
     private ModernAsyncTask mModernAsyncTask;
@@ -53,7 +52,7 @@
                 // because sInternalHandler was initialized as static field.
                 // https://github.com/aosp-mirror/platform_frameworks_base/blob/ics-mr1/core/java/android/os/AsyncTask.java#L190
                 //noinspection unused
-                Executor unused = AsyncTask.THREAD_POOL_EXECUTOR;
+                Executor unused = android.os.AsyncTask.THREAD_POOL_EXECUTOR;
                 mModernAsyncTask = new ModernAsyncTask() {
                     @Override
                     protected Object doInBackground() {
@@ -73,7 +72,7 @@
             }
         });
 
-        mModernAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+        mModernAsyncTask.executeOnExecutor(android.os.AsyncTask.THREAD_POOL_EXECUTOR);
         if (!readyToCancel.await(5, TimeUnit.SECONDS)) {
             fail("Test failure: doInBackground did not run in time.");
         }
diff --git a/loader/loader/src/main/java/androidx/loader/content/AsyncTaskLoader.java b/loader/loader/src/main/java/androidx/loader/content/AsyncTaskLoader.java
index e34701e..ac352ff 100644
--- a/loader/loader/src/main/java/androidx/loader/content/AsyncTaskLoader.java
+++ b/loader/loader/src/main/java/androidx/loader/content/AsyncTaskLoader.java
@@ -17,7 +17,6 @@
 package androidx.loader.content;
 
 import android.content.Context;
-import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.SystemClock;
 import android.text.format.DateUtils;
@@ -40,6 +39,7 @@
  * to switch to the framework's implementation.  See the framework SDK
  * documentation for a class overview.
  */
+@SuppressWarnings("deprecation") /* AsyncTask */
 public abstract class AsyncTaskLoader<D> extends Loader<D> {
     private static final String TAG = "AsyncTaskLoader";
     private static final boolean DEBUG = false;
@@ -314,19 +314,20 @@
     }
 
     /**
-     * Returns the {@link Executor} to use for this {@link Loader}'s {@link AsyncTask}s.
-     * By default {@link AsyncTask#THREAD_POOL_EXECUTOR} will be used.
+     * Returns the {@link Executor} to use for this {@link Loader}'s {@link android.os.AsyncTask}s.
+     * By default {@link android.os.AsyncTask#THREAD_POOL_EXECUTOR} will be used.
      *
      * Override this method to return a custom executor. Note that this method will only be called
-     * once before this {@link Loader}'s first {@link AsyncTask} is run. It is up to the
+     * once before this {@link Loader}'s first {@link android.os.AsyncTask} is run. It is up to the
      * {@link Loader} to shut down the {@link Executor} at the appropriate place
      * (e.g. in {@link #onAbandon()}) if necessary.
      *
-     * @return the {@link Executor} to use for this {@link Loader}'s {@link AsyncTask}s.
+     * @return the {@link Executor} to use for this {@link Loader}'s {@link android.os.AsyncTask}s.
      */
     @NonNull
+    @SuppressWarnings("deprecation") /* AsyncTask */
     protected Executor getExecutor() {
-        return AsyncTask.THREAD_POOL_EXECUTOR;
+        return android.os.AsyncTask.THREAD_POOL_EXECUTOR;
     }
 
     /**
diff --git a/media2/integration-tests/testapp/src/main/java/androidx/media2/integration/testapp/VideoSelectorActivity.java b/media2/integration-tests/testapp/src/main/java/androidx/media2/integration/testapp/VideoSelectorActivity.java
index 36a69f1..0fe7e7e 100644
--- a/media2/integration-tests/testapp/src/main/java/androidx/media2/integration/testapp/VideoSelectorActivity.java
+++ b/media2/integration-tests/testapp/src/main/java/androidx/media2/integration/testapp/VideoSelectorActivity.java
@@ -22,7 +22,6 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.StrictMode;
@@ -303,7 +302,7 @@
         return retVal;
     }
 
-    private final class VideoItemListTask extends AsyncTask<Void, Void, VideoItemList> {
+    private final class VideoItemListTask extends android.os.AsyncTask<Void, Void, VideoItemList> {
         private String mPath;
 
         VideoItemListTask(String path) {
diff --git a/media2/integration-tests/testapp/src/main/java/androidx/media2/integration/testapp/VideoSessionService.java b/media2/integration-tests/testapp/src/main/java/androidx/media2/integration/testapp/VideoSessionService.java
index 1bb7f2b8..8ff807d 100644
--- a/media2/integration-tests/testapp/src/main/java/androidx/media2/integration/testapp/VideoSessionService.java
+++ b/media2/integration-tests/testapp/src/main/java/androidx/media2/integration/testapp/VideoSessionService.java
@@ -23,7 +23,6 @@
 import android.graphics.BitmapFactory;
 import android.media.MediaMetadataRetriever;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.widget.Toast;
 
 import androidx.annotation.NonNull;
@@ -149,7 +148,8 @@
         }
     }
 
-    private static class MetadataExtractTask extends AsyncTask<Void, Void, MediaMetadata> {
+    private static class MetadataExtractTask
+            extends android.os.AsyncTask<Void, Void, MediaMetadata> {
         private MediaItem mItem;
         private WeakReference<Context> mRefContext;
 
diff --git a/mediarouter/mediarouter/api/1.2.0-alpha01.txt b/mediarouter/mediarouter/api/1.2.0-alpha01.txt
index e3fc82d..1669cce 100644
--- a/mediarouter/mediarouter/api/1.2.0-alpha01.txt
+++ b/mediarouter/mediarouter/api/1.2.0-alpha01.txt
@@ -378,8 +378,9 @@
     method public void onRouteChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRoutePresentationDisplayChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteRemoved(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method @Deprecated public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter, androidx.mediarouter.media.MediaRouter.RouteInfo, int);
+    method @Deprecated public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!, int);
     method public void onRouteVolumeChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
   }
diff --git a/mediarouter/mediarouter/api/api_lint.ignore b/mediarouter/mediarouter/api/api_lint.ignore
index 04d8d52..af8d6eb 100644
--- a/mediarouter/mediarouter/api/api_lint.ignore
+++ b/mediarouter/mediarouter/api/api_lint.ignore
@@ -327,8 +327,6 @@
     Missing nullability on parameter `intent` in method `onBind`
 MissingNullability: androidx.mediarouter.media.MediaRouteProviderService#onCreateMediaRouteProvider():
     Missing nullability on method `onCreateMediaRouteProvider` return
-MissingNullability: androidx.mediarouter.media.MediaRouteProviderService#onUnbind(android.content.Intent) parameter #0:
-    Missing nullability on parameter `intent` in method `onUnbind`
 MissingNullability: androidx.mediarouter.media.MediaRouteSelector#EMPTY:
     Missing nullability on field `EMPTY` in class `class androidx.mediarouter.media.MediaRouteSelector`
 MissingNullability: androidx.mediarouter.media.MediaRouteSelector#asBundle():
diff --git a/mediarouter/mediarouter/api/current.txt b/mediarouter/mediarouter/api/current.txt
index e3fc82d..0b3bb8f 100644
--- a/mediarouter/mediarouter/api/current.txt
+++ b/mediarouter/mediarouter/api/current.txt
@@ -341,6 +341,7 @@
     method public void addCallback(androidx.mediarouter.media.MediaRouteSelector, androidx.mediarouter.media.MediaRouter.Callback, int);
     method public void addProvider(androidx.mediarouter.media.MediaRouteProvider);
     method public void addRemoteControlClient(Object);
+    method public void enableTransfer();
     method public androidx.mediarouter.media.MediaRouter.RouteInfo! getBluetoothRoute();
     method public androidx.mediarouter.media.MediaRouter.RouteInfo getDefaultRoute();
     method public static androidx.mediarouter.media.MediaRouter! getInstance(android.content.Context);
@@ -378,8 +379,9 @@
     method public void onRouteChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRoutePresentationDisplayChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteRemoved(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method @Deprecated public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter, androidx.mediarouter.media.MediaRouter.RouteInfo, int);
+    method @Deprecated public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!, int);
     method public void onRouteVolumeChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
   }
diff --git a/mediarouter/mediarouter/api/public_plus_experimental_1.2.0-alpha01.txt b/mediarouter/mediarouter/api/public_plus_experimental_1.2.0-alpha01.txt
index e3fc82d..1669cce 100644
--- a/mediarouter/mediarouter/api/public_plus_experimental_1.2.0-alpha01.txt
+++ b/mediarouter/mediarouter/api/public_plus_experimental_1.2.0-alpha01.txt
@@ -378,8 +378,9 @@
     method public void onRouteChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRoutePresentationDisplayChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteRemoved(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method @Deprecated public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter, androidx.mediarouter.media.MediaRouter.RouteInfo, int);
+    method @Deprecated public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!, int);
     method public void onRouteVolumeChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
   }
diff --git a/mediarouter/mediarouter/api/public_plus_experimental_current.txt b/mediarouter/mediarouter/api/public_plus_experimental_current.txt
index e3fc82d..0b3bb8f 100644
--- a/mediarouter/mediarouter/api/public_plus_experimental_current.txt
+++ b/mediarouter/mediarouter/api/public_plus_experimental_current.txt
@@ -341,6 +341,7 @@
     method public void addCallback(androidx.mediarouter.media.MediaRouteSelector, androidx.mediarouter.media.MediaRouter.Callback, int);
     method public void addProvider(androidx.mediarouter.media.MediaRouteProvider);
     method public void addRemoteControlClient(Object);
+    method public void enableTransfer();
     method public androidx.mediarouter.media.MediaRouter.RouteInfo! getBluetoothRoute();
     method public androidx.mediarouter.media.MediaRouter.RouteInfo getDefaultRoute();
     method public static androidx.mediarouter.media.MediaRouter! getInstance(android.content.Context);
@@ -378,8 +379,9 @@
     method public void onRouteChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRoutePresentationDisplayChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteRemoved(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method @Deprecated public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter, androidx.mediarouter.media.MediaRouter.RouteInfo, int);
+    method @Deprecated public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!, int);
     method public void onRouteVolumeChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
   }
diff --git a/mediarouter/mediarouter/api/restricted_1.2.0-alpha01.txt b/mediarouter/mediarouter/api/restricted_1.2.0-alpha01.txt
index e3fc82d..1669cce 100644
--- a/mediarouter/mediarouter/api/restricted_1.2.0-alpha01.txt
+++ b/mediarouter/mediarouter/api/restricted_1.2.0-alpha01.txt
@@ -378,8 +378,9 @@
     method public void onRouteChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRoutePresentationDisplayChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteRemoved(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method @Deprecated public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter, androidx.mediarouter.media.MediaRouter.RouteInfo, int);
+    method @Deprecated public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!, int);
     method public void onRouteVolumeChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
   }
diff --git a/mediarouter/mediarouter/api/restricted_current.txt b/mediarouter/mediarouter/api/restricted_current.txt
index e3fc82d..0b3bb8f 100644
--- a/mediarouter/mediarouter/api/restricted_current.txt
+++ b/mediarouter/mediarouter/api/restricted_current.txt
@@ -341,6 +341,7 @@
     method public void addCallback(androidx.mediarouter.media.MediaRouteSelector, androidx.mediarouter.media.MediaRouter.Callback, int);
     method public void addProvider(androidx.mediarouter.media.MediaRouteProvider);
     method public void addRemoteControlClient(Object);
+    method public void enableTransfer();
     method public androidx.mediarouter.media.MediaRouter.RouteInfo! getBluetoothRoute();
     method public androidx.mediarouter.media.MediaRouter.RouteInfo getDefaultRoute();
     method public static androidx.mediarouter.media.MediaRouter! getInstance(android.content.Context);
@@ -378,8 +379,9 @@
     method public void onRouteChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRoutePresentationDisplayChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteRemoved(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
-    method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method @Deprecated public void onRouteSelected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
+    method public void onRouteSelected(androidx.mediarouter.media.MediaRouter, androidx.mediarouter.media.MediaRouter.RouteInfo, int);
+    method @Deprecated public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
     method public void onRouteUnselected(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!, int);
     method public void onRouteVolumeChanged(androidx.mediarouter.media.MediaRouter!, androidx.mediarouter.media.MediaRouter.RouteInfo!);
   }
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteButton.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteButton.java
index 99c39dc..195b7bc 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteButton.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteButton.java
@@ -28,7 +28,6 @@
 import android.graphics.drawable.AnimationDrawable;
 import android.graphics.drawable.Drawable;
 import android.net.ConnectivityManager;
-import android.os.AsyncTask;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -198,7 +197,7 @@
                 } else {
                     mRemoteIndicatorLoader = new RemoteIndicatorLoader(remoteIndicatorStaticResId,
                             getContext());
-                    mRemoteIndicatorLoader.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
+                    mRemoteIndicatorLoader.executeOnExecutor(android.os.AsyncTask.SERIAL_EXECUTOR);
                 }
             } else {
                 loadRemoteIndicatorIfNeeded();
@@ -565,7 +564,7 @@
             mRemoteIndicatorLoader = new RemoteIndicatorLoader(mRemoteIndicatorResIdToLoad,
                     getContext());
             mRemoteIndicatorResIdToLoad = 0;
-            mRemoteIndicatorLoader.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
+            mRemoteIndicatorLoader.executeOnExecutor(android.os.AsyncTask.SERIAL_EXECUTOR);
         }
     }
 
@@ -725,7 +724,7 @@
         }
     }
 
-    private final class RemoteIndicatorLoader extends AsyncTask<Void, Void, Drawable> {
+    private final class RemoteIndicatorLoader extends android.os.AsyncTask<Void, Void, Drawable> {
         private final int mResId;
         private final Context mContext;
 
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteControllerDialog.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteControllerDialog.java
index 547546f..f9c1293b 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteControllerDialog.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteControllerDialog.java
@@ -30,7 +30,6 @@
 import android.graphics.Rect;
 import android.graphics.drawable.BitmapDrawable;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.SystemClock;
 import android.support.v4.media.MediaDescriptionCompat;
@@ -1336,7 +1335,7 @@
         }
     }
 
-    private class FetchArtTask extends AsyncTask<Void, Void, Bitmap> {
+    private class FetchArtTask extends android.os.AsyncTask<Void, Void, Bitmap> {
         // Show animation only when fetching takes a long time.
         private static final long SHOW_ANIM_TIME_THRESHOLD_MILLIS = 120L;
 
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDiscoveryFragment.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDiscoveryFragment.java
index 33c7317..642f3f2 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDiscoveryFragment.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDiscoveryFragment.java
@@ -18,6 +18,7 @@
 
 import android.os.Bundle;
 
+import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
 import androidx.mediarouter.media.MediaRouteSelector;
 import androidx.mediarouter.media.MediaRouter;
@@ -25,9 +26,13 @@
 /**
  * Media route discovery fragment.
  * <p>
- * This fragment takes care of registering a callback for media route discovery
- * during the {@link Fragment#onStart onStart()} phase
- * and removing it during the {@link Fragment#onStop onStop()} phase.
+ * This fragment takes care of registering a callback with proper flags for media route discovery:
+ * <ul>
+ *      <li>In {@link Fragment#onCreate} phase, the callback is registered with zero flags. </li>
+ *      <li>In {@link Fragment#onStart} phase, the callback's flags are set to the value
+ *          which is provided by {@link #onPrepareCallbackFlags()}.</li>
+ *      <li>In {@link Fragment#onStop()} phase, the callback's flags are set to zero. </li>
+ * </ul>
  * </p><p>
  * The application must supply a route selector to specify the kinds of routes
  * to discover.  The application may also override {@link #onCreateCallback} to
@@ -141,13 +146,21 @@
     }
 
     @Override
-    public void onStart() {
-        super.onStart();
-
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
         ensureRouteSelector();
         ensureRouter();
         mCallback = onCreateCallback();
         if (mCallback != null) {
+            mRouter.addCallback(mSelector, mCallback, 0);
+        }
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        if (mCallback != null) {
+            // TODO: Change here when setCallbackFlags() is added.
             mRouter.addCallback(mSelector, mCallback, onPrepareCallbackFlags());
         }
     }
@@ -155,10 +168,9 @@
     @Override
     public void onStop() {
         if (mCallback != null) {
-            mRouter.removeCallback(mCallback);
-            mCallback = null;
+            // TODO: Change here when setCallbackFlags() is added.
+            mRouter.addCallback(mSelector, mCallback, 0);
         }
-
         super.onStop();
     }
 }
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicControllerDialog.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicControllerDialog.java
index 2ae85ad..5214528 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicControllerDialog.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicControllerDialog.java
@@ -26,7 +26,6 @@
 import android.graphics.Color;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
@@ -664,13 +663,15 @@
         blurScript.setRadius(radius);
         blurScript.setInput(allocation);
         blurScript.forEach(blurAllocation);
-        blurAllocation.copyTo(bitmap);
+
+        Bitmap mutableBitmap = bitmap.copy(bitmap.getConfig(), true /* isMutable */);
+        blurAllocation.copyTo(mutableBitmap);
 
         allocation.destroy();
         blurAllocation.destroy();
         blurScript.destroy();
         rs.destroy();
-        return bitmap;
+        return mutableBitmap;
     }
 
     private abstract class MediaRouteVolumeSliderHolder extends RecyclerView.ViewHolder {
@@ -1314,8 +1315,7 @@
                 mItemView.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {
-                        mIsSelectingRoute = true;
-                        mRoute.select();
+                        mRouter.transferToRoute(mRoute);
                         mImageView.setVisibility(View.INVISIBLE);
                         mProgressBar.setVisibility(View.VISIBLE);
                     }
@@ -1424,7 +1424,7 @@
         }
     }
 
-    private class FetchArtTask extends AsyncTask<Void, Void, Bitmap> {
+    private class FetchArtTask extends android.os.AsyncTask<Void, Void, Bitmap> {
         private final Bitmap mIconBitmap;
         private final Uri mIconUri;
         private int mBackgroundColor;
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java
new file mode 100644
index 0000000..4b6bf03
--- /dev/null
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright 2020 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.mediarouter.media;
+
+import android.content.Context;
+import android.media.MediaRoute2Info;
+import android.media.MediaRouter2;
+import android.os.Handler;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.stream.Collectors;
+
+/**
+ * Provides routes and RouteController by using MediaRouter2.
+ * This provider is added only when {@link MediaRouter#enableTransfer()} is called.
+ */
+@RequiresApi(30)
+@SuppressWarnings({"unused", "ClassCanBeStatic"})
+class MediaRoute2Provider extends MediaRouteProvider {
+    private final MediaRouter2 mMediaRouter2Fwk;
+    private final MediaRouter2.RouteCallback mMr2RouteCallbackFwk;
+    private final Handler mHandler;
+    private final Executor mHandlerExecutor;
+
+    private List<MediaRoute2Info> mRoutes = new ArrayList<>();
+
+    private boolean mShouldRegisterCallbackFwk;
+
+    MediaRoute2Provider(@NonNull Context context, @NonNull MediaRouter2 mediaRouter2Fwk) {
+        super(context);
+        mMediaRouter2Fwk = mediaRouter2Fwk;
+        mMr2RouteCallbackFwk = new RouteCallback();
+        mHandler = new Handler();
+        mHandlerExecutor = mHandler::post;
+    }
+
+    @Override
+    public void onDiscoveryRequestChanged(@Nullable MediaRouteDiscoveryRequest request) {
+        updateMr2FwkCallbacks();
+    }
+
+    @Nullable
+    @Override
+    public RouteController onCreateRouteController(@NonNull String routeId) {
+        return new MediaRoute2Controller(routeId, null);
+    }
+
+    @Nullable
+    @Override
+    public RouteController onCreateRouteController(@NonNull String routeId,
+            @NonNull String routeGroupId) {
+        return new MediaRoute2Controller(routeId, routeGroupId);
+    }
+
+    @Nullable
+    @Override
+    public DynamicGroupRouteController onCreateDynamicGroupRouteController(
+            @NonNull String initialMemberRouteId) {
+        return new DynamicMediaRoute2Controller(initialMemberRouteId);
+    }
+
+    void setShouldRegisterCallbackFwk(boolean shouldRegisterCallbackFwk) {
+        mShouldRegisterCallbackFwk = shouldRegisterCallbackFwk;
+    }
+
+    // TODO: Also Handle TransferCallback here
+    private void updateMr2FwkCallbacks() {
+        if (mShouldRegisterCallbackFwk) {
+            mMediaRouter2Fwk.registerRouteCallback(mHandlerExecutor, mMr2RouteCallbackFwk,
+                    MediaRouter2Utils.toDiscoveryPreference(getDiscoveryRequest()));
+        } else {
+            mMediaRouter2Fwk.unregisterRouteCallback(mMr2RouteCallbackFwk);
+        }
+    }
+
+    protected void refreshRoutes() {
+        // Syetem routes should not be published by this provider.
+        List<MediaRoute2Info> newRoutes = mMediaRouter2Fwk.getRoutes().stream().distinct()
+                .filter(r -> !r.isSystemRoute())
+                .collect(Collectors.toList());
+
+        if (newRoutes.equals(mRoutes)) {
+            return;
+        }
+        mRoutes = newRoutes;
+
+        List<MediaRouteDescriptor> routeDescriptors = mRoutes.stream()
+                .map(MediaRouter2Utils::toMediaRouteDescriptor)
+                .collect(Collectors.toList());
+        MediaRouteProviderDescriptor descriptor = new MediaRouteProviderDescriptor.Builder()
+                .setSupportsDynamicGroupRoute(true)
+                .addRoutes(routeDescriptors)
+                .build();
+        setDescriptor(descriptor);
+    }
+
+    private class RouteCallback extends MediaRouter2.RouteCallback {
+        RouteCallback() {}
+
+        @Override
+        public void onRoutesAdded(@NonNull List<MediaRoute2Info> routes) {
+            refreshRoutes();
+        }
+
+        @Override
+        public void onRoutesRemoved(@NonNull List<MediaRoute2Info> routes) {
+            refreshRoutes();
+        }
+
+        @Override
+        public void onRoutesChanged(@NonNull List<MediaRoute2Info> routes) {
+            refreshRoutes();
+        }
+    }
+
+    // TODO: Implement this class by overriding every public method in RouteController.
+    private class MediaRoute2Controller extends RouteController {
+        final String mRouteId;
+        final String mRouteGroupId;
+
+        MediaRoute2Controller(@NonNull String routeId, @Nullable String routeGroupId) {
+            mRouteId = routeId;
+            mRouteGroupId = routeGroupId;
+        }
+    }
+
+    // TODO: Implement this class by overriding every public method in DynamicGroupRouteController.
+    private class DynamicMediaRoute2Controller extends DynamicGroupRouteController {
+        final String mInitialMemberRouteId;
+
+        DynamicMediaRoute2Controller(@NonNull String initialMemberRouteId) {
+            mInitialMemberRouteId = initialMemberRouteId;
+        }
+
+        @Override
+        public void onUpdateMemberRoutes(@Nullable List<String> routeIds) {}
+
+        @Override
+        public void onAddMemberRoute(@NonNull String routeId) {}
+
+        @Override
+        public void onRemoveMemberRoute(String routeId) {}
+    }
+}
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java
new file mode 100644
index 0000000..65a7632
--- /dev/null
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java
@@ -0,0 +1,605 @@
+/*
+ * Copyright 2020 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.mediarouter.media;
+
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_ROUTE_CONTROL_REQUEST;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_DATA_ERROR;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_CONTROL_REQUEST_FAILED;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.media.MediaRoute2ProviderService;
+import android.media.RouteDiscoveryPreference;
+import android.media.RoutingSessionInfo;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.DeadObjectException;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.RemoteException;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.SparseArray;
+
+import androidx.annotation.GuardedBy;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.collection.ArrayMap;
+import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController;
+import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor;
+import androidx.mediarouter.media.MediaRouteProvider.RouteController;
+import androidx.mediarouter.media.MediaRouteProviderService.MediaRouteProviderServiceImplApi30;
+import androidx.mediarouter.media.MediaRouteProviderService.MediaRouteProviderServiceImplApi30.ClientRecord;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+@RequiresApi(api = Build.VERSION_CODES.R)
+class MediaRoute2ProviderServiceAdapter extends MediaRoute2ProviderService {
+    private static final String TAG = "MR2ProviderService";
+    static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+    private final Object mLock = new Object();
+
+    final MediaRouteProviderServiceImplApi30 mServiceImpl;
+    @GuardedBy("mLock")
+    final Map<String, DynamicGroupRouteController> mControllers = new ArrayMap<>();
+    final SparseArray<String> mSessionIdMap = new SparseArray<>();
+    //TODO: Remove these when xMR is finished
+    final Map<String, Messenger> mMessengers = new ArrayMap<>();
+    private static final String KEY_MESSENGER_BINDER = "binder";
+
+    private volatile MediaRouteProviderDescriptor mProviderDescriptor;
+    // Use a large enough initial value so that it can't be the same as the controller ID in
+    // RegisteredMediaRouteProvider
+    private final AtomicInteger mNextControllerId = new AtomicInteger(0x20000000);
+
+    @SuppressLint("InlinedApi")
+    public static final String SERVICE_INTERFACE = MediaRoute2ProviderService.SERVICE_INTERFACE;
+
+    MediaRoute2ProviderServiceAdapter(MediaRouteProviderServiceImplApi30 serviceImpl) {
+        mServiceImpl = serviceImpl;
+    }
+
+    @Override
+    public void attachBaseContext(Context context) {
+        super.attachBaseContext(context);
+    }
+
+    @Override
+    public void onSetRouteVolume(long requestId, @NonNull String routeId, int volume) {
+        RouteController controller = mServiceImpl.getControllerForRouteId(routeId);
+
+        if (controller == null) {
+            Log.w(TAG, "onSetRouteVolume: Couldn't find a controller for routeId=" + routeId);
+            notifyRequestFailed(requestId, REASON_ROUTE_NOT_AVAILABLE);
+            return;
+        }
+        controller.onSetVolume(volume);
+    }
+
+    @Override
+    public void onSetSessionVolume(long requestId, @NonNull String sessionId, int volume) {
+        RoutingSessionInfo sessionInfo = getSessionInfo(sessionId);
+        if (sessionInfo == null) {
+            Log.w(TAG, "onSetSessionVolume: Couldn't find a session");
+            notifyRequestFailed(requestId, REASON_INVALID_COMMAND);
+            return;
+        }
+
+        DynamicGroupRouteController controller = getController(sessionId);
+        if (controller == null) {
+            Log.w(TAG, "onSetSessionVolume: Couldn't find a controller");
+            notifyRequestFailed(requestId, REASON_ROUTE_NOT_AVAILABLE);
+            return;
+        }
+        controller.onSetVolume(volume);
+    }
+
+    @Override
+    public void onCreateSession(long requestId, @NonNull String packageName,
+            @NonNull String routeId, @Nullable Bundle sessionHints) {
+        MediaRouteProvider provider = getMediaRouteProvider();
+        MediaRouteDescriptor selectedRoute = getRouteDescriptor(routeId, "onCreateSession");
+        if (selectedRoute == null) {
+            notifyRequestFailed(requestId, REASON_ROUTE_NOT_AVAILABLE);
+            return;
+        }
+
+        DynamicGroupRouteController controller;
+        if (mProviderDescriptor.supportsDynamicGroupRoute()) {
+            controller = provider.onCreateDynamicGroupRouteController(routeId);
+            if (controller == null) {
+                Log.w(TAG, "onCreateSession: Couldn't create a dynamic controller");
+                notifyRequestFailed(requestId, REASON_REJECTED);
+                return;
+            }
+        } else {
+            RouteController routeController =
+                    provider.onCreateRouteController(routeId);
+            if (routeController == null) {
+                Log.w(TAG, "onCreateSession: Couldn't create a controller");
+                notifyRequestFailed(requestId, REASON_REJECTED);
+                return;
+            }
+            controller = new DynamicGroupRouteControllerProxy(routeController);
+        }
+
+        String sessionId = assignSessionId(controller);
+        controller.onSelect();
+
+        //TODO: Set the client package name of the selected route.
+
+        RoutingSessionInfo.Builder builder =
+                new RoutingSessionInfo.Builder(sessionId, packageName)
+                        .addSelectedRoute(routeId)
+                        .setName(selectedRoute.getName())
+                        .setVolumeHandling(selectedRoute.getVolumeHandling())
+                        .setVolume(selectedRoute.getVolume())
+                        .setVolumeMax(selectedRoute.getVolumeMax());
+
+        Messenger messenger = new Messenger(new IncomingHandler(this, sessionId));
+        mMessengers.put(sessionId, messenger);
+
+        Bundle controlHints = new Bundle();
+        controlHints.putBinder(KEY_MESSENGER_BINDER, messenger.getBinder());
+        builder.setControlHints(controlHints).build();
+
+        // Dynamic grouping info will be notified by the provider.
+        RoutingSessionInfo sessionInfo = builder.build();
+        notifySessionCreated(requestId, sessionInfo);
+
+        ClientRecord client = mServiceImpl.getClientForPackageName(packageName);
+        if (client == null) {
+            return;
+        }
+        int controllerId = mNextControllerId.getAndIncrement();
+        mSessionIdMap.put(controllerId, sessionId);
+        client.sendDynamicRouteControllerCreatedWithoutRequest(mProviderDescriptor,
+                controller, controllerId, routeId);
+
+        // Create route controllers for member route
+        if (selectedRoute.getGroupMemberIds().isEmpty()) {
+            client.saveRouteController(routeId, controller, mNextControllerId.getAndIncrement());
+        } else {
+            for (String memberId : selectedRoute.getGroupMemberIds()) {
+                client.createRouteController(memberId, sessionId,
+                        mNextControllerId.getAndIncrement());
+            }
+        }
+    }
+
+    @Override
+    public void onReleaseSession(long requestId, @NonNull String sessionId) {
+        RoutingSessionInfo sessionInfo = getSessionInfo(sessionId);
+        if (sessionInfo == null) {
+            return;
+        }
+        DynamicGroupRouteController controller;
+        synchronized (mLock) {
+            controller = mControllers.remove(sessionId);
+            mMessengers.remove(sessionId);
+        }
+        if (controller == null) {
+            Log.w(TAG, "onReleaseSession: Couldn't find a controller");
+            notifyRequestFailed(requestId, REASON_INVALID_COMMAND);
+            return;
+        }
+        controller.onUnselect();
+        controller.onRelease();
+        notifySessionReleased(sessionId);
+    }
+
+    @Override
+    public void onSelectRoute(long requestId, @NonNull String sessionId,
+            @NonNull String routeId) {
+        RoutingSessionInfo sessionInfo = getSessionInfo(sessionId);
+        if (sessionInfo == null) {
+            Log.w(TAG, "onSelectRoute: Couldn't find a session");
+            notifyRequestFailed(requestId, REASON_INVALID_COMMAND);
+            return;
+        }
+        if (getRouteDescriptor(routeId, "onSelectRoute") == null) {
+            notifyRequestFailed(requestId, REASON_ROUTE_NOT_AVAILABLE);
+            return;
+        }
+
+        DynamicGroupRouteController controller = getController(sessionId);
+        if (controller == null) {
+            Log.w(TAG, "onSelectRoute: Couldn't find a controller");
+            notifyRequestFailed(requestId, REASON_ROUTE_NOT_AVAILABLE);
+            return;
+        }
+        controller.onAddMemberRoute(routeId);
+    }
+
+    @Override
+    public void onDeselectRoute(long requestId, @NonNull String sessionId,
+            @NonNull String routeId) {
+        RoutingSessionInfo sessionInfo = getSessionInfo(sessionId);
+        if (sessionInfo == null) {
+            Log.w(TAG, "onDeselectRoute: Couldn't find a session");
+            notifyRequestFailed(requestId, REASON_INVALID_COMMAND);
+            return;
+        }
+        if (getRouteDescriptor(routeId, "onDeselectRoute") == null) {
+            notifyRequestFailed(requestId, REASON_ROUTE_NOT_AVAILABLE);
+            return;
+        }
+
+        DynamicGroupRouteController controller = getController(sessionId);
+        if (controller == null) {
+            Log.w(TAG, "onDeselectRoute: Couldn't find a controller");
+            notifyRequestFailed(requestId, REASON_ROUTE_NOT_AVAILABLE);
+            return;
+        }
+        controller.onRemoveMemberRoute(routeId);
+    }
+
+    @Override
+    public void onTransferToRoute(long requestId, @NonNull String sessionId,
+            @NonNull String routeId) {
+        RoutingSessionInfo sessionInfo = getSessionInfo(sessionId);
+        if (sessionInfo == null) {
+            Log.w(TAG, "onTransferToRoute: Couldn't find a session");
+            notifyRequestFailed(requestId, REASON_INVALID_COMMAND);
+            return;
+        }
+        if (getRouteDescriptor(routeId, "onTransferToRoute") == null) {
+            notifyRequestFailed(requestId, REASON_ROUTE_NOT_AVAILABLE);
+            return;
+        }
+
+        DynamicGroupRouteController controller = getController(sessionId);
+        if (controller == null) {
+            Log.w(TAG, "onTransferToRoute: Couldn't find a controller");
+            notifyRequestFailed(requestId, REASON_ROUTE_NOT_AVAILABLE);
+            return;
+        }
+        controller.onUpdateMemberRoutes(Collections.singletonList(routeId));
+    }
+
+    @Override
+    public void onDiscoveryPreferenceChanged(@NonNull RouteDiscoveryPreference preference) {
+        MediaRouteSelector selector = new MediaRouteSelector.Builder()
+                .addControlCategories(preference.getPreferredFeatures().stream()
+                        .map(MediaRouter2Utils::toControlCategory)
+                        .collect(Collectors.toList())).build();
+        mServiceImpl.setBaseDiscoveryRequest(new MediaRouteDiscoveryRequest(selector,
+                preference.shouldPerformActiveScan()));
+    }
+
+    public void setProviderDescriptor(@Nullable MediaRouteProviderDescriptor descriptor) {
+        mProviderDescriptor = descriptor;
+        List<MediaRouteDescriptor> routeDescriptors =
+                (descriptor == null) ? Collections.emptyList() : descriptor.getRoutes();
+        // Handle duplicated IDs
+        notifyRoutes(routeDescriptors.stream().map(MediaRouter2Utils::toFwkMediaRoute2Info)
+                .collect(Collectors.toMap(r -> r.getId(), r -> r, (a, b) -> b)).values());
+    }
+
+    private DynamicGroupRouteController getController(String sessionId) {
+        synchronized (mLock) {
+            return mControllers.get(sessionId);
+        }
+    }
+
+    private MediaRouteDescriptor getRouteDescriptor(String routeId, String description) {
+        MediaRouteProvider provider = getMediaRouteProvider();
+        if (provider == null || mProviderDescriptor == null) {
+            Log.w(TAG, description + ": no provider info");
+            return null;
+        }
+
+        List<MediaRouteDescriptor> routes = mProviderDescriptor.getRoutes();
+        for (MediaRouteDescriptor route : routes) {
+            if (TextUtils.equals(route.getId(), routeId)) {
+                return route;
+            }
+        }
+        Log.w(TAG, description + ": Couldn't find a route : " + routeId);
+        return null;
+    }
+
+    public void setDynamicRouteDescriptor(DynamicGroupRouteController controller,
+            Collection<DynamicRouteDescriptor> descriptors) {
+        String sessionId = null;
+        synchronized (mLock) {
+            for (Map.Entry<String, DynamicGroupRouteController> entry : mControllers.entrySet()) {
+                if (entry.getValue() == controller) {
+                    sessionId = entry.getKey();
+                    break;
+                }
+            }
+        }
+        if (sessionId == null) {
+            Log.w(TAG, "setDynamicRouteDescriptor: Couldn't find a routing session");
+            return;
+        }
+        RoutingSessionInfo sessionInfo = getSessionInfo(sessionId);
+        if (sessionInfo == null) {
+            Log.w(TAG, "setDynamicRouteDescriptor: Couldn't find a routing session");
+            return;
+        }
+
+        RoutingSessionInfo.Builder builder = new RoutingSessionInfo.Builder(sessionInfo)
+                .clearSelectedRoutes()
+                .clearSelectableRoutes()
+                .clearDeselectableRoutes()
+                .clearTransferableRoutes();
+
+        boolean hasSelectedRoute = false;
+
+        for (DynamicRouteDescriptor descriptor : descriptors) {
+            String routeId = descriptor.getRouteDescriptor().getId();
+            if (descriptor.mSelectionState == DynamicRouteDescriptor.SELECTING
+                    || descriptor.mSelectionState == DynamicRouteDescriptor.SELECTED) {
+                builder.addSelectedRoute(routeId);
+                hasSelectedRoute = true;
+            }
+            if (descriptor.isGroupable()) {
+                builder.addSelectableRoute(routeId);
+            }
+            if (descriptor.isUnselectable()) {
+                builder.addDeselectableRoute(routeId);
+            }
+            if (descriptor.isTransferable()) {
+                builder.addTransferableRoute(routeId);
+            }
+        }
+
+        // This can happen when a new dynamic route controller is just created.
+        if (!hasSelectedRoute) {
+            List<String> selectedRoutes = sessionInfo.getSelectedRoutes();
+            for (String routeId : selectedRoutes) {
+                builder.addSelectedRoute(routeId);
+            }
+        }
+        notifySessionUpdated(builder.build());
+    }
+
+    //TODO: Remove this
+    void onControlRequest(Messenger messenger, int requestId, String sessionId,
+            Intent intent) {
+        RoutingSessionInfo sessionInfo = getSessionInfo(sessionId);
+        if (sessionInfo == null) {
+            Log.w(TAG, "onCustomCommand: Couldn't find a session");
+            return;
+        }
+
+        DynamicGroupRouteController controller = getController(sessionId);
+        if (controller == null) {
+            Log.w(TAG, "onControlRequest: Couldn't find a controller");
+            notifyRequestFailed(requestId, REASON_ROUTE_NOT_AVAILABLE);
+            return;
+        }
+
+        MediaRouter.ControlRequestCallback callback = new MediaRouter.ControlRequestCallback() {
+            @Override
+            public void onResult(Bundle data) {
+                if (DEBUG) {
+                    Log.d(TAG, "Route control request succeeded"
+                            + ", sessionId=" + sessionId
+                            + ", intent=" + intent
+                            + ", data=" + data);
+                }
+
+                sendReply(messenger, SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED,
+                        requestId, 0, data, null);
+            }
+
+            @Override
+            public void onError(String error, Bundle data) {
+                if (DEBUG) {
+                    Log.d(TAG, "Route control request failed"
+                            + ", sessionId=" + sessionId
+                            + ", intent=" + intent
+                            + ", error=" + error + ", data=" + data);
+                }
+                if (error != null) {
+                    Bundle bundle = new Bundle();
+                    bundle.putString(SERVICE_DATA_ERROR, error);
+                    sendReply(messenger, SERVICE_MSG_CONTROL_REQUEST_FAILED,
+                            requestId, 0, data, bundle);
+                } else {
+                    sendReply(messenger, SERVICE_MSG_CONTROL_REQUEST_FAILED,
+                            requestId, 0, data, null);
+                }
+            }
+
+            void sendReply(Messenger messenger, int what,
+                    int requestId, int arg, Object obj, Bundle data) {
+                Message msg = Message.obtain();
+                msg.what = what;
+                msg.arg1 = requestId;
+                msg.arg2 = arg;
+                msg.obj = obj;
+                msg.setData(data);
+                try {
+                    messenger.send(msg);
+                } catch (DeadObjectException ex) {
+                    // The client died.
+                } catch (RemoteException ex) {
+                    Log.e(TAG, "Could not send message to the client.", ex);
+                }
+            }
+        };
+
+        controller.onControlRequest(intent, callback);
+    }
+
+    void addRouteController(RouteController routeController,
+            int controllerId, String packageName, String routeId) {
+        MediaRouteDescriptor descriptor = getRouteDescriptor(routeId, "addRouteController");
+        if (descriptor == null) {
+            return;
+        }
+
+        DynamicGroupRouteController controller;
+        if (routeController instanceof DynamicGroupRouteController) {
+            controller = (DynamicGroupRouteController) routeController;
+        } else {
+            controller = new DynamicGroupRouteControllerProxy(routeController);
+        }
+
+        String sessionId = assignSessionId(controller);
+        mSessionIdMap.put(controllerId, sessionId);
+
+        RoutingSessionInfo.Builder builder =
+                new RoutingSessionInfo.Builder(sessionId, packageName)
+                        .addSelectedRoute(routeId)
+                        .setName(descriptor.getName())
+                        .setVolumeHandling(descriptor.getVolumeHandling())
+                        .setVolume(descriptor.getVolume())
+                        .setVolumeMax(descriptor.getVolumeMax());
+
+        RoutingSessionInfo sessionInfo = builder.build();
+        notifySessionCreated(REQUEST_ID_NONE, sessionInfo);
+    }
+
+    void removeRouteController(int controllerId) {
+        String sessionId = mSessionIdMap.get(controllerId);
+        if (sessionId == null) {
+            return;
+        }
+        mSessionIdMap.remove(controllerId);
+
+        synchronized (mLock) {
+            mControllers.remove(sessionId);
+            notifySessionReleased(sessionId);
+        }
+    }
+
+    private MediaRouteProvider getMediaRouteProvider() {
+        MediaRouteProviderService service = mServiceImpl.getService();
+        if (service == null) {
+            return null;
+        }
+        return service.getMediaRouteProvider();
+    }
+
+    private String assignSessionId(DynamicGroupRouteController controller) {
+        String sessionId;
+        synchronized (mLock) {
+            do {
+                //TODO: Consider a better way to create a session ID.
+                sessionId = UUID.randomUUID().toString();
+            } while (mControllers.containsKey(sessionId));
+            mControllers.put(sessionId, controller);
+        }
+        return sessionId;
+    }
+
+    private static class DynamicGroupRouteControllerProxy
+            extends DynamicGroupRouteController {
+        private final RouteController mRouteController;
+
+        DynamicGroupRouteControllerProxy(RouteController routeController) {
+            mRouteController = routeController;
+        }
+
+        @Override
+        public void onRelease() {
+            mRouteController.onRelease();
+        }
+
+        @Override
+        public void onSelect() {
+            mRouteController.onSelect();
+        }
+
+        @Override
+        public void onUnselect() {
+            mRouteController.onUnselect();
+        }
+
+        @Override
+        public void onUnselect(int reason) {
+            mRouteController.onUnselect(reason);
+        }
+
+        @Override
+        public void onSetVolume(int volume) {
+            mRouteController.onSetVolume(volume);
+        }
+
+        @Override
+        public void onUpdateVolume(int delta) {
+            mRouteController.onUpdateVolume(delta);
+        }
+
+        @Override
+        public boolean onControlRequest(Intent intent,
+                MediaRouter.ControlRequestCallback callback) {
+            return mRouteController.onControlRequest(intent, callback);
+        }
+
+        @Override
+        public void onUpdateMemberRoutes(@Nullable List<String> routeIds) {
+            // Do nothing.
+        }
+
+        @Override
+        public void onAddMemberRoute(@NonNull String routeId) {
+            // Do nothing.
+        }
+
+        @Override
+        public void onRemoveMemberRoute(String routeId) {
+            // Do nothing.
+        }
+    }
+
+    //TODO: Remove this and use the existing messenger
+    static class IncomingHandler extends Handler {
+        private final MediaRoute2ProviderServiceAdapter mServiceAdapter;
+        private final String mSessionId;
+
+        IncomingHandler(MediaRoute2ProviderServiceAdapter serviceAdapter, String sessionId) {
+            super(Looper.myLooper());
+            mServiceAdapter = serviceAdapter;
+            mSessionId = sessionId;
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            final Messenger messenger = msg.replyTo;
+            final int what = msg.what;
+            final int requestId = msg.arg1;
+            final Object obj = msg.obj;
+
+            switch (what) {
+                case CLIENT_MSG_ROUTE_CONTROL_REQUEST:
+                    if (obj instanceof Intent) {
+                        mServiceAdapter.onControlRequest(messenger, requestId,
+                                mSessionId, (Intent) obj);
+                    }
+                    break;
+            }
+        }
+    }
+}
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteDescriptor.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteDescriptor.java
index 57c9db4..a874c89 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteDescriptor.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteDescriptor.java
@@ -17,6 +17,7 @@
 
 import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 
+import android.annotation.SuppressLint;
 import android.content.IntentFilter;
 import android.content.IntentSender;
 import android.net.Uri;
@@ -438,6 +439,20 @@
         }
 
         /**
+         * Clears the group member IDs of the route.
+         * @hide
+         */
+        @RestrictTo(LIBRARY)
+        public Builder clearGroupMemberIds() {
+            if (mGroupMemberIds == null) {
+                mGroupMemberIds = new ArrayList<>();
+            } else {
+                mGroupMemberIds.clear();
+            }
+            return this;
+        }
+
+        /**
          * Adds a group member id of the route.
          * <p>
          * A route descriptor that has one or more group member route ids
@@ -745,6 +760,7 @@
         /**
          * Builds the {@link MediaRouteDescriptor media route descriptor}.
          */
+        @SuppressLint("UnknownNullness")
         public MediaRouteDescriptor build() {
             if (mControlFilters != null) {
                 mBundle.putParcelableArrayList(KEY_CONTROL_FILTERS, mControlFilters);
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProvider.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProvider.java
index f201ba4..3cdc974 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProvider.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProvider.java
@@ -258,6 +258,13 @@
         }
     }
 
+    void deliverDynamicGroupRouteControllerCreatedWithoutRequest(
+            DynamicGroupRouteController controller, String routeId) {
+        if (mCallback != null) {
+            mCallback.onDynamicGroupRouteControllerCreatedWithoutRequest(this, controller, routeId);
+        }
+    }
+
     /**
      * Called by the media router to obtain a route controller for a particular route.
      * <p>
@@ -414,7 +421,7 @@
          *
          * @param reason The reason for unselecting the route.
          */
-        public void onUnselect(int reason) {
+        public void onUnselect(@MediaRouter.UnselectReason int reason) {
             onUnselect();
         }
 
@@ -642,6 +649,8 @@
              */
             public static final int SELECTED = 3;
 
+            //TODO: mMediaRouteDescriptor could have an old info. We should provide a way to
+            // update it or use only the route ID.
             final MediaRouteDescriptor mMediaRouteDescriptor;
             @SelectionState
             final int mSelectionState;
@@ -825,6 +834,21 @@
         public void onDescriptorChanged(@NonNull MediaRouteProvider provider,
                 @Nullable MediaRouteProviderDescriptor descriptor) {
         }
+
+        /**
+         * Called when a dynamic route controller is created without any request.
+         *
+         * @param provider The media route provider that created this controller, never null.
+         * @param controller the newly created controller
+         * @param routeId the non-unique ID of the route which is sent from the provider.
+         * @hide
+         */
+        @RestrictTo(LIBRARY)
+        public void onDynamicGroupRouteControllerCreatedWithoutRequest(
+                @NonNull MediaRouteProvider provider,
+                @NonNull DynamicGroupRouteController controller,
+                @NonNull String routeId) {
+        }
     }
 
     private final class ProviderHandler extends Handler {
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java
index 87389c8..ec1ff3a 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java
@@ -160,6 +160,10 @@
     public static final String CLIENT_DATA_UNSELECT_REASON = "unselectReason";
     public static final String CLIENT_DATA_MEMBER_ROUTE_IDS = "memberRouteIds";
     public static final String CLIENT_DATA_MEMBER_ROUTE_ID = "memberRouteId";
+    public static final String CLIENT_DATA_PROVIDER_DESCRIPTOR = "providerDescriptor";
+    public static final String CLIENT_DATA_CONTROLLER_INFO = "controllerInfo";
+    public static final String CLIENT_DATA_CONTROLLER_ID = "controllerId";
+
     public static final String DATA_KEY_GROUPABLE_SECION_TITLE = "groupableTitle";
     public static final String DATA_KEY_TRANSFERABLE_SECTION_TITLE = "transferableTitle";
     public static final String DATA_KEY_DYNAMIC_ROUTE_DESCRIPTORS = "dynamicRoutes";
@@ -223,7 +227,7 @@
     public static final int SERVICE_MSG_DYNAMIC_ROUTE_CREATED = 6;
 
     /** (service v2)
-     * Dynamic route controller created. Sends back related data.
+     * Dynamic route descriptors changed. (unsolicited event)
      * - arg1    : reserved (0)
      * - arg2    : controllerId
      * - obj    : bundle
@@ -231,6 +235,21 @@
      */
     public static final int SERVICE_MSG_DYNAMIC_ROUTE_DESCRIPTORS_CHANGED = 7;
 
+    /** (service v3)
+     * Dynamic route controller created without any request. (unsolicited event)
+     * - arg1   : reserved (0)
+     * - arg2   : service version
+     * - obj    : bundle
+     *       - CLIENT_DATA_PROVIDER_DESCRIPTOR: (bundle) provider descriptor bundle.
+     *       - CLIENT_DATA_CONTROLLER_INFO: (bundle) Information of the new controller which
+     *         includes following items:
+     *              - CLIENT_DATA_ROUTE_ID: (string) dynamic group route id
+     *              - CLIENT_DATA_CONTROLLER_ID: (int) the controller id
+     *              - DATA_KEY_GROUPABLE_SECION_TITLE: (string) groupable section title
+     *              - DATA_KEY_TRANSFERABLE_SECTION_TITLE: (string) transferable section title
+     */
+    public static final int SERVICE_MSG_DYNAMIC_ROUTE_CREATED_WITHOUT_REQUEST = 8;
+
     public static final String SERVICE_DATA_ERROR = "error";
 
     /*
@@ -254,9 +273,15 @@
     public static final int CLIENT_VERSION_3 = 3;
 
     /**
+     * The client version used from androidx 1.2.0.
+     * From this version, framework MediaRouter2 is used to support transfer.
+     */
+    public static final int CLIENT_VERSION_4 = 4;
+
+    /**
      * The current client version.
      */
-    public static final int CLIENT_VERSION_CURRENT = CLIENT_VERSION_3;
+    public static final int CLIENT_VERSION_CURRENT = CLIENT_VERSION_4;
 
     /*
      * Recognized server version numbers.  (Reserved for future use.)
@@ -272,10 +297,17 @@
      * The service version used from androidx 1.0.0.
      */
     public static final int SERVICE_VERSION_2 = 2;
+
+    /**
+     * The service version used from androidx 1.2.0.
+     * From this version, framework MediaRoute2ProviderService is used to support transfer.
+     */
+    public static final int SERVICE_VERSION_3 = 3;
+
     /**
      * The current service version.
      */
-    public static final int SERVICE_VERSION_CURRENT = SERVICE_VERSION_2;
+    public static final int SERVICE_VERSION_CURRENT = SERVICE_VERSION_3;
 
     static final int CLIENT_VERSION_START = CLIENT_VERSION_1;
 
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
index e2a7848..67c71bf1 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
@@ -16,55 +16,51 @@
 
 package androidx.mediarouter.media;
 
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_CONTROLLER_ID;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_CONTROLLER_INFO;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_MEMBER_ROUTE_ID;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_MEMBER_ROUTE_IDS;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_PROVIDER_DESCRIPTOR;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_ROUTE_ID;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_ROUTE_LIBRARY_GROUP;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_UNSELECT_REASON;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_VOLUME;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_ADD_MEMBER_ROUTE;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .CLIENT_MSG_CREATE_DYNAMIC_GROUP_ROUTE_CONTROLLER;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .CLIENT_MSG_CREATE_ROUTE_CONTROLLER;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_CREATE_DYNAMIC_GROUP_ROUTE_CONTROLLER;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_CREATE_ROUTE_CONTROLLER;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_REGISTER;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .CLIENT_MSG_RELEASE_ROUTE_CONTROLLER;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_RELEASE_ROUTE_CONTROLLER;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_REMOVE_MEMBER_ROUTE;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .CLIENT_MSG_ROUTE_CONTROL_REQUEST;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_ROUTE_CONTROL_REQUEST;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_SELECT_ROUTE;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .CLIENT_MSG_SET_DISCOVERY_REQUEST;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_SET_DISCOVERY_REQUEST;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_SET_ROUTE_VOLUME;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_UNREGISTER;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_UNSELECT_ROUTE;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_UPDATE_MEMBER_ROUTES;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_UPDATE_ROUTE_VOLUME;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_VERSION_1;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .DATA_KEY_DYNAMIC_ROUTE_DESCRIPTORS;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.DATA_KEY_DYNAMIC_ROUTE_DESCRIPTORS;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.DATA_KEY_GROUPABLE_SECION_TITLE;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .DATA_KEY_TRANSFERABLE_SECTION_TITLE;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.DATA_KEY_TRANSFERABLE_SECTION_TITLE;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_DATA_ERROR;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .SERVICE_MSG_CONTROL_REQUEST_FAILED;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_CONTROL_REQUEST_FAILED;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_DESCRIPTOR_CHANGED;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .SERVICE_MSG_DYNAMIC_ROUTE_CREATED;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .SERVICE_MSG_DYNAMIC_ROUTE_DESCRIPTORS_CHANGED;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_DYNAMIC_ROUTE_CREATED;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_DYNAMIC_ROUTE_CREATED_WITHOUT_REQUEST;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_DYNAMIC_ROUTE_DESCRIPTORS_CHANGED;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_GENERIC_FAILURE;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_GENERIC_SUCCESS;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_REGISTERED;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_VERSION_CURRENT;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.isValidRemoteMessenger;
 
+import android.annotation.SuppressLint;
 import android.app.Service;
+import android.content.Context;
 import android.content.Intent;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.DeadObjectException;
 import android.os.Handler;
@@ -73,19 +69,26 @@
 import android.os.Message;
 import android.os.Messenger;
 import android.os.RemoteException;
+import android.text.TextUtils;
+import android.util.ArrayMap;
 import android.util.Log;
 import android.util.SparseArray;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
 import androidx.annotation.VisibleForTesting;
 import androidx.core.content.ContextCompat;
+import androidx.core.os.BuildCompat;
 import androidx.core.util.ObjectsCompat;
 import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController;
+import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor;
+import androidx.mediarouter.media.MediaRouteProvider.RouteController;
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Base class for media route provider services.
@@ -117,14 +120,13 @@
     static final String TAG = "MediaRouteProviderSrv"; // max. 23 chars
     static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
-    private final ArrayList<ClientRecord> mClients = new ArrayList<ClientRecord>();
     private final ReceiveHandler mReceiveHandler;
-    private final Messenger mReceiveMessenger;
+    final Messenger mReceiveMessenger;
     final PrivateHandler mPrivateHandler;
-    private final ProviderCallback mProviderCallback;
+    private final MediaRouteProvider.Callback mProviderCallback;
 
     MediaRouteProvider mProvider;
-    private MediaRouteDiscoveryRequest mCompositeDiscoveryRequest;
+    final MediaRouteProviderServiceImpl mImpl;
 
     /**
      * The {@link Intent} that must be declared as handled by the service.
@@ -138,14 +140,57 @@
 
     static final int PRIVATE_MSG_CLIENT_DIED = 1;
 
+    //TODO: move implementations to the impl class (WIP).
+    interface MediaRouteProviderServiceImpl {
+        IBinder onBind(Intent intent);
+        void attachBaseContext(Context context);
+        void onBinderDied(Messenger messenger);
+        boolean onRegisterClient(Messenger messenger, int requestId, int version,
+                String packageName);
+        boolean onUnregisterClient(Messenger messenger, int requestId);
+        boolean onCreateRouteController(Messenger messenger, int requestId,
+                int controllerId, String routeId, String routeGroupId);
+        boolean onCreateDynamicGroupRouteController(Messenger messenger, int requestId,
+                int controllerId, String initialMemberRouteId);
+        boolean onAddMemberRoute(Messenger messenger, int requestId, int controllerId,
+                String memberId);
+        boolean onRemoveMemberRoute(Messenger messenger, int requestId, int controllerId,
+                String memberId);
+        boolean onUpdateMemberRoutes(Messenger messenger, int requestId, int controllerId,
+                List<String> memberIds);
+        boolean onReleaseRouteController(Messenger messenger, int requestId,
+                int controllerId);
+        boolean onSelectRoute(Messenger messenger, int requestId,
+                int controllerId);
+        boolean onUnselectRoute(Messenger messenger, int requestId,
+                int controllerId, int reason);
+        boolean onSetRouteVolume(Messenger messenger, int requestId,
+                int controllerId, int volume);
+        boolean onUpdateRouteVolume(Messenger messenger, int requestId,
+                int controllerId, int delta);
+        boolean onRouteControlRequest(Messenger messenger, int requestId,
+                int controllerId, Intent intent);
+        boolean onSetDiscoveryRequest(Messenger messenger, int requestId,
+                MediaRouteDiscoveryRequest request);
+        MediaRouteProvider.Callback getProviderCallback();
+    }
+
     /**
      * Creates a media route provider service.
      */
+    //TODO: Remove SuppressLint when R version is finalized.
+    @SuppressLint("NewApi")
     public MediaRouteProviderService() {
         mReceiveHandler = new ReceiveHandler(this);
         mReceiveMessenger = new Messenger(mReceiveHandler);
         mPrivateHandler = new PrivateHandler();
-        mProviderCallback = new ProviderCallback();
+
+        if (BuildCompat.isAtLeastR()) {
+            mImpl = new MediaRouteProviderServiceImplApi30(this);
+        } else {
+            mImpl = new MediaRouteProviderServiceImplBase(this);
+        }
+        mProviderCallback = mImpl.getProviderCallback();
     }
 
     /**
@@ -156,6 +201,17 @@
      */
     public abstract MediaRouteProvider onCreateMediaRouteProvider();
 
+    @Override
+    public IBinder onBind(Intent intent) {
+        return mImpl.onBind(intent);
+    }
+
+    @Override
+    protected void attachBaseContext(@NonNull Context context) {
+        super.attachBaseContext(context);
+        mImpl.attachBaseContext(context);
+    }
+
     /**
      * Gets the media route provider offered by this service.
      *
@@ -168,358 +224,31 @@
         return mProvider;
     }
 
-    @Override
-    public IBinder onBind(Intent intent) {
-        if (intent.getAction().equals(SERVICE_INTERFACE)) {
-            if (mProvider == null) {
-                MediaRouteProvider provider = onCreateMediaRouteProvider();
-                if (provider != null) {
-                    String providerPackage = provider.getMetadata().getPackageName();
-                    if (!providerPackage.equals(getPackageName())) {
-                        throw new IllegalStateException("onCreateMediaRouteProvider() returned "
-                                + "a provider whose package name does not match the package "
-                                + "name of the service.  A media route provider service can "
-                                + "only export its own media route providers.  "
-                                + "Provider package name: " + providerPackage
-                                + ".  Service package name: " + getPackageName() + ".");
-                    }
-                    mProvider = provider;
-                    mProvider.setCallback(mProviderCallback);
+    void ensureProvider() {
+        if (mProvider == null) {
+            MediaRouteProvider provider = onCreateMediaRouteProvider();
+            if (provider != null) {
+                String providerPackage = provider.getMetadata().getPackageName();
+                if (!providerPackage.equals(getPackageName())) {
+                    throw new IllegalStateException("onCreateMediaRouteProvider() returned "
+                            + "a provider whose package name does not match the package "
+                            + "name of the service.  A media route provider service can "
+                            + "only export its own media route providers.  "
+                            + "Provider package name: " + providerPackage
+                            + ".  Service package name: " + getPackageName() + ".");
                 }
-            }
-            if (mProvider != null) {
-                return mReceiveMessenger.getBinder();
+                mProvider = provider;
+                mProvider.setCallback(mProviderCallback);
             }
         }
-        return null;
     }
 
     @Override
-    public boolean onUnbind(Intent intent) {
+    public void onDestroy() {
         if (mProvider != null) {
             mProvider.setCallback(null);
         }
-        return super.onUnbind(intent);
-    }
-
-    boolean onRegisterClient(Messenger messenger, int requestId, int version) {
-        if (version >= CLIENT_VERSION_1) {
-            int index = findClient(messenger);
-            if (index < 0) {
-                ClientRecord client = new ClientRecord(messenger, version);
-                if (client.register()) {
-                    mClients.add(client);
-                    if (DEBUG) {
-                        Log.d(TAG, client + ": Registered, version=" + version);
-                    }
-                    if (requestId != 0) {
-                        MediaRouteProviderDescriptor descriptor = mProvider.getDescriptor();
-                        sendReply(messenger, SERVICE_MSG_REGISTERED,
-                                requestId, SERVICE_VERSION_CURRENT,
-                                createDescriptorBundleForClientVersion(descriptor,
-                                        client.mVersion), null);
-                    }
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    boolean onUnregisterClient(Messenger messenger, int requestId) {
-        int index = findClient(messenger);
-        if (index >= 0) {
-            ClientRecord client = mClients.remove(index);
-            if (DEBUG) {
-                Log.d(TAG, client + ": Unregistered");
-            }
-            client.dispose();
-            sendGenericSuccess(messenger, requestId);
-            return true;
-        }
-        return false;
-    }
-
-    void onBinderDied(Messenger messenger) {
-        int index = findClient(messenger);
-        if (index >= 0) {
-            ClientRecord client = mClients.remove(index);
-            if (DEBUG) {
-                Log.d(TAG, client + ": Binder died");
-            }
-            client.dispose();
-        }
-    }
-
-    boolean onCreateRouteController(Messenger messenger, int requestId,
-            int controllerId, String routeId, String routeGroupId) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            if (client.createRouteController(routeId, routeGroupId, controllerId)) {
-                if (DEBUG) {
-                    Log.d(TAG, client + ": Route controller created, controllerId=" + controllerId
-                            + ", routeId=" + routeId + ", routeGroupId=" + routeGroupId);
-                }
-                sendGenericSuccess(messenger, requestId);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    boolean onCreateDynamicGroupRouteController(Messenger messenger, int requestId,
-            int controllerId, String initialMemberRouteId) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            Bundle bundle = client.createDynamicGroupRouteController(
-                    initialMemberRouteId, controllerId);
-            if (bundle != null) {
-                if (DEBUG) {
-                    Log.d(TAG, client + ": Route controller created, controllerId=" + controllerId
-                            + ", initialMemberRouteId=" + initialMemberRouteId);
-                }
-                sendReply(messenger, SERVICE_MSG_DYNAMIC_ROUTE_CREATED,
-                        requestId, SERVICE_VERSION_CURRENT,
-                        bundle, null);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    boolean onAddMemberRoute(Messenger messenger, int requestId, int controllerId,
-            String memberId) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            MediaRouteProvider.RouteController controller = client.getRouteController(controllerId);
-            if (controller instanceof MediaRouteProvider.DynamicGroupRouteController) {
-                ((MediaRouteProvider.DynamicGroupRouteController) controller)
-                        .onAddMemberRoute(memberId);
-                if (DEBUG) {
-                    Log.d(TAG, client + ": Added a member route"
-                            + ", controllerId=" + controllerId + ", memberId=" + memberId);
-                }
-                sendGenericSuccess(messenger, requestId);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    boolean onRemoveMemberRoute(Messenger messenger, int requestId, int controllerId,
-                             String memberId) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            MediaRouteProvider.RouteController controller = client.getRouteController(controllerId);
-            if (controller instanceof MediaRouteProvider.DynamicGroupRouteController) {
-                ((MediaRouteProvider.DynamicGroupRouteController) controller)
-                        .onRemoveMemberRoute(memberId);
-                if (DEBUG) {
-                    Log.d(TAG, client + ": Removed a member route"
-                            + ", controllerId=" + controllerId + ", memberId=" + memberId);
-                }
-                sendGenericSuccess(messenger, requestId);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    boolean onUpdateMemberRoutes(Messenger messenger, int requestId, int controllerId,
-                                List<String> memberIds) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            MediaRouteProvider.RouteController controller = client.getRouteController(controllerId);
-            if (controller instanceof MediaRouteProvider.DynamicGroupRouteController) {
-                ((MediaRouteProvider.DynamicGroupRouteController) controller)
-                        .onUpdateMemberRoutes(memberIds);
-                if (DEBUG) {
-                    Log.d(TAG, client + ": Updated list of member routes"
-                            + ", controllerId=" + controllerId + ", memberIds=" + memberIds);
-                }
-                sendGenericSuccess(messenger, requestId);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    boolean onReleaseRouteController(Messenger messenger, int requestId,
-            int controllerId) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            if (client.releaseRouteController(controllerId)) {
-                if (DEBUG) {
-                    Log.d(TAG, client + ": Route controller released"
-                            + ", controllerId=" + controllerId);
-                }
-                sendGenericSuccess(messenger, requestId);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    boolean onSelectRoute(Messenger messenger, int requestId,
-            int controllerId) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            MediaRouteProvider.RouteController controller =
-                    client.getRouteController(controllerId);
-            if (controller != null) {
-                controller.onSelect();
-                if (DEBUG) {
-                    Log.d(TAG, client + ": Route selected"
-                            + ", controllerId=" + controllerId);
-                }
-                sendGenericSuccess(messenger, requestId);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    boolean onUnselectRoute(Messenger messenger, int requestId,
-            int controllerId, int reason) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            MediaRouteProvider.RouteController controller =
-                    client.getRouteController(controllerId);
-            if (controller != null) {
-                controller.onUnselect(reason);
-                if (DEBUG) {
-                    Log.d(TAG, client + ": Route unselected"
-                            + ", controllerId=" + controllerId);
-                }
-                sendGenericSuccess(messenger, requestId);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    boolean onSetRouteVolume(Messenger messenger, int requestId,
-            int controllerId, int volume) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            MediaRouteProvider.RouteController controller =
-                    client.getRouteController(controllerId);
-            if (controller != null) {
-                controller.onSetVolume(volume);
-                if (DEBUG) {
-                    Log.d(TAG, client + ": Route volume changed"
-                            + ", controllerId=" + controllerId + ", volume=" + volume);
-                }
-                sendGenericSuccess(messenger, requestId);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    boolean onUpdateRouteVolume(Messenger messenger, int requestId,
-            int controllerId, int delta) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            MediaRouteProvider.RouteController controller =
-                    client.getRouteController(controllerId);
-            if (controller != null) {
-                controller.onUpdateVolume(delta);
-                if (DEBUG) {
-                    Log.d(TAG, client + ": Route volume updated"
-                            + ", controllerId=" + controllerId + ", delta=" + delta);
-                }
-                sendGenericSuccess(messenger, requestId);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    boolean onRouteControlRequest(final Messenger messenger, final int requestId,
-            final int controllerId, final Intent intent) {
-        final ClientRecord client = getClient(messenger);
-        if (client != null) {
-            MediaRouteProvider.RouteController controller =
-                    client.getRouteController(controllerId);
-            if (controller != null) {
-                MediaRouter.ControlRequestCallback callback = null;
-                if (requestId != 0) {
-                    callback = new MediaRouter.ControlRequestCallback() {
-                        @Override
-                        public void onResult(Bundle data) {
-                            if (DEBUG) {
-                                Log.d(TAG, client + ": Route control request succeeded"
-                                        + ", controllerId=" + controllerId
-                                        + ", intent=" + intent
-                                        + ", data=" + data);
-                            }
-                            if (findClient(messenger) >= 0) {
-                                sendReply(messenger, SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED,
-                                        requestId, 0, data, null);
-                            }
-                        }
-
-                        @Override
-                        public void onError(String error, Bundle data) {
-                            if (DEBUG) {
-                                Log.d(TAG, client + ": Route control request failed"
-                                        + ", controllerId=" + controllerId
-                                        + ", intent=" + intent
-                                        + ", error=" + error + ", data=" + data);
-                            }
-                            if (findClient(messenger) >= 0) {
-                                if (error != null) {
-                                    Bundle bundle = new Bundle();
-                                    bundle.putString(SERVICE_DATA_ERROR, error);
-                                    sendReply(messenger, SERVICE_MSG_CONTROL_REQUEST_FAILED,
-                                            requestId, 0, data, bundle);
-                                } else {
-                                    sendReply(messenger, SERVICE_MSG_CONTROL_REQUEST_FAILED,
-                                            requestId, 0, data, null);
-                                }
-                            }
-                        }
-                    };
-                }
-                if (controller.onControlRequest(intent, callback)) {
-                    if (DEBUG) {
-                        Log.d(TAG, client + ": Route control request delivered"
-                                + ", controllerId=" + controllerId + ", intent=" + intent);
-                    }
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    boolean onSetDiscoveryRequest(Messenger messenger, int requestId,
-            MediaRouteDiscoveryRequest request) {
-        ClientRecord client = getClient(messenger);
-        if (client != null) {
-            boolean actuallyChanged = client.setDiscoveryRequest(request);
-            if (DEBUG) {
-                Log.d(TAG, client + ": Set discovery request, request=" + request
-                        + ", actuallyChanged=" + actuallyChanged
-                        + ", compositeDiscoveryRequest=" + mCompositeDiscoveryRequest);
-            }
-            sendGenericSuccess(messenger, requestId);
-            return true;
-        }
-        return false;
-    }
-
-    void sendDescriptorChanged(MediaRouteProviderDescriptor descriptor) {
-        final int count = mClients.size();
-        for (int i = 0; i < count; i++) {
-            ClientRecord client = mClients.get(i);
-            sendReply(client.mMessenger, SERVICE_MSG_DESCRIPTOR_CHANGED, 0, 0,
-                    createDescriptorBundleForClientVersion(descriptor, client.mVersion), null);
-            if (DEBUG) {
-                Log.d(TAG, client + ": Sent descriptor change event, descriptor=" + descriptor);
-            }
-        }
+        super.onDestroy();
     }
 
     @VisibleForTesting
@@ -540,52 +269,6 @@
         return builder.build().asBundle();
     }
 
-    boolean updateCompositeDiscoveryRequest() {
-        MediaRouteDiscoveryRequest composite = null;
-        MediaRouteSelector.Builder selectorBuilder = null;
-        boolean activeScan = false;
-        final int count = mClients.size();
-        for (int i = 0; i < count; i++) {
-            MediaRouteDiscoveryRequest request = mClients.get(i).mDiscoveryRequest;
-            if (request != null
-                    && (!request.getSelector().isEmpty() || request.isActiveScan())) {
-                activeScan |= request.isActiveScan();
-                if (composite == null) {
-                    composite = request;
-                } else {
-                    if (selectorBuilder == null) {
-                        selectorBuilder = new MediaRouteSelector.Builder(composite.getSelector());
-                    }
-                    selectorBuilder.addSelector(request.getSelector());
-                }
-            }
-        }
-        if (selectorBuilder != null) {
-            composite = new MediaRouteDiscoveryRequest(selectorBuilder.build(), activeScan);
-        }
-        if (!ObjectsCompat.equals(mCompositeDiscoveryRequest, composite)) {
-            mCompositeDiscoveryRequest = composite;
-            mProvider.setDiscoveryRequest(composite);
-            return true;
-        }
-        return false;
-    }
-
-    private ClientRecord getClient(Messenger messenger) {
-        int index = findClient(messenger);
-        return index >= 0 ? mClients.get(index) : null;
-    }
-
-    int findClient(Messenger messenger) {
-        final int count = mClients.size();
-        for (int i = 0; i < count; i++) {
-            ClientRecord client = mClients.get(i);
-            if (client.hasMessenger(messenger)) {
-                return i;
-            }
-        }
-        return -1;
-    }
 
     static void sendGenericFailure(Messenger messenger, int requestId) {
         if (requestId != 0) {
@@ -593,7 +276,7 @@
         }
     }
 
-    private static void sendGenericSuccess(Messenger messenger, int requestId) {
+    static void sendGenericSuccess(Messenger messenger, int requestId) {
         if (requestId != 0) {
             sendReply(messenger, SERVICE_MSG_GENERIC_SUCCESS, requestId, 0, null, null);
         }
@@ -628,164 +311,12 @@
         public void handleMessage(Message msg) {
             switch (msg.what) {
                 case PRIVATE_MSG_CLIENT_DIED:
-                    onBinderDied((Messenger)msg.obj);
+                    mImpl.onBinderDied((Messenger) msg.obj);
                     break;
             }
         }
     }
 
-    private final class ProviderCallback extends MediaRouteProvider.Callback {
-        ProviderCallback() {
-        }
-
-        @Override
-        public void onDescriptorChanged(@NonNull MediaRouteProvider provider,
-                MediaRouteProviderDescriptor descriptor) {
-            sendDescriptorChanged(descriptor);
-        }
-    }
-
-    private final class ClientRecord implements DeathRecipient {
-        public final Messenger mMessenger;
-        public final int mVersion;
-        public MediaRouteDiscoveryRequest mDiscoveryRequest;
-
-        private final SparseArray<MediaRouteProvider.RouteController> mControllers =
-                new SparseArray<MediaRouteProvider.RouteController>();
-
-        final DynamicGroupRouteController.OnDynamicRoutesChangedListener
-                mDynamicRoutesChangedListener =
-                new DynamicGroupRouteController.OnDynamicRoutesChangedListener() {
-                    @Override
-                    public void onRoutesChanged(
-                            @NonNull DynamicGroupRouteController controller,
-                            @NonNull Collection<DynamicGroupRouteController.DynamicRouteDescriptor>
-                                    routes) {
-                        sendDynamicRouteDescriptors(controller, routes);
-                    }
-                };
-
-        public ClientRecord(Messenger messenger, int version) {
-            mMessenger = messenger;
-            mVersion = version;
-        }
-
-        public boolean register() {
-            try {
-                mMessenger.getBinder().linkToDeath(this, 0);
-                return true;
-            } catch (RemoteException ex) {
-                binderDied();
-            }
-            return false;
-        }
-
-        public void dispose() {
-            int count = mControllers.size();
-            for (int i = 0; i < count; i++) {
-                mControllers.valueAt(i).onRelease();
-            }
-            mControllers.clear();
-
-            mMessenger.getBinder().unlinkToDeath(this, 0);
-
-            setDiscoveryRequest(null);
-        }
-
-        public boolean hasMessenger(Messenger other) {
-            return mMessenger.getBinder() == other.getBinder();
-        }
-
-        public boolean createRouteController(String routeId, String routeGroupId,
-                int controllerId) {
-            if (mControllers.indexOfKey(controllerId) < 0) {
-                MediaRouteProvider.RouteController controller = routeGroupId == null
-                        ? mProvider.onCreateRouteController(routeId)
-                        : mProvider.onCreateRouteController(routeId, routeGroupId);
-                if (controller != null) {
-                    mControllers.put(controllerId, controller);
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        public Bundle createDynamicGroupRouteController(
-                String initialMemberRouteId, int controllerId) {
-            if (mControllers.indexOfKey(controllerId) < 0) {
-                MediaRouteProvider.DynamicGroupRouteController controller =
-                        mProvider.onCreateDynamicGroupRouteController(initialMemberRouteId);
-                controller.setOnDynamicRoutesChangedListener(
-                        ContextCompat.getMainExecutor(getApplicationContext()),
-                        mDynamicRoutesChangedListener);
-                if (controller != null) {
-                    mControllers.put(controllerId, controller);
-                    Bundle bundle = new Bundle();
-                    bundle.putString(CLIENT_DATA_ROUTE_ID, initialMemberRouteId);
-                    bundle.putString(DATA_KEY_GROUPABLE_SECION_TITLE,
-                            controller.getGroupableSelectionTitle());
-                    bundle.putString(DATA_KEY_TRANSFERABLE_SECTION_TITLE,
-                            controller.getTransferableSectionTitle());
-                    return bundle;
-                }
-            }
-            return null;
-        }
-
-        public boolean releaseRouteController(int controllerId) {
-            MediaRouteProvider.RouteController controller = mControllers.get(controllerId);
-            if (controller != null) {
-                mControllers.remove(controllerId);
-                controller.onRelease();
-                return true;
-            }
-            return false;
-        }
-
-        public MediaRouteProvider.RouteController getRouteController(int controllerId) {
-            return mControllers.get(controllerId);
-        }
-
-        public boolean setDiscoveryRequest(MediaRouteDiscoveryRequest request) {
-            if (!ObjectsCompat.equals(mDiscoveryRequest, request)) {
-                mDiscoveryRequest = request;
-                return updateCompositeDiscoveryRequest();
-            }
-            return false;
-        }
-
-        // Runs on a binder thread.
-        @Override
-        public void binderDied() {
-            mPrivateHandler.obtainMessage(PRIVATE_MSG_CLIENT_DIED, mMessenger).sendToTarget();
-        }
-
-        @Override
-        public String toString() {
-            return getClientId(mMessenger);
-        }
-
-        void sendDynamicRouteDescriptors(
-                DynamicGroupRouteController controller,
-                Collection<DynamicGroupRouteController.DynamicRouteDescriptor> descriptors) {
-            int index = mControllers.indexOfValue(controller);
-            if (index < 0) {
-                Log.d(TAG, "Ignoring unknown dynamic group route controller: " + controller);
-                return;
-            }
-            int controllerId = mControllers.keyAt(index);
-
-            ArrayList<Bundle> dynamicRouteBundles = new ArrayList<Bundle>();
-            for (DynamicGroupRouteController.DynamicRouteDescriptor descriptor: descriptors) {
-                dynamicRouteBundles.add(descriptor.toBundle());
-            }
-            Bundle bundle = new Bundle();
-            bundle.putParcelableArrayList(DATA_KEY_DYNAMIC_ROUTE_DESCRIPTORS, dynamicRouteBundles);
-            sendReply(mMessenger, SERVICE_MSG_DYNAMIC_ROUTE_DESCRIPTORS_CHANGED,
-                    0, controllerId, bundle, null);
-        }
-    }
-
     /**
      * Handler that receives messages from clients.
      * <p>
@@ -813,7 +344,18 @@
                 final int arg = msg.arg2;
                 final Object obj = msg.obj;
                 final Bundle data = msg.peekData();
-                if (!processMessage(what, messenger, requestId, arg, obj, data)) {
+
+                String packageName = null;
+                if (what == CLIENT_MSG_REGISTER && Build.VERSION.SDK_INT
+                        >= Build.VERSION_CODES.LOLLIPOP) {
+                    String[] packages = mServiceRef.get().getPackageManager()
+                            .getPackagesForUid(msg.sendingUid);
+                    if (packages != null && packages.length > 0) {
+                        packageName = packages[0];
+                    }
+                }
+
+                if (!processMessage(what, messenger, requestId, arg, obj, data, packageName)) {
                     if (DEBUG) {
                         Log.d(TAG, getClientId(messenger) + ": Message failed, what=" + what
                                 + ", requestId=" + requestId + ", arg=" + arg
@@ -828,23 +370,24 @@
             }
         }
 
-        private boolean processMessage(int what,
-                Messenger messenger, int requestId, int arg, Object obj, Bundle data) {
+        private boolean processMessage(int what, Messenger messenger,
+                int requestId, int arg, Object obj, Bundle data, String packageName) {
             MediaRouteProviderService service = mServiceRef.get();
             if (service != null) {
                 switch (what) {
                     case CLIENT_MSG_REGISTER:
-                        return service.onRegisterClient(messenger, requestId, arg);
+                        return service.mImpl.onRegisterClient(messenger, requestId, arg,
+                                packageName);
 
                     case CLIENT_MSG_UNREGISTER:
-                        return service.onUnregisterClient(messenger, requestId);
+                        return service.mImpl.onUnregisterClient(messenger, requestId);
 
                     case CLIENT_MSG_CREATE_ROUTE_CONTROLLER: {
                         String routeId = data.getString(CLIENT_DATA_ROUTE_ID);
                         String routeGroupId =
                                 data.getString(CLIENT_DATA_ROUTE_LIBRARY_GROUP);
                         if (routeId != null) {
-                            return service.onCreateRouteController(
+                            return service.mImpl.onCreateRouteController(
                                     messenger, requestId, arg, routeId, routeGroupId);
                         }
                         break;
@@ -853,7 +396,7 @@
                     case CLIENT_MSG_CREATE_DYNAMIC_GROUP_ROUTE_CONTROLLER: {
                         String initialMemberId = data.getString(CLIENT_DATA_MEMBER_ROUTE_ID);
                         if (initialMemberId != null) {
-                            return service.onCreateDynamicGroupRouteController(
+                            return service.mImpl.onCreateDynamicGroupRouteController(
                                     messenger, requestId, arg, initialMemberId);
                         }
                         break;
@@ -862,7 +405,8 @@
                     case CLIENT_MSG_ADD_MEMBER_ROUTE: {
                         String memberId = data.getString(CLIENT_DATA_MEMBER_ROUTE_ID);
                         if (memberId != null) {
-                            return service.onAddMemberRoute(messenger, requestId, arg, memberId);
+                            return service.mImpl.onAddMemberRoute(messenger, requestId, arg,
+                                    memberId);
                         }
                         break;
                     }
@@ -870,7 +414,8 @@
                     case CLIENT_MSG_REMOVE_MEMBER_ROUTE: {
                         String memberId = data.getString(CLIENT_DATA_MEMBER_ROUTE_ID);
                         if (memberId != null) {
-                            return service.onRemoveMemberRoute(messenger, requestId, arg, memberId);
+                            return service.mImpl.onRemoveMemberRoute(messenger, requestId, arg,
+                                    memberId);
                         }
                         break;
                     }
@@ -879,29 +424,29 @@
                         ArrayList<String> memberIds =
                                 data.getStringArrayList(CLIENT_DATA_MEMBER_ROUTE_IDS);
                         if (memberIds != null) {
-                            return service.onUpdateMemberRoutes(
+                            return service.mImpl.onUpdateMemberRoutes(
                                     messenger, requestId, arg, memberIds);
                         }
                         break;
                     }
 
                     case CLIENT_MSG_RELEASE_ROUTE_CONTROLLER:
-                        return service.onReleaseRouteController(messenger, requestId, arg);
+                        return service.mImpl.onReleaseRouteController(messenger, requestId, arg);
 
                     case CLIENT_MSG_SELECT_ROUTE:
-                        return service.onSelectRoute(messenger, requestId, arg);
+                        return service.mImpl.onSelectRoute(messenger, requestId, arg);
 
                     case CLIENT_MSG_UNSELECT_ROUTE:
                         int reason = data == null ?
                                 MediaRouter.UNSELECT_REASON_UNKNOWN
                                 : data.getInt(CLIENT_DATA_UNSELECT_REASON,
                                         MediaRouter.UNSELECT_REASON_UNKNOWN);
-                        return service.onUnselectRoute(messenger, requestId, arg, reason);
+                        return service.mImpl.onUnselectRoute(messenger, requestId, arg, reason);
 
                     case CLIENT_MSG_SET_ROUTE_VOLUME: {
                         int volume = data.getInt(CLIENT_DATA_VOLUME, -1);
                         if (volume >= 0) {
-                            return service.onSetRouteVolume(
+                            return service.mImpl.onSetRouteVolume(
                                     messenger, requestId, arg, volume);
                         }
                         break;
@@ -910,7 +455,7 @@
                     case CLIENT_MSG_UPDATE_ROUTE_VOLUME: {
                         int delta = data.getInt(CLIENT_DATA_VOLUME, 0);
                         if (delta != 0) {
-                            return service.onUpdateRouteVolume(
+                            return service.mImpl.onUpdateRouteVolume(
                                     messenger, requestId, arg, delta);
                         }
                         break;
@@ -918,7 +463,7 @@
 
                     case CLIENT_MSG_ROUTE_CONTROL_REQUEST:
                         if (obj instanceof Intent) {
-                            return service.onRouteControlRequest(
+                            return service.mImpl.onRouteControlRequest(
                                     messenger, requestId, arg, (Intent)obj);
                         }
                         break;
@@ -927,7 +472,7 @@
                         if (obj == null || obj instanceof Bundle) {
                             MediaRouteDiscoveryRequest request =
                                     MediaRouteDiscoveryRequest.fromBundle((Bundle)obj);
-                            return service.onSetDiscoveryRequest(
+                            return service.mImpl.onSetDiscoveryRequest(
                                     messenger, requestId,
                                     request != null && request.isValid() ? request : null);
                         }
@@ -937,4 +482,763 @@
             return false;
         }
     }
+
+    static class MediaRouteProviderServiceImplBase implements MediaRouteProviderServiceImpl {
+        final MediaRouteProviderService mService;
+        final ArrayList<ClientRecord> mClients = new ArrayList<ClientRecord>();
+        MediaRouteDiscoveryRequest mCompositeDiscoveryRequest;
+        MediaRouteDiscoveryRequest mBaseDiscoveryRequest;
+
+        MediaRouteProviderServiceImplBase(MediaRouteProviderService service) {
+            mService = service;
+        }
+
+        public MediaRouteProviderService getService() {
+            return mService;
+        }
+
+        @Override
+        public IBinder onBind(Intent intent) {
+            if (intent.getAction().equals(SERVICE_INTERFACE)) {
+                mService.ensureProvider();
+                if (mService.getMediaRouteProvider() != null) {
+                    return mService.mReceiveMessenger.getBinder();
+                }
+            }
+            return null;
+        }
+
+        @Override
+        public void attachBaseContext(Context context) {}
+
+        @Override
+        public MediaRouteProvider.Callback getProviderCallback() {
+            return new ProviderCallbackBase();
+        }
+
+        @Override
+        public boolean onRegisterClient(Messenger messenger, int requestId, int version,
+                String packageName) {
+            if (version >= CLIENT_VERSION_1) {
+                int index = findClient(messenger);
+                if (index < 0) {
+                    ClientRecord client = createClientRecord(messenger, version, packageName);
+                    if (client.register()) {
+                        mClients.add(client);
+                        if (DEBUG) {
+                            Log.d(TAG, client + ": Registered, version=" + version);
+                        }
+                        if (requestId != 0) {
+                            MediaRouteProviderDescriptor descriptor =
+                                    mService.getMediaRouteProvider().getDescriptor();
+                            sendReply(messenger, SERVICE_MSG_REGISTERED,
+                                    requestId, SERVICE_VERSION_CURRENT,
+                                    createDescriptorBundleForClientVersion(descriptor,
+                                            client.mVersion), null);
+                        }
+                        return true;
+                    }
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onUnregisterClient(Messenger messenger, int requestId) {
+            int index = findClient(messenger);
+            if (index >= 0) {
+                ClientRecord client = mClients.remove(index);
+                if (DEBUG) {
+                    Log.d(TAG, client + ": Unregistered");
+                }
+                client.dispose();
+                sendGenericSuccess(messenger, requestId);
+                return true;
+            }
+            return false;
+        }
+
+        @Override
+        public void onBinderDied(Messenger messenger) {
+            int index = findClient(messenger);
+            if (index >= 0) {
+                ClientRecord client = mClients.remove(index);
+                if (DEBUG) {
+                    Log.d(TAG, client + ": Binder died");
+                }
+                client.dispose();
+            }
+        }
+
+        @Override
+        public boolean onCreateRouteController(Messenger messenger, int requestId,
+                int controllerId, String routeId, String routeGroupId) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                if (client.createRouteController(routeId, routeGroupId, controllerId)) {
+                    if (DEBUG) {
+                        Log.d(TAG, client + ": Route controller created, controllerId="
+                                + controllerId + ", routeId=" + routeId
+                                + ", routeGroupId=" + routeGroupId);
+                    }
+                    sendGenericSuccess(messenger, requestId);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onCreateDynamicGroupRouteController(Messenger messenger, int requestId,
+                int controllerId, String initialMemberRouteId) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                Bundle bundle = client.createDynamicGroupRouteController(
+                        initialMemberRouteId, controllerId);
+                if (bundle != null) {
+                    if (DEBUG) {
+                        Log.d(TAG, client + ": Route controller created, controllerId="
+                                + controllerId
+                                + ", initialMemberRouteId=" + initialMemberRouteId);
+                    }
+                    sendReply(messenger, SERVICE_MSG_DYNAMIC_ROUTE_CREATED,
+                            requestId, SERVICE_VERSION_CURRENT,
+                            bundle, null);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onAddMemberRoute(Messenger messenger, int requestId, int controllerId,
+                String memberId) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                RouteController controller =
+                        client.getRouteController(controllerId);
+                if (controller instanceof MediaRouteProvider.DynamicGroupRouteController) {
+                    ((MediaRouteProvider.DynamicGroupRouteController) controller)
+                            .onAddMemberRoute(memberId);
+                    if (DEBUG) {
+                        Log.d(TAG, client + ": Added a member route"
+                                + ", controllerId=" + controllerId + ", memberId=" + memberId);
+                    }
+                    sendGenericSuccess(messenger, requestId);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onRemoveMemberRoute(Messenger messenger, int requestId, int controllerId,
+                String memberId) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                RouteController controller =
+                        client.getRouteController(controllerId);
+                if (controller instanceof MediaRouteProvider.DynamicGroupRouteController) {
+                    ((MediaRouteProvider.DynamicGroupRouteController) controller)
+                            .onRemoveMemberRoute(memberId);
+                    if (DEBUG) {
+                        Log.d(TAG, client + ": Removed a member route"
+                                + ", controllerId=" + controllerId + ", memberId=" + memberId);
+                    }
+                    sendGenericSuccess(messenger, requestId);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onUpdateMemberRoutes(Messenger messenger, int requestId, int controllerId,
+                List<String> memberIds) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                RouteController controller =
+                        client.getRouteController(controllerId);
+                if (controller instanceof MediaRouteProvider.DynamicGroupRouteController) {
+                    ((MediaRouteProvider.DynamicGroupRouteController) controller)
+                            .onUpdateMemberRoutes(memberIds);
+                    if (DEBUG) {
+                        Log.d(TAG, client + ": Updated list of member routes"
+                                + ", controllerId=" + controllerId + ", memberIds=" + memberIds);
+                    }
+                    sendGenericSuccess(messenger, requestId);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onReleaseRouteController(Messenger messenger, int requestId,
+                int controllerId) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                if (client.releaseRouteController(controllerId)) {
+                    if (DEBUG) {
+                        Log.d(TAG, client + ": Route controller released"
+                                + ", controllerId=" + controllerId);
+                    }
+                    sendGenericSuccess(messenger, requestId);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onSelectRoute(Messenger messenger, int requestId,
+                int controllerId) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                RouteController controller =
+                        client.getRouteController(controllerId);
+                if (controller != null) {
+                    controller.onSelect();
+                    if (DEBUG) {
+                        Log.d(TAG, client + ": Route selected"
+                                + ", controllerId=" + controllerId);
+                    }
+                    sendGenericSuccess(messenger, requestId);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onUnselectRoute(Messenger messenger, int requestId,
+                int controllerId, int reason) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                RouteController controller =
+                        client.getRouteController(controllerId);
+                if (controller != null) {
+                    controller.onUnselect(reason);
+                    if (DEBUG) {
+                        Log.d(TAG, client + ": Route unselected"
+                                + ", controllerId=" + controllerId);
+                    }
+                    sendGenericSuccess(messenger, requestId);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onSetRouteVolume(Messenger messenger, int requestId,
+                int controllerId, int volume) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                RouteController controller =
+                        client.getRouteController(controllerId);
+                if (controller != null) {
+                    controller.onSetVolume(volume);
+                    if (DEBUG) {
+                        Log.d(TAG, client + ": Route volume changed"
+                                + ", controllerId=" + controllerId + ", volume=" + volume);
+                    }
+                    sendGenericSuccess(messenger, requestId);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onUpdateRouteVolume(Messenger messenger, int requestId,
+                int controllerId, int delta) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                RouteController controller =
+                        client.getRouteController(controllerId);
+                if (controller != null) {
+                    controller.onUpdateVolume(delta);
+                    if (DEBUG) {
+                        Log.d(TAG, client + ": Route volume updated"
+                                + ", controllerId=" + controllerId + ", delta=" + delta);
+                    }
+                    sendGenericSuccess(messenger, requestId);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onRouteControlRequest(final Messenger messenger, final int requestId,
+                final int controllerId, final Intent intent) {
+            final ClientRecord client = getClient(messenger);
+            if (client != null) {
+                RouteController controller =
+                        client.getRouteController(controllerId);
+                if (controller != null) {
+                    MediaRouter.ControlRequestCallback callback = null;
+                    if (requestId != 0) {
+                        callback = new MediaRouter.ControlRequestCallback() {
+                            @Override
+                            public void onResult(Bundle data) {
+                                if (DEBUG) {
+                                    Log.d(TAG, client + ": Route control request succeeded"
+                                            + ", controllerId=" + controllerId
+                                            + ", intent=" + intent
+                                            + ", data=" + data);
+                                }
+                                if (findClient(messenger) >= 0) {
+                                    sendReply(messenger, SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED,
+                                            requestId, 0, data, null);
+                                }
+                            }
+
+                            @Override
+                            public void onError(String error, Bundle data) {
+                                if (DEBUG) {
+                                    Log.d(TAG, client + ": Route control request failed"
+                                            + ", controllerId=" + controllerId
+                                            + ", intent=" + intent
+                                            + ", error=" + error + ", data=" + data);
+                                }
+                                if (findClient(messenger) >= 0) {
+                                    if (error != null) {
+                                        Bundle bundle = new Bundle();
+                                        bundle.putString(SERVICE_DATA_ERROR, error);
+                                        sendReply(messenger, SERVICE_MSG_CONTROL_REQUEST_FAILED,
+                                                requestId, 0, data, bundle);
+                                    } else {
+                                        sendReply(messenger, SERVICE_MSG_CONTROL_REQUEST_FAILED,
+                                                requestId, 0, data, null);
+                                    }
+                                }
+                            }
+                        };
+                    }
+                    if (controller.onControlRequest(intent, callback)) {
+                        if (DEBUG) {
+                            Log.d(TAG, client + ": Route control request delivered"
+                                    + ", controllerId=" + controllerId + ", intent=" + intent);
+                        }
+                        return true;
+                    }
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onSetDiscoveryRequest(Messenger messenger, int requestId,
+                MediaRouteDiscoveryRequest request) {
+            ClientRecord client = getClient(messenger);
+            if (client != null) {
+                boolean actuallyChanged = client.setDiscoveryRequest(request);
+                if (DEBUG) {
+                    Log.d(TAG, client + ": Set discovery request, request=" + request
+                            + ", actuallyChanged=" + actuallyChanged
+                            + ", compositeDiscoveryRequest=" + mCompositeDiscoveryRequest);
+                }
+                sendGenericSuccess(messenger, requestId);
+                return true;
+            }
+            return false;
+        }
+
+        void sendDescriptorChanged(MediaRouteProviderDescriptor descriptor) {
+            final int count = mClients.size();
+            for (int i = 0; i < count; i++) {
+                ClientRecord client = mClients.get(i);
+                sendReply(client.mMessenger, SERVICE_MSG_DESCRIPTOR_CHANGED, 0, 0,
+                        createDescriptorBundleForClientVersion(descriptor, client.mVersion), null);
+                if (DEBUG) {
+                    Log.d(TAG, client + ": Sent descriptor change event, descriptor=" + descriptor);
+                }
+            }
+        }
+
+        boolean setBaseDiscoveryRequest(MediaRouteDiscoveryRequest request) {
+            if (!ObjectsCompat.equals(mBaseDiscoveryRequest, request)) {
+                mBaseDiscoveryRequest = request;
+                return updateCompositeDiscoveryRequest();
+            }
+            return false;
+        }
+
+        boolean updateCompositeDiscoveryRequest() {
+            MediaRouteDiscoveryRequest composite = null;
+            MediaRouteSelector.Builder selectorBuilder = null;
+            boolean activeScan = false;
+
+            if (mBaseDiscoveryRequest != null) {
+                activeScan = mBaseDiscoveryRequest.isActiveScan();
+                selectorBuilder = new MediaRouteSelector.Builder(
+                        mBaseDiscoveryRequest.getSelector());
+            }
+
+            final int count = mClients.size();
+            for (int i = 0; i < count; i++) {
+                MediaRouteDiscoveryRequest request = mClients.get(i).mDiscoveryRequest;
+                if (request != null
+                        && (!request.getSelector().isEmpty() || request.isActiveScan())) {
+                    activeScan |= request.isActiveScan();
+                    if (composite == null) {
+                        composite = request;
+                    } else {
+                        if (selectorBuilder == null) {
+                            selectorBuilder = new MediaRouteSelector.Builder(
+                                    composite.getSelector());
+                        }
+                        selectorBuilder.addSelector(request.getSelector());
+                    }
+                }
+            }
+            if (selectorBuilder != null) {
+                composite = new MediaRouteDiscoveryRequest(selectorBuilder.build(), activeScan);
+            }
+            if (!ObjectsCompat.equals(mCompositeDiscoveryRequest, composite)) {
+                mCompositeDiscoveryRequest = composite;
+                mService.getMediaRouteProvider().setDiscoveryRequest(composite);
+                return true;
+            }
+            return false;
+        }
+
+        private ClientRecord getClient(Messenger messenger) {
+            int index = findClient(messenger);
+            return index >= 0 ? mClients.get(index) : null;
+        }
+
+        int findClient(Messenger messenger) {
+            final int count = mClients.size();
+            for (int i = 0; i < count; i++) {
+                ClientRecord client = mClients.get(i);
+                if (client.hasMessenger(messenger)) {
+                    return i;
+                }
+            }
+            return -1;
+        }
+
+        ClientRecord getClientForPackageName(String packageName) {
+            for (ClientRecord client : mClients) {
+                if (TextUtils.equals(client.mPackageName, packageName)) {
+                    return client;
+                }
+            }
+            return null;
+        }
+
+        //TODO: Reconsider "ClientRecord" structure
+        class ClientRecord implements DeathRecipient {
+            public final Messenger mMessenger;
+            public final int mVersion;
+            public final String mPackageName;
+            public MediaRouteDiscoveryRequest mDiscoveryRequest;
+
+            final SparseArray<RouteController> mControllers = new SparseArray<>();
+
+            final DynamicGroupRouteController.OnDynamicRoutesChangedListener
+                    mDynamicRoutesChangedListener =
+                    new DynamicGroupRouteController.OnDynamicRoutesChangedListener() {
+                        @Override
+                        public void onRoutesChanged(
+                                @NonNull DynamicGroupRouteController controller,
+                                @NonNull Collection<DynamicRouteDescriptor> routes) {
+                            sendDynamicRouteDescriptors(controller, routes);
+                        }
+                    };
+
+            ClientRecord(Messenger messenger, int version, String packageName) {
+                mMessenger = messenger;
+                mVersion = version;
+                mPackageName = packageName;
+            }
+
+            public boolean register() {
+                try {
+                    mMessenger.getBinder().linkToDeath(this, 0);
+                    return true;
+                } catch (RemoteException ex) {
+                    binderDied();
+                }
+                return false;
+            }
+
+            public void dispose() {
+                int count = mControllers.size();
+                for (int i = 0; i < count; i++) {
+                    mControllers.valueAt(i).onRelease();
+                }
+                mControllers.clear();
+
+                mMessenger.getBinder().unlinkToDeath(this, 0);
+
+                setDiscoveryRequest(null);
+            }
+
+            public boolean hasMessenger(Messenger other) {
+                return mMessenger.getBinder() == other.getBinder();
+            }
+
+            public boolean createRouteController(String routeId, String routeGroupId,
+                    int controllerId) {
+                if (mControllers.indexOfKey(controllerId) < 0) {
+                    RouteController controller = routeGroupId == null
+                            ? mService.getMediaRouteProvider().onCreateRouteController(routeId)
+                            : mService.getMediaRouteProvider()
+                                    .onCreateRouteController(routeId, routeGroupId);
+                    if (controller != null) {
+                        mControllers.put(controllerId, controller);
+                        return true;
+                    }
+                }
+                return false;
+            }
+
+            public Bundle createDynamicGroupRouteController(
+                    String initialMemberRouteId, int controllerId) {
+                if (mControllers.indexOfKey(controllerId) < 0) {
+                    MediaRouteProvider.DynamicGroupRouteController controller =
+                            mService.getMediaRouteProvider()
+                                    .onCreateDynamicGroupRouteController(initialMemberRouteId);
+                    if (controller != null) {
+                        controller.setOnDynamicRoutesChangedListener(
+                                ContextCompat.getMainExecutor(mService.getApplicationContext()),
+                                mDynamicRoutesChangedListener);
+                        mControllers.put(controllerId, controller);
+                        Bundle bundle = new Bundle();
+                        bundle.putString(CLIENT_DATA_ROUTE_ID, initialMemberRouteId);
+                        bundle.putString(DATA_KEY_GROUPABLE_SECION_TITLE,
+                                controller.getGroupableSelectionTitle());
+                        bundle.putString(DATA_KEY_TRANSFERABLE_SECTION_TITLE,
+                                controller.getTransferableSectionTitle());
+                        return bundle;
+                    }
+                }
+                return null;
+            }
+
+            public boolean releaseRouteController(int controllerId) {
+                RouteController controller = mControllers.get(controllerId);
+                if (controller != null) {
+                    mControllers.remove(controllerId);
+                    controller.onRelease();
+                    return true;
+                }
+                return false;
+            }
+
+            public RouteController getRouteController(int controllerId) {
+                return mControllers.get(controllerId);
+            }
+
+            public boolean setDiscoveryRequest(MediaRouteDiscoveryRequest request) {
+                if (!ObjectsCompat.equals(mDiscoveryRequest, request)) {
+                    mDiscoveryRequest = request;
+                    return updateCompositeDiscoveryRequest();
+                }
+                return false;
+            }
+
+            // Runs on a binder thread.
+            @Override
+            public void binderDied() {
+                mService.mPrivateHandler
+                        .obtainMessage(PRIVATE_MSG_CLIENT_DIED, mMessenger).sendToTarget();
+            }
+
+            @Override
+            public String toString() {
+                return getClientId(mMessenger);
+            }
+
+            void sendDynamicRouteDescriptors(
+                    DynamicGroupRouteController controller,
+                    Collection<DynamicRouteDescriptor> descriptors) {
+                int index = mControllers.indexOfValue(controller);
+                if (index < 0) {
+                    Log.w(TAG, "Ignoring unknown dynamic group route controller: " + controller);
+                    return;
+                }
+                int controllerId = mControllers.keyAt(index);
+
+                ArrayList<Bundle> dynamicRouteBundles = new ArrayList<Bundle>();
+                for (DynamicRouteDescriptor descriptor: descriptors) {
+                    dynamicRouteBundles.add(descriptor.toBundle());
+                }
+                Bundle bundle = new Bundle();
+                bundle.putParcelableArrayList(DATA_KEY_DYNAMIC_ROUTE_DESCRIPTORS,
+                        dynamicRouteBundles);
+                sendReply(mMessenger, SERVICE_MSG_DYNAMIC_ROUTE_DESCRIPTORS_CHANGED,
+                        0, controllerId, bundle, null);
+            }
+
+            void sendDynamicRouteControllerCreatedWithoutRequest(
+                    MediaRouteProviderDescriptor descriptor,
+                    DynamicGroupRouteController controller,
+                    int controllerId, String routeId) {
+
+                mControllers.put(controllerId, controller);
+                controller.setOnDynamicRoutesChangedListener(
+                        ContextCompat.getMainExecutor(mService.getApplicationContext()),
+                        mDynamicRoutesChangedListener);
+
+                Bundle bundle = new Bundle();
+                bundle.putBundle(CLIENT_DATA_PROVIDER_DESCRIPTOR,
+                        createDescriptorBundleForClientVersion(descriptor, mVersion));
+
+                Bundle controllerInfo = new Bundle();
+                controllerInfo.putString(CLIENT_DATA_ROUTE_ID, routeId);
+                controllerInfo.putString(DATA_KEY_GROUPABLE_SECION_TITLE,
+                        controller.getGroupableSelectionTitle());
+                controllerInfo.putString(DATA_KEY_TRANSFERABLE_SECTION_TITLE,
+                        controller.getTransferableSectionTitle());
+                controllerInfo.putInt(CLIENT_DATA_CONTROLLER_ID, controllerId);
+                bundle.putBundle(CLIENT_DATA_CONTROLLER_INFO, controllerInfo);
+
+                sendReply(mMessenger, SERVICE_MSG_DYNAMIC_ROUTE_CREATED_WITHOUT_REQUEST,
+                        0, 0, bundle, null);
+            }
+        }
+
+        ClientRecord createClientRecord(Messenger messenger, int version, String packageName) {
+            return new ClientRecord(messenger, version, packageName);
+        }
+
+        class ProviderCallbackBase extends MediaRouteProvider.Callback {
+            @Override
+            public void onDescriptorChanged(@NonNull MediaRouteProvider provider,
+                    MediaRouteProviderDescriptor descriptor) {
+                sendDescriptorChanged(descriptor);
+            }
+        }
+    }
+
+    //TODO: We may need to change version number
+    @RequiresApi(api = Build.VERSION_CODES.R)
+    static class MediaRouteProviderServiceImplApi30 extends MediaRouteProviderServiceImplBase {
+        MediaRoute2ProviderServiceAdapter mMR2ProviderServiceAdapter;
+        // Maps the route ID to route controller.
+        final Map<String, RouteController> mRouteIdToControllerMap = new ArrayMap<>();
+
+        MediaRouteProviderServiceImplApi30(MediaRouteProviderService instance) {
+            super(instance);
+        }
+
+        @Override
+        public IBinder onBind(Intent intent) {
+            mService.ensureProvider();
+            if (mMR2ProviderServiceAdapter == null) {
+                mMR2ProviderServiceAdapter = new MediaRoute2ProviderServiceAdapter(this);
+                if (mService.getBaseContext() != null) {
+                    mMR2ProviderServiceAdapter.attachBaseContext(mService);
+                }
+            }
+            IBinder binder = super.onBind(intent);
+            if (binder != null) {
+                return binder;
+            }
+            return mMR2ProviderServiceAdapter.onBind(intent);
+        }
+
+        @Override
+        public void attachBaseContext(Context context) {
+            if (mMR2ProviderServiceAdapter != null) {
+                mMR2ProviderServiceAdapter.attachBaseContext(context);
+            }
+        }
+
+        @Override
+        void sendDescriptorChanged(MediaRouteProviderDescriptor descriptor) {
+            super.sendDescriptorChanged(descriptor);
+            mMR2ProviderServiceAdapter.setProviderDescriptor(descriptor);
+        }
+
+        @Override
+        MediaRouteProviderServiceImplBase.ClientRecord createClientRecord(
+                Messenger messenger, int version, String packageName) {
+            return new ClientRecord(messenger, version, packageName);
+        }
+        @Override
+        ClientRecord getClientForPackageName(String packageName) {
+            return (ClientRecord) super.getClientForPackageName(packageName);
+        }
+
+        RouteController getControllerForRouteId(String routeId) {
+            return mRouteIdToControllerMap.get(routeId);
+        }
+
+        class ClientRecord extends MediaRouteProviderServiceImplBase.ClientRecord {
+            ClientRecord(Messenger messenger, int version, String packageName) {
+                super(messenger, version, packageName);
+            }
+
+            public boolean saveRouteController(String routeId, RouteController controller,
+                    int controllerId) {
+                mRouteIdToControllerMap.put(routeId, controller);
+
+                if (mControllers.indexOfKey(controllerId) < 0) {
+                    mControllers.put(controllerId, controller);
+                    return true;
+                }
+                return false;
+            }
+
+            @Override
+            public boolean createRouteController(String routeId, String routeGroupId,
+                    int controllerId) {
+                boolean result = super.createRouteController(routeId, routeGroupId,
+                        controllerId);
+                // Don't add route controllers of member routes.
+                if (routeGroupId == null && result && mPackageName != null) {
+                    mMR2ProviderServiceAdapter.addRouteController(mControllers.get(controllerId),
+                            controllerId, mPackageName, routeId);
+                }
+                if (result) {
+                    mRouteIdToControllerMap.put(routeId, mControllers.get(controllerId));
+                }
+                return result;
+            }
+
+            @Override
+            public Bundle createDynamicGroupRouteController(
+                    String initialMemberRouteId, int controllerId) {
+                Bundle result =
+                        super.createDynamicGroupRouteController(initialMemberRouteId, controllerId);
+                if (result != null && mPackageName != null) {
+                    mMR2ProviderServiceAdapter.addRouteController(mControllers.get(controllerId),
+                            controllerId, mPackageName, initialMemberRouteId);
+                }
+                return result;
+            }
+
+            @Override
+            public boolean releaseRouteController(int controllerId) {
+                mMR2ProviderServiceAdapter.removeRouteController(controllerId);
+                RouteController controller = mControllers.get(controllerId);
+                if (controller != null) {
+                    for (Map.Entry<String, RouteController> entry :
+                            mRouteIdToControllerMap.entrySet()) {
+                        if (entry.getValue() == controller) {
+                            mRouteIdToControllerMap.remove(entry.getKey());
+                            break;
+                        }
+                    }
+                }
+                return super.releaseRouteController(controllerId);
+            }
+
+            @Override
+            void sendDynamicRouteDescriptors(
+                    DynamicGroupRouteController controller,
+                    Collection<DynamicRouteDescriptor> descriptors) {
+                super.sendDynamicRouteDescriptors(controller, descriptors);
+                if (mMR2ProviderServiceAdapter != null) {
+                    mMR2ProviderServiceAdapter.setDynamicRouteDescriptor(controller, descriptors);
+                }
+            }
+        }
+    }
 }
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
index 6f6ad7f..c94dd40 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
@@ -28,6 +28,8 @@
 import android.content.IntentSender;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.res.Resources;
+import android.media.MediaRouter2;
+import android.media.RouteDiscoveryPreference;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
@@ -35,23 +37,25 @@
 import android.os.Message;
 import android.support.v4.media.session.MediaSessionCompat;
 import android.text.TextUtils;
+import android.util.ArraySet;
 import android.util.Log;
 import android.view.Display;
 
 import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
 import androidx.annotation.RestrictTo;
 import androidx.core.app.ActivityManagerCompat;
 import androidx.core.content.ContextCompat;
 import androidx.core.hardware.display.DisplayManagerCompat;
+import androidx.core.os.BuildCompat;
 import androidx.core.util.ObjectsCompat;
 import androidx.core.util.Pair;
 import androidx.media.VolumeProviderCompat;
 import androidx.mediarouter.app.MediaRouteDiscoveryFragment;
 import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController;
-import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController
-        .DynamicRouteDescriptor;
+import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor;
 import androidx.mediarouter.media.MediaRouteProvider.ProviderMetadata;
 import androidx.mediarouter.media.MediaRouteProvider.RouteController;
 
@@ -69,6 +73,8 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.Executor;
+import java.util.stream.Collectors;
 
 /**
  * MediaRouter allows applications to control the routing of media channels
@@ -88,19 +94,27 @@
  * done from the main thread of the process.
  * </p>
  */
+// TODO: Add the javadoc for manifest requirements about 'Package visibility' in Android 11
 public final class MediaRouter {
     static final String TAG = "MediaRouter";
     static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
+    @IntDef({UNSELECT_REASON_UNKNOWN, UNSELECT_REASON_DISCONNECTED, UNSELECT_REASON_STOPPED,
+            UNSELECT_REASON_ROUTE_CHANGED})
+    @Retention(RetentionPolicy.SOURCE)
+    @interface UnselectReason {}
+
     /**
-     * Passed to {@link androidx.mediarouter.media.MediaRouteProvider.RouteController#onUnselect(int)}
-     * and {@link Callback#onRouteUnselected(MediaRouter, RouteInfo, int)} when the reason the route
+     * Passed to {@link MediaRouteProvider.RouteController#onUnselect(int)},
+     * {@link Callback#onRouteUnselected(MediaRouter, RouteInfo, int)} and
+     * {@link Callback#onRouteSelected(MediaRouter, RouteInfo, int)} when the reason the route
      * was unselected is unknown.
      */
     public static final int UNSELECT_REASON_UNKNOWN = 0;
     /**
-     * Passed to {@link androidx.mediarouter.media.MediaRouteProvider.RouteController#onUnselect(int)}
-     * and {@link Callback#onRouteUnselected(MediaRouter, RouteInfo, int)} when the user pressed
+     * Passed to {@link MediaRouteProvider.RouteController#onUnselect(int)},
+     * {@link Callback#onRouteUnselected(MediaRouter, RouteInfo, int)} and
+     * {@link Callback#onRouteSelected(MediaRouter, RouteInfo, int)} when the user pressed
      * the disconnect button to disconnect and keep playing.
      * <p>
      *
@@ -108,14 +122,18 @@
      */
     public static final int UNSELECT_REASON_DISCONNECTED = 1;
     /**
-     * Passed to {@link androidx.mediarouter.media.MediaRouteProvider.RouteController#onUnselect(int)}
-     * and {@link Callback#onRouteUnselected(MediaRouter, RouteInfo, int)} when the user pressed
+     * Passed to {@link MediaRouteProvider.RouteController#onUnselect(int)},
+     * {@link Callback#onRouteUnselected(MediaRouter, RouteInfo, int)} and
+     * {@link Callback#onRouteSelected(MediaRouter, RouteInfo, int)} when the user pressed
      * the stop casting button.
+     * <p>
+     * Media should stop when this reason is passed.
      */
     public static final int UNSELECT_REASON_STOPPED = 2;
     /**
-     * Passed to {@link androidx.mediarouter.media.MediaRouteProvider.RouteController#onUnselect(int)}
-     * and {@link Callback#onRouteUnselected(MediaRouter, RouteInfo, int)} when the user selected
+     * Passed to {@link MediaRouteProvider.RouteController#onUnselect(int)},
+     * {@link Callback#onRouteUnselected(MediaRouter, RouteInfo, int)} and
+     * {@link Callback#onRouteSelected(MediaRouter, RouteInfo, int)} when the user selected
      * a different route.
      */
     public static final int UNSELECT_REASON_ROUTE_CHANGED = 3;
@@ -126,6 +144,10 @@
     // valid whenever any instance method is invoked.
     static GlobalMediaRouter sGlobal;
 
+    // TODO: After implementation of b/155377435 is complete, remove this variable and
+    //       related logic. Before then, test the new code with setting this value to true.
+    static final boolean USE_FWK_MR2_ACTIVELY = false;
+
     // Context-bound state of the media router.
     final Context mContext;
     final ArrayList<CallbackRecord> mCallbackRecords = new ArrayList<CallbackRecord>();
@@ -431,7 +453,7 @@
      *
      * @param reason The reason for disconnecting the current route.
      */
-    public void unselect(int reason) {
+    public void unselect(@UnselectReason int reason) {
         if (reason < MediaRouter.UNSELECT_REASON_UNKNOWN ||
                 reason > MediaRouter.UNSELECT_REASON_ROUTE_CHANGED) {
             throw new IllegalArgumentException("Unsupported reason to unselect route");
@@ -469,6 +491,16 @@
     }
 
     /**
+     * Transfers the current dynamic group to the specified route.
+     * @hide
+     */
+    @RestrictTo(LIBRARY)
+    public void transferToRoute(@NonNull RouteInfo route) {
+        checkCallingThread();
+        sGlobal.transferToRoute(route);
+    }
+
+    /**
      * Returns true if there is a route that matches the specified selector.
      * <p>
      * This method returns true if there are any available routes that match the
@@ -564,35 +596,41 @@
      *     private MediaRouter.Callback mCallback;
      *     private MediaRouteSelector mSelector;
      *
+     *     // Add the callback on start to tell the media router what kinds of routes
+     *     // the application is interested in so that it can get events about media routing changes
+     *     // from the system.
      *     protected void onCreate(Bundle savedInstanceState) {
      *         super.onCreate(savedInstanceState);
      *
-     *         mRouter = Mediarouter.getInstance(this);
+     *         mRouter = MediaRouter.getInstance(this);
+     *         mRouter.enableTransfer();
      *         mCallback = new MyCallback();
      *         mSelector = new MediaRouteSelector.Builder()
      *                 .addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO)
      *                 .addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
      *                 .build();
+     *         mRouter.addCallback(mSelector, mCallback, &#47;* flags= *&#47; 0);
      *     }
      *
-     *     // Add the callback on start to tell the media router what kinds of routes
-     *     // the application is interested in so that it can try to discover suitable ones.
+     *     // Add the callback flag CALLBACK_FLAG_REQUEST_DISCOVERY on start by calling
+     *     // addCallback() again so that the media router can try to discover suitable ones.
      *     public void onStart() {
      *         super.onStart();
      *
-     *         mediaRouter.addCallback(mSelector, mCallback,
+     *         mRouter.addCallback(mSelector, mCallback,
      *                 MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
      *
-     *         MediaRouter.RouteInfo route = mediaRouter.updateSelectedRoute(mSelector);
+     *         MediaRouter.RouteInfo route = mRouter.updateSelectedRoute(mSelector);
      *         // do something with the route...
      *     }
      *
-     *     // Remove the selector on stop to tell the media router that it no longer
+     *     // Remove the callback flag CALLBACK_FLAG_REQUEST_DISCOVERY on stop by calling
+     *     // addCallback() again in order to tell the media router that it no longer
      *     // needs to invest effort trying to discover routes of these kinds for now.
      *     public void onStop() {
      *         super.onStop();
      *
-     *         mediaRouter.removeCallback(mCallback);
+     *         mRouter.addCallback(mSelector, mCallback, &#47;* flags= *&#47; 0);
      *     }
      *
      *     private final class MyCallback extends MediaRouter.Callback {
@@ -609,6 +647,7 @@
      * {@link #CALLBACK_FLAG_UNFILTERED_EVENTS}.
      * @see #removeCallback
      */
+    // TODO: Change the usages of addCallback() for changing flags when setCallbackFlags() is added.
     public void addCallback(@NonNull MediaRouteSelector selector, @NonNull Callback callback,
             @CallbackFlags int flags) {
         if (selector == null) {
@@ -644,7 +683,13 @@
             updateNeeded = true;
         }
         if (updateNeeded) {
-            sGlobal.updateDiscoveryRequest();
+            if (!USE_FWK_MR2_ACTIVELY) {
+                sGlobal.updateDiscoveryRequest();
+                sGlobal.updateMR2RouteDiscoveryPreferenceFwk();
+            } else {
+                sGlobal.updateMr2ProviderShouldRegisterCallbackFwk();
+                sGlobal.updateDiscoveryRequest();
+            }
         }
     }
 
@@ -668,10 +713,33 @@
         int index = findCallbackRecord(callback);
         if (index >= 0) {
             mCallbackRecords.remove(index);
-            sGlobal.updateDiscoveryRequest();
+            if (!USE_FWK_MR2_ACTIVELY) {
+                sGlobal.updateDiscoveryRequest();
+                sGlobal.updateMR2RouteDiscoveryPreferenceFwk();
+            } else {
+                sGlobal.updateMr2ProviderShouldRegisterCallbackFwk();
+                sGlobal.updateDiscoveryRequest();
+            }
         }
     }
 
+    /**
+     * Enables the MediaRouter receiving events about media routing changes from the system.
+     * From Android R, a user can change the media routing via system UI. This method will be
+     * no-op on earlier Android versions.
+     * <p>
+     * Note: Once enabled, it cannot be disabled for the same process.
+     *
+     * @see #addCallback(MediaRouteSelector, Callback, int)
+     */
+    public void enableTransfer() {
+        if (!BuildCompat.isAtLeastR()) {
+            // Transfer cannot be enabled on devices running earlier than Android R
+            return;
+        }
+        sGlobal.enableTransfer();
+    }
+
     private int findCallbackRecord(Callback callback) {
         final int count = mCallbackRecords.size();
         for (int i = 0; i < count; i++) {
@@ -1509,10 +1577,8 @@
         @Nullable
         @RestrictTo(LIBRARY)
         public DynamicGroupState getDynamicGroupState() {
-            if (mDynamicGroupState == null) {
-                if (mDynamicDescriptor != null) {
-                    mDynamicGroupState = new DynamicGroupState();
-                }
+            if (mDynamicGroupState == null && mDynamicDescriptor != null) {
+                mDynamicGroupState = new DynamicGroupState();
             }
             return mDynamicGroupState;
         }
@@ -1552,7 +1618,9 @@
                 final int count = mMemberRoutes.size();
                 for (int i = 0; i < count; i++) {
                     if (i > 0) sb.append(", ");
-                    sb.append(mMemberRoutes.get(i));
+                    if (mMemberRoutes.get(i) != this) {
+                        sb.append(mMemberRoutes.get(i));
+                    }
                 }
                 sb.append(']');
                 return sb.toString();
@@ -1742,8 +1810,7 @@
             return mProvider.getProviderInstance();
         }
 
-        void updateDescriptors(
-                Collection<DynamicRouteDescriptor> dynamicDescriptors) {
+        void updateDescriptors(Collection<DynamicRouteDescriptor> dynamicDescriptors) {
             mMemberRoutes.clear();
 
             for (DynamicRouteDescriptor dynamicDescriptor :
@@ -1938,18 +2005,42 @@
          *
          * @param router The media router reporting the event.
          * @param route The route that has been selected.
+         * @deprecated Use {@link #onRouteSelected(MediaRouter, RouteInfo, int)} instead.
          */
+        @Deprecated
         public void onRouteSelected(MediaRouter router, RouteInfo route) {
         }
 
         /**
+         * Called when the supplied media route becomes selected as the active route.
+         * <p>
+         * The reason provided will be one of the following:
+         * <ul>
+         * <li>{@link MediaRouter#UNSELECT_REASON_UNKNOWN}</li>
+         * <li>{@link MediaRouter#UNSELECT_REASON_DISCONNECTED}</li>
+         * <li>{@link MediaRouter#UNSELECT_REASON_STOPPED}</li>
+         * <li>{@link MediaRouter#UNSELECT_REASON_ROUTE_CHANGED}</li>
+         * </ul>
+         *
+         * @param router The media router reporting the event.
+         * @param route The route that has been selected.
+         * @param reason The reason for unselecting the previous route.
+         */
+        public void onRouteSelected(@NonNull MediaRouter router, @NonNull RouteInfo route,
+                @UnselectReason int reason) {
+            onRouteSelected(router, route);
+        }
+
+        /**
          * Called when the supplied media route becomes unselected as the active route.
          * For detailed reason, override {@link #onRouteUnselected(MediaRouter, RouteInfo, int)}
          * instead.
          *
          * @param router The media router reporting the event.
          * @param route The route that has been unselected.
+         * @deprecated Use {@link #onRouteUnselected(MediaRouter, RouteInfo, int)} instead.
          */
+        @Deprecated
         public void onRouteUnselected(MediaRouter router, RouteInfo route) {
         }
 
@@ -1969,7 +2060,8 @@
          * @param route The route that has been unselected.
          * @param reason The reason for unselecting the route.
          */
-        public void onRouteUnselected(MediaRouter router, RouteInfo route, int reason) {
+        public void onRouteUnselected(MediaRouter router, RouteInfo route,
+                @UnselectReason int reason) {
             onRouteUnselected(router, route);
         }
 
@@ -2108,6 +2200,11 @@
             implements SystemMediaRouteProvider.SyncCallback,
             RegisteredMediaRouteProviderWatcher.Callback {
         final Context mApplicationContext;
+        final MediaRouter2 mMediaRouter2Fwk;
+        final MediaRouter2.RouteCallback mMr2RouteCallbackFwk;
+        final MediaRouter2.TransferCallback mMr2TransferCallbackFwk;
+        final Executor mMr2CbExecutor;
+        final MediaRoute2Provider mMr2Provider;
         final ArrayList<WeakReference<MediaRouter>> mRouters = new ArrayList<>();
         private final ArrayList<RouteInfo> mRoutes = new ArrayList<>();
         private final Map<Pair<String, String>, String> mUniqueIdMap = new HashMap<>();
@@ -2131,6 +2228,7 @@
         // selected route group.
         private final Map<String, RouteController> mRouteControllerMap = new HashMap<>();
         private MediaRouteDiscoveryRequest mDiscoveryRequest;
+        private boolean mIsTransferEnabled;
         private MediaSessionRecord mMediaSession;
         MediaSessionCompat mRccMediaSession;
         private MediaSessionCompat mCompatSession;
@@ -2155,7 +2253,29 @@
             mLowRam = ActivityManagerCompat.isLowRamDevice(
                     (ActivityManager)applicationContext.getSystemService(
                             Context.ACTIVITY_SERVICE));
-
+            if (BuildCompat.isAtLeastR()) {
+                mMediaRouter2Fwk = MediaRouter2.getInstance(mApplicationContext);
+                mMr2RouteCallbackFwk = new MediaRouter2.RouteCallback() {};
+                mMr2TransferCallbackFwk = new MR2TransferCallback();
+                mMr2CbExecutor = new Executor() {
+                    @Override
+                    public void execute(@NonNull Runnable command) {
+                        mCallbackHandler.post(command);
+                    }
+                };
+                if (USE_FWK_MR2_ACTIVELY) {
+                    mMr2Provider =
+                            new MediaRoute2Provider(mApplicationContext, mMediaRouter2Fwk);
+                } else {
+                    mMr2Provider = null;
+                }
+            } else {
+                mMediaRouter2Fwk = null;
+                mMr2RouteCallbackFwk = null;
+                mMr2TransferCallbackFwk = null;
+                mMr2CbExecutor = null;
+                mMr2Provider = null;
+            }
             // Add the system media route provider for interoperating with
             // the framework media router.  This one is special and receives
             // synchronization messages from the media router.
@@ -2284,8 +2404,7 @@
         }
 
         void addMemberToDynamicGroup(@NonNull RouteInfo route) {
-            if (!(mSelectedRoute.getDynamicGroupState() != null
-                    && (mSelectedRouteController instanceof DynamicGroupRouteController))) {
+            if (!(mSelectedRouteController instanceof DynamicGroupRouteController)) {
                 throw new IllegalStateException("There is no currently selected "
                         + "dynamic group route.");
             }
@@ -2301,8 +2420,7 @@
         }
 
         void removeMemberFromDynamicGroup(@NonNull RouteInfo route) {
-            if (!(mSelectedRoute.getDynamicGroupState() != null
-                    && (mSelectedRouteController instanceof DynamicGroupRouteController))) {
+            if (!(mSelectedRouteController instanceof DynamicGroupRouteController)) {
                 throw new IllegalStateException("There is no currently selected "
                         + "dynamic group route.");
             }
@@ -2321,6 +2439,20 @@
                     .onRemoveMemberRoute(route.getDescriptorId());
         }
 
+        void transferToRoute(@NonNull RouteInfo route) {
+            if (!(mSelectedRouteController instanceof DynamicGroupRouteController)) {
+                throw new IllegalStateException("There is no currently selected dynamic group "
+                        + "route.");
+            }
+            RouteInfo.DynamicGroupState state = route.getDynamicGroupState();
+            if (state == null || !state.isTransferable()) {
+                Log.w(TAG, "Ignoring attempt to transfer to a non-transferable route.");
+                return;
+            }
+            ((DynamicGroupRouteController) mSelectedRouteController)
+                    .onUpdateMemberRoutes(Collections.singletonList(route.getDescriptorId()));
+        }
+
         void selectRoute(@NonNull RouteInfo route, int unselectReason) {
             if (!mRoutes.contains(route)) {
                 Log.w(TAG, "Ignoring attempt to select removed route: " + route);
@@ -2330,7 +2462,7 @@
                 Log.w(TAG, "Ignoring attempt to select disabled route: " + route);
                 return;
             }
-            setSelectedRouteInternal(route, unselectReason);
+            setSelectedRouteInternal(route, unselectReason, /* preCreatedController= */ null);
         }
 
         public boolean isRouteAvailable(MediaRouteSelector selector, int flags) {
@@ -2360,6 +2492,21 @@
             return false;
         }
 
+        void enableTransfer() {
+            if (mIsTransferEnabled) {
+                Log.w(TAG, "Transfer is already enabled.");
+                return;
+            }
+            mIsTransferEnabled = true;
+            mRegisteredProviderWatcher.enableTransfer();
+            if (USE_FWK_MR2_ACTIVELY) {
+                updateMr2ProviderShouldRegisterCallbackFwk();
+                addProvider(mMr2Provider);
+            } else {
+                updateMR2RouteDiscoveryPreferenceFwk();
+            }
+        }
+
         public void updateDiscoveryRequest() {
             // Combine all of the callback selectors and active scan flags.
             boolean discover = false;
@@ -2424,6 +2571,63 @@
             }
         }
 
+        void updateMR2RouteDiscoveryPreferenceFwk() {
+            if (!BuildCompat.isAtLeastR() || !mIsTransferEnabled) {
+                return;
+            }
+
+            boolean callbackExists = false;
+            Set<String> controlCategories = new ArraySet<>();
+            for (int i = mRouters.size(); --i >= 0; ) {
+                MediaRouter router = mRouters.get(i).get();
+                if (router == null) {
+                    mRouters.remove(i);
+                } else {
+                    final int count = router.mCallbackRecords.size();
+                    if (count > 0) {
+                        callbackExists = true;
+                    }
+                    for (int j = 0; j < count; j++) {
+                        CallbackRecord callback = router.mCallbackRecords.get(j);
+                        controlCategories.addAll(callback.mSelector.getControlCategories());
+                    }
+                }
+            }
+
+            if (callbackExists) {
+                RouteDiscoveryPreference preference = new RouteDiscoveryPreference.Builder(
+                        controlCategories.stream().map(MediaRouter2Utils::toRouteFeature)
+                                .collect(Collectors.toList()), /* activeScan= */ false).build();
+                mMediaRouter2Fwk.registerRouteCallback(
+                        mMr2CbExecutor, mMr2RouteCallbackFwk, preference);
+                mMediaRouter2Fwk.registerTransferCallback(mMr2CbExecutor, mMr2TransferCallbackFwk);
+            } else {
+                mMediaRouter2Fwk.unregisterRouteCallback(mMr2RouteCallbackFwk);
+                mMediaRouter2Fwk.unregisterTransferCallback(mMr2TransferCallbackFwk);
+            }
+        }
+
+        void updateMr2ProviderShouldRegisterCallbackFwk() {
+            if (!BuildCompat.isAtLeastR() || !mIsTransferEnabled) {
+                return;
+            }
+
+            boolean callbackExists = false;
+            for (int i = mRouters.size(); --i >= 0; ) {
+                MediaRouter router = mRouters.get(i).get();
+                if (router == null) {
+                    mRouters.remove(i);
+                } else {
+                    final int count = router.mCallbackRecords.size();
+                    if (count > 0) {
+                        callbackExists = true;
+                        break;
+                    }
+                }
+            }
+            mMr2Provider.setShouldRegisterCallbackFwk(callbackExists);
+        }
+
         @Override
         public void addProvider(MediaRouteProvider providerInstance) {
             if (findProviderInfo(providerInstance) == null) {
@@ -2703,7 +2907,7 @@
                 Log.i(TAG, "Unselecting the current route because it "
                         + "is no longer selectable: " + mSelectedRoute);
                 setSelectedRouteInternal(chooseFallbackRoute(),
-                        MediaRouter.UNSELECT_REASON_UNKNOWN);
+                        MediaRouter.UNSELECT_REASON_UNKNOWN, /* preCreatedController= */ null);
             } else if (selectedRouteDescriptorChanged) {
                 // In case the selected route is a route group, select/unselect route controllers
                 // for the added/removed route members.
@@ -2769,7 +2973,8 @@
                             SystemMediaRouteProvider.DEFAULT_ROUTE_ID);
         }
 
-        private void setSelectedRouteInternal(@NonNull RouteInfo route, int unselectReason) {
+        void setSelectedRouteInternal(@NonNull RouteInfo route, int unselectReason,
+                @Nullable DynamicGroupRouteController preCreatedController) {
             // TODO: Remove the following logging when no longer needed.
             if (sGlobal == null || (mBluetoothRoute != null && route.isDefault())) {
                 final StackTraceElement[] callStack = Thread.currentThread().getStackTrace();
@@ -2793,64 +2998,97 @@
                 }
             }
 
-            if (mSelectedRoute != route) {
-                if (mSelectedRoute != null) {
-                    if (DEBUG) {
-                        Log.d(TAG, "Route unselected: " + mSelectedRoute + " reason: "
-                                + unselectReason);
-                    }
-                    mCallbackHandler.post(CallbackHandler.MSG_ROUTE_UNSELECTED, mSelectedRoute,
-                            unselectReason);
-                    if (mSelectedRouteController != null) {
-                        mSelectedRouteController.onUnselect(unselectReason);
-                        mSelectedRouteController.onRelease();
-                        mSelectedRouteController = null;
-                    }
-                    if (!mRouteControllerMap.isEmpty()) {
-                        for (RouteController controller : mRouteControllerMap.values()) {
-                            controller.onUnselect(unselectReason);
-                            controller.onRelease();
-                        }
-                        mRouteControllerMap.clear();
-                    }
-                }
-
-                if (route.getProvider().supportsDynamicGroup()) {
-                    // MRP will create a new dynamic group route with initially selected route.
-                    MediaRouteProvider.DynamicGroupRouteController controller =
-                            route.getProviderInstance().onCreateDynamicGroupRouteController(
-                                    route.mDescriptorId);
-                    controller.setOnDynamicRoutesChangedListener(
-                            ContextCompat.getMainExecutor(mApplicationContext),
-                            mDynamicRoutesListener);
-                    mSelectedRouteController = controller;
-                    mSelectedRoute = route;
-                } else {
-                    mSelectedRouteController = route.getProviderInstance().onCreateRouteController(
-                            route.mDescriptorId);
-                    mSelectedRoute = route;
-                }
-                if (mSelectedRouteController != null) {
-                    mSelectedRouteController.onSelect();
-                }
-                if (DEBUG) {
-                    Log.d(TAG, "Route selected: " + mSelectedRoute);
-                }
-                mCallbackHandler.post(CallbackHandler.MSG_ROUTE_SELECTED, mSelectedRoute);
-
-                if (mSelectedRoute.isGroup()) {
-                    List<RouteInfo> routes = mSelectedRoute.getMemberRoutes();
-                    mRouteControllerMap.clear();
-                    for (RouteInfo r : routes) {
-                        RouteController controller =
-                                r.getProviderInstance().onCreateRouteController(
-                                        r.mDescriptorId, mSelectedRoute.mDescriptorId);
-                        controller.onSelect();
-                        mRouteControllerMap.put(r.mUniqueId, controller);
-                    }
-                }
-                updatePlaybackInfoFromSelectedRoute();
+            if (mSelectedRoute == route) {
+                return;
             }
+
+            clearSelectedRoute(unselectReason);
+            setSelectedRouteWithController(route, unselectReason, preCreatedController);
+        }
+
+        void clearSelectedRoute(int unselectReason) {
+            if (mSelectedRoute == null) {
+                return;
+            }
+
+            if (DEBUG) {
+                Log.d(TAG, "Route unselected: " + mSelectedRoute + " reason: "
+                        + unselectReason);
+            }
+            mCallbackHandler.post(CallbackHandler.MSG_ROUTE_UNSELECTED, mSelectedRoute,
+                    unselectReason);
+            if (mSelectedRouteController != null) {
+                mSelectedRouteController.onUnselect(unselectReason);
+                mSelectedRouteController.onRelease();
+                mSelectedRouteController = null;
+            }
+            if (!mRouteControllerMap.isEmpty()) {
+                for (RouteController controller : mRouteControllerMap.values()) {
+                    controller.onUnselect(unselectReason);
+                    controller.onRelease();
+                }
+                mRouteControllerMap.clear();
+            }
+            mSelectedRoute = null;
+        }
+
+        void setSelectedRouteWithController(@NonNull RouteInfo route,
+                int unselectReason, @Nullable DynamicGroupRouteController preCreatedController) {
+            RouteController newController;
+
+            if (route.getProvider().supportsDynamicGroup()) {
+                if (preCreatedController != null) {
+                    newController = preCreatedController;
+                } else {
+                    // Need to create controller
+                    // MRP will create a new dynamic group route with initially selected route.
+                    newController = route.getProviderInstance().onCreateDynamicGroupRouteController(
+                            route.mDescriptorId);
+                }
+            } else {
+                if (preCreatedController != null) {
+                    Log.w(TAG, "DynamicRouteGroupController is created for a route which doesn't "
+                            + "support dynamic group.");
+                    newController = preCreatedController;
+
+                } else {
+                    newController = route.getProviderInstance().onCreateRouteController(
+                            route.mDescriptorId);
+                }
+            }
+
+            if (newController instanceof DynamicGroupRouteController) {
+                ((DynamicGroupRouteController) newController).setOnDynamicRoutesChangedListener(
+                        ContextCompat.getMainExecutor(mApplicationContext),
+                        mDynamicRoutesListener);
+            }
+
+            mSelectedRouteController = newController;
+            mSelectedRoute = route;
+
+            // Pre-created controller is already selected, so don't need to call onSelect() again.
+            if (mSelectedRouteController != null && preCreatedController == null) {
+                mSelectedRouteController.onSelect();
+            }
+
+            if (DEBUG) {
+                Log.d(TAG, "Route selected: " + mSelectedRoute);
+            }
+            mCallbackHandler.post(CallbackHandler.MSG_ROUTE_SELECTED, mSelectedRoute,
+                    unselectReason);
+
+            if (mSelectedRoute.isGroup()) {
+                List<RouteInfo> routes = mSelectedRoute.getMemberRoutes();
+                mRouteControllerMap.clear();
+                for (RouteInfo memberRoute : routes) {
+                    RouteController memberRouteController =
+                            memberRoute.getProviderInstance().onCreateRouteController(
+                                    memberRoute.mDescriptorId, mSelectedRoute.mDescriptorId);
+                    memberRouteController.onSelect();
+                    mRouteControllerMap.put(memberRoute.mUniqueId, memberRouteController);
+                }
+            }
+            updatePlaybackInfoFromSelectedRoute();
         }
 
         DynamicGroupRouteController.OnDynamicRoutesChangedListener mDynamicRoutesListener =
@@ -2993,6 +3231,60 @@
                     MediaRouteProviderDescriptor descriptor) {
                 updateProviderDescriptor(provider, descriptor);
             }
+
+            @Override
+            public void onDynamicGroupRouteControllerCreatedWithoutRequest(
+                    @NonNull MediaRouteProvider provider,
+                    @NonNull DynamicGroupRouteController controller,
+                    @NonNull String routeId) {
+
+                String uniqueRouteId = getUniqueId(new ProviderInfo(provider), routeId);
+
+                RouteInfo route = null;
+                for (RouteInfo r : getRoutes()) {
+                    if (r.getId().equals(uniqueRouteId)) {
+                        route = r;
+                        break;
+                    }
+                }
+
+                if (route == null) {
+                    Log.w(TAG, "onDynamicGroupRouteControllerCreatedWithoutRequest: "
+                            + "the selected route does not exist. uniqueRouteId=" + uniqueRouteId);
+                    controller.onUnselect();
+                    controller.onRelease();
+                    return;
+                }
+
+                setSelectedRouteInternal(route, UNSELECT_REASON_ROUTE_CHANGED, controller);
+            }
+        }
+
+        @RequiresApi(30)
+        private final class MR2TransferCallback extends MediaRouter2.TransferCallback {
+            @Override
+            public void onTransfer(@NonNull MediaRouter2.RoutingController oldController,
+                    @NonNull MediaRouter2.RoutingController newController) {
+                // Ignore other cases, since this callback is only used for checking
+                // Cast->Phone case.
+                if (newController == mMediaRouter2Fwk.getSystemController()) {
+                    selectFallbackRoute(UNSELECT_REASON_ROUTE_CHANGED);
+                }
+            }
+
+            @Override
+            public void onStop(@NonNull MediaRouter2.RoutingController controller) {
+                selectFallbackRoute(UNSELECT_REASON_STOPPED);
+            }
+
+            void selectFallbackRoute(int reason) {
+                RouteInfo fallbackRoute = chooseFallbackRoute();
+                if (getSelectedRoute() != fallbackRoute) {
+                    selectRoute(fallbackRoute, reason);
+                }
+                // Does nothing when the selected route is same with fallback route.
+                // This is the difference between this and unselect().
+            }
         }
 
         private final class MediaSessionRecord {
@@ -3215,7 +3507,7 @@
                                 callback.onRoutePresentationDisplayChanged(router, route);
                                 break;
                             case MSG_ROUTE_SELECTED:
-                                callback.onRouteSelected(router, route);
+                                callback.onRouteSelected(router, route, arg);
                                 break;
                             case MSG_ROUTE_UNSELECTED:
                                 callback.onRouteUnselected(router, route, arg);
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
new file mode 100644
index 0000000..0d058cd
--- /dev/null
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright 2020 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.mediarouter.media;
+
+import static android.media.MediaRoute2Info.FEATURE_LIVE_AUDIO;
+import static android.media.MediaRoute2Info.FEATURE_LIVE_VIDEO;
+import static android.media.MediaRoute2Info.FEATURE_REMOTE_PLAYBACK;
+
+import android.annotation.SuppressLint;
+import android.content.IntentFilter;
+import android.media.MediaRoute2Info;
+import android.media.RouteDiscoveryPreference;
+import android.net.Uri;
+import android.os.Build;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+//TODO: Remove SuppressLInt
+@SuppressLint("NewApi")
+@RequiresApi(api = Build.VERSION_CODES.R)
+class MediaRouter2Utils {
+    //TODO: Once the prebuilt is updated, use those in MediaRoute2Info.
+    static final String FEATURE_EMPTY = "android.media.route.feature.EMPTY";
+
+    private MediaRouter2Utils() {}
+
+    @Nullable
+    public static MediaRoute2Info toFwkMediaRoute2Info(@Nullable MediaRouteDescriptor descriptor) {
+        if (descriptor == null) {
+            return null;
+        }
+
+        MediaRoute2Info.Builder builder = new MediaRoute2Info.Builder(descriptor.getId(),
+                descriptor.getName())
+                .setDescription(descriptor.getDescription())
+                .setConnectionState(descriptor.getConnectionState())
+                .setVolumeHandling(descriptor.getVolumeHandling())
+                .setVolume(descriptor.getVolume())
+                .setVolumeMax(descriptor.getVolumeMax())
+                .addFeatures(getFeaturesFromIntentFilters(descriptor.getControlFilters()))
+                .setIconUri(descriptor.getIconUri())
+                .setExtras(descriptor.getExtras())
+                //TODO: set device type (for SystemUI to display proper icon?)
+                //.setDeviceType(deviceType)
+                //TODO: set client package name
+                //.setClientPackageName(clientMap.get(device.getDeviceId()))
+                ;
+
+        // This is a workaround for preventing IllegalArgumentException in MediaRoute2Info.
+        if (descriptor.getControlFilters().isEmpty()) {
+            builder.addFeature(FEATURE_EMPTY);
+        }
+
+        return builder.build();
+    }
+
+    @Nullable
+    public static MediaRouteDescriptor toMediaRouteDescriptor(
+            @Nullable MediaRoute2Info fwkMediaRoute2Info) {
+        if (fwkMediaRoute2Info == null) {
+            return null;
+        }
+
+        MediaRouteDescriptor.Builder builder = new MediaRouteDescriptor.Builder(
+                // TODO: We may need to use the original ID by using extras.
+                fwkMediaRoute2Info.getId(), fwkMediaRoute2Info.getName().toString())
+                .addControlFilters(getIntentFiltersFromFeatures(fwkMediaRoute2Info.getFeatures()))
+                .setConnectionState(fwkMediaRoute2Info.getConnectionState())
+                .setVolumeHandling(fwkMediaRoute2Info.getVolumeHandling())
+                .setVolumeMax(fwkMediaRoute2Info.getVolumeMax())
+                .setVolume(fwkMediaRoute2Info.getVolume())
+                .setExtras(fwkMediaRoute2Info.getExtras())
+                .setEnabled(true)
+                .setCanDisconnect(false);
+
+        CharSequence description = fwkMediaRoute2Info.getDescription();
+        if (description != null) {
+            builder.setDescription(description.toString());
+        }
+
+        Uri iconUri = fwkMediaRoute2Info.getIconUri();
+        if (iconUri != null) {
+            builder.setIconUri(iconUri);
+        }
+
+        // TODO: Set device type by using extras.
+        // builder.setDeviceType()
+
+        // TODO: Set 'dynamic group route' related values properly
+        // builder.setIsDynamicGroupRoute();
+        // builder.addGroupMemberIds();
+
+        return builder.build();
+    }
+
+    static Collection<String> getFeaturesFromIntentFilters(List<IntentFilter> controlFilters) {
+        Set<String> features = new HashSet<String>();
+        for (IntentFilter filter : controlFilters) {
+            int count = filter.countCategories();
+            for (int i = 0; i < count; i++) {
+                features.add(toRouteFeature(filter.getCategory(i)));
+            }
+        }
+        return features;
+    }
+
+    @NonNull
+    static List<IntentFilter> getIntentFiltersFromFeatures(@Nullable Collection<String> features) {
+        if (features == null) {
+            return new ArrayList<>();
+        }
+        return features.stream().distinct().map(f -> {
+            IntentFilter filter = new IntentFilter();
+            filter.addCategory(toControlCategory(f));
+            // TODO: Add actions by using extras. (see RemotePlaybackClient#detectFeatures())
+            // filter.addAction(MediaControlIntent.ACTION_PLAY);
+            // filter.addAction(MediaControlIntent.ACTION_SEEK);
+            return filter;
+        }).collect(Collectors.toList());
+    }
+
+    @NonNull
+    static RouteDiscoveryPreference toDiscoveryPreference(
+            @Nullable MediaRouteDiscoveryRequest discoveryRequest) {
+        if (discoveryRequest == null || !discoveryRequest.isValid()) {
+            return new RouteDiscoveryPreference.Builder(new ArrayList<>(), false).build();
+        }
+        boolean activeScan = discoveryRequest.isActiveScan();
+        List<String> routeFeatures = discoveryRequest.getSelector().getControlCategories()
+                .stream().map(MediaRouter2Utils::toRouteFeature)
+                .collect(Collectors.toList());
+        return new RouteDiscoveryPreference.Builder(routeFeatures, activeScan).build();
+    }
+
+    static String toRouteFeature(String controlCategory) {
+        switch (controlCategory) {
+            case MediaControlIntent.CATEGORY_LIVE_AUDIO:
+                return FEATURE_LIVE_AUDIO;
+            case MediaControlIntent.CATEGORY_LIVE_VIDEO:
+                return FEATURE_LIVE_VIDEO;
+            case MediaControlIntent.CATEGORY_REMOTE_PLAYBACK:
+                return FEATURE_REMOTE_PLAYBACK;
+        }
+        return controlCategory;
+    }
+
+    static String toControlCategory(String routeFeature) {
+        switch (routeFeature) {
+            case FEATURE_LIVE_AUDIO:
+                return MediaControlIntent.CATEGORY_LIVE_AUDIO;
+            case FEATURE_LIVE_VIDEO:
+                return MediaControlIntent.CATEGORY_LIVE_VIDEO;
+            case FEATURE_REMOTE_PLAYBACK:
+                return MediaControlIntent.CATEGORY_REMOTE_PLAYBACK;
+        }
+        return routeFeature;
+    }
+}
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RegisteredMediaRouteProvider.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RegisteredMediaRouteProvider.java
index 6456958..1a6f3d2 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RegisteredMediaRouteProvider.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RegisteredMediaRouteProvider.java
@@ -16,51 +16,45 @@
 
 package androidx.mediarouter.media;
 
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_CONTROLLER_ID;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_CONTROLLER_INFO;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_MEMBER_ROUTE_ID;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_MEMBER_ROUTE_IDS;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_PROVIDER_DESCRIPTOR;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_ROUTE_ID;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_ROUTE_LIBRARY_GROUP;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_UNSELECT_REASON;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_VOLUME;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_ADD_MEMBER_ROUTE;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .CLIENT_MSG_CREATE_DYNAMIC_GROUP_ROUTE_CONTROLLER;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .CLIENT_MSG_CREATE_ROUTE_CONTROLLER;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_CREATE_DYNAMIC_GROUP_ROUTE_CONTROLLER;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_CREATE_ROUTE_CONTROLLER;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_REGISTER;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .CLIENT_MSG_RELEASE_ROUTE_CONTROLLER;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_RELEASE_ROUTE_CONTROLLER;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_REMOVE_MEMBER_ROUTE;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .CLIENT_MSG_ROUTE_CONTROL_REQUEST;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_ROUTE_CONTROL_REQUEST;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_SELECT_ROUTE;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .CLIENT_MSG_SET_DISCOVERY_REQUEST;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_SET_DISCOVERY_REQUEST;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_SET_ROUTE_VOLUME;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_UNREGISTER;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_UNSELECT_ROUTE;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_UPDATE_MEMBER_ROUTES;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_UPDATE_ROUTE_VOLUME;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_VERSION_CURRENT;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .DATA_KEY_DYNAMIC_ROUTE_DESCRIPTORS;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.DATA_KEY_DYNAMIC_ROUTE_DESCRIPTORS;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.DATA_KEY_GROUPABLE_SECION_TITLE;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .DATA_KEY_TRANSFERABLE_SECTION_TITLE;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.DATA_KEY_TRANSFERABLE_SECTION_TITLE;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_DATA_ERROR;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .SERVICE_MSG_CONTROL_REQUEST_FAILED;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_CONTROL_REQUEST_FAILED;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_DESCRIPTOR_CHANGED;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .SERVICE_MSG_DYNAMIC_ROUTE_CREATED;
-import static androidx.mediarouter.media.MediaRouteProviderProtocol
-        .SERVICE_MSG_DYNAMIC_ROUTE_DESCRIPTORS_CHANGED;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_DYNAMIC_ROUTE_CREATED;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_DYNAMIC_ROUTE_CREATED_WITHOUT_REQUEST;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_DYNAMIC_ROUTE_DESCRIPTORS_CHANGED;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_GENERIC_FAILURE;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_GENERIC_SUCCESS;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_REGISTERED;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_VERSION_1;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_VERSION_3;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.isValidRemoteMessenger;
 
 import android.content.ComponentName;
@@ -80,8 +74,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController
-        .DynamicRouteDescriptor;
+import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor;
 import androidx.mediarouter.media.MediaRouter.ControlRequestCallback;
 
 import java.lang.ref.WeakReference;
@@ -102,6 +95,7 @@
             new ArrayList<ControllerConnection>();
 
     private boolean mStarted;
+    private boolean mTransferEnabled;
     private boolean mBound;
     private Connection mActiveConnection;
     private boolean mConnectionReady;
@@ -113,6 +107,41 @@
         mPrivateHandler = new PrivateHandler();
     }
 
+    public DynamicGroupRouteController createControllerWithoutRequest(
+            @NonNull Bundle controllerInfo) {
+        MediaRouteProviderDescriptor descriptor = getDescriptor();
+        if (descriptor == null) {
+            return null;
+        }
+
+        String routeId = controllerInfo.getString(CLIENT_DATA_ROUTE_ID);
+        int controllerId = controllerInfo.getInt(CLIENT_DATA_CONTROLLER_ID, -1);
+        String groupableSectionTitle = controllerInfo.getString(DATA_KEY_GROUPABLE_SECION_TITLE);
+        String transferableSectionTitle =
+                controllerInfo.getString(DATA_KEY_TRANSFERABLE_SECTION_TITLE);
+
+        if (routeId == null || controllerId == -1) {
+            Log.w(TAG, "createControllerWithoutRequest: Wrong controller info. routeId=" + routeId
+                    + " controllerId=" + controllerId);
+            return null;
+        }
+
+        List<MediaRouteDescriptor> routes = descriptor.getRoutes();
+        for (MediaRouteDescriptor route : routes) {
+            if (route.getId().equals(routeId)) {
+                RegisteredDynamicController controller = new RegisteredDynamicController(routeId);
+                controller.setInitialInfo(controllerId, true, mActiveConnection,
+                        groupableSectionTitle, transferableSectionTitle);
+                mControllerConnections.add(controller);
+                updateBinding();
+                return controller;
+            }
+        }
+
+        Log.w(TAG, "createControllerWithoutRequest: Could not find the route. routeId=" + routeId);
+        return null;
+    }
+
     @Override
     public RouteController onCreateRouteController(@NonNull String routeId) {
         if (routeId == null) {
@@ -215,6 +244,16 @@
         }
     }
 
+    public void enableTransfer(boolean shouldUpdateBinding) {
+        mTransferEnabled = true;
+        if (DEBUG) {
+            Log.d(TAG, this + ": Enabling transfer");
+        }
+        if (shouldUpdateBinding) {
+            updateBinding();
+        }
+    }
+
     public void rebindIfDisconnected() {
         if (mActiveConnection == null && shouldBind()) {
             unbind();
@@ -232,6 +271,11 @@
 
     private boolean shouldBind() {
         if (mStarted) {
+            // When transfer is enabled, we need to keep the connection.
+            if (mTransferEnabled) {
+                return true;
+            }
+
             // Bind whenever there is a discovery request.
             if (getDiscoveryRequest() != null) {
                 return true;
@@ -381,6 +425,26 @@
         }
     }
 
+    void onDynamicRouteGroupControllerCreatedWithoutRequest(@NonNull Connection connection,
+            @NonNull Bundle controllerInfo) {
+        if (mActiveConnection == connection) {
+            if (DEBUG) {
+                Log.d(TAG, this + ": DynamicRouteGroupController created without request, "
+                        + "controllerInfo=" + controllerInfo);
+            }
+
+            DynamicGroupRouteController controller = createControllerWithoutRequest(controllerInfo);
+            if (controller == null) {
+                Log.w(TAG, this + ": invalid DynamicRouteGroupController info. Ignoring.");
+                return;
+            }
+
+            String routeId = controllerInfo.getString(CLIENT_DATA_ROUTE_ID);
+            mPrivateHandler.post(() ->
+                    deliverDynamicGroupRouteControllerCreatedWithoutRequest(controller, routeId));
+        }
+    }
+
     private ControllerConnection findControllerById(int id) {
         for (ControllerConnection controller: mControllerConnections) {
             if (controller.getControllerId() == id) {
@@ -443,6 +507,16 @@
             mInitialMemberRouteId = initialMemberRouteId;
         }
 
+        // Use this only for pre-created controllers.
+        void setInitialInfo(int controllerId, boolean selected, @Nullable Connection connection,
+                @Nullable String groupableSectionTitle, @Nullable String transferableSectionTitle) {
+            mControllerId = controllerId;
+            mSelected = selected;
+            mConnection = connection;
+            mGroupableSectionTitle = groupableSectionTitle;
+            mTransferableSectionTitle = transferableSectionTitle;
+        }
+
         /////////////////////////////////////
         // Implements Controller
         @Override
@@ -832,6 +906,30 @@
             }
         }
 
+        public void onDynamicGroupRouteControllerCreatedWithoutRequest(@NonNull Bundle data) {
+            if (mServiceVersion >= SERVICE_VERSION_3) {
+                MediaRouteProviderDescriptor providerDescriptor =
+                        MediaRouteProviderDescriptor.fromBundle(
+                                data.getBundle(CLIENT_DATA_PROVIDER_DESCRIPTOR));
+                Bundle controllerInfo = data.getBundle(CLIENT_DATA_CONTROLLER_INFO);
+
+                if (providerDescriptor == null) {
+                    Log.w(TAG, "onDynamicGroupRouteControllerCreatedWithoutRequest: "
+                            + "Ignoring null provider descriptor.");
+                    return;
+                }
+
+                if (controllerInfo == null) {
+                    Log.w(TAG, "onDynamicGroupRouteControllerCreatedWithoutRequest: "
+                            + "Ignoring null controllerInfo Bundle.");
+                    return;
+                }
+
+                onConnectionDescriptorChanged(this, providerDescriptor);
+                onDynamicRouteGroupControllerCreatedWithoutRequest(this, controllerInfo);
+            }
+        }
+
         @Override
         public void binderDied() {
             mPrivateHandler.post(new Runnable() {
@@ -1053,6 +1151,13 @@
                         Log.w(TAG, "No further information on the dynamic group controller");
                     }
                     break;
+                case SERVICE_MSG_DYNAMIC_ROUTE_CREATED_WITHOUT_REQUEST:
+                    if (obj instanceof Bundle) {
+                        connection.onDynamicGroupRouteControllerCreatedWithoutRequest((Bundle) obj);
+                    } else {
+                        Log.w(TAG, "No further information on the dynamic group controller");
+                    }
+                    break;
             }
             return false;
         }
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RegisteredMediaRouteProviderWatcher.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RegisteredMediaRouteProviderWatcher.java
index f268f12..b46ac4e2 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RegisteredMediaRouteProviderWatcher.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RegisteredMediaRouteProviderWatcher.java
@@ -16,6 +16,8 @@
 
 package androidx.mediarouter.media;
 
+import static androidx.mediarouter.media.MediaRouter.USE_FWK_MR2_ACTIVELY;
+
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
@@ -24,10 +26,17 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
+import android.media.MediaRoute2ProviderService;
 import android.os.Handler;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.core.os.BuildCompat;
+
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * Watches for media route provider services to be installed.
@@ -41,11 +50,11 @@
     private final Handler mHandler;
     private final PackageManager mPackageManager;
 
-    private final ArrayList<RegisteredMediaRouteProvider> mProviders =
-            new ArrayList<RegisteredMediaRouteProvider>();
+    private final ArrayList<RegisteredMediaRouteProvider> mProviders = new ArrayList<>();
     private boolean mRunning;
+    private boolean mTransferEnabled;
 
-    public RegisteredMediaRouteProviderWatcher(Context context, Callback callback) {
+    RegisteredMediaRouteProviderWatcher(Context context, Callback callback) {
         mContext = context;
         mCallback = callback;
         mHandler = new Handler();
@@ -85,32 +94,60 @@
         }
     }
 
+    public void enableTransfer() {
+        mTransferEnabled = true;
+        if (USE_FWK_MR2_ACTIVELY) {
+            scanPackages();
+        } else {
+            for (int i = mProviders.size() - 1; i >= 0; i--) {
+                mProviders.get(i).enableTransfer(/* shouldUpdateBinding = */ true);
+            }
+        }
+    }
+
     void scanPackages() {
         if (!mRunning) {
             return;
         }
 
+        List<ServiceInfo> mediaRoute2ProviderServices = new ArrayList<>();
+        if (BuildCompat.isAtLeastR()) {
+            mediaRoute2ProviderServices = getMediaRoute2ProviderServices();
+        }
+
         // Add providers for all new services.
         // Reorder the list so that providers left at the end will be the ones to remove.
         int targetIndex = 0;
         Intent intent = new Intent(MediaRouteProviderService.SERVICE_INTERFACE);
         for (ResolveInfo resolveInfo : mPackageManager.queryIntentServices(intent, 0)) {
             ServiceInfo serviceInfo = resolveInfo.serviceInfo;
-            if (serviceInfo != null) {
-                int sourceIndex = findProvider(serviceInfo.packageName, serviceInfo.name);
-                if (sourceIndex < 0) {
-                    RegisteredMediaRouteProvider provider =
-                            new RegisteredMediaRouteProvider(mContext,
-                            new ComponentName(serviceInfo.packageName, serviceInfo.name));
-                    provider.start();
-                    mProviders.add(targetIndex++, provider);
-                    mCallback.addProvider(provider);
-                } else if (sourceIndex >= targetIndex) {
-                    RegisteredMediaRouteProvider provider = mProviders.get(sourceIndex);
-                    provider.start(); // restart the provider if needed
-                    provider.rebindIfDisconnected();
-                    Collections.swap(mProviders, sourceIndex, targetIndex++);
+            if (serviceInfo == null) {
+                continue;
+            }
+            if (USE_FWK_MR2_ACTIVELY && mTransferEnabled
+                    && listContainsServiceInfo(mediaRoute2ProviderServices, serviceInfo)) {
+                // Do not register services which supports MediaRoute2ProviderService,
+                // since we will communicate with them via MediaRouter2.
+                continue;
+            }
+            int sourceIndex = findProvider(serviceInfo.packageName, serviceInfo.name);
+            if (sourceIndex < 0) {
+                RegisteredMediaRouteProvider provider = new RegisteredMediaRouteProvider(
+                        mContext, new ComponentName(serviceInfo.packageName, serviceInfo.name));
+                if (mTransferEnabled) {
+                    provider.enableTransfer(/* shouldUpdateBinding = */ false);
                 }
+                provider.start();
+                mProviders.add(targetIndex++, provider);
+                mCallback.addProvider(provider);
+            } else if (sourceIndex >= targetIndex) {
+                RegisteredMediaRouteProvider provider = mProviders.get(sourceIndex);
+                if (mTransferEnabled) {
+                    provider.enableTransfer(/* shouldUpdateBinding = */ false);
+                }
+                provider.start(); // restart the provider if needed
+                provider.rebindIfDisconnected();
+                Collections.swap(mProviders, sourceIndex, targetIndex++);
             }
         }
 
@@ -125,6 +162,27 @@
         }
     }
 
+    static boolean listContainsServiceInfo(List<ServiceInfo> serviceList, ServiceInfo target) {
+        if (target == null || serviceList == null || serviceList.isEmpty()) {
+            return false;
+        }
+        for (ServiceInfo serviceInfo : serviceList) {
+            if (target.packageName.equals(serviceInfo.packageName)
+                    && target.name.equals(serviceInfo.name)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @RequiresApi(30)
+    @NonNull
+    List<ServiceInfo> getMediaRoute2ProviderServices() {
+        Intent intent = new Intent(MediaRoute2ProviderService.SERVICE_INTERFACE);
+        return mPackageManager.queryIntentServices(intent, 0).stream()
+                .map(resolveInfo -> resolveInfo.serviceInfo).collect(Collectors.toList());
+    }
+
     private int findProvider(String packageName, String className) {
         int count = mProviders.size();
         for (int i = 0; i < count; i++) {
diff --git a/palette/palette/api/current.txt b/palette/palette/api/current.txt
index c9e21b3..b2c87a6 100644
--- a/palette/palette/api/current.txt
+++ b/palette/palette/api/current.txt
@@ -37,7 +37,7 @@
     method public androidx.palette.graphics.Palette.Builder clearRegion();
     method public androidx.palette.graphics.Palette.Builder clearTargets();
     method public androidx.palette.graphics.Palette generate();
-    method public android.os.AsyncTask<android.graphics.Bitmap!,java.lang.Void!,androidx.palette.graphics.Palette!> generate(androidx.palette.graphics.Palette.PaletteAsyncListener);
+    method @Deprecated public android.os.AsyncTask<android.graphics.Bitmap!,java.lang.Void!,androidx.palette.graphics.Palette!> generate(androidx.palette.graphics.Palette.PaletteAsyncListener);
     method public androidx.palette.graphics.Palette.Builder maximumColorCount(int);
     method public androidx.palette.graphics.Palette.Builder resizeBitmapArea(int);
     method @Deprecated public androidx.palette.graphics.Palette.Builder resizeBitmapSize(int);
diff --git a/palette/palette/api/public_plus_experimental_current.txt b/palette/palette/api/public_plus_experimental_current.txt
index c9e21b3..b2c87a6 100644
--- a/palette/palette/api/public_plus_experimental_current.txt
+++ b/palette/palette/api/public_plus_experimental_current.txt
@@ -37,7 +37,7 @@
     method public androidx.palette.graphics.Palette.Builder clearRegion();
     method public androidx.palette.graphics.Palette.Builder clearTargets();
     method public androidx.palette.graphics.Palette generate();
-    method public android.os.AsyncTask<android.graphics.Bitmap!,java.lang.Void!,androidx.palette.graphics.Palette!> generate(androidx.palette.graphics.Palette.PaletteAsyncListener);
+    method @Deprecated public android.os.AsyncTask<android.graphics.Bitmap!,java.lang.Void!,androidx.palette.graphics.Palette!> generate(androidx.palette.graphics.Palette.PaletteAsyncListener);
     method public androidx.palette.graphics.Palette.Builder maximumColorCount(int);
     method public androidx.palette.graphics.Palette.Builder resizeBitmapArea(int);
     method @Deprecated public androidx.palette.graphics.Palette.Builder resizeBitmapSize(int);
diff --git a/palette/palette/api/restricted_current.txt b/palette/palette/api/restricted_current.txt
index c9e21b3..b2c87a6 100644
--- a/palette/palette/api/restricted_current.txt
+++ b/palette/palette/api/restricted_current.txt
@@ -37,7 +37,7 @@
     method public androidx.palette.graphics.Palette.Builder clearRegion();
     method public androidx.palette.graphics.Palette.Builder clearTargets();
     method public androidx.palette.graphics.Palette generate();
-    method public android.os.AsyncTask<android.graphics.Bitmap!,java.lang.Void!,androidx.palette.graphics.Palette!> generate(androidx.palette.graphics.Palette.PaletteAsyncListener);
+    method @Deprecated public android.os.AsyncTask<android.graphics.Bitmap!,java.lang.Void!,androidx.palette.graphics.Palette!> generate(androidx.palette.graphics.Palette.PaletteAsyncListener);
     method public androidx.palette.graphics.Palette.Builder maximumColorCount(int);
     method public androidx.palette.graphics.Palette.Builder resizeBitmapArea(int);
     method @Deprecated public androidx.palette.graphics.Palette.Builder resizeBitmapSize(int);
diff --git a/palette/palette/src/main/java/androidx/palette/graphics/ColorCutQuantizer.java b/palette/palette/src/main/java/androidx/palette/graphics/ColorCutQuantizer.java
index b054edf..d9424e1 100644
--- a/palette/palette/src/main/java/androidx/palette/graphics/ColorCutQuantizer.java
+++ b/palette/palette/src/main/java/androidx/palette/graphics/ColorCutQuantizer.java
@@ -17,7 +17,6 @@
 package androidx.palette.graphics;
 
 import android.graphics.Color;
-import android.util.TimingLogger;
 
 import androidx.annotation.Nullable;
 import androidx.core.graphics.ColorUtils;
@@ -43,10 +42,6 @@
  * colors.
  */
 final class ColorCutQuantizer {
-
-    private static final String LOG_TAG = "ColorCutQuantizer";
-    private static final boolean LOG_TIMINGS = false;
-
     static final int COMPONENT_RED = -3;
     static final int COMPONENT_GREEN = -2;
     static final int COMPONENT_BLUE = -1;
@@ -57,7 +52,6 @@
     final int[] mColors;
     final int[] mHistogram;
     final List<Palette.Swatch> mQuantizedColors;
-    @Nullable final TimingLogger mTimingLogger;
     @Nullable final Palette.Filter[] mFilters;
 
     private final float[] mTempHsl = new float[3];
@@ -69,9 +63,7 @@
      * @param maxColors The maximum number of colors that should be in the result palette.
      * @param filters Set of filters to use in the quantization stage
      */
-    @SuppressWarnings("NullAway") // mTimingLogger initialization and access guarded by LOG_TIMINGS.
     ColorCutQuantizer(int[] pixels, int maxColors, @Nullable Palette.Filter[] filters) {
-        mTimingLogger = LOG_TIMINGS ? new TimingLogger(LOG_TAG, "Creation") : null;
         mFilters = filters;
 
         final int[] hist = mHistogram = new int[1 << (QUANTIZE_WORD_WIDTH * 3)];
@@ -83,10 +75,6 @@
             hist[quantizedColor]++;
         }
 
-        if (LOG_TIMINGS) {
-            mTimingLogger.addSplit("Histogram created");
-        }
-
         // Now let's count the number of distinct colors
         int distinctColorCount = 0;
         for (int color = 0; color < hist.length; color++) {
@@ -100,10 +88,6 @@
             }
         }
 
-        if (LOG_TIMINGS) {
-            mTimingLogger.addSplit("Filtered colors and distinct colors counted");
-        }
-
         // Now lets go through create an array consisting of only distinct colors
         final int[] colors = mColors = new int[distinctColorCount];
         int distinctColorIndex = 0;
@@ -113,29 +97,15 @@
             }
         }
 
-        if (LOG_TIMINGS) {
-            mTimingLogger.addSplit("Distinct colors copied into array");
-        }
-
         if (distinctColorCount <= maxColors) {
             // The image has fewer colors than the maximum requested, so just return the colors
             mQuantizedColors = new ArrayList<>();
             for (int color : colors) {
                 mQuantizedColors.add(new Palette.Swatch(approximateToRgb888(color), hist[color]));
             }
-
-            if (LOG_TIMINGS) {
-                mTimingLogger.addSplit("Too few colors present. Copied to Swatches");
-                mTimingLogger.dumpToLog();
-            }
         } else {
             // We need use quantization to reduce the number of colors
             mQuantizedColors = quantizePixels(maxColors);
-
-            if (LOG_TIMINGS) {
-                mTimingLogger.addSplit("Quantized colors computed");
-                mTimingLogger.dumpToLog();
-            }
         }
     }
 
@@ -171,7 +141,6 @@
      * @param queue {@link java.util.PriorityQueue} to poll for boxes
      * @param maxSize Maximum amount of boxes to split
      */
-    @SuppressWarnings("NullAway") // mTimingLogger initialization and access guarded by LOG_TIMINGS.
     private void splitBoxes(final PriorityQueue<Vbox> queue, final int maxSize) {
         while (queue.size() < maxSize) {
             final Vbox vbox = queue.poll();
@@ -179,16 +148,9 @@
             if (vbox != null && vbox.canSplit()) {
                 // First split the box, and offer the result
                 queue.offer(vbox.splitBox());
-
-                if (LOG_TIMINGS) {
-                    mTimingLogger.addSplit("Box split");
-                }
                 // Then offer the box back
                 queue.offer(vbox);
             } else {
-                if (LOG_TIMINGS) {
-                    mTimingLogger.addSplit("All boxes split");
-                }
                 // If we get here then there are no more boxes to split, so return
                 return;
             }
diff --git a/palette/palette/src/main/java/androidx/palette/graphics/Palette.java b/palette/palette/src/main/java/androidx/palette/graphics/Palette.java
index 5ce2665..0fe8091 100644
--- a/palette/palette/src/main/java/androidx/palette/graphics/Palette.java
+++ b/palette/palette/src/main/java/androidx/palette/graphics/Palette.java
@@ -19,10 +19,8 @@
 import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.graphics.Rect;
-import android.os.AsyncTask;
 import android.util.Log;
 import android.util.SparseBooleanArray;
-import android.util.TimingLogger;
 
 import androidx.annotation.ColorInt;
 import androidx.annotation.NonNull;
@@ -30,6 +28,7 @@
 import androidx.annotation.Px;
 import androidx.collection.SimpleArrayMap;
 import androidx.core.graphics.ColorUtils;
+import androidx.core.util.Preconditions;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -135,7 +134,7 @@
      */
     @NonNull
     @Deprecated
-    public static AsyncTask<Bitmap, Void, Palette> generateAsync(
+    public static android.os.AsyncTask<Bitmap, Void, Palette> generateAsync(
             @NonNull Bitmap bitmap, @NonNull PaletteAsyncListener listener) {
         return from(bitmap).generate(listener);
     }
@@ -145,7 +144,7 @@
      */
     @NonNull
     @Deprecated
-    public static AsyncTask<Bitmap, Void, Palette> generateAsync(
+    public static android.os.AsyncTask<Bitmap, Void, Palette> generateAsync(
             @NonNull Bitmap bitmap, int numColors, @NonNull PaletteAsyncListener listener) {
         return from(bitmap).maximumColorCount(numColors).generate(listener);
     }
@@ -777,10 +776,6 @@
          */
         @NonNull
         public Palette generate() {
-            final TimingLogger logger = LOG_TIMINGS
-                    ? new TimingLogger(LOG_TAG, "Generation")
-                    : null;
-
             List<Swatch> swatches;
 
             if (mBitmap != null) {
@@ -789,10 +784,6 @@
                 // First we'll scale down the bitmap if needed
                 final Bitmap bitmap = scaleBitmapDown(mBitmap);
 
-                if (logger != null) {
-                    logger.addSplit("Processed Bitmap");
-                }
-
                 final Rect region = mRegion;
                 if (bitmap != mBitmap && region != null) {
                     // If we have a scaled bitmap and a selected region, we need to scale down the
@@ -818,10 +809,6 @@
                 }
 
                 swatches = quantizer.getQuantizedColors();
-
-                if (logger != null) {
-                    logger.addSplit("Color quantization completed");
-                }
             } else if (mSwatches != null) {
                 // Else we're using the provided swatches
                 swatches = mSwatches;
@@ -835,11 +822,6 @@
             // And make it generate itself
             p.generate();
 
-            if (logger != null) {
-                logger.addSplit("Created Palette");
-                logger.dumpToLog();
-            }
-
             return p;
         }
 
@@ -847,15 +829,18 @@
          * Generate the {@link Palette} asynchronously. The provided listener's
          * {@link PaletteAsyncListener#onGenerated} method will be called with the palette when
          * generated.
+         *
+         * @deprecated Use the standard <code>java.util.concurrent</code> or
+         * <a href="https://developer.android.com/topic/libraries/architecture/coroutines">
+         * Kotlin concurrency utilities</a> to call {@link #generate()} instead.
          */
         @NonNull
-        public AsyncTask<Bitmap, Void, Palette> generate(
+        @Deprecated
+        public android.os.AsyncTask<Bitmap, Void, Palette> generate(
                 @NonNull final PaletteAsyncListener listener) {
-            if (listener == null) {
-                throw new IllegalArgumentException("listener can not be null");
-            }
+            Preconditions.checkNotNull(listener);
 
-            return new AsyncTask<Bitmap, Void, Palette>() {
+            return new android.os.AsyncTask<Bitmap, Void, Palette>() {
                 @Override
                 @Nullable
                 protected Palette doInBackground(Bitmap... params) {
@@ -871,7 +856,7 @@
                 protected void onPostExecute(@Nullable Palette colorExtractor) {
                     listener.onGenerated(colorExtractor);
                 }
-            }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mBitmap);
+            }.executeOnExecutor(android.os.AsyncTask.THREAD_POOL_EXECUTOR, mBitmap);
         }
 
         private int[] getPixelsFromBitmap(Bitmap bitmap) {
diff --git a/preference/preference/src/androidTest/java/androidx/preference/tests/SeekBarPreferenceTest.kt b/preference/preference/src/androidTest/java/androidx/preference/tests/SeekBarPreferenceTest.kt
index cf2753b..e450f2b 100644
--- a/preference/preference/src/androidTest/java/androidx/preference/tests/SeekBarPreferenceTest.kt
+++ b/preference/preference/src/androidTest/java/androidx/preference/tests/SeekBarPreferenceTest.kt
@@ -259,6 +259,7 @@
                 // We want to swipe all the way to the right edge of the screen to avoid
                 // flakiness due to sometimes not reaching the end of the seekbar
                 val metrics = DisplayMetrics()
+                @Suppress("DEPRECATION") /* defaultDisplay */
                 activityRule.activity.windowManager.defaultDisplay.getMetrics(metrics)
                 val posX = metrics.widthPixels
                 val posY = location[1]
diff --git a/print/print/src/main/java/androidx/print/PrintHelper.java b/print/print/src/main/java/androidx/print/PrintHelper.java
index 260c6c3..ccbbad9 100644
--- a/print/print/src/main/java/androidx/print/PrintHelper.java
+++ b/print/print/src/main/java/androidx/print/PrintHelper.java
@@ -29,7 +29,6 @@
 import android.graphics.RectF;
 import android.graphics.pdf.PdfDocument;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.CancellationSignal;
@@ -57,6 +56,7 @@
 /**
  * Helper for printing bitmaps.
  */
+@SuppressWarnings("deprecation")
 public final class PrintHelper {
     private static final String LOG_TAG = "PrintHelper";
     // will be <= 300 dpi on A4 (8.3×11.7) paper (worst case of 150 dpi)
@@ -376,6 +376,7 @@
         printManager.print(jobName, printDocumentAdapter, attr);
     }
 
+    @SuppressWarnings("deprecation")
     @RequiresApi(19)
     private class PrintUriAdapter extends PrintDocumentAdapter {
         final String mJobName;
@@ -383,7 +384,7 @@
         final OnPrintFinishCallback mCallback;
         final int mFittingMode;
         PrintAttributes mAttributes;
-        AsyncTask<Uri, Boolean, Bitmap> mLoadBitmap;
+        android.os.AsyncTask<Uri, Boolean, Bitmap> mLoadBitmap;
         Bitmap mBitmap;
 
         PrintUriAdapter(String jobName, Uri imageFile, OnPrintFinishCallback callback,
@@ -422,7 +423,7 @@
                 return;
             }
 
-            mLoadBitmap = new AsyncTask<Uri, Boolean, Bitmap>() {
+            mLoadBitmap = new android.os.AsyncTask<Uri, Boolean, Bitmap>() {
                 @Override
                 protected void onPreExecute() {
                     // First register for cancellation requests.
@@ -633,7 +634,7 @@
                     .setMinMargins(new PrintAttributes.Margins(0, 0, 0, 0)).build();
         }
 
-        new AsyncTask<Void, Void, Throwable>() {
+        new android.os.AsyncTask<Void, Void, Throwable>() {
             @Override
             protected Throwable doInBackground(Void... params) {
                 try {
diff --git a/recyclerview/recyclerview/src/main/java/androidx/recyclerview/widget/MessageThreadUtil.java b/recyclerview/recyclerview/src/main/java/androidx/recyclerview/widget/MessageThreadUtil.java
index 7234d92..b56802e3 100644
--- a/recyclerview/recyclerview/src/main/java/androidx/recyclerview/widget/MessageThreadUtil.java
+++ b/recyclerview/recyclerview/src/main/java/androidx/recyclerview/widget/MessageThreadUtil.java
@@ -16,7 +16,6 @@
 
 package androidx.recyclerview.widget;
 
-import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.Looper;
 import android.util.Log;
@@ -83,11 +82,12 @@
         };
     }
 
+    @SuppressWarnings("deprecation") /* AsyncTask */
     @Override
     public BackgroundCallback<T> getBackgroundProxy(final BackgroundCallback<T> callback) {
         return new BackgroundCallback<T>() {
             final MessageQueue mQueue = new MessageQueue();
-            private final Executor mExecutor = AsyncTask.THREAD_POOL_EXECUTOR;
+            private final Executor mExecutor = android.os.AsyncTask.THREAD_POOL_EXECUTOR;
             AtomicBoolean mBackgroundRunning = new AtomicBoolean(false);
 
             static final int REFRESH = 1;
diff --git a/room/runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt b/room/runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt
index bb539aa..91d15b3 100644
--- a/room/runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt
+++ b/room/runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt
@@ -239,8 +239,10 @@
 
     // Spawns a new Java process to perform a copy using the open helper.
     private fun spawnCopyProcess(copyFromFile: File): Process {
-        val javaBin = System.getProperty("java.home") +
-                File.separator + "bin" + File.separator + "java"
+        val home = checkNotNull(System.getProperty("java.home")) {
+            "cannot read java.home from system properties."
+        }
+        val javaBin = home + File.separator + "bin" + File.separator + "java"
         val classpath = System.getProperty("java.class.path")
         val mainClass = RoomCopyTestProcess::class.java.canonicalName
         val tmpDirPath = tempDirectory.root.absolutePath
diff --git a/samples/Support4Demos/src/main/java/com/example/android/supportv4/Support4Demos.java b/samples/Support4Demos/src/main/java/com/example/android/supportv4/Support4Demos.java
index d90ad1e..9d9a3ca 100644
--- a/samples/Support4Demos/src/main/java/com/example/android/supportv4/Support4Demos.java
+++ b/samples/Support4Demos/src/main/java/com/example/android/supportv4/Support4Demos.java
@@ -16,7 +16,6 @@
 
 package com.example.android.supportv4;
 
-import android.app.ListActivity;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -33,7 +32,8 @@
 import java.util.List;
 import java.util.Map;
 
-public class Support4Demos extends ListActivity {
+@SuppressWarnings("deprecation")
+public class Support4Demos extends android.app.ListActivity {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
diff --git a/samples/Support4Demos/src/main/java/com/example/android/supportv4/app/LoaderThrottleSupport.java b/samples/Support4Demos/src/main/java/com/example/android/supportv4/app/LoaderThrottleSupport.java
index 4bd2251..bd459a4 100644
--- a/samples/Support4Demos/src/main/java/com/example/android/supportv4/app/LoaderThrottleSupport.java
+++ b/samples/Support4Demos/src/main/java/com/example/android/supportv4/app/LoaderThrottleSupport.java
@@ -30,7 +30,6 @@
 import android.database.sqlite.SQLiteOpenHelper;
 import android.database.sqlite.SQLiteQueryBuilder;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.provider.BaseColumns;
 import android.text.TextUtils;
@@ -398,7 +397,7 @@
         String mCurFilter;
 
         // Task we have running to populate the database.
-        AsyncTask<Void, Void, Void> mPopulatingTask;
+        android.os.AsyncTask<Void, Void, Void> mPopulatingTask;
 
         @Override
         public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
@@ -429,6 +428,7 @@
             clearItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
         }
 
+        @SuppressWarnings("deprecation") /* AsyncTask */
         @Override public boolean onOptionsItemSelected(MenuItem item) {
             final ContentResolver cr = getActivity().getContentResolver();
 
@@ -437,7 +437,7 @@
                     if (mPopulatingTask != null) {
                         mPopulatingTask.cancel(false);
                     }
-                    mPopulatingTask = new AsyncTask<Void, Void, Void>() {
+                    mPopulatingTask = new android.os.AsyncTask<Void, Void, Void>() {
                         @Override protected Void doInBackground(Void... params) {
                             for (char c='Z'; c>='A'; c--) {
                                 if (isCancelled()) {
@@ -465,13 +465,13 @@
                         mPopulatingTask.cancel(false);
                         mPopulatingTask = null;
                     }
-                    AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
-                        @Override protected Void doInBackground(Void... params) {
+                    new android.os.AsyncTask<Void, Void, Void>() {
+                        @Override
+                        protected Void doInBackground(Void... params) {
                             cr.delete(MainTable.CONTENT_URI, null, null);
                             return null;
                         }
-                    };
-                    task.execute((Void[])null);
+                    }.execute((Void[]) null);
                     return true;
 
                 default:
diff --git a/samples/Support4Demos/src/main/java/com/example/android/supportv4/media/AlbumArtCache.java b/samples/Support4Demos/src/main/java/com/example/android/supportv4/media/AlbumArtCache.java
index df74abc..10b85c8 100644
--- a/samples/Support4Demos/src/main/java/com/example/android/supportv4/media/AlbumArtCache.java
+++ b/samples/Support4Demos/src/main/java/com/example/android/supportv4/media/AlbumArtCache.java
@@ -17,7 +17,6 @@
 package com.example.android.supportv4.media;
 
 import android.graphics.Bitmap;
-import android.os.AsyncTask;
 import android.util.Log;
 
 import androidx.collection.LruCache;
@@ -79,6 +78,7 @@
         return result == null ? null : result[ICON_BITMAP_INDEX];
     }
 
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public void fetch(final String artUrl, final FetchListener listener) {
         // WARNING: for the sake of simplicity, simultaneous multi-thread fetch requests
         // are not handled properly: they may cause redundant costly operations, like HTTP
@@ -92,7 +92,7 @@
         }
         Log.d(TAG, "getOrFetch: starting asynctask to fetch " + artUrl);
 
-        new AsyncTask<Void, Void, Bitmap[]>() {
+        new android.os.AsyncTask<Void, Void, Bitmap[]>() {
             @Override
             protected Bitmap[] doInBackground(Void... objects) {
                 Bitmap[] bitmaps;
diff --git a/samples/Support4Demos/src/main/java/com/example/android/supportv4/media/model/MusicProvider.java b/samples/Support4Demos/src/main/java/com/example/android/supportv4/media/model/MusicProvider.java
index 0e2a35c..be9ab9a 100644
--- a/samples/Support4Demos/src/main/java/com/example/android/supportv4/media/model/MusicProvider.java
+++ b/samples/Support4Demos/src/main/java/com/example/android/supportv4/media/model/MusicProvider.java
@@ -16,7 +16,6 @@
 
 package com.example.android.supportv4.media.model;
 
-import android.os.AsyncTask;
 import android.support.v4.media.MediaMetadataCompat;
 import android.util.Log;
 
@@ -174,6 +173,7 @@
      * Get the list of music tracks from a server and caches the track information
      * for future reference, keying tracks by musicId and grouping by genre.
      */
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public void retrieveMediaAsync(final Callback callback) {
         Log.d(TAG, "retrieveMediaAsync called");
         if (mCurrentState == State.INITIALIZED) {
@@ -183,7 +183,7 @@
         }
 
         // Asynchronously load the music catalog in a separate thread
-        new AsyncTask<Void, Void, State>() {
+        new android.os.AsyncTask<Void, Void, State>() {
             @Override
             protected State doInBackground(Void... params) {
                 retrieveMedia();
diff --git a/samples/Support7Demos/src/main/AndroidManifest.xml b/samples/Support7Demos/src/main/AndroidManifest.xml
index 0433f43..203af7f 100644
--- a/samples/Support7Demos/src/main/AndroidManifest.xml
+++ b/samples/Support7Demos/src/main/AndroidManifest.xml
@@ -104,6 +104,7 @@
                 android:process=":mrp">
             <intent-filter>
                 <action android:name="android.media.MediaRouteProviderService" />
+                <action android:name="android.media.MediaRoute2ProviderService" />
             </intent-filter>
         </service>
 
@@ -112,6 +113,7 @@
             android:process=":dynamic_mrp">
             <intent-filter>
                 <action android:name="android.media.MediaRouteProviderService" />
+                <action android:name="android.media.MediaRoute2ProviderService" />
             </intent-filter>
         </service>
 
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/Support7Demos.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/Support7Demos.java
index 21cad28..3feb3f3 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/Support7Demos.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/Support7Demos.java
@@ -16,7 +16,6 @@
 
 package com.example.android.supportv7;
 
-import android.app.ListActivity;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -33,7 +32,8 @@
 import java.util.List;
 import java.util.Map;
 
-public class Support7Demos extends ListActivity {
+@SuppressWarnings("deprecation")
+public class Support7Demos extends android.app.ListActivity {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/ImageLoader.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/ImageLoader.java
index 35c7e6e..a1ef580 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/ImageLoader.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/ImageLoader.java
@@ -17,7 +17,6 @@
 package com.example.android.supportv7.graphics;
 
 import android.graphics.Bitmap;
-import android.os.AsyncTask;
 import android.provider.MediaStore;
 import android.widget.ImageView;
 
@@ -43,6 +42,7 @@
         void onImageLoaded(Bitmap bitmap);
     }
 
+    @SuppressWarnings("deprecation") /* AsyncTask */
     static void loadMediaStoreThumbnail(final ImageView imageView,
             final long id,
             final Listener listener) {
@@ -58,7 +58,7 @@
             return;
         }
 
-        new AsyncTask<Void, Void, Bitmap>() {
+        new android.os.AsyncTask<Void, Void, Bitmap>() {
             @Override
             protected Bitmap doInBackground(Void... params) {
                 return MediaStore.Images.Thumbnails.getThumbnail(
@@ -81,7 +81,7 @@
                     }
                 }
             }
-        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+        }.executeOnExecutor(android.os.AsyncTask.THREAD_POOL_EXECUTOR);
     }
 
     /**
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/PaletteActivity.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/PaletteActivity.java
index eb6483d..8e67c3a 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/PaletteActivity.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/PaletteActivity.java
@@ -207,6 +207,7 @@
                         cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID));
 
                 ImageLoader.loadMediaStoreThumbnail(imageView, id, new ImageLoader.Listener() {
+                    @SuppressWarnings("deprecation")
                     @Override
                     public void onImageLoaded(Bitmap bitmap) {
                         new Palette.Builder(bitmap).maximumColorCount(mNumColors).generate(
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/PaletteDetailActivity.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/PaletteDetailActivity.java
index 01adffb..13d0820 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/PaletteDetailActivity.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/graphics/PaletteDetailActivity.java
@@ -126,6 +126,7 @@
 
         ImageLoader.loadMediaStoreThumbnail(mImageView, id, new ImageLoader.Listener() {
             @Override
+            @SuppressWarnings("deprecation")
             public void onImageLoaded(Bitmap bitmap) {
                 new Palette.Builder(bitmap).maximumColorCount(numColors).generate(
                         new Palette.PaletteAsyncListener() {
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/LocalPlayer.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/LocalPlayer.java
index ff95b0c..5c3bcb5 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/LocalPlayer.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/LocalPlayer.java
@@ -56,7 +56,6 @@
     private static final String TAG = "LocalPlayer";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
-    private final Context mContext;
     private final Handler mHandler = new Handler();
     private final Handler mUpdateSurfaceHandler = new Handler(mHandler.getLooper());
     private MediaPlayer mMediaPlayer;
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/OverlayDisplayWindow.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/OverlayDisplayWindow.java
index 89a4052..0efe75d 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/OverlayDisplayWindow.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/OverlayDisplayWindow.java
@@ -121,6 +121,7 @@
         }
 
         @Override
+        @SuppressWarnings("deprecation") /* getDefaultDisplay */
         public void show() {
             if (!mWindowVisible) {
                 mSurfaceView = new SurfaceView(mContext);
@@ -188,6 +189,7 @@
      * Implementation for API version 17+.
      */
     @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+    @SuppressWarnings("deprecation") /* getDefaultDisplay */
     private static final class JellybeanMr1Impl extends OverlayDisplayWindow {
         // When true, disables support for moving and resizing the overlay.
         // The window is made non-touchable, which makes it possible to
@@ -217,6 +219,7 @@
         private float mLiveTranslationY;
         private float mLiveScale = 1.0f;
 
+        @SuppressWarnings("deprecation") /* defaultDisplay */
         public JellybeanMr1Impl(Context context, String name,
                 int width, int height, int gravity) {
             super(context, name, width, height, gravity);
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/Player.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/Player.java
index 8d8ff3a..fe9589b 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/Player.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/Player.java
@@ -16,18 +16,31 @@
 
 package com.example.android.supportv7.media;
 
+import static android.support.v4.media.session.PlaybackStateCompat.ACTION_PAUSE;
+import static android.support.v4.media.session.PlaybackStateCompat.ACTION_PLAY;
+
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
 import android.content.Context;
+import android.content.Intent;
 import android.graphics.Bitmap;
 import android.os.Build;
 import android.support.v4.media.MediaMetadataCompat;
 import android.support.v4.media.session.MediaSessionCompat;
 import android.support.v4.media.session.PlaybackStateCompat;
 import android.util.Log;
+import android.view.KeyEvent;
 
 import androidx.annotation.RequiresApi;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
 import androidx.mediarouter.media.MediaControlIntent;
 import androidx.mediarouter.media.MediaRouter.RouteInfo;
 
+import com.example.android.supportv7.R;
 /**
  * Abstraction of common playback operations of media items, such as play,
  * seek, etc. Used by PlaybackManager as a backend to handle actual playback
@@ -45,14 +58,23 @@
     protected static final int STATE_PLAYING = 4;
     protected static final int STATE_PAUSED = 5;
 
+    protected static final String NOTIFICATION_CHANNEL_ID =
+            "com.example.android.supportv7.media.channel";
+    protected static final int NOTIFICATION_ID = 1;
+
     private static final long PLAYBACK_ACTIONS = PlaybackStateCompat.ACTION_PAUSE
             | PlaybackStateCompat.ACTION_PLAY;
     private static final PlaybackStateCompat INIT_PLAYBACK_STATE = new PlaybackStateCompat.Builder()
             .setState(PlaybackStateCompat.STATE_NONE, 0, .0f).build();
 
+    protected Context mContext;
     protected Callback mCallback;
     protected MediaSessionCompat mMediaSession;
 
+    protected String mNotificationChannelId;
+    private NotificationCompat.Action mPlayAction;
+    private NotificationCompat.Action mPauseAction;
+
     public abstract boolean isRemotePlayback();
     public abstract boolean isQueuingSupported();
 
@@ -127,8 +149,68 @@
                 "Description of the thing");
         bob.putBitmap(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON, getSnapshot());
         mMediaSession.setMetadata(bob.build());
+
+        maybeCreateNotificationChannel();
+        boolean isPlaying = currentItem.getState() == STATE_PREPARING_FOR_PLAY
+                || currentItem.getState() == STATE_PLAYING;
+        Notification notification = new NotificationCompat.Builder(mContext,
+                mNotificationChannelId)
+                .addAction(isPlaying ? mPauseAction : mPlayAction)
+                .setSmallIcon(R.drawable.app_sample_code)
+                .setContentTitle(currentItem.getTitle())
+                .setPriority(NotificationCompat.PRIORITY_LOW)
+                .setStyle(new androidx.media.app.NotificationCompat
+                        .DecoratedMediaCustomViewStyle()
+                        .setMediaSession(mMediaSession.getSessionToken())
+                        .setShowActionsInCompactView(0))
+                .build();
+
+        NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mContext);
+        notificationManager.notify(NOTIFICATION_ID, notification);
     }
 
+    private void maybeCreateNotificationChannel() {
+        if (mNotificationChannelId != null) {
+            return;
+        }
+        mNotificationChannelId = NOTIFICATION_CHANNEL_ID;
+        // Create the NotificationChannel, but only on API 26+ because
+        // the NotificationChannel class is new and not in the support library
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+            CharSequence name = "Channel";
+            String description = "Description";
+            int importance = NotificationManager.IMPORTANCE_LOW;
+            NotificationChannel channel = new NotificationChannel(
+                    mNotificationChannelId, name, importance);
+            channel.setDescription(description);
+            // Register the channel with the system; you can't change the importance
+            // or other notification behaviors after this
+            NotificationManager notificationManager =
+                    mContext.getSystemService(NotificationManager.class);
+            notificationManager.createNotificationChannel(channel);
+
+            mPlayAction = createNotificationAction(R.drawable.ic_media_play,
+                    "play", ACTION_PLAY);
+            mPauseAction = createNotificationAction(R.drawable.ic_media_pause,
+                    "pause", ACTION_PAUSE);
+        }
+    }
+
+    private NotificationCompat.Action createNotificationAction(int iconResId, CharSequence title,
+            @PlaybackStateCompat.Actions long action) {
+        return new NotificationCompat.Action(iconResId, title, createPendingIntent(action));
+    }
+
+    private PendingIntent createPendingIntent(@PlaybackStateCompat.Actions long action) {
+        int keyCode = PlaybackStateCompat.toKeyCode(action);
+        Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
+        intent.setComponent(new ComponentName(mContext.getPackageName(),
+                SampleMediaButtonReceiver.class.getName()));
+        intent.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, keyCode));
+
+        return PendingIntent.getBroadcast(mContext, keyCode, intent,
+                PendingIntent.FLAG_UPDATE_CURRENT);
+    }
     protected void publishState(int state) {
         if (mMediaSession == null) {
             return;
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/RemotePlayer.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/RemotePlayer.java
index aa84a22..ad98be9 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/RemotePlayer.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/RemotePlayer.java
@@ -44,7 +44,6 @@
 public class RemotePlayer extends Player {
     private static final String TAG = "RemotePlayer";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
-    private Context mContext;
     private RouteInfo mRoute;
     private boolean mEnqueuePending;
     private Bitmap mSnapshot;
@@ -127,15 +126,13 @@
         if (DEBUG) {
             Log.d(TAG, "play: item=" + item);
         }
-        mClient.play(item.getUri(), "video/mp4", null, 0, null, new ItemActionCallback() {
+        mClient.play(item.getUri(), "video/mp4", null, item.getPosition(), null,
+                new ItemActionCallback() {
             @Override
             public void onResult(Bundle data, String sessionId, MediaSessionStatus sessionStatus,
                     String itemId, MediaItemStatus itemStatus) {
                 logStatus("play: succeeded", sessionId, sessionStatus, itemId, itemStatus);
                 item.setRemoteItemId(itemId);
-                if (item.getPosition() > 0) {
-                    seekInternal(item);
-                }
                 if (item.getState() == MediaItemStatus.PLAYBACK_STATE_PAUSED) {
                     pause();
                 } else {
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleDynamicGroupMrp.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleDynamicGroupMrp.java
index a1d237b..7a6e82d 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleDynamicGroupMrp.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleDynamicGroupMrp.java
@@ -26,15 +26,16 @@
 import android.util.Log;
 
 import androidx.annotation.NonNull;
+import androidx.collection.ArrayMap;
 import androidx.mediarouter.media.MediaRouteDescriptor;
 import androidx.mediarouter.media.MediaRouteProvider;
 import androidx.mediarouter.media.MediaRouteProviderDescriptor;
 import androidx.mediarouter.media.MediaRouter.ControlRequestCallback;
+import androidx.mediarouter.media.MediaRouter.RouteInfo;
 
 import com.example.android.supportv7.R;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
@@ -61,6 +62,12 @@
 
     @Override
     public RouteController onCreateRouteController(String routeId) {
+        MediaRouteDescriptor routeDescriptor = mRouteDescriptors.get(routeId);
+        if (routeDescriptor == null) {
+            Log.w(TAG, "onCreateRouteController: Unknown route ID " + routeId);
+            return null;
+        }
+
         return new SampleDynamicGroupRouteController(routeId, null);
     }
 
@@ -87,47 +94,49 @@
         return mController;
     }
 
-    void copyRouteWithNewId(String routeId) {
+    // Make the given route a dynamic group route having a member route that is the given route
+    // device.
+    void makeDynamicGroupRoute(String routeId) {
         MediaRouteDescriptor routeDescriptor = mRouteDescriptors.get(routeId);
         if (routeDescriptor == null || !routeDescriptor.isValid()) {
-            Log.w(TAG, "copyRouteWithNewId: Route doesn't exist or isn't valid : " + routeId);
+            Log.w(TAG, "makeDynamicGroupRoute: Route doesn't exist or isn't valid : " + routeId);
             return;
         }
 
+        // Create a new route info describing the given route.
         String newRouteId = generateNewRouteId();
         MediaRouteDescriptor changedDescriptor = new MediaRouteDescriptor.Builder(routeDescriptor)
                 .setId(newRouteId)
                 .build();
         mRouteDescriptors.put(newRouteId, changedDescriptor);
 
-        // Change route ids in static groups
-        for (String memberRouteId : mRouteDescriptors.keySet()) {
-            MediaRouteDescriptor groupDescriptor = mRouteDescriptors.get(memberRouteId);
+        // Change route ID in static groups
+        for (String groupRouteId : mRouteDescriptors.keySet()) {
+            MediaRouteDescriptor groupDescriptor = mRouteDescriptors.get(groupRouteId);
             if (groupDescriptor.getGroupMemberIds().contains(routeId)) {
                 MediaRouteDescriptor newGroupDescriptor =
                         new MediaRouteDescriptor.Builder(groupDescriptor)
                                 .removeGroupMemberId(routeId)
                                 .addGroupMemberId(newRouteId)
                                 .build();
-                mRouteDescriptors.put(memberRouteId, newGroupDescriptor);
-                mController.updateDynamicRouteDescriptor(memberRouteId);
+                mRouteDescriptors.put(groupRouteId, newGroupDescriptor);
             }
         }
 
         mController.addDynamicRouteDescriptor(newRouteId);
 
-        MediaRouteDescriptor descriptor = new MediaRouteDescriptor.Builder(routeDescriptor)
+        MediaRouteDescriptor newDescriptor = new MediaRouteDescriptor.Builder(routeDescriptor)
                 .setId(routeId)
                 .setIsDynamicGroupRoute(true)
                 .setName(routeDescriptor.getName() + " +")
                 .build();
-        mRouteDescriptors.put(routeId, descriptor);
+        mRouteDescriptors.put(routeId, newDescriptor);
 
         if (routeDescriptor.getGroupMemberIds().isEmpty()) {
-            mController.onAddMemberRoute(newRouteId);
+            mController.addMember(newRouteId);
         } else {
             for (String memberId: routeDescriptor.getGroupMemberIds()) {
-                mController.onAddMemberRoute(memberId);
+                mController.addMember(memberId);
             }
         }
     }
@@ -141,6 +150,13 @@
         IntentSender is = PendingIntent.getActivity(getContext(), 99, settingsIntent,
                 PendingIntent.FLAG_UPDATE_CURRENT).getIntentSender();
 
+        mVolumes.put(VARIABLE_VOLUME_BASIC_ROUTE_ID + "1", VOLUME_DEFAULT);
+        mVolumes.put(VARIABLE_VOLUME_BASIC_ROUTE_ID + "2", VOLUME_DEFAULT);
+        mVolumes.put(VARIABLE_VOLUME_BASIC_ROUTE_ID + "3", VOLUME_DEFAULT);
+        mVolumes.put(VARIABLE_VOLUME_BASIC_ROUTE_ID + "4", VOLUME_DEFAULT);
+        mVolumes.put(FIXED_VOLUME_ROUTE_ID, VOLUME_DEFAULT);
+        mVolumes.put(STATIC_GROUP_ROUTE_ID, VOLUME_DEFAULT);
+
         MediaRouteDescriptor routeDescriptor1 = new MediaRouteDescriptor.Builder(
                 VARIABLE_VOLUME_BASIC_ROUTE_ID + "1",
                 r.getString(R.string.dg_tv_route_name1))
@@ -151,7 +167,7 @@
                 .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE)
                 .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE)
                 .setVolumeMax(VOLUME_MAX)
-                .setVolume(mVolume)
+                .setVolume(VOLUME_DEFAULT)
                 .setCanDisconnect(true)
                 .setSettingsActivity(is)
                 .build();
@@ -166,7 +182,7 @@
                 .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE)
                 .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE)
                 .setVolumeMax(VOLUME_MAX)
-                .setVolume(mVolume)
+                .setVolume(VOLUME_DEFAULT)
                 .setCanDisconnect(true)
                 .setSettingsActivity(is)
                 .build();
@@ -181,7 +197,7 @@
                 .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE)
                 .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE)
                 .setVolumeMax(VOLUME_MAX)
-                .setVolume(mVolume)
+                .setVolume(VOLUME_DEFAULT)
                 .setCanDisconnect(true)
                 .setSettingsActivity(is)
                 .build();
@@ -196,7 +212,7 @@
                 .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE)
                 .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE)
                 .setVolumeMax(VOLUME_MAX)
-                .setVolume(mVolume)
+                .setVolume(VOLUME_DEFAULT)
                 .setCanDisconnect(true)
                 .setSettingsActivity(is)
                 .build();
@@ -252,14 +268,16 @@
             extends MediaRouteProvider.DynamicGroupRouteController {
         private final String mRouteId;
         private final RouteControlHelper mHelper;
+        private final boolean mIsGroup;
 
         private List<String> mMemberRouteIds = new ArrayList<>();
-        private Map<String, DynamicRouteDescriptor> mDynamicRouteDescriptors = new HashMap<>();
+        private Map<String, DynamicRouteDescriptor> mDynamicRouteDescriptors = new ArrayMap<>();
         private int mTvSelectedCount;
 
         SampleDynamicGroupRouteController(String dynamicGroupRouteId,
                 List<String> memberIds) {
             mRouteId = dynamicGroupRouteId;
+            mIsGroup = memberIds != null;
             MediaRouteDescriptor selectedRouteDescriptor = mRouteDescriptors.get(mRouteId);
             mTvSelectedCount = countTvFromRoute(selectedRouteDescriptor);
 
@@ -306,136 +324,134 @@
 
         @Override
         public void onUpdateMemberRoutes(List<String> routeIds) {
-            mMemberRouteIds = routeIds;
-        }
+            if (!maybeMakeGroupRoute(mRouteId)) {
+                Log.w(TAG, "onUpdateMemberRoutes: Can't find the group route : " + mRouteId);
+                return;
+            }
 
-        private boolean ensureDynamicRoute(String routeId) {
-            MediaRouteDescriptor selectedRouteDescriptor = mRouteDescriptors.get(routeId);
-            if (selectedRouteDescriptor == null) {
-                return false;
+            for (String routeId : mMemberRouteIds) {
+                removeMember(routeId);
             }
-            if (!selectedRouteDescriptor.isDynamicGroupRoute()) {
-                // We should reinitialize here not to add members twice
-                mTvSelectedCount = 0;
-                mMemberRouteIds.clear();
-                copyRouteWithNewId(mRouteId);
+            for (String routeId : routeIds) {
+                addMember(routeId);
             }
-            return true;
+            updateGroupRouteDescriptor();
+            updateDynamicRouteDescriptors();
         }
 
         @Override
         public void onAddMemberRoute(@NonNull String routeId) {
-            DynamicRouteDescriptor dynamicDescriptor = mDynamicRouteDescriptors.get(routeId);
-            if (dynamicDescriptor == null) {
-                Log.w(TAG, "onAddMemberRoute: Ignored for routeId: " + routeId);
+            if (!maybeMakeGroupRoute(mRouteId)) {
+                Log.w(TAG, "onAddMemberRoute: Can't find the group route : " + mRouteId);
                 return;
             }
 
-            if (!ensureDynamicRoute(mRouteId)) {
-                Log.w(TAG, "onAddMemberRoute: Can't find selected route : " + mRouteId);
+            if (!addMember(routeId)) {
+                Log.w(TAG, "onAddMemberRoute: Failed to add a member route:" + " " + routeId);
                 return;
             }
 
-            // Add each member route do dynamic group
+            // Add each member route to the dynamic group
             MediaRouteDescriptor routeDescriptor = mRouteDescriptors.get(routeId);
-            if (routeDescriptor.getGroupMemberIds().size() > 0) {
-                onAddMemberRoutes(routeDescriptor.getGroupMemberIds());
+            for (String memberRouteId : routeDescriptor.getGroupMemberIds()) {
+                addMember(memberRouteId);
+            }
+            updateGroupRouteDescriptor();
+            updateDynamicRouteDescriptors();
+        }
+
+        private void updateGroupRouteDescriptor() {
+            MediaRouteDescriptor.Builder groupDescriptorBuilder =
+                    new MediaRouteDescriptor.Builder(mRouteDescriptors.get(mRouteId))
+                            .clearGroupMemberIds();
+            for (String memberRouteId : mMemberRouteIds) {
+                groupDescriptorBuilder.addGroupMemberId(memberRouteId);
+            }
+
+            mRouteDescriptors.put(mRouteId, groupDescriptorBuilder.build());
+            publishRoutes();
+        }
+
+        @Override
+        public void onRemoveMemberRoute(@NonNull String routeId) {
+            if (!maybeMakeGroupRoute(mRouteId)) {
+                Log.w(TAG, "onRemoveMemberRoute: Can't find the group route : " + mRouteId);
                 return;
             }
 
-            DynamicRouteDescriptor.Builder builder =
-                    new DynamicRouteDescriptor.Builder(dynamicDescriptor)
-                            .setSelectionState(DynamicRouteDescriptor.SELECTED);
+            if (!removeMember(routeId)) {
+                Log.w(TAG, "onRemoveMemberRoute: Failed to remove a member route : " + routeId);
+                return;
+            }
+            updateGroupRouteDescriptor();
+            updateDynamicRouteDescriptors();
+        }
 
-            // Make fixed volume route not unselectable.
+        private boolean addMember(String routeId) {
+            DynamicRouteDescriptor dynamicDescriptor = mDynamicRouteDescriptors.get(routeId);
+            if (dynamicDescriptor == null || !dynamicDescriptor.isGroupable()
+                    || mMemberRouteIds.contains(routeId)) {
+                return false;
+            }
+            mMemberRouteIds.add(routeId);
+
+            MediaRouteDescriptor routeDescriptor =
+                    mRouteDescriptors.get(dynamicDescriptor.getRouteDescriptor().getId());
+            DynamicRouteDescriptor.Builder builder =
+                    new DynamicRouteDescriptor.Builder(dynamicDescriptor);
+            builder.setSelectionState(DynamicRouteDescriptor.SELECTED);
+
+            //TODO: Depending on getVolumeHandling() doesn't look good to identify the route. It
+            // could be a signal that the current structure should be refactored.
+
+            // Use a unique feature of the not unselectable route.
             if (routeDescriptor.getVolumeHandling()
                     == MediaRouter.RouteInfo.PLAYBACK_VOLUME_FIXED) {
                 builder.setIsUnselectable(false);
             } else {
                 builder.setIsUnselectable(true);
             }
+
             mDynamicRouteDescriptors.put(routeId, builder.build());
-            mMemberRouteIds.add(routeId);
+
             if (routeDescriptor.getDeviceType() == MediaRouter.RouteInfo.DEVICE_TYPE_TV) {
                 mTvSelectedCount++;
             }
-
-            MediaRouteDescriptor groupDescriptor =
-                    new MediaRouteDescriptor.Builder(mRouteDescriptors.get(mRouteId))
-                            .addGroupMemberId(routeId)
-                            .build();
-            mRouteDescriptors.put(mRouteId, groupDescriptor);
-            updateDynamicRouteDescriptors();
-            publishRoutes();
+            return true;
         }
 
-        private void onAddMemberRoutes(List<String> memberRouteIds) {
-            MediaRouteDescriptor.Builder builder =
-                    new MediaRouteDescriptor.Builder(mRouteDescriptors.get(mRouteId));
-
-            for (String routeId : memberRouteIds) {
-                DynamicRouteDescriptor dynamicDescriptor = mDynamicRouteDescriptors.get(routeId);
-                if (dynamicDescriptor == null) {
-                    Log.w(TAG, "onAddMemberRoute: Ignored for routeId: " + routeId);
-                    return;
-                }
-
-                DynamicRouteDescriptor.Builder memberBuilder =
-                        new DynamicRouteDescriptor.Builder(dynamicDescriptor)
-                                .setSelectionState(DynamicRouteDescriptor.SELECTED);
-
-                MediaRouteDescriptor routeDescriptor = dynamicDescriptor.getRouteDescriptor();
-                // Make fixed volume route not unselectable.
-                if (routeDescriptor.getVolumeHandling()
-                        == MediaRouter.RouteInfo.PLAYBACK_VOLUME_FIXED) {
-                    memberBuilder.setIsUnselectable(false);
-                } else {
-                    memberBuilder.setIsUnselectable(true);
-                }
-                mDynamicRouteDescriptors.put(routeId, memberBuilder.build());
-                mMemberRouteIds.add(routeId);
-                if (routeDescriptor.getDeviceType() == MediaRouter.RouteInfo.DEVICE_TYPE_TV) {
-                    mTvSelectedCount++;
-                }
-                builder.addGroupMemberId(routeId);
-            }
-
-            MediaRouteDescriptor groupDescriptor = builder.build();
-            mRouteDescriptors.put(mRouteId, groupDescriptor);
-            publishRoutes();
-            updateDynamicRouteDescriptors();
-        }
-
-        @Override
-        public void onRemoveMemberRoute(@NonNull String routeId) {
+        private boolean removeMember(String routeId) {
             DynamicRouteDescriptor dynamicDescriptor = mDynamicRouteDescriptors.get(routeId);
             if (dynamicDescriptor == null || !dynamicDescriptor.isUnselectable()
                     || !mMemberRouteIds.remove(routeId)) {
-                Log.w(TAG, "onRemoveMemberRoute: Ignored for routeId: " + routeId);
-                return;
+                return false;
             }
 
-            if (!ensureDynamicRoute(mRouteId)) {
-                Log.w(TAG, "onRemoveMemberRoute: Can't find selected route : " + mRouteId);
-                return;
-            }
-
-            MediaRouteDescriptor routeDescriptor = dynamicDescriptor.getRouteDescriptor();
             DynamicRouteDescriptor.Builder builder =
                     new DynamicRouteDescriptor.Builder(dynamicDescriptor);
             builder.setSelectionState(DynamicRouteDescriptor.UNSELECTED);
             mDynamicRouteDescriptors.put(routeId, builder.build());
+
+            MediaRouteDescriptor routeDescriptor =
+                    mRouteDescriptors.get(dynamicDescriptor.getRouteDescriptor().getId());
             if (routeDescriptor.getDeviceType() == MediaRouter.RouteInfo.DEVICE_TYPE_TV) {
                 mTvSelectedCount--;
             }
+            return true;
+        }
 
-            MediaRouteDescriptor groupDescriptor =
-                    new MediaRouteDescriptor.Builder(mRouteDescriptors.get(mRouteId))
-                            .removeGroupMemberId(routeId)
-                            .build();
-            mRouteDescriptors.put(mRouteId, groupDescriptor);
-            publishRoutes();
-            updateDynamicRouteDescriptors();
+        private boolean maybeMakeGroupRoute(String routeId) {
+            MediaRouteDescriptor routeDescriptor = mRouteDescriptors.get(routeId);
+            if (routeDescriptor == null) {
+                return false;
+            }
+            if (!routeDescriptor.isDynamicGroupRoute()) {
+                // We should reinitialize here not to add members twice
+                mTvSelectedCount = 0;
+                mMemberRouteIds.clear();
+                makeDynamicGroupRoute(mRouteId);
+            }
+            return true;
         }
 
         //////////////////////////////////////////////
@@ -452,6 +468,16 @@
         public void onSelect() {
             Log.d(TAG, mRouteId + ": Selected");
             mHelper.onSelect();
+            if (mIsGroup) {
+                MediaRouteDescriptor groupDescriptor = mRouteDescriptors.get(mRouteId);
+                if (groupDescriptor != null) {
+                    mRouteDescriptors.put(mRouteId,
+                            new MediaRouteDescriptor.Builder(groupDescriptor)
+                                    .setConnectionState(RouteInfo.CONNECTION_STATE_CONNECTED)
+                                    .build());
+                    publishRoutes();
+                }
+            }
         }
 
         @Override
@@ -459,10 +485,21 @@
             Log.d(TAG, mRouteId + ": Unselected");
             mHelper.onUnselect();
 
-            if (mRouteDescriptors.get(mRouteId).isDynamicGroupRoute()) {
-                mRouteDescriptors.remove(mRouteId);
+            if (mIsGroup) {
+                MediaRouteDescriptor groupDescriptor = mRouteDescriptors.get(mRouteId);
+                if (groupDescriptor == null) {
+                    return;
+                }
+                if (groupDescriptor.isDynamicGroupRoute()) {
+                    mRouteDescriptors.remove(mRouteId);
+                } else {
+                    mRouteDescriptors.put(mRouteId,
+                            new MediaRouteDescriptor.Builder(groupDescriptor)
+                            .setConnectionState(RouteInfo.CONNECTION_STATE_DISCONNECTED)
+                            .build());
+                }
+                publishRoutes();
             }
-            publishRoutes();
         }
 
         @Override
@@ -488,29 +525,8 @@
             DynamicRouteDescriptor.Builder builder =
                     new DynamicRouteDescriptor.Builder(descriptor)
                             .setIsGroupable(true)
-                            .setIsTransferable(true)
-                            .setSelectionState(DynamicRouteDescriptor.UNSELECTED);
-            mDynamicRouteDescriptors.put(routeId, builder.build());
-        }
-
-        void updateDynamicRouteDescriptor(String routeId) {
-            MediaRouteDescriptor mediaDescriptor = mRouteDescriptors.get(routeId);
-            if (mediaDescriptor == null) {
-                Log.d(TAG, "updateDynamicRouteDescriptor : Ignored for route id " + routeId);
-                return;
-            }
-
-            DynamicRouteDescriptor dynamicDescriptor = mDynamicRouteDescriptors.get(routeId);
-            if (dynamicDescriptor == null) {
-                Log.d(TAG, "updateDynamicRouteDescriptor : Ignored for route id " + routeId);
-                return;
-            }
-            DynamicRouteDescriptor.Builder builder =
-                    new DynamicRouteDescriptor.Builder(mediaDescriptor)
-                            .setSelectionState(dynamicDescriptor.getSelectionState())
-                            .setIsUnselectable(dynamicDescriptor.isUnselectable())
-                            .setIsGroupable(dynamicDescriptor.isGroupable())
-                            .setIsTransferable(dynamicDescriptor.isTransferable());
+                            .setIsTransferable(false)
+                            .setSelectionState(DynamicRouteDescriptor.SELECTED);
             mDynamicRouteDescriptors.put(routeId, builder.build());
         }
 
@@ -522,8 +538,8 @@
         //         ungroupable.
         private void updateDynamicRouteDescriptors() {
             for (DynamicRouteDescriptor dynamicDescriptor : mDynamicRouteDescriptors.values()) {
-                MediaRouteDescriptor routeDescriptor = dynamicDescriptor.getRouteDescriptor();
-                String routeId = routeDescriptor.getId();
+                String routeId = dynamicDescriptor.getRouteDescriptor().getId();
+                MediaRouteDescriptor routeDescriptor = mRouteDescriptors.get(routeId);
                 if (mMemberRouteIds.contains(routeId)) {
                     // Skip selected routes.
                     continue;
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java
index 85a5619..33df783 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java
@@ -29,6 +29,7 @@
 import android.os.Bundle;
 import android.util.Log;
 
+import androidx.collection.ArrayMap;
 import androidx.mediarouter.media.MediaControlIntent;
 import androidx.mediarouter.media.MediaRouteDescriptor;
 import androidx.mediarouter.media.MediaRouteProvider;
@@ -57,6 +58,7 @@
     private static final String VARIABLE_VOLUME_SESSION_ROUTE_ID = "variable_session";
 
     protected static final int VOLUME_MAX = 100;
+    protected static final int VOLUME_DEFAULT = 25;
 
     /**
      * A custom media control intent category for special requests that are
@@ -147,7 +149,7 @@
         }
     }
 
-    protected int mVolume = 5;
+    protected Map<String, Integer> mVolumes = new ArrayMap<>();
     protected Map<String, MediaRouteDescriptor> mRouteDescriptors = new HashMap<>();
 
     public SampleMediaRouteProvider(Context context) {
@@ -169,6 +171,11 @@
         IntentSender is = PendingIntent.getActivity(getContext(), 99, settingsIntent,
                 PendingIntent.FLAG_UPDATE_CURRENT).getIntentSender();
 
+        mVolumes.put(FIXED_VOLUME_ROUTE_ID, VOLUME_DEFAULT);
+        mVolumes.put(VARIABLE_VOLUME_BASIC_ROUTE_ID, VOLUME_DEFAULT);
+        mVolumes.put(VARIABLE_VOLUME_QUEUING_ROUTE_ID, VOLUME_DEFAULT);
+        mVolumes.put(VARIABLE_VOLUME_SESSION_ROUTE_ID, VOLUME_DEFAULT);
+
         MediaRouteDescriptor routeDescriptor1 = new MediaRouteDescriptor.Builder(
                 FIXED_VOLUME_ROUTE_ID,
                 r.getString(R.string.fixed_volume_route_name))
@@ -191,7 +198,7 @@
                 .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE)
                 .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE)
                 .setVolumeMax(VOLUME_MAX)
-                .setVolume(mVolume)
+                .setVolume(VOLUME_DEFAULT)
                 .setSettingsActivity(is)
                 .build();
 
@@ -204,7 +211,7 @@
                 .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE)
                 .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE)
                 .setVolumeMax(VOLUME_MAX)
-                .setVolume(mVolume)
+                .setVolume(VOLUME_DEFAULT)
                 .setCanDisconnect(true)
                 .build();
 
@@ -219,7 +226,7 @@
                 .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE)
                 .setVolumeHandling(MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE)
                 .setVolumeMax(VOLUME_MAX)
-                .setVolume(mVolume)
+                .setVolume(VOLUME_DEFAULT)
                 .setIconUri(iconUri)
                 .build();
 
@@ -237,6 +244,14 @@
         setDescriptor(providerDescriptor);
     }
 
+    int getVolumeForRoute(String routeId) {
+        Integer volume = mVolumes.get(routeId);
+        if (volume == null) {
+            return VOLUME_DEFAULT;
+        }
+        return volume;
+    }
+
     final class SampleRouteController extends MediaRouteProvider.RouteController {
         private final String mRouteId;
         private RouteControlHelper mHelper;
@@ -257,19 +272,28 @@
         public void onSelect() {
             Log.d(TAG, mRouteId + ": Selected");
             mHelper.onSelect();
-            MediaRouteDescriptor groupDescriptor =
-                    new MediaRouteDescriptor.Builder(mRouteDescriptors.get(mRouteId))
-                            .setConnectionState(RouteInfo.CONNECTION_STATE_CONNECTED)
-                            .setVolume(mVolume)
-                            .build();
-            mRouteDescriptors.put(mRouteId, groupDescriptor);
-            publishRoutes();
+            MediaRouteDescriptor routeDescriptor = mRouteDescriptors.get(mRouteId);
+            if (routeDescriptor != null) {
+                mRouteDescriptors.put(mRouteId, new MediaRouteDescriptor.Builder(routeDescriptor)
+                        .setConnectionState(RouteInfo.CONNECTION_STATE_CONNECTED)
+                        .setVolume(getVolumeForRoute(mRouteId))
+                        .build());
+                publishRoutes();
+            }
         }
 
         @Override
         public void onUnselect() {
             Log.d(TAG, mRouteId + ": Unselected");
             mHelper.onUnselect();
+            MediaRouteDescriptor routeDescriptor = mRouteDescriptors.get(mRouteId);
+            if (routeDescriptor != null) {
+                mRouteDescriptors.put(mRouteId, new MediaRouteDescriptor.Builder(routeDescriptor)
+                        .setConnectionState(RouteInfo.CONNECTION_STATE_DISCONNECTED)
+                        .setVolume(getVolumeForRoute(mRouteId))
+                        .build());
+                publishRoutes();
+            }
         }
 
         @Override
@@ -323,15 +347,6 @@
 
         public void onUnselect() {
             mPlayer.release();
-            MediaRouteDescriptor groupDescriptor = mRouteDescriptors.get(mRouteId);
-            if (groupDescriptor != null) {
-                new MediaRouteDescriptor.Builder(groupDescriptor)
-                        .setConnectionState(RouteInfo.CONNECTION_STATE_DISCONNECTED)
-                        .setVolume(mVolume)
-                        .build();
-                mRouteDescriptors.put(mRouteId, groupDescriptor);
-            }
-            publishRoutes();
         }
 
         public void onSetVolume(int volume) {
@@ -342,7 +357,7 @@
 
         public void onUpdateVolume(int delta) {
             if (!mRouteId.equals(FIXED_VOLUME_ROUTE_ID)) {
-                setVolumeInternal(mVolume + delta);
+                setVolumeInternal(getVolumeForRoute(mRouteId) + delta);
             }
         }
 
@@ -394,14 +409,16 @@
 
         private void setVolumeInternal(int volume) {
             if (volume >= 0 && volume <= VOLUME_MAX) {
-                mVolume = volume;
-                Log.d(TAG, mRouteId + ": New volume is " + mVolume);
+                mVolumes.put(mRouteId, volume);
+                Log.d(TAG, mRouteId + ": New volume is " + volume);
                 AudioManager audioManager =
                         (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
-                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0);
+                int adjustedVolume = volume
+                        * audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) / VOLUME_MAX;
+                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, adjustedVolume, 0);
                 MediaRouteDescriptor groupDescriptor =
                         new MediaRouteDescriptor.Builder(mRouteDescriptors.get(mRouteId))
-                                .setVolume(mVolume)
+                                .setVolume(volume)
                                 .build();
                 mRouteDescriptors.put(mRouteId, groupDescriptor);
                 publishRoutes();
@@ -449,7 +466,7 @@
                     + ", metadata=" + metadata
                     + ", headers=" + headers
                     + ", receiver=" + receiver);
-            PlaylistItem item = mSessionManager.add(null, uri, mime, receiver);
+            PlaylistItem item = mSessionManager.add(null, uri, mime, pos, receiver);
             if (callback != null) {
                 if (item != null) {
                     Bundle result = new Bundle();
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouterActivity.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouterActivity.java
index 15d7c3b..8e1ee1bd 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouterActivity.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouterActivity.java
@@ -49,6 +49,7 @@
 import android.widget.TabHost.TabSpec;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.core.view.MenuItemCompat;
 import androidx.fragment.app.FragmentManager;
@@ -94,7 +95,6 @@
     private ImageButton mPauseResumeButton;
     private ImageButton mStopButton;
     private SeekBar mSeekBar;
-    private boolean mNeedResume;
     private boolean mSeeking;
 
     private final Handler mHandler = new Handler();
@@ -129,15 +129,20 @@
         }
 
         @Override
-        public void onRouteSelected(MediaRouter router, RouteInfo route) {
-            Log.d(TAG, "onRouteSelected: route=" + route);
+        public void onRouteSelected(@NonNull MediaRouter router, @NonNull RouteInfo route,
+                int reason) {
+            Log.d(TAG, "onRouteSelected: route=" + route + ", reason=" + reason);
 
             mPlayer = Player.create(SampleMediaRouterActivity.this, route, mMediaSession);
             if (isPresentationApiSupported()) {
                 mPlayer.updatePresentation();
             }
             mSessionManager.setPlayer(mPlayer);
-            mSessionManager.unsuspend();
+            if (reason == MediaRouter.UNSELECT_REASON_STOPPED) {
+                mSessionManager.stop();
+            } else {
+                mSessionManager.unsuspend();
+            }
 
             updateUi();
         }
@@ -211,6 +216,7 @@
 
         // Get the media router service.
         mMediaRouter = MediaRouter.getInstance(this);
+        mMediaRouter.enableTransfer();
 
         // Create a route selector for the type of routes that we care about.
         mSelector = new MediaRouteSelector.Builder()
@@ -482,26 +488,6 @@
     }
 
     @Override
-    public void onPause() {
-        // pause media player for local playback case only
-        if (!mPlayer.isRemotePlayback() && !mSessionManager.isPaused()) {
-            mNeedResume = true;
-            mSessionManager.pause();
-        }
-        super.onPause();
-    }
-
-    @Override
-    public void onResume() {
-        // resume media player for local playback case only
-        if (!mPlayer.isRemotePlayback() && mNeedResume) {
-            mSessionManager.resume();
-            mNeedResume = false;
-        }
-        super.onResume();
-    }
-
-    @Override
     public void onDestroy() {
         mSessionManager.stop();
         mPlayer.release();
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SessionManager.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SessionManager.java
index 979e2ea..feb6c5a 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SessionManager.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SessionManager.java
@@ -101,10 +101,11 @@
     }
 
     public PlaylistItem add(String title, Uri uri, String mime) {
-        return add(title, uri, mime, null);
+        return add(title, uri, mime, 0, null);
     }
 
-    public PlaylistItem add(String title, Uri uri, String mime, PendingIntent receiver) {
+    public PlaylistItem add(String title, Uri uri, String mime, long startPosition,
+            PendingIntent receiver) {
         if (DEBUG) {
             log("add: title=" + title + ", uri=" + uri + ", receiver=" + receiver);
         }
@@ -115,6 +116,7 @@
         // append new item with initial status PLAYBACK_STATE_PENDING
         PlaylistItem item = new PlaylistItem(Integer.toString(mSessionId),
                 Integer.toString(mItemId), title, uri, mime, receiver);
+        item.setPosition(startPosition);
         mPlaylist.add(item);
         mItemId++;
 
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/util/DiffUtilActivity.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/util/DiffUtilActivity.java
index 5019173..2d3b3d4 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/util/DiffUtilActivity.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/util/DiffUtilActivity.java
@@ -16,7 +16,6 @@
 package com.example.android.supportv7.util;
 
 import android.annotation.SuppressLint;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.view.View;
 import android.view.ViewGroup;
@@ -49,6 +48,7 @@
 
     @Override
     @SuppressLint("WrongThread")
+    @SuppressWarnings("deprecation") /* AsyncTask */
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         LinearLayout ll = new LinearLayout(this);
@@ -72,9 +72,8 @@
                     // already refreshing, do not allow modifications
                     return;
                 }
-                //noinspection unchecked
-                new AsyncTask<List<String>, Void, Pair<List<String>, DiffUtil.DiffResult>>() {
-
+                new android.os.AsyncTask<List<String>, Void, Pair<List<String>,
+                        DiffUtil.DiffResult>>() {
                     @Override
                     protected Pair<List<String>, DiffUtil.DiffResult> doInBackground(
                             List<String>... lists) {
diff --git a/samples/SupportAnimationDemos/src/main/java/com/example/android/support/animation/BrowseActivity.java b/samples/SupportAnimationDemos/src/main/java/com/example/android/support/animation/BrowseActivity.java
index 0fc447a..4065625 100644
--- a/samples/SupportAnimationDemos/src/main/java/com/example/android/support/animation/BrowseActivity.java
+++ b/samples/SupportAnimationDemos/src/main/java/com/example/android/support/animation/BrowseActivity.java
@@ -16,7 +16,6 @@
 
 package com.example.android.support.animation;
 
-import android.app.ListActivity;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -36,7 +35,8 @@
 /**
  * This activity lists all the activities in this application.
  */
-public class BrowseActivity extends ListActivity {
+@SuppressWarnings("deprecation")
+public class BrowseActivity extends android.app.ListActivity {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
diff --git a/samples/SupportLeanbackDemos/src/main/java/com/example/android/leanback/BackgroundHelper.java b/samples/SupportLeanbackDemos/src/main/java/com/example/android/leanback/BackgroundHelper.java
index 5b7cd39..3703bd4 100644
--- a/samples/SupportLeanbackDemos/src/main/java/com/example/android/leanback/BackgroundHelper.java
+++ b/samples/SupportLeanbackDemos/src/main/java/com/example/android/leanback/BackgroundHelper.java
@@ -20,7 +20,6 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
-import android.os.AsyncTask;
 import android.os.Handler;
 import android.util.Log;
 import android.view.View;
@@ -123,7 +122,8 @@
         }
     }
 
-    class LoadBitmapTaskBase extends AsyncTask<Request, Object, Request> {
+    @SuppressWarnings("deprecation") /* AsyncTask */
+    class LoadBitmapTaskBase extends android.os.AsyncTask<Request, Object, Request> {
         @Override
         protected Request doInBackground(Request... params) {
             boolean cancelled = isCancelled();
diff --git a/samples/SupportLeanbackDemos/src/main/java/com/example/android/leanback/PlaybackSeekAsyncDataProvider.java b/samples/SupportLeanbackDemos/src/main/java/com/example/android/leanback/PlaybackSeekAsyncDataProvider.java
index b5a94e7..7c812c1 100644
--- a/samples/SupportLeanbackDemos/src/main/java/com/example/android/leanback/PlaybackSeekAsyncDataProvider.java
+++ b/samples/SupportLeanbackDemos/src/main/java/com/example/android/leanback/PlaybackSeekAsyncDataProvider.java
@@ -17,7 +17,6 @@
 package com.example.android.leanback;
 
 import android.graphics.Bitmap;
-import android.os.AsyncTask;
 import android.util.Log;
 import android.util.SparseArray;
 
@@ -47,12 +46,12 @@
     int mLastRequestedIndex = -1;
 
     protected boolean isCancelled(Object task) {
-        return ((AsyncTask) task).isCancelled();
+        return ((android.os.AsyncTask) task).isCancelled();
     }
 
     protected abstract Bitmap doInBackground(Object task, int index, long position);
 
-    class LoadBitmapTask extends AsyncTask<Object, Object, Bitmap> {
+    class LoadBitmapTask extends android.os.AsyncTask<Object, Object, Bitmap> {
 
         int mIndex;
         ResultCallback mResultCallback;
@@ -101,6 +100,7 @@
     }
 
     @Override
+    @SuppressWarnings("deprecation") /* AsyncTask */
     public void getThumbnail(int index, ResultCallback callback) {
         Integer key = index;
         Bitmap bitmap = mCache.get(key);
@@ -118,7 +118,7 @@
                     // no normal task or prefetch for the position, create a new task
                     task = new LoadBitmapTask(index, callback);
                     mRequests.put(index, task);
-                    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+                    task.executeOnExecutor(android.os.AsyncTask.THREAD_POOL_EXECUTOR);
                 } else {
                     // update existing ResultCallback which might be normal task or prefetch
                     task.mResultCallback = callback;
@@ -133,6 +133,7 @@
         }
     }
 
+    @SuppressWarnings("deprecation") /* AsyncTask */
     protected void prefetch(int hintIndex, boolean forward) {
         for (Iterator<Map.Entry<Integer, Bitmap>> it =
                 mPrefetchCache.snapshot().entrySet().iterator(); it.hasNext(); ) {
@@ -151,7 +152,7 @@
                 if (task == null) {
                     task = new LoadBitmapTask(key, null);
                     mRequests.put(i, task);
-                    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+                    task.executeOnExecutor(android.os.AsyncTask.THREAD_POOL_EXECUTOR);
                 }
             }
         }
diff --git a/samples/SupportPreferenceDemos/src/main/java/com/example/androidx/preference/MainActivity.java b/samples/SupportPreferenceDemos/src/main/java/com/example/androidx/preference/MainActivity.java
index a0e5313..e6aba68 100644
--- a/samples/SupportPreferenceDemos/src/main/java/com/example/androidx/preference/MainActivity.java
+++ b/samples/SupportPreferenceDemos/src/main/java/com/example/androidx/preference/MainActivity.java
@@ -16,7 +16,6 @@
 
 package com.example.androidx.preference;
 
-import android.app.ListActivity;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -33,7 +32,8 @@
 /**
  * Activity that displays and handles launching the demo preference activities with a ListView.
  */
-public class MainActivity extends ListActivity {
+@SuppressWarnings("deprecation")
+public class MainActivity extends android.app.ListActivity {
 
     private static final String INTENT = "intent";
     private static final String NAME = "name";
diff --git a/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SliceSelectionDialog.java b/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SliceSelectionDialog.java
index b2d7ce3..b78738d 100644
--- a/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SliceSelectionDialog.java
+++ b/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SliceSelectionDialog.java
@@ -35,7 +35,6 @@
 import android.content.pm.ResolveInfo;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.Looper;
 import android.util.Log;
@@ -288,11 +287,12 @@
     private static class IconCache {
         private final HashMap<String, Drawable> mIcons = new HashMap<>();
 
+        @SuppressWarnings("deprecation") /* AsyncTask */
         private void loadIcon(ImageView iv, ProviderInfo provider, PackageManager pm) {
             if (mIcons.containsKey(provider.packageName)) {
                 iv.setImageDrawable(mIcons.get(provider.packageName));
             }
-            AsyncTask.execute(() -> {
+            android.os.AsyncTask.execute(() -> {
                 mIcons.put(provider.packageName, provider.loadIcon(pm));
                 iv.post(() -> iv.setImageDrawable(mIcons.get(provider.packageName)));
             });
diff --git a/samples/SupportTransitionDemos/src/main/java/com/example/android/support/transition/SupportTransitionDemos.java b/samples/SupportTransitionDemos/src/main/java/com/example/android/support/transition/SupportTransitionDemos.java
index a2345bf..39b36f5 100644
--- a/samples/SupportTransitionDemos/src/main/java/com/example/android/support/transition/SupportTransitionDemos.java
+++ b/samples/SupportTransitionDemos/src/main/java/com/example/android/support/transition/SupportTransitionDemos.java
@@ -16,7 +16,6 @@
 
 package com.example.android.support.transition;
 
-import android.app.ListActivity;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -33,7 +32,8 @@
 import java.util.List;
 import java.util.Map;
 
-public class SupportTransitionDemos extends ListActivity {
+@SuppressWarnings("deprecation")
+public class SupportTransitionDemos extends android.app.ListActivity {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
diff --git a/sharetarget/sharetarget/src/main/java/androidx/sharetarget/ChooserTargetServiceCompat.java b/sharetarget/sharetarget/src/main/java/androidx/sharetarget/ChooserTargetServiceCompat.java
index 90b91d1..5ed3259 100644
--- a/sharetarget/sharetarget/src/main/java/androidx/sharetarget/ChooserTargetServiceCompat.java
+++ b/sharetarget/sharetarget/src/main/java/androidx/sharetarget/ChooserTargetServiceCompat.java
@@ -22,8 +22,6 @@
 import android.content.Context;
 import android.content.IntentFilter;
 import android.os.Bundle;
-import android.service.chooser.ChooserTarget;
-import android.service.chooser.ChooserTargetService;
 import android.util.Log;
 
 import androidx.annotation.NonNull;
@@ -48,13 +46,14 @@
  */
 @RequiresApi(23)
 @RestrictTo(LIBRARY_GROUP_PREFIX)
-public class ChooserTargetServiceCompat extends ChooserTargetService {
+@SuppressWarnings("deprecation")
+public class ChooserTargetServiceCompat extends android.service.chooser.ChooserTargetService {
 
     static final String TAG = "ChooserServiceCompat";
 
     @Override
-    public List<ChooserTarget> onGetChooserTargets(ComponentName targetActivityName,
-            IntentFilter matchedFilter) {
+    public List<android.service.chooser.ChooserTarget> onGetChooserTargets(
+            ComponentName targetActivityName, IntentFilter matchedFilter) {
         Context context = getApplicationContext();
 
         // Retrieve share targets
@@ -107,7 +106,7 @@
 
     @VisibleForTesting
     @NonNull
-    static List<ChooserTarget> convertShortcutsToChooserTargets(
+    static List<android.service.chooser.ChooserTarget> convertShortcutsToChooserTargets(
             @NonNull ShortcutInfoCompatSaverImpl shortcutSaver,
             @NonNull List<ShortcutHolder> matchedShortcuts) {
         if (matchedShortcuts.isEmpty()) {
@@ -115,7 +114,7 @@
         }
         Collections.sort(matchedShortcuts);
 
-        ArrayList<ChooserTarget> chooserTargets = new ArrayList<>();
+        ArrayList<android.service.chooser.ChooserTarget> chooserTargets = new ArrayList<>();
         float currentScore = 1.0f;
         int lastRank = matchedShortcuts.get(0).getShortcut().getRank();
         for (ShortcutHolder holder : matchedShortcuts) {
@@ -135,7 +134,7 @@
                 currentScore -= 0.01f;
                 lastRank = shortcut.getRank();
             }
-            chooserTargets.add(new ChooserTarget(
+            chooserTargets.add(new android.service.chooser.ChooserTarget(
                     shortcut.getShortLabel(),
                     shortcutIcon == null ? null : shortcutIcon.toIcon(),
                     currentScore,
diff --git a/slices/core/src/main/res/values-es/strings.xml b/slices/core/src/main/res/values-es/strings.xml
index 44283aa..690a226 100644
--- a/slices/core/src/main/res/values-es/strings.xml
+++ b/slices/core/src/main/res/values-es/strings.xml
@@ -18,7 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="abc_slices_permission_request" msgid="3604847235923472451">"<xliff:g id="APP_0">%1$s</xliff:g> quiere mostrar fragmentos de <xliff:g id="APP_2">%2$s</xliff:g>"</string>
-    <string name="abc_slice_permission_title" msgid="4175332421259324948">"¿Permitir que <xliff:g id="APP_0">%1$s</xliff:g> muestre fragmentos de <xliff:g id="APP_2">%2$s</xliff:g>?"</string>
+    <string name="abc_slice_permission_title" msgid="4175332421259324948">"¿Quieres permitir que <xliff:g id="APP_0">%1$s</xliff:g> muestre fragmentos de <xliff:g id="APP_2">%2$s</xliff:g>?"</string>
     <string name="abc_slice_permission_text_1" msgid="4525743640399572811">"- Puede leer información de <xliff:g id="APP">%1$s</xliff:g>"</string>
     <string name="abc_slice_permission_text_2" msgid="7323565634860251794">"- Puede realizar acciones en <xliff:g id="APP">%1$s</xliff:g>"</string>
     <string name="abc_slice_permission_checkbox" msgid="5696872682700058611">"Permitir que <xliff:g id="APP">%1$s</xliff:g> muestre fragmentos de cualquier aplicación"</string>
diff --git a/slices/core/src/main/res/values-eu/strings.xml b/slices/core/src/main/res/values-eu/strings.xml
index e608918..1067f848 100644
--- a/slices/core/src/main/res/values-eu/strings.xml
+++ b/slices/core/src/main/res/values-eu/strings.xml
@@ -21,7 +21,7 @@
     <string name="abc_slice_permission_title" msgid="4175332421259324948">"<xliff:g id="APP_2">%2$s</xliff:g> aplikazioaren zatiak erakusteko baimena eman nahi diozu <xliff:g id="APP_0">%1$s</xliff:g> aplikazioari?"</string>
     <string name="abc_slice_permission_text_1" msgid="4525743640399572811">"- <xliff:g id="APP">%1$s</xliff:g> aplikazioaren informazioa irakur dezake."</string>
     <string name="abc_slice_permission_text_2" msgid="7323565634860251794">"- <xliff:g id="APP">%1$s</xliff:g> aplikazioan ekintzak gauza ditzake."</string>
-    <string name="abc_slice_permission_checkbox" msgid="5696872682700058611">"Eman aplikazio guztien zatiak erakusteko baimena <xliff:g id="APP">%1$s</xliff:g> aplikazioari"</string>
+    <string name="abc_slice_permission_checkbox" msgid="5696872682700058611">"Baimendu <xliff:g id="APP">%1$s</xliff:g> aplikazioari edozein aplikazioren zatiak erakustea"</string>
     <string name="abc_slice_permission_allow" msgid="5024599872061409708">"Baimendu"</string>
     <string name="abc_slice_permission_deny" msgid="3819478292430407705">"Ukatu"</string>
 </resources>
diff --git a/slices/core/src/main/res/values-ne/strings.xml b/slices/core/src/main/res/values-ne/strings.xml
index 0244857..c5c9de3 100644
--- a/slices/core/src/main/res/values-ne/strings.xml
+++ b/slices/core/src/main/res/values-ne/strings.xml
@@ -23,5 +23,5 @@
     <string name="abc_slice_permission_text_2" msgid="7323565634860251794">"- यसले <xliff:g id="APP">%1$s</xliff:g> भित्र कारबाही गर्न सक्छ"</string>
     <string name="abc_slice_permission_checkbox" msgid="5696872682700058611">"<xliff:g id="APP">%1$s</xliff:g> लाई सबै अनुप्रयोगका स्लाइसहरू देखाउन अनुमति दिनुहोस्"</string>
     <string name="abc_slice_permission_allow" msgid="5024599872061409708">"अनुमति दिनुहोस्"</string>
-    <string name="abc_slice_permission_deny" msgid="3819478292430407705">"नदिने"</string>
+    <string name="abc_slice_permission_deny" msgid="3819478292430407705">"अस्वीकार गर्नु…"</string>
 </resources>
diff --git a/slices/core/src/main/res/values-pt-rPT/strings.xml b/slices/core/src/main/res/values-pt-rPT/strings.xml
index 7740b87..ea2a008 100644
--- a/slices/core/src/main/res/values-pt-rPT/strings.xml
+++ b/slices/core/src/main/res/values-pt-rPT/strings.xml
@@ -18,7 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="abc_slices_permission_request" msgid="3604847235923472451">"A aplicação <xliff:g id="APP_0">%1$s</xliff:g> pretende mostrar partes da aplicação <xliff:g id="APP_2">%2$s</xliff:g>."</string>
-    <string name="abc_slice_permission_title" msgid="4175332421259324948">"Permitir que a aplicação <xliff:g id="APP_0">%1$s</xliff:g> mostre partes da aplicação <xliff:g id="APP_2">%2$s</xliff:g>?"</string>
+    <string name="abc_slice_permission_title" msgid="4175332421259324948">"Pretende permitir que a aplicação <xliff:g id="APP_0">%1$s</xliff:g> mostre partes da aplicação <xliff:g id="APP_2">%2$s</xliff:g>?"</string>
     <string name="abc_slice_permission_text_1" msgid="4525743640399572811">"- Pode ler informações da aplicação <xliff:g id="APP">%1$s</xliff:g>"</string>
     <string name="abc_slice_permission_text_2" msgid="7323565634860251794">"- Pode realizar ações na aplicação <xliff:g id="APP">%1$s</xliff:g>"</string>
     <string name="abc_slice_permission_checkbox" msgid="5696872682700058611">"Permitir que a aplicação <xliff:g id="APP">%1$s</xliff:g> mostre partes de qualquer aplicação"</string>
diff --git a/slices/view/src/androidTest/java/androidx/slice/widget/CachedSliceLiveDataTest.java b/slices/view/src/androidTest/java/androidx/slice/widget/CachedSliceLiveDataTest.java
index c6f9a6e..9c35fc2 100644
--- a/slices/view/src/androidTest/java/androidx/slice/widget/CachedSliceLiveDataTest.java
+++ b/slices/view/src/androidTest/java/androidx/slice/widget/CachedSliceLiveDataTest.java
@@ -32,7 +32,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.AsyncTask;
 
 import androidx.lifecycle.Observer;
 import androidx.slice.Slice;
@@ -169,7 +168,7 @@
         verify(mObserver, times(1)).onChanged(mSlice.capture());
         clearInvocations(mObserver);
 
-        AsyncTask.execute(new Runnable() {
+        android.os.AsyncTask.execute(new Runnable() {
             @Override
             public void run() {
                 try {
@@ -302,7 +301,7 @@
 
     private void waitForAsync() throws InterruptedException {
         final CountDownLatch latch = new CountDownLatch(1);
-        AsyncTask.execute(new Runnable() {
+        android.os.AsyncTask.execute(new Runnable() {
             @Override
             public void run() {
                 latch.countDown();
diff --git a/slices/view/src/androidTest/java/androidx/slice/widget/SliceLiveDataTest.java b/slices/view/src/androidTest/java/androidx/slice/widget/SliceLiveDataTest.java
index ae76464..88b0eb6 100644
--- a/slices/view/src/androidTest/java/androidx/slice/widget/SliceLiveDataTest.java
+++ b/slices/view/src/androidTest/java/androidx/slice/widget/SliceLiveDataTest.java
@@ -33,7 +33,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.AsyncTask;
 
 import androidx.lifecycle.LiveData;
 import androidx.lifecycle.Observer;
@@ -155,7 +154,7 @@
         verify(mObserver, times(1)).onChanged(mSlice.capture());
         clearInvocations(mObserver);
 
-        AsyncTask.execute(new Runnable() {
+        android.os.AsyncTask.execute(new Runnable() {
             @Override
             public void run() {
                 try {
@@ -295,7 +294,7 @@
 
     private void waitForAsync() throws InterruptedException {
         final CountDownLatch latch = new CountDownLatch(1);
-        AsyncTask.execute(new Runnable() {
+        android.os.AsyncTask.execute(new Runnable() {
             @Override
             public void run() {
                 latch.countDown();
diff --git a/slices/view/src/main/java/androidx/slice/SliceViewManagerBase.java b/slices/view/src/main/java/androidx/slice/SliceViewManagerBase.java
index 12c839a..4ab5626 100644
--- a/slices/view/src/main/java/androidx/slice/SliceViewManagerBase.java
+++ b/slices/view/src/main/java/androidx/slice/SliceViewManagerBase.java
@@ -22,7 +22,6 @@
 import android.content.Context;
 import android.database.ContentObserver;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.Looper;
 import android.util.ArrayMap;
@@ -145,8 +144,9 @@
         private final ContentObserver mObserver = new ContentObserver(
                 new Handler(Looper.getMainLooper())) {
             @Override
+            @SuppressWarnings("deprecation") /* AsyncTask */
             public void onChange(boolean selfChange) {
-                AsyncTask.execute(mUpdateSlice);
+                android.os.AsyncTask.execute(mUpdateSlice);
             }
         };
     }
diff --git a/slices/view/src/main/java/androidx/slice/widget/SliceLiveData.java b/slices/view/src/main/java/androidx/slice/widget/SliceLiveData.java
index 29248a6..6481272 100644
--- a/slices/view/src/main/java/androidx/slice/widget/SliceLiveData.java
+++ b/slices/view/src/main/java/androidx/slice/widget/SliceLiveData.java
@@ -22,7 +22,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Looper;
 import android.util.Log;
 
@@ -212,6 +211,7 @@
          * @hide
          */
         @RestrictTo(LIBRARY)
+        @SuppressWarnings("deprecation") /* AsyncTask */
         protected synchronized void loadInitialSlice() {
             if (mInitialSliceLoaded) {
                 return;
@@ -247,7 +247,7 @@
                 mPendingIntent.add(intent);
             }
             if (mActive && !mSliceCallbackRegistered) {
-                AsyncTask.execute(mUpdateSlice);
+                android.os.AsyncTask.execute(mUpdateSlice);
                 mSliceViewManager.registerSliceCallback(mUri, mSliceCallback);
                 mSliceCallbackRegistered = true;
             }
@@ -257,7 +257,7 @@
         protected void onActive() {
             mActive = true;
             if (!mInitialSliceLoaded) {
-                AsyncTask.execute(new Runnable() {
+                android.os.AsyncTask.execute(new Runnable() {
                     @Override
                     public void run() {
                         loadInitialSlice();
@@ -265,7 +265,7 @@
                 });
             }
             if (mLive && !mSliceCallbackRegistered) {
-                AsyncTask.execute(mUpdateSlice);
+                android.os.AsyncTask.execute(mUpdateSlice);
                 mSliceViewManager.registerSliceCallback(mUri, mSliceCallback);
                 mSliceCallbackRegistered = true;
             }
@@ -376,8 +376,9 @@
         }
 
         @Override
+        @SuppressWarnings("deprecation") /* AsyncTask */
         protected void onActive() {
-            AsyncTask.execute(mUpdateSlice);
+            android.os.AsyncTask.execute(mUpdateSlice);
             if (mUri != null) {
                 mSliceViewManager.registerSliceCallback(mUri, mSliceCallback);
             }
diff --git a/slices/view/src/main/res/values-ky/strings.xml b/slices/view/src/main/res/values-ky/strings.xml
index 4730de0..63c7d13 100644
--- a/slices/view/src/main/res/values-ky/strings.xml
+++ b/slices/view/src/main/res/values-ky/strings.xml
@@ -20,7 +20,7 @@
     <string name="abc_slice_more_content" msgid="6405516388971241142">"+ <xliff:g id="NUMBER">%1$d</xliff:g>"</string>
     <string name="abc_slice_more" msgid="1983560225998630901">"Дагы"</string>
     <string name="abc_slice_show_more" msgid="1567717014004692768">"Дагы көрсөтүү"</string>
-    <string name="abc_slice_updated" msgid="8155085405396453848">"<xliff:g id="TIME">%1$s</xliff:g> жаңырды"</string>
+    <string name="abc_slice_updated" msgid="8155085405396453848">"<xliff:g id="TIME">%1$s</xliff:g> жаңыртылды"</string>
     <plurals name="abc_slice_duration_min" formatted="false" msgid="6996334305156847955">
       <item quantity="other"><xliff:g id="ID_2">%d</xliff:g> мүн. мурун</item>
       <item quantity="one"><xliff:g id="ID_1">%d</xliff:g> мүн. мурун</item>
diff --git a/slidingpanelayout/slidingpanelayout/api/1.1.0-rc01.txt b/slidingpanelayout/slidingpanelayout/api/1.1.0-rc01.txt
deleted file mode 100644
index 1c970ae..0000000
--- a/slidingpanelayout/slidingpanelayout/api/1.1.0-rc01.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-// Signature format: 3.0
-package androidx.slidingpanelayout.widget {
-
-  public class SlidingPaneLayout extends android.view.ViewGroup implements androidx.customview.widget.Openable {
-    ctor public SlidingPaneLayout(android.content.Context);
-    ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?);
-    ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?, int);
-    method protected boolean canScroll(android.view.View!, boolean, int, int, int);
-    method @Deprecated public boolean canSlide();
-    method public void close();
-    method public boolean closePane();
-    method @ColorInt public int getCoveredFadeColor();
-    method @Px public int getParallaxDistance();
-    method @ColorInt public int getSliderFadeColor();
-    method public boolean isOpen();
-    method public boolean isSlideable();
-    method public void open();
-    method public boolean openPane();
-    method public void setCoveredFadeColor(@ColorInt int);
-    method public void setPanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener?);
-    method public void setParallaxDistance(@Px int);
-    method @Deprecated public void setShadowDrawable(android.graphics.drawable.Drawable!);
-    method public void setShadowDrawableLeft(android.graphics.drawable.Drawable?);
-    method public void setShadowDrawableRight(android.graphics.drawable.Drawable?);
-    method @Deprecated public void setShadowResource(@DrawableRes int);
-    method public void setShadowResourceLeft(int);
-    method public void setShadowResourceRight(int);
-    method public void setSliderFadeColor(@ColorInt int);
-    method @Deprecated public void smoothSlideClosed();
-    method @Deprecated public void smoothSlideOpen();
-  }
-
-  public static class SlidingPaneLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public SlidingPaneLayout.LayoutParams();
-    ctor public SlidingPaneLayout.LayoutParams(int, int);
-    ctor public SlidingPaneLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(androidx.slidingpanelayout.widget.SlidingPaneLayout.LayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(android.content.Context, android.util.AttributeSet?);
-    field public float weight;
-  }
-
-  public static interface SlidingPaneLayout.PanelSlideListener {
-    method public void onPanelClosed(android.view.View);
-    method public void onPanelOpened(android.view.View);
-    method public void onPanelSlide(android.view.View, float);
-  }
-
-  public static class SlidingPaneLayout.SimplePanelSlideListener implements androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener {
-    ctor public SlidingPaneLayout.SimplePanelSlideListener();
-    method public void onPanelClosed(android.view.View!);
-    method public void onPanelOpened(android.view.View!);
-    method public void onPanelSlide(android.view.View!, float);
-  }
-
-}
-
diff --git a/slidingpanelayout/slidingpanelayout/api/public_plus_experimental_1.1.0-rc01.txt b/slidingpanelayout/slidingpanelayout/api/public_plus_experimental_1.1.0-rc01.txt
deleted file mode 100644
index 1c970ae..0000000
--- a/slidingpanelayout/slidingpanelayout/api/public_plus_experimental_1.1.0-rc01.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-// Signature format: 3.0
-package androidx.slidingpanelayout.widget {
-
-  public class SlidingPaneLayout extends android.view.ViewGroup implements androidx.customview.widget.Openable {
-    ctor public SlidingPaneLayout(android.content.Context);
-    ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?);
-    ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?, int);
-    method protected boolean canScroll(android.view.View!, boolean, int, int, int);
-    method @Deprecated public boolean canSlide();
-    method public void close();
-    method public boolean closePane();
-    method @ColorInt public int getCoveredFadeColor();
-    method @Px public int getParallaxDistance();
-    method @ColorInt public int getSliderFadeColor();
-    method public boolean isOpen();
-    method public boolean isSlideable();
-    method public void open();
-    method public boolean openPane();
-    method public void setCoveredFadeColor(@ColorInt int);
-    method public void setPanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener?);
-    method public void setParallaxDistance(@Px int);
-    method @Deprecated public void setShadowDrawable(android.graphics.drawable.Drawable!);
-    method public void setShadowDrawableLeft(android.graphics.drawable.Drawable?);
-    method public void setShadowDrawableRight(android.graphics.drawable.Drawable?);
-    method @Deprecated public void setShadowResource(@DrawableRes int);
-    method public void setShadowResourceLeft(int);
-    method public void setShadowResourceRight(int);
-    method public void setSliderFadeColor(@ColorInt int);
-    method @Deprecated public void smoothSlideClosed();
-    method @Deprecated public void smoothSlideOpen();
-  }
-
-  public static class SlidingPaneLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public SlidingPaneLayout.LayoutParams();
-    ctor public SlidingPaneLayout.LayoutParams(int, int);
-    ctor public SlidingPaneLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(androidx.slidingpanelayout.widget.SlidingPaneLayout.LayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(android.content.Context, android.util.AttributeSet?);
-    field public float weight;
-  }
-
-  public static interface SlidingPaneLayout.PanelSlideListener {
-    method public void onPanelClosed(android.view.View);
-    method public void onPanelOpened(android.view.View);
-    method public void onPanelSlide(android.view.View, float);
-  }
-
-  public static class SlidingPaneLayout.SimplePanelSlideListener implements androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener {
-    ctor public SlidingPaneLayout.SimplePanelSlideListener();
-    method public void onPanelClosed(android.view.View!);
-    method public void onPanelOpened(android.view.View!);
-    method public void onPanelSlide(android.view.View!, float);
-  }
-
-}
-
diff --git a/slidingpanelayout/slidingpanelayout/api/res-1.1.0-rc01.txt b/slidingpanelayout/slidingpanelayout/api/res-1.1.0-rc01.txt
deleted file mode 100644
index e69de29..0000000
--- a/slidingpanelayout/slidingpanelayout/api/res-1.1.0-rc01.txt
+++ /dev/null
diff --git a/slidingpanelayout/slidingpanelayout/api/restricted_1.1.0-rc01.txt b/slidingpanelayout/slidingpanelayout/api/restricted_1.1.0-rc01.txt
deleted file mode 100644
index 1c970ae..0000000
--- a/slidingpanelayout/slidingpanelayout/api/restricted_1.1.0-rc01.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-// Signature format: 3.0
-package androidx.slidingpanelayout.widget {
-
-  public class SlidingPaneLayout extends android.view.ViewGroup implements androidx.customview.widget.Openable {
-    ctor public SlidingPaneLayout(android.content.Context);
-    ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?);
-    ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?, int);
-    method protected boolean canScroll(android.view.View!, boolean, int, int, int);
-    method @Deprecated public boolean canSlide();
-    method public void close();
-    method public boolean closePane();
-    method @ColorInt public int getCoveredFadeColor();
-    method @Px public int getParallaxDistance();
-    method @ColorInt public int getSliderFadeColor();
-    method public boolean isOpen();
-    method public boolean isSlideable();
-    method public void open();
-    method public boolean openPane();
-    method public void setCoveredFadeColor(@ColorInt int);
-    method public void setPanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener?);
-    method public void setParallaxDistance(@Px int);
-    method @Deprecated public void setShadowDrawable(android.graphics.drawable.Drawable!);
-    method public void setShadowDrawableLeft(android.graphics.drawable.Drawable?);
-    method public void setShadowDrawableRight(android.graphics.drawable.Drawable?);
-    method @Deprecated public void setShadowResource(@DrawableRes int);
-    method public void setShadowResourceLeft(int);
-    method public void setShadowResourceRight(int);
-    method public void setSliderFadeColor(@ColorInt int);
-    method @Deprecated public void smoothSlideClosed();
-    method @Deprecated public void smoothSlideOpen();
-  }
-
-  public static class SlidingPaneLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public SlidingPaneLayout.LayoutParams();
-    ctor public SlidingPaneLayout.LayoutParams(int, int);
-    ctor public SlidingPaneLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(androidx.slidingpanelayout.widget.SlidingPaneLayout.LayoutParams);
-    ctor public SlidingPaneLayout.LayoutParams(android.content.Context, android.util.AttributeSet?);
-    field public float weight;
-  }
-
-  public static interface SlidingPaneLayout.PanelSlideListener {
-    method public void onPanelClosed(android.view.View);
-    method public void onPanelOpened(android.view.View);
-    method public void onPanelSlide(android.view.View, float);
-  }
-
-  public static class SlidingPaneLayout.SimplePanelSlideListener implements androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener {
-    ctor public SlidingPaneLayout.SimplePanelSlideListener();
-    method public void onPanelClosed(android.view.View!);
-    method public void onPanelOpened(android.view.View!);
-    method public void onPanelSlide(android.view.View!, float);
-  }
-
-}
-
diff --git a/swiperefreshlayout/swiperefreshlayout/api/1.2.0-alpha01.txt b/swiperefreshlayout/swiperefreshlayout/api/1.2.0-alpha01.txt
deleted file mode 100644
index 40ac939..0000000
--- a/swiperefreshlayout/swiperefreshlayout/api/1.2.0-alpha01.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-// Signature format: 3.0
-package androidx.swiperefreshlayout.widget {
-
-  public class CircularProgressDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable {
-    ctor public CircularProgressDrawable(android.content.Context);
-    method public void draw(android.graphics.Canvas!);
-    method public boolean getArrowEnabled();
-    method public float getArrowHeight();
-    method public float getArrowScale();
-    method public float getArrowWidth();
-    method public int getBackgroundColor();
-    method public float getCenterRadius();
-    method public int[] getColorSchemeColors();
-    method public float getEndTrim();
-    method public int getOpacity();
-    method public float getProgressRotation();
-    method public float getStartTrim();
-    method public android.graphics.Paint.Cap getStrokeCap();
-    method public float getStrokeWidth();
-    method public boolean isRunning();
-    method public void setAlpha(int);
-    method public void setArrowDimensions(float, float);
-    method public void setArrowEnabled(boolean);
-    method public void setArrowScale(float);
-    method public void setBackgroundColor(int);
-    method public void setCenterRadius(float);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setColorSchemeColors(int...);
-    method public void setProgressRotation(float);
-    method public void setStartEndTrim(float, float);
-    method public void setStrokeCap(android.graphics.Paint.Cap);
-    method public void setStrokeWidth(float);
-    method public void setStyle(int);
-    method public void start();
-    method public void stop();
-    field public static final int DEFAULT = 1; // 0x1
-    field public static final int LARGE = 0; // 0x0
-  }
-
-  public class SwipeRefreshLayout extends android.view.ViewGroup implements androidx.core.view.NestedScrollingChild androidx.core.view.NestedScrollingChild2 androidx.core.view.NestedScrollingChild3 androidx.core.view.NestedScrollingParent androidx.core.view.NestedScrollingParent2 androidx.core.view.NestedScrollingParent3 {
-    ctor public SwipeRefreshLayout(android.content.Context);
-    ctor public SwipeRefreshLayout(android.content.Context, android.util.AttributeSet?);
-    method public boolean canChildScrollUp();
-    method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
-    method public int getProgressCircleDiameter();
-    method public int getProgressViewEndOffset();
-    method public int getProgressViewStartOffset();
-    method public boolean hasNestedScrollingParent(int);
-    method public boolean isRefreshing();
-    method public void onMeasure(int, int);
-    method public void onNestedPreScroll(android.view.View!, int, int, int[]!, int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
-    method public void onNestedScroll(android.view.View!, int, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View!, android.view.View!, int, int);
-    method public boolean onStartNestedScroll(android.view.View!, android.view.View!, int, int);
-    method public void onStopNestedScroll(android.view.View!, int);
-    method @Deprecated public void setColorScheme(@ColorRes int...);
-    method public void setColorSchemeColors(@ColorInt int...);
-    method public void setColorSchemeResources(@ColorRes int...);
-    method public void setDistanceToTriggerSync(int);
-    method @Deprecated public void setLegacyRequestDisallowInterceptTouchEventEnabled(boolean);
-    method public void setOnChildScrollUpCallback(androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnChildScrollUpCallback?);
-    method public void setOnRefreshListener(androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener?);
-    method @Deprecated public void setProgressBackgroundColor(int);
-    method public void setProgressBackgroundColorSchemeColor(@ColorInt int);
-    method public void setProgressBackgroundColorSchemeResource(@ColorRes int);
-    method public void setProgressViewEndTarget(boolean, int);
-    method public void setProgressViewOffset(boolean, int, int);
-    method public void setRefreshing(boolean);
-    method public void setSize(int);
-    method public void setSlingshotDistance(@Px int);
-    method public boolean startNestedScroll(int, int);
-    method public void stopNestedScroll(int);
-    field public static final int DEFAULT = 1; // 0x1
-    field public static final int DEFAULT_SLINGSHOT_DISTANCE = -1; // 0xffffffff
-    field public static final int LARGE = 0; // 0x0
-    field protected int mFrom;
-    field protected int mOriginalOffsetTop;
-  }
-
-  public static interface SwipeRefreshLayout.OnChildScrollUpCallback {
-    method public boolean canChildScrollUp(androidx.swiperefreshlayout.widget.SwipeRefreshLayout, android.view.View?);
-  }
-
-  public static interface SwipeRefreshLayout.OnRefreshListener {
-    method public void onRefresh();
-  }
-
-}
-
diff --git a/swiperefreshlayout/swiperefreshlayout/api/public_plus_experimental_1.2.0-alpha01.txt b/swiperefreshlayout/swiperefreshlayout/api/public_plus_experimental_1.2.0-alpha01.txt
deleted file mode 100644
index 40ac939..0000000
--- a/swiperefreshlayout/swiperefreshlayout/api/public_plus_experimental_1.2.0-alpha01.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-// Signature format: 3.0
-package androidx.swiperefreshlayout.widget {
-
-  public class CircularProgressDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable {
-    ctor public CircularProgressDrawable(android.content.Context);
-    method public void draw(android.graphics.Canvas!);
-    method public boolean getArrowEnabled();
-    method public float getArrowHeight();
-    method public float getArrowScale();
-    method public float getArrowWidth();
-    method public int getBackgroundColor();
-    method public float getCenterRadius();
-    method public int[] getColorSchemeColors();
-    method public float getEndTrim();
-    method public int getOpacity();
-    method public float getProgressRotation();
-    method public float getStartTrim();
-    method public android.graphics.Paint.Cap getStrokeCap();
-    method public float getStrokeWidth();
-    method public boolean isRunning();
-    method public void setAlpha(int);
-    method public void setArrowDimensions(float, float);
-    method public void setArrowEnabled(boolean);
-    method public void setArrowScale(float);
-    method public void setBackgroundColor(int);
-    method public void setCenterRadius(float);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setColorSchemeColors(int...);
-    method public void setProgressRotation(float);
-    method public void setStartEndTrim(float, float);
-    method public void setStrokeCap(android.graphics.Paint.Cap);
-    method public void setStrokeWidth(float);
-    method public void setStyle(int);
-    method public void start();
-    method public void stop();
-    field public static final int DEFAULT = 1; // 0x1
-    field public static final int LARGE = 0; // 0x0
-  }
-
-  public class SwipeRefreshLayout extends android.view.ViewGroup implements androidx.core.view.NestedScrollingChild androidx.core.view.NestedScrollingChild2 androidx.core.view.NestedScrollingChild3 androidx.core.view.NestedScrollingParent androidx.core.view.NestedScrollingParent2 androidx.core.view.NestedScrollingParent3 {
-    ctor public SwipeRefreshLayout(android.content.Context);
-    ctor public SwipeRefreshLayout(android.content.Context, android.util.AttributeSet?);
-    method public boolean canChildScrollUp();
-    method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
-    method public int getProgressCircleDiameter();
-    method public int getProgressViewEndOffset();
-    method public int getProgressViewStartOffset();
-    method public boolean hasNestedScrollingParent(int);
-    method public boolean isRefreshing();
-    method public void onMeasure(int, int);
-    method public void onNestedPreScroll(android.view.View!, int, int, int[]!, int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
-    method public void onNestedScroll(android.view.View!, int, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View!, android.view.View!, int, int);
-    method public boolean onStartNestedScroll(android.view.View!, android.view.View!, int, int);
-    method public void onStopNestedScroll(android.view.View!, int);
-    method @Deprecated public void setColorScheme(@ColorRes int...);
-    method public void setColorSchemeColors(@ColorInt int...);
-    method public void setColorSchemeResources(@ColorRes int...);
-    method public void setDistanceToTriggerSync(int);
-    method @Deprecated public void setLegacyRequestDisallowInterceptTouchEventEnabled(boolean);
-    method public void setOnChildScrollUpCallback(androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnChildScrollUpCallback?);
-    method public void setOnRefreshListener(androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener?);
-    method @Deprecated public void setProgressBackgroundColor(int);
-    method public void setProgressBackgroundColorSchemeColor(@ColorInt int);
-    method public void setProgressBackgroundColorSchemeResource(@ColorRes int);
-    method public void setProgressViewEndTarget(boolean, int);
-    method public void setProgressViewOffset(boolean, int, int);
-    method public void setRefreshing(boolean);
-    method public void setSize(int);
-    method public void setSlingshotDistance(@Px int);
-    method public boolean startNestedScroll(int, int);
-    method public void stopNestedScroll(int);
-    field public static final int DEFAULT = 1; // 0x1
-    field public static final int DEFAULT_SLINGSHOT_DISTANCE = -1; // 0xffffffff
-    field public static final int LARGE = 0; // 0x0
-    field protected int mFrom;
-    field protected int mOriginalOffsetTop;
-  }
-
-  public static interface SwipeRefreshLayout.OnChildScrollUpCallback {
-    method public boolean canChildScrollUp(androidx.swiperefreshlayout.widget.SwipeRefreshLayout, android.view.View?);
-  }
-
-  public static interface SwipeRefreshLayout.OnRefreshListener {
-    method public void onRefresh();
-  }
-
-}
-
diff --git a/swiperefreshlayout/swiperefreshlayout/api/res-1.2.0-alpha01.txt b/swiperefreshlayout/swiperefreshlayout/api/res-1.2.0-alpha01.txt
deleted file mode 100644
index e69de29..0000000
--- a/swiperefreshlayout/swiperefreshlayout/api/res-1.2.0-alpha01.txt
+++ /dev/null
diff --git a/swiperefreshlayout/swiperefreshlayout/api/restricted_1.2.0-alpha01.txt b/swiperefreshlayout/swiperefreshlayout/api/restricted_1.2.0-alpha01.txt
deleted file mode 100644
index 21e0e84..0000000
--- a/swiperefreshlayout/swiperefreshlayout/api/restricted_1.2.0-alpha01.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-// Signature format: 3.0
-package androidx.swiperefreshlayout.widget {
-
-  public class CircularProgressDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable {
-    ctor public CircularProgressDrawable(android.content.Context);
-    method public void draw(android.graphics.Canvas!);
-    method public boolean getArrowEnabled();
-    method public float getArrowHeight();
-    method public float getArrowScale();
-    method public float getArrowWidth();
-    method public int getBackgroundColor();
-    method public float getCenterRadius();
-    method public int[] getColorSchemeColors();
-    method public float getEndTrim();
-    method public int getOpacity();
-    method public float getProgressRotation();
-    method public float getStartTrim();
-    method public android.graphics.Paint.Cap getStrokeCap();
-    method public float getStrokeWidth();
-    method public boolean isRunning();
-    method public void setAlpha(int);
-    method public void setArrowDimensions(float, float);
-    method public void setArrowEnabled(boolean);
-    method public void setArrowScale(float);
-    method public void setBackgroundColor(int);
-    method public void setCenterRadius(float);
-    method public void setColorFilter(android.graphics.ColorFilter!);
-    method public void setColorSchemeColors(int...);
-    method public void setProgressRotation(float);
-    method public void setStartEndTrim(float, float);
-    method public void setStrokeCap(android.graphics.Paint.Cap);
-    method public void setStrokeWidth(float);
-    method public void setStyle(@androidx.swiperefreshlayout.widget.CircularProgressDrawable.ProgressDrawableSize int);
-    method public void start();
-    method public void stop();
-    field public static final int DEFAULT = 1; // 0x1
-    field public static final int LARGE = 0; // 0x0
-  }
-
-  @IntDef({androidx.swiperefreshlayout.widget.CircularProgressDrawable.LARGE, androidx.swiperefreshlayout.widget.CircularProgressDrawable.DEFAULT}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface CircularProgressDrawable.ProgressDrawableSize {
-  }
-
-  public class SwipeRefreshLayout extends android.view.ViewGroup implements androidx.core.view.NestedScrollingChild androidx.core.view.NestedScrollingChild2 androidx.core.view.NestedScrollingChild3 androidx.core.view.NestedScrollingParent androidx.core.view.NestedScrollingParent2 androidx.core.view.NestedScrollingParent3 {
-    ctor public SwipeRefreshLayout(android.content.Context);
-    ctor public SwipeRefreshLayout(android.content.Context, android.util.AttributeSet?);
-    method public boolean canChildScrollUp();
-    method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
-    method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
-    method public int getProgressCircleDiameter();
-    method public int getProgressViewEndOffset();
-    method public int getProgressViewStartOffset();
-    method public boolean hasNestedScrollingParent(int);
-    method public boolean isRefreshing();
-    method public void onMeasure(int, int);
-    method public void onNestedPreScroll(android.view.View!, int, int, int[]!, int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
-    method public void onNestedScroll(android.view.View!, int, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View!, android.view.View!, int, int);
-    method public boolean onStartNestedScroll(android.view.View!, android.view.View!, int, int);
-    method public void onStopNestedScroll(android.view.View!, int);
-    method @Deprecated public void setColorScheme(@ColorRes int...);
-    method public void setColorSchemeColors(@ColorInt int...);
-    method public void setColorSchemeResources(@ColorRes int...);
-    method public void setDistanceToTriggerSync(int);
-    method @Deprecated public void setLegacyRequestDisallowInterceptTouchEventEnabled(boolean);
-    method public void setOnChildScrollUpCallback(androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnChildScrollUpCallback?);
-    method public void setOnRefreshListener(androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener?);
-    method @Deprecated public void setProgressBackgroundColor(int);
-    method public void setProgressBackgroundColorSchemeColor(@ColorInt int);
-    method public void setProgressBackgroundColorSchemeResource(@ColorRes int);
-    method public void setProgressViewEndTarget(boolean, int);
-    method public void setProgressViewOffset(boolean, int, int);
-    method public void setRefreshing(boolean);
-    method public void setSize(int);
-    method public void setSlingshotDistance(@Px int);
-    method public boolean startNestedScroll(int, int);
-    method public void stopNestedScroll(int);
-    field public static final int DEFAULT = 1; // 0x1
-    field public static final int DEFAULT_SLINGSHOT_DISTANCE = -1; // 0xffffffff
-    field public static final int LARGE = 0; // 0x0
-    field protected int mFrom;
-    field protected int mOriginalOffsetTop;
-  }
-
-  public static interface SwipeRefreshLayout.OnChildScrollUpCallback {
-    method public boolean canChildScrollUp(androidx.swiperefreshlayout.widget.SwipeRefreshLayout, android.view.View?);
-  }
-
-  public static interface SwipeRefreshLayout.OnRefreshListener {
-    method public void onRefresh();
-  }
-
-}
-
diff --git a/textclassifier/textclassifier/src/androidTest/java/androidx/textclassifier/widget/FloatingToolbarTest.java b/textclassifier/textclassifier/src/androidTest/java/androidx/textclassifier/widget/FloatingToolbarTest.java
index 78470df..8558cb1 100644
--- a/textclassifier/textclassifier/src/androidTest/java/androidx/textclassifier/widget/FloatingToolbarTest.java
+++ b/textclassifier/textclassifier/src/androidTest/java/androidx/textclassifier/widget/FloatingToolbarTest.java
@@ -240,6 +240,7 @@
     }
 
     @Test
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     public void ui_dismissOnOutsideClick() throws Exception {
         final int toolbarMargin = (int) (mWidget.getY() + 1.5 * mWidget.getResources()
                 .getDimensionPixelSize(R.dimen.floating_toolbar_height));
@@ -277,6 +278,7 @@
     }
 
     @Test
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     public void ui_setContentRect_belowToolbar() throws Exception {
         final int toolbarMargin = 5 * mWidget.getResources()
                 .getDimensionPixelSize(R.dimen.floating_toolbar_height);
diff --git a/ui/gradle.properties b/ui/gradle.properties
index 8c57d6e..62542e9 100644
--- a/ui/gradle.properties
+++ b/ui/gradle.properties
@@ -11,3 +11,5 @@
 kotlin.parallel.tasks.in.project=true
 # Workaround for b/141364941
 android.forceJacocoOutOfProcess=true
+androidx.writeVersionedApiFiles=false
+
diff --git a/ui/integration-tests/src/main/java/androidx/ui/benchmark/android/AndroidTestCaseRunner.kt b/ui/integration-tests/src/main/java/androidx/ui/benchmark/android/AndroidTestCaseRunner.kt
index d68678c..cf4e992 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/benchmark/android/AndroidTestCaseRunner.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/benchmark/android/AndroidTestCaseRunner.kt
@@ -50,6 +50,7 @@
 
     init {
         val displayMetrics = DisplayMetrics()
+        @Suppress("DEPRECATION") /* defaultDisplay + getMetrics() */
         activity.windowManager.defaultDisplay.getMetrics(displayMetrics)
         val height = displayMetrics.heightPixels
         val width = displayMetrics.widthPixels
diff --git a/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt b/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt
index 49c72ad..081b57b 100644
--- a/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt
+++ b/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt
@@ -21,6 +21,7 @@
 import android.graphics.Bitmap
 import android.os.Build
 import android.os.Handler
+import android.os.Looper
 import android.util.SparseArray
 import android.view.PixelCopy
 import android.view.View
@@ -2958,7 +2959,7 @@
         view.getLocationInWindow(offset)
         view.viewTreeObserver.addOnPreDrawListener(flushListener)
         view.invalidate()
-        handler = Handler()
+        handler = Handler(Looper.getMainLooper())
     }
 
     assertTrue(flushListener.latch.await(1, TimeUnit.SECONDS))
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/OutlineResolver.kt b/ui/ui-core/src/main/java/androidx/ui/core/OutlineResolver.kt
index a85cfce..93701c0 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/OutlineResolver.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/OutlineResolver.kt
@@ -172,7 +172,7 @@
         }
     }
 
-    @SuppressWarnings("deprecation")
+    @Suppress("deprecation")
     private fun updateCacheWithPath(composePath: Path) {
         if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P || composePath.isConvex) {
             // TODO(mount): Use setPath() for R+ when available.
diff --git a/ui/ui-graphics/src/main/java/androidx/ui/graphics/AndroidPath.kt b/ui/ui-graphics/src/main/java/androidx/ui/graphics/AndroidPath.kt
index c3567df..a3036f8 100644
--- a/ui/ui-graphics/src/main/java/androidx/ui/graphics/AndroidPath.kt
+++ b/ui/ui-graphics/src/main/java/androidx/ui/graphics/AndroidPath.kt
@@ -211,6 +211,7 @@
         return internalPath.op(path1.asAndroidPath(), path2.asAndroidPath(), op)
     }
 
+    @Suppress("DEPRECATION") // Path.isConvex
     override val isConvex: Boolean get() = internalPath.isConvex
 
     override val isEmpty: Boolean get() = internalPath.isEmpty
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutTest.kt
index 66abc3d..1646c66 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutTest.kt
@@ -18,6 +18,7 @@
 
 import android.app.Activity
 import android.os.Handler
+import android.os.Looper
 import android.view.View
 import android.view.ViewGroup
 import android.view.ViewTreeObserver
@@ -84,7 +85,7 @@
         // lambda to Runnable, so separate it here
         val runnable: Runnable = object : Runnable {
             override fun run() {
-                handler = Handler()
+                handler = Handler(Looper.getMainLooper())
             }
         }
         activityTestRule.runOnUiThread(runnable)
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt
index 13449000..6b3adf7 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt
@@ -17,6 +17,7 @@
 package androidx.ui.material.demos
 
 import android.os.Handler
+import android.os.Looper
 import androidx.compose.Composable
 import androidx.compose.Stable
 import androidx.compose.getValue
@@ -85,8 +86,8 @@
         handler.removeCallbacks(updateProgress)
     }
 
-    private val handler = Handler()
-    private val updateProgress: Runnable = object : Runnable {
+    val handler = Handler(Looper.getMainLooper())
+    val updateProgress: Runnable = object : Runnable {
         override fun run() {
             if (progress == 1f) {
                 color = when (color) {
diff --git a/ui/ui-test/src/main/java/androidx/ui/test/android/AndroidComposeTestCaseRunner.kt b/ui/ui-test/src/main/java/androidx/ui/test/android/AndroidComposeTestCaseRunner.kt
index 586cae85..6533ee4 100644
--- a/ui/ui-test/src/main/java/androidx/ui/test/android/AndroidComposeTestCaseRunner.kt
+++ b/ui/ui-test/src/main/java/androidx/ui/test/android/AndroidComposeTestCaseRunner.kt
@@ -84,6 +84,7 @@
 
     init {
         val displayMetrics = DisplayMetrics()
+        @Suppress("DEPRECATION") /* defaultDisplay + getMetrics() */
         activity.windowManager.defaultDisplay.getMetrics(displayMetrics)
         val height = displayMetrics.heightPixels
         val width = displayMetrics.widthPixels
diff --git a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ToolingTest.kt b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ToolingTest.kt
index 4c9fdc3..499935a 100644
--- a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ToolingTest.kt
+++ b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ToolingTest.kt
@@ -17,6 +17,7 @@
 package androidx.ui.tooling
 
 import android.os.Handler
+import android.os.Looper
 import androidx.compose.Composable
 import androidx.test.rule.ActivityTestRule
 import androidx.ui.core.Modifier
@@ -43,7 +44,7 @@
         activity = activityTestRule.activity
         activity.hasFocusLatch.await(5, TimeUnit.SECONDS)
 
-        activityTestRule.onUiThread { handler = Handler() }
+        activityTestRule.onUiThread { handler = Handler(Looper.getMainLooper()) }
     }
 
     internal fun show(composable: @Composable () -> Unit) {
diff --git a/vectordrawable/integration-tests/testapp/src/main/java/com/example/android/support/vectordrawable/app/SupportVectorDrawableDemos.java b/vectordrawable/integration-tests/testapp/src/main/java/com/example/android/support/vectordrawable/app/SupportVectorDrawableDemos.java
index 959ea75..c07087f 100644
--- a/vectordrawable/integration-tests/testapp/src/main/java/com/example/android/support/vectordrawable/app/SupportVectorDrawableDemos.java
+++ b/vectordrawable/integration-tests/testapp/src/main/java/com/example/android/support/vectordrawable/app/SupportVectorDrawableDemos.java
@@ -16,7 +16,6 @@
 
 package com.example.android.support.vectordrawable.app;
 
-import android.app.ListActivity;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -36,7 +35,8 @@
 /**
  * The root level activity for this demo. Showing a list of sub demos.
  */
-public class SupportVectorDrawableDemos extends ListActivity {
+@SuppressWarnings("deprecation")
+public class SupportVectorDrawableDemos extends android.app.ListActivity {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
diff --git a/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/BrowseActivity.kt b/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/BrowseActivity.kt
index 5ddbedd..f3f44ec 100644
--- a/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/BrowseActivity.kt
+++ b/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/BrowseActivity.kt
@@ -16,7 +16,6 @@
 
 package androidx.viewpager2.integration.testapp
 
-import android.app.ListActivity
 import android.content.Intent
 import android.os.Bundle
 import android.view.View
@@ -26,7 +25,8 @@
 /**
  * This activity lists all the activities in this application.
  */
-class BrowseActivity : ListActivity() {
+@Suppress("DEPRECATION")
+class BrowseActivity : android.app.ListActivity() {
 
     public override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
diff --git a/wear/wear/src/main/java/androidx/wear/widget/BoxInsetLayout.java b/wear/wear/src/main/java/androidx/wear/widget/BoxInsetLayout.java
index e43e2bf..79dcc227 100644
--- a/wear/wear/src/main/java/androidx/wear/widget/BoxInsetLayout.java
+++ b/wear/wear/src/main/java/androidx/wear/widget/BoxInsetLayout.java
@@ -128,6 +128,7 @@
     }
 
     @Override
+    @SuppressWarnings("deprecation") /* getSystemWindowInsetXXXX */
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
         mIsRound = getResources().getConfiguration().isScreenRound();
diff --git a/wear/wear/src/main/java/androidx/wear/widget/WearableRecyclerView.java b/wear/wear/src/main/java/androidx/wear/widget/WearableRecyclerView.java
index e20fb1f..07da857 100644
--- a/wear/wear/src/main/java/androidx/wear/widget/WearableRecyclerView.java
+++ b/wear/wear/src/main/java/androidx/wear/widget/WearableRecyclerView.java
@@ -149,6 +149,7 @@
     }
 
     @Override
+    @SuppressWarnings("deprecation") /* Display.getSize() */
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
         Point screenSize = new Point();
diff --git a/wear/wear/src/main/java/androidx/wear/widget/drawer/WearableDrawerLayout.java b/wear/wear/src/main/java/androidx/wear/widget/drawer/WearableDrawerLayout.java
index e7ddbfb..d43d1cc 100644
--- a/wear/wear/src/main/java/androidx/wear/widget/drawer/WearableDrawerLayout.java
+++ b/wear/wear/src/main/java/androidx/wear/widget/drawer/WearableDrawerLayout.java
@@ -229,6 +229,7 @@
         this(context, attrs, defStyleAttr, 0);
     }
 
+    @SuppressWarnings("deprecation") /* getDefaultDisplay */
     public WearableDrawerLayout(
             Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
@@ -319,6 +320,7 @@
     }
 
     @Override
+    @SuppressWarnings("deprecation") /* getSystemWindowInsetBottom */
     public WindowInsets onApplyWindowInsets(WindowInsets insets) {
         mSystemWindowInsetBottom = insets.getSystemWindowInsetBottom();
 
diff --git a/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/AssetLoaderInternalStorageActivity.java b/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/AssetLoaderInternalStorageActivity.java
index 4a0373d..35f53be 100644
--- a/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/AssetLoaderInternalStorageActivity.java
+++ b/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/AssetLoaderInternalStorageActivity.java
@@ -20,7 +20,6 @@
 
 import android.app.Activity;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.webkit.WebResourceRequest;
 import android.webkit.WebResourceResponse;
@@ -73,6 +72,7 @@
     }
 
     @Override
+    @SuppressWarnings("deprecation") /* AsyncTask */
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
@@ -117,7 +117,7 @@
     }
 
     // Writes to file asynchronously in the background thread.
-    private static class WriteFileTask extends AsyncTask<Void, Void, Void> {
+    private static class WriteFileTask extends android.os.AsyncTask<Void, Void, Void> {
         @NonNull private final File mFile;
         @NonNull private final String mContent;
 
diff --git a/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/GiantInterstitialActivity.java b/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/GiantInterstitialActivity.java
index 40e3512..1c3aa61 100644
--- a/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/GiantInterstitialActivity.java
+++ b/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/GiantInterstitialActivity.java
@@ -36,6 +36,7 @@
     private static final double SCALE_FACTOR = 1.1;
 
     @Override
+    @SuppressWarnings("deprecation") /* defaultDisplay */
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_giant_interstitial);
diff --git a/webkit/webkit/src/main/java/androidx/webkit/TracingController.java b/webkit/webkit/src/main/java/androidx/webkit/TracingController.java
index 6f1987a..7a484d0 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/TracingController.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/TracingController.java
@@ -17,7 +17,6 @@
 package androidx.webkit;
 
 import android.content.Context;
-import android.os.AsyncTask;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -118,7 +117,7 @@
      *                 To dispatch events through the main thread of your application,
      *                 you can use {@link Context#getMainExecutor()}.
      *                 To dispatch events through a shared thread pool,
-     *                 you can use {@link AsyncTask#THREAD_POOL_EXECUTOR}.
+     *                 you can use {@link android.os.AsyncTask#THREAD_POOL_EXECUTOR}.
      *
      * @return {@code false} if the WebView framework was not tracing at the time of the call,
      * {@code true} otherwise.
diff --git a/work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/imageprocessing/ImageRecyclerViewAdapter.java b/work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/imageprocessing/ImageRecyclerViewAdapter.java
index 8cbb23e..633bf07 100644
--- a/work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/imageprocessing/ImageRecyclerViewAdapter.java
+++ b/work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/imageprocessing/ImageRecyclerViewAdapter.java
@@ -18,7 +18,6 @@
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
-import android.os.AsyncTask;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -56,7 +55,7 @@
         private ImageView mImageView;
         private TextView mTextView;
         private ProgressBar mProgressBar;
-        private AsyncTask<Image, Void, Bitmap> mBitmapLoadTask;
+        private android.os.AsyncTask<Image, Void, Bitmap> mBitmapLoadTask;
         private boolean mShouldLoad;
 
         ViewHolder(View itemView) {
@@ -66,13 +65,14 @@
             mProgressBar = itemView.findViewById(R.id.progressBar);
         }
 
+        @SuppressWarnings("deprecation") /* AsyncTask */
         public void load(final Image image) {
             if (TextUtils.isEmpty(image.mProcessedFilePath)) {
                 mTextView.setText(image.mOriginalAssetName);
                 mProgressBar.setVisibility(View.VISIBLE);
                 mImageView.setVisibility(View.GONE);
             } else {
-                mBitmapLoadTask = new AsyncTask<Image, Void, Bitmap>() {
+                mBitmapLoadTask = new android.os.AsyncTask<Image, Void, Bitmap>() {
                     @Override
                     protected void onPostExecute(Bitmap bitmap) {
                         if (mShouldLoad) {